diff --git a/README.md b/README.md index 22640b9..aeb5078 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,8 @@ public: ### C++ (Metamod plugin) +Include header from `public/craytraceinterface.h` + ``` cpp CRayTraceInterface* g_pRayTrace = nullptr; bool g_bRayTraceLoaded = false; diff --git a/managed/RayTrace/RayTraceApi/RayTraceApi.cs b/managed/RayTrace/RayTraceApi/RayTraceApi.cs index ceb755f..989ce63 100644 --- a/managed/RayTrace/RayTraceApi/RayTraceApi.cs +++ b/managed/RayTrace/RayTraceApi/RayTraceApi.cs @@ -10,343 +10,344 @@ using Vector = CounterStrikeSharp.API.Modules.Utils.Vector; namespace RayTraceAPI { #region Native Structs (matching C++ layout exactly) - [Flags] - public enum InteractionLayers : ulong - { - Solid = 0x1, - Hitboxes = 0x2, - Trigger = 0x4, - Sky = 0x8, - PlayerClip = 0x10, - NPCClip = 0x20, - BlockLOS = 0x40, - BlockLight = 0x80, - Ladder = 0x100, - Pickup = 0x200, - BlockSound = 0x400, - NoDraw = 0x800, - Window = 0x1000, - PassBullets = 0x2000, - WorldGeometry = 0x4000, - Water = 0x8000, - Slime = 0x10000, - TouchAll = 0x20000, - Player = 0x40000, - NPC = 0x80000, - Debris = 0x100000, - Physics_Prop = 0x200000, - NavIgnore = 0x400000, - NavLocalIgnore = 0x800000, - PostProcessingVolume = 0x1000000, - UnusedLayer3 = 0x2000000, - CarriedObject = 0x4000000, - PushAway = 0x8000000, - ServerEntityOnClient = 0x10000000, - CarriedWeapon = 0x20000000, - StaticLevel = 0x40000000, - csgo_team1 = 0x80000000, - csgo_team2 = 0x100000000, - csgo_grenadeclip = 0x200000000, - csgo_droneclip = 0x400000000, - csgo_moveable = 0x800000000, - csgo_opaque = 0x1000000000, - csgo_monster = 0x2000000000, - csgo_thrown_grenade = 0x8000000000, + [Flags] + public enum InteractionLayers : ulong + { + Solid = 0x1, + Hitboxes = 0x2, + Trigger = 0x4, + Sky = 0x8, + PlayerClip = 0x10, + NPCClip = 0x20, + BlockLOS = 0x40, + BlockLight = 0x80, + Ladder = 0x100, + Pickup = 0x200, + BlockSound = 0x400, + NoDraw = 0x800, + Window = 0x1000, + PassBullets = 0x2000, + WorldGeometry = 0x4000, + Water = 0x8000, + Slime = 0x10000, + TouchAll = 0x20000, + Player = 0x40000, + NPC = 0x80000, + Debris = 0x100000, + Physics_Prop = 0x200000, + NavIgnore = 0x400000, + NavLocalIgnore = 0x800000, + PostProcessingVolume = 0x1000000, + UnusedLayer3 = 0x2000000, + CarriedObject = 0x4000000, + PushAway = 0x8000000, + ServerEntityOnClient = 0x10000000, + CarriedWeapon = 0x20000000, + StaticLevel = 0x40000000, + csgo_team1 = 0x80000000, + csgo_team2 = 0x100000000, + csgo_grenadeclip = 0x200000000, + csgo_droneclip = 0x400000000, + csgo_moveable = 0x800000000, + csgo_opaque = 0x1000000000, + csgo_monster = 0x2000000000, + csgo_thrown_grenade = 0x8000000000, - MASK_SHOT_PHYSICS = Solid | PlayerClip | Window | PassBullets | Player | NPC | Physics_Prop, - MASK_SHOT_HITBOX = Hitboxes | Player | NPC, - MASK_SHOT_FULL = MASK_SHOT_PHYSICS | Hitboxes, - MASK_WORLD_ONLY = Solid | Window | PassBullets, - MASK_GRENADE = Solid | Window | Physics_Prop | PassBullets, - MASK_BRUSH_ONLY = Solid | Window, - MASK_PLAYER_MOVE = Solid | Window | PlayerClip | PassBullets, - MASK_NPC_MOVE = Solid | Window | NPCClip | PassBullets - } + MASK_SHOT_PHYSICS = Solid | PlayerClip | Window | PassBullets | Player | NPC | Physics_Prop, + MASK_SHOT_HITBOX = Hitboxes | Player | NPC, + MASK_SHOT_FULL = MASK_SHOT_PHYSICS | Hitboxes, + MASK_WORLD_ONLY = Solid | Window | PassBullets, + MASK_GRENADE = Solid | Window | Physics_Prop | PassBullets, + MASK_BRUSH_ONLY = Solid | Window, + MASK_PLAYER_MOVE = Solid | Window | PlayerClip | PassBullets, + MASK_NPC_MOVE = Solid | Window | NPCClip | PassBullets + } - [StructLayout(LayoutKind.Explicit, Size = 32)] - public struct TraceOptions - { - [FieldOffset(0)] public ulong InteractsAs; - [FieldOffset(8)] public ulong InteractsWith; - [FieldOffset(16)] public ulong InteractsExclude; - [FieldOffset(24)] public int DrawBeam; + [StructLayout(LayoutKind.Explicit, Size = 32)] + public unsafe struct TraceOptions + { + [FieldOffset(0)] public ulong InteractsAs; + [FieldOffset(8)] public ulong InteractsWith; + [FieldOffset(16)] public ulong InteractsExclude; + [FieldOffset(24)] public int DrawBeam; - public TraceOptions() - { - InteractsAs = 0; - InteractsWith = (ulong)InteractionLayers.MASK_SHOT_PHYSICS; - InteractsExclude = 0; - DrawBeam = 0; - } + public TraceOptions() + { + InteractsAs = 0; + InteractsWith = (ulong)InteractionLayers.MASK_SHOT_PHYSICS; + InteractsExclude = 0; + DrawBeam = 0; + } - public TraceOptions(InteractionLayers interactsAs, InteractionLayers interactsWith, - InteractionLayers interactsExclude = 0, bool drawBeam = false) - { - InteractsAs = (ulong)interactsAs; - InteractsWith = (ulong)interactsWith; - InteractsExclude = (ulong)interactsExclude; - DrawBeam = drawBeam ? 1 : 0; - } - } - - [StructLayout(LayoutKind.Sequential, Size = 8)] - public struct CUtlString - { - public nint _ptr; // make public so Marshal sees it + public TraceOptions(InteractionLayers interactsAs, InteractionLayers interactsWith, + InteractionLayers interactsExclude = 0, bool drawBeam = false) + { + InteractsAs = (ulong)interactsAs; + InteractsWith = (ulong)interactsWith; + InteractsExclude = (ulong)interactsExclude; + DrawBeam = drawBeam ? 1 : 0; + } + } - public string Value - { - get - { - if (_ptr == 0 || _ptr == IntPtr.MaxValue) return string.Empty; - return Marshal.PtrToStringUTF8(_ptr)!; // read UTF8 string from native pointer - } - } + [StructLayout(LayoutKind.Explicit, Size = 8)] + public unsafe struct CUtlString + { + [FieldOffset(0)] public nint _ptr; // make public so Marshal sees it - public static implicit operator string(CUtlString s) => s.Value; - } + public string Value + { + get + { + if (_ptr == 0 || _ptr == IntPtr.MaxValue) return string.Empty; + return Marshal.PtrToStringUTF8(_ptr)!; // read UTF8 string from native pointer + } + } - [StructLayout(LayoutKind.Sequential)] - public struct CPhysSurfacePropertiesTrace - { - public CUtlString Name; - public uint NameHash; - public uint BaseNameHash; - public int ListIndex; - public int BaseListIndex; - [MarshalAs(UnmanagedType.I1)] - public bool Hidden; - public CUtlString Description; - public CPhysSurfacePropertiesPhysicsTrace Physics; - public CPhysSurfacePropertiesSoundNamesTrace AudioSounds; - public CPhysSurfacePropertiesAudioTrace AudioParams; - } + public static implicit operator string(CUtlString s) => s.Value; + } - public enum CollisionFunctionMask_t : byte - { - FCOLLISION_FUNC_ENABLE_SOLID_CONTACT = (1 << 0), - FCOLLISION_FUNC_ENABLE_TRACE_QUERY = (1 << 1), - FCOLLISION_FUNC_ENABLE_TOUCH_EVENT = (1 << 2), - FCOLLISION_FUNC_ENABLE_SELF_COLLISIONS = (1 << 3), - FCOLLISION_FUNC_IGNORE_FOR_HITBOX_TEST = (1 << 4), - FCOLLISION_FUNC_ENABLE_TOUCH_PERSISTS = (1 << 5), - } + [StructLayout(LayoutKind.Explicit, Size = 200)] + public unsafe struct CPhysSurfacePropertiesTrace + { + [FieldOffset(0)] public CUtlString Name; + [FieldOffset(8)] public uint NameHash; + [FieldOffset(12)] public uint BaseNameHash; + [FieldOffset(16)] public int ListIndex; + [FieldOffset(20)] public int BaseListIndex; - [StructLayout(LayoutKind.Sequential)] - public struct RnCollisionAttr_t - { - public ulong InteractsAs; - public ulong InteractsWith; - public ulong InteractsExclude; - public uint EntityId; - public uint OwnerId; - public ushort HierarchyId; - public CollisionGroup CollisionGroup; - public CollisionFunctionMask_t CollisionFunctionMask; - } + [MarshalAs(UnmanagedType.I1)] [FieldOffset(24)] + public bool Hidden; - public enum RayType_t : byte - { - RAY_TYPE_LINE = 0, - RAY_TYPE_SPHERE, - RAY_TYPE_HULL, - RAY_TYPE_CAPSULE, - RAY_TYPE_MESH, - } + [FieldOffset(32)] public CUtlString Description; + [FieldOffset(40)] public CPhysSurfacePropertiesPhysicsTrace Physics; + [FieldOffset(80)] public CPhysSurfacePropertiesSoundNamesTrace AudioSounds; + [FieldOffset(168)] public CPhysSurfacePropertiesAudioTrace AudioParams; + } - [StructLayout(LayoutKind.Sequential)] - public struct CPhysSurfacePropertiesPhysicsTrace - { - public float Friction; - public float Elasticity; - public float Density; - public float Thickness; - public float SoftContactFrequency; - public float SoftContactDampingRatio; - public float WheelDrag; - public float HeatConductivity; - public float Flashpoint; - } + public enum CollisionFunctionMask_t : byte + { + FCOLLISION_FUNC_ENABLE_SOLID_CONTACT = (1 << 0), + FCOLLISION_FUNC_ENABLE_TRACE_QUERY = (1 << 1), + FCOLLISION_FUNC_ENABLE_TOUCH_EVENT = (1 << 2), + FCOLLISION_FUNC_ENABLE_SELF_COLLISIONS = (1 << 3), + FCOLLISION_FUNC_IGNORE_FOR_HITBOX_TEST = (1 << 4), + FCOLLISION_FUNC_ENABLE_TOUCH_PERSISTS = (1 << 5), + } - [StructLayout(LayoutKind.Sequential)] - public struct CPhysSurfacePropertiesSoundNamesTrace - { - public CUtlString ImpactSoft; - public CUtlString ImpactHard; - public CUtlString ScrapeSmooth; - public CUtlString ScrapeRough; - public CUtlString BulletImpact; - public CUtlString Rolling; - public CUtlString Break; - public CUtlString Strain; - public CUtlString MeleeImpact; - public CUtlString PushOff; - public CUtlString SkidStop; - } + [StructLayout(LayoutKind.Explicit, Size = 48)] + public unsafe struct RnCollisionAttr_t + { + [FieldOffset(0)] public ulong InteractsAs; + [FieldOffset(8)] public ulong InteractsWith; + [FieldOffset(16)] public ulong InteractsExclude; + [FieldOffset(24)] public uint EntityId; + [FieldOffset(28)] public uint OwnerId; + [FieldOffset(32)] public ushort HierarchyId; + [FieldOffset(36)] public CollisionGroup CollisionGroup; + [FieldOffset(40)] public CollisionFunctionMask_t CollisionFunctionMask; + } - [StructLayout(LayoutKind.Sequential)] - public struct CPhysSurfacePropertiesAudioTrace - { - public float Reflectivity; - public float HardnessFactor; - public float RoughnessFactor; - public float RoughThreshold; - public float HardThreshold; - public float HardVelocityThreshold; - public float StaticImpactVolume; - public float OcclusionFactor; - } + public enum RayType_t : byte + { + RAY_TYPE_LINE = 0, + RAY_TYPE_SPHERE, + RAY_TYPE_HULL, + RAY_TYPE_CAPSULE, + RAY_TYPE_MESH, + } - [StructLayout(LayoutKind.Sequential)] - public struct CUtlStringToken : IEquatable - { - private uint _hashCode; + [StructLayout(LayoutKind.Explicit, Size = 36)] + public unsafe struct CPhysSurfacePropertiesPhysicsTrace + { + [FieldOffset(0)] public float Friction; + [FieldOffset(4)] public float Elasticity; + [FieldOffset(8)] public float Density; + [FieldOffset(12)] public float Thickness; + [FieldOffset(16)] public float SoftContactFrequency; + [FieldOffset(20)] public float SoftContactDampingRatio; + [FieldOffset(24)] public float WheelDrag; + [FieldOffset(28)] public float HeatConductivity; + [FieldOffset(32)] public float Flashpoint; + } - public CUtlStringToken(uint hashCode) - { - _hashCode = hashCode; - } + [StructLayout(LayoutKind.Explicit, Size = 88)] + public unsafe struct CPhysSurfacePropertiesSoundNamesTrace + { + [FieldOffset(0)] public CUtlString ImpactSoft; + [FieldOffset(8)] public CUtlString ImpactHard; + [FieldOffset(16)] public CUtlString ScrapeSmooth; + [FieldOffset(24)] public CUtlString ScrapeRough; + [FieldOffset(32)] public CUtlString BulletImpact; + [FieldOffset(40)] public CUtlString Rolling; + [FieldOffset(48)] public CUtlString Break; + [FieldOffset(56)] public CUtlString Strain; + [FieldOffset(64)] public CUtlString MeleeImpact; + [FieldOffset(72)] public CUtlString PushOff; + [FieldOffset(80)] public CUtlString SkidStop; + } - public bool IsValid => _hashCode != 0; + [StructLayout(LayoutKind.Explicit, Size = 32)] + public unsafe struct CPhysSurfacePropertiesAudioTrace + { + [FieldOffset(0)] public float Reflectivity; + [FieldOffset(4)] public float HardnessFactor; + [FieldOffset(8)] public float RoughnessFactor; + [FieldOffset(12)] public float RoughThreshold; + [FieldOffset(16)] public float HardThreshold; + [FieldOffset(20)] public float HardVelocityThreshold; + [FieldOffset(24)] public float StaticImpactVolume; + [FieldOffset(28)] public float OcclusionFactor; + } - public uint GetHashCodeValue() => _hashCode; + [StructLayout(LayoutKind.Explicit, Size = 4)] + public unsafe struct CUtlStringToken : IEquatable + { + [FieldOffset(0)] private uint _hashCode; - public void SetHashCode(uint hash) => _hashCode = hash; + public CUtlStringToken(uint hashCode) + { + _hashCode = hashCode; + } - public bool Equals(CUtlStringToken other) - => _hashCode == other._hashCode; + public bool IsValid => _hashCode != 0; - public override bool Equals(object? obj) - => obj is CUtlStringToken other && Equals(other); + public uint GetHashCodeValue() => _hashCode; - public override int GetHashCode() - => (int)_hashCode; + public void SetHashCode(uint hash) => _hashCode = hash; - public static bool operator ==(CUtlStringToken a, CUtlStringToken b) - => a._hashCode == b._hashCode; + public bool Equals(CUtlStringToken other) + => _hashCode == other._hashCode; - public static bool operator !=(CUtlStringToken a, CUtlStringToken b) - => a._hashCode != b._hashCode; + public override bool Equals(object? obj) + => obj is CUtlStringToken other && Equals(other); - public static bool operator <(CUtlStringToken a, CUtlStringToken b) - => a._hashCode < b._hashCode; + public override int GetHashCode() + => (int)_hashCode; - public static bool operator >(CUtlStringToken a, CUtlStringToken b) - => a._hashCode > b._hashCode; + public static bool operator ==(CUtlStringToken a, CUtlStringToken b) + => a._hashCode == b._hashCode; - public override string ToString() - => $"0x{_hashCode:X8}"; - } - + public static bool operator !=(CUtlStringToken a, CUtlStringToken b) + => a._hashCode != b._hashCode; - [StructLayout(LayoutKind.Sequential)] - public struct CHitBox - { - public CUtlString m_name; // pointer to CUtlString - public CUtlString m_sSurfaceProperty; // pointer to CUtlString - public CUtlString m_sBoneName; // pointer to CUtlString + public static bool operator <(CUtlStringToken a, CUtlStringToken b) + => a._hashCode < b._hashCode; - public Vector3 m_vMinBounds; // blittable - public Vector3 m_vMaxBounds; // blittable - public float m_flShapeRadius; + public static bool operator >(CUtlStringToken a, CUtlStringToken b) + => a._hashCode > b._hashCode; - public CUtlStringToken m_nBoneNameHash; // pointer or uint + public override string ToString() + => $"0x{_hashCode:X8}"; + } - public byte m_nShapeType; - public bool m_bTranslationOnly; - public uint m_CRC; - public uint m_cRenderColor; - public ushort m_nHitBoxIndex; - public bool m_bForcedTransform; - public CTransform m_forcedTransform; // only if blittable (no managed types inside) - } + [StructLayout(LayoutKind.Explicit, Size = 104)] + public unsafe struct CHitBox + { + [FieldOffset(0)] public CUtlString m_name; // pointer to CUtlString + [FieldOffset(8)] public CUtlString m_sSurfaceProperty; // pointer to CUtlString + [FieldOffset(16)] public CUtlString m_sBoneName; // pointer to CUtlString - [StructLayout(LayoutKind.Sequential, Pack = 16)] - public struct CTransform - { - public Vector4 Position; // VectorAligned: use Vector4 for 16-byte alignment - public System.Numerics.Quaternion Orientation; + [FieldOffset(24)] public Vector3 m_vMinBounds; // blittable + [FieldOffset(36)] public Vector3 m_vMaxBounds; // blittable + [FieldOffset(48)] public float m_flShapeRadius; - public CTransform(Vector3 position, System.Numerics.Quaternion orientation) - { - Position = new Vector4(position, 1.0f); // w = 1.0f like vec3_origin.w - Orientation = orientation; - } + [FieldOffset(52)] public CUtlStringToken m_nBoneNameHash; // pointer or uint - public bool IsValid() - { - return !Position.Equals(Vector4.Zero) && Orientation != System.Numerics.Quaternion.Identity; - } + [FieldOffset(56)] public byte m_nShapeType; + [FieldOffset(57)] public bool m_bTranslationOnly; + [FieldOffset(60)] public uint m_CRC; + [FieldOffset(64)] public uint m_cRenderColor; + [FieldOffset(68)] public ushort m_nHitBoxIndex; + [FieldOffset(70)] public bool m_bForcedTransform; - public void SetToIdentity() - { - Position = new Vector4(0, 0, 0, 1); // vec3_origin + w = 1 - Orientation = System.Numerics.Quaternion.Identity; // quat_identity - } + [FieldOffset(72)] public CTransform m_forcedTransform; // only if blittable (no managed types inside) + } - public static bool operator ==(CTransform a, CTransform b) - { - return a.Position == b.Position && a.Orientation == b.Orientation; - } + [StructLayout(LayoutKind.Explicit, Pack = 16, Size = 32)] + public unsafe struct CTransform + { + [FieldOffset(0)] public Vector4 Position; // VectorAligned: use Vector4 for 16-byte alignment + [FieldOffset(16)] public System.Numerics.Quaternion Orientation; - public static bool operator !=(CTransform a, CTransform b) - { - return !(a == b); - } + public CTransform(Vector3 position, System.Numerics.Quaternion orientation) + { + Position = new Vector4(position, 1.0f); // w = 1.0f like vec3_origin.w + Orientation = orientation; + } - public override bool Equals(object? obj) - { - return obj is CTransform t && this == t; - } + public bool IsValid() + { + return !Position.Equals(Vector4.Zero) && Orientation != System.Numerics.Quaternion.Identity; + } - public override int GetHashCode() - { - return HashCode.Combine(Position, Orientation); - } + public void SetToIdentity() + { + Position = new Vector4(0, 0, 0, 1); // vec3_origin + w = 1 + Orientation = System.Numerics.Quaternion.Identity; // quat_identity + } - public override string ToString() - { - return $"CTransform(Position: {Position}, Orientation: {Orientation})"; - } - } + public static bool operator ==(CTransform a, CTransform b) + { + return a.Position == b.Position && a.Orientation == b.Orientation; + } - [StructLayout(LayoutKind.Explicit, Size = 208)] - public struct TraceResult - { - [FieldOffset(0)] public float StartPosX; - [FieldOffset(4)] public float StartPosY; - [FieldOffset(8)] public float StartPosZ; - [FieldOffset(12)] public float EndPosX; - [FieldOffset(16)] public float EndPosY; - [FieldOffset(20)] public float EndPosZ; - [FieldOffset(24)] public float HitPointX; - [FieldOffset(28)] public float HitPointY; - [FieldOffset(32)] public float HitPointZ; - [FieldOffset(36)] public float NormalX; - [FieldOffset(40)] public float NormalY; - [FieldOffset(44)] public float NormalZ; - [FieldOffset(48)] public float Fraction; - [FieldOffset(52)] public float HitOffset; + public static bool operator !=(CTransform a, CTransform b) + { + return !(a == b); + } - [FieldOffset(56)] public int TriangleIndex; - [FieldOffset(60)] public int HitboxBoneIndex; - [FieldOffset(64)] public int Contents; - [FieldOffset(68)] public int RayType; - [FieldOffset(72)] public int AllSolid; - [FieldOffset(76)] public int ExactHitPoint; + public override bool Equals(object? obj) + { + return obj is CTransform t && this == t; + } - [FieldOffset(80)] public nint HitEntityHandle; - [FieldOffset(88)] public nint HitboxHandle; - [FieldOffset(96)] public nint SurfacePropsHandle; - [FieldOffset(104)] public nint BodyHandle; - [FieldOffset(112)] public nint ShapeHandle; + public override int GetHashCode() + { + return HashCode.Combine(Position, Orientation); + } + public override string ToString() + { + return $"CTransform(Position: {Position}, Orientation: {Orientation})"; + } + } + + [StructLayout(LayoutKind.Explicit, Size = 208)] + public struct TraceResult + { + [FieldOffset(0)] public float StartPosX; + [FieldOffset(4)] public float StartPosY; + [FieldOffset(8)] public float StartPosZ; + [FieldOffset(12)] public float EndPosX; + [FieldOffset(16)] public float EndPosY; + [FieldOffset(20)] public float EndPosZ; + [FieldOffset(24)] public float HitPointX; + [FieldOffset(28)] public float HitPointY; + [FieldOffset(32)] public float HitPointZ; + [FieldOffset(36)] public float NormalX; + [FieldOffset(40)] public float NormalY; + [FieldOffset(44)] public float NormalZ; + [FieldOffset(48)] public float Fraction; + [FieldOffset(52)] public float HitOffset; + + [FieldOffset(56)] public int TriangleIndex; + [FieldOffset(60)] public int HitboxBoneIndex; + [FieldOffset(64)] public InteractionLayers Contents; + [FieldOffset(68)] public RayType_t RayType; + [FieldOffset(72)] public int AllSolid; + [FieldOffset(76)] public int ExactHitPoint; + + [FieldOffset(80)] public nint HitEntityHandle; + [FieldOffset(88)] public nint HitboxHandle; + [FieldOffset(96)] public nint SurfacePropsHandle; + [FieldOffset(104)] public nint BodyHandle; + [FieldOffset(112)] public nint ShapeHandle; [FieldOffset(128)] public CTransform BodyTransform; [FieldOffset(160)] public RnCollisionAttr_t ShapeAttributes; - public Vector3 StartPos => new(StartPosX, StartPosY, StartPosZ); + public Vector3 StartPos => new(StartPosX, StartPosY, StartPosZ); public Vector3 EndPos => new(EndPosX, EndPosY, EndPosZ); public Vector3 HitPoint => new(HitPointX, HitPointY, HitPointZ); public Vector3 Normal => new(NormalX, NormalY, NormalZ); @@ -362,14 +363,21 @@ namespace RayTraceAPI => HitboxHandle == 0 ? default : Marshal.PtrToStructure(HitboxHandle); public CPhysSurfacePropertiesTrace SurfaceProps - => SurfacePropsHandle == 0 ? default : Marshal.PtrToStructure(SurfacePropsHandle); - } + => SurfacePropsHandle == 0 + ? default + : Marshal.PtrToStructure(SurfacePropsHandle); + } #endregion - public interface CRayTraceInterface - { - public unsafe bool TraceShape(Vector origin, QAngle angles, CBaseEntity? ignoreEntity, TraceOptions options, out TraceResult result); - public unsafe bool TraceEndShape(Vector origin, Vector endOrigin, CBaseEntity? ignoreEntity, TraceOptions options, out TraceResult result); - public unsafe bool TraceHullShape(Vector vecStart, Vector vecEnd, Vector hullMins, Vector hullMaxs, CBaseEntity? ignoreEntity, TraceOptions options, out TraceResult result); - } + public interface CRayTraceInterface + { + public unsafe bool TraceShape(Vector origin, QAngle angles, CBaseEntity? ignoreEntity, TraceOptions options, + out TraceResult result); + + public unsafe bool TraceEndShape(Vector origin, Vector endOrigin, CBaseEntity? ignoreEntity, + TraceOptions options, out TraceResult result); + + public unsafe bool TraceHullShape(Vector vecStart, Vector vecEnd, Vector hullMins, Vector hullMaxs, + CBaseEntity? ignoreEntity, TraceOptions options, out TraceResult result); + } } \ No newline at end of file diff --git a/src/Plugin.cpp b/src/Plugin.cpp index af3ecfb..2c92d1d 100644 --- a/src/Plugin.cpp +++ b/src/Plugin.cpp @@ -1,6 +1,6 @@ -#include "Plugin.h" +#include "plugin.h" #include "path.h" -#include "Shared.h" +#include "shared.h" #include "dynlibutils/module.h" #include #include "igameevents.h" @@ -13,10 +13,10 @@ #include #include #include -#include -#include "CRayTraceInterface.h" +#include +#include "craytraceinterface.h" #include "log.h" -#include "RayTrace.h" +#include "raytrace.h" #include "tasks.h" #define VERSION_STRING SEMVER " @ " GITHUB_SHA diff --git a/src/RayTrace.cpp b/src/RayTrace.cpp index e37a23f..ea8e585 100644 --- a/src/RayTrace.cpp +++ b/src/RayTrace.cpp @@ -2,8 +2,8 @@ // Created by Michal Přikryl on 30.08.2025. // Copyright (c) 2025 slynxcz. All rights reserved. // -#include "RayTrace.h" -#include +#include "raytrace.h" +#include #include "schema/CBaseModelEntity.h" #include "vectorextends.h" #include "dynlibutils/memaddr.h" diff --git a/src/gameconfig.cpp b/src/gameconfig.cpp index 59facce..748ccc4 100644 --- a/src/gameconfig.cpp +++ b/src/gameconfig.cpp @@ -4,7 +4,7 @@ // #include "gameconfig.h" #include -#include +#include namespace RayTracePlugin { diff --git a/src/listeners/Listeners.cpp b/src/listeners/Listeners.cpp index ed2893b..dc288ad 100644 --- a/src/listeners/Listeners.cpp +++ b/src/listeners/Listeners.cpp @@ -2,9 +2,9 @@ // Created by Michal Přikryl on 10.07.2025. // Copyright (c) 2025 slynxcz. All rights reserved. // -#include "Listeners.h" -#include -#include +#include "listeners.h" +#include +#include #include #include diff --git a/src/path.h b/src/path.h index ab82ea8..8cab4a4 100644 --- a/src/path.h +++ b/src/path.h @@ -6,7 +6,7 @@ #include #include -#include "Shared.h" +#include "shared.h" namespace RayTracePlugin::Paths { static std::string gameDirectory; diff --git a/src/schema/CBaseEntity.h b/src/schema/CBaseEntity.h index c8b220b..61a482e 100644 --- a/src/schema/CBaseEntity.h +++ b/src/schema/CBaseEntity.h @@ -11,7 +11,7 @@ #include "globaltypes.h" #include "virtual.h" #include "dynlibutils/module.h" -#include "Shared.h" +#include "shared.h" #include "ehandle.h" using namespace RayTracePlugin; diff --git a/src/schema/CTimer.cpp b/src/schema/CTimer.cpp index 84feacf..b49c911 100644 --- a/src/schema/CTimer.cpp +++ b/src/schema/CTimer.cpp @@ -4,7 +4,7 @@ // #include "CTimer.h" -#include +#include namespace RayTracePlugin diff --git a/src/schema/CTimer.h b/src/schema/CTimer.h index d3fa2a5..00b31f3 100644 --- a/src/schema/CTimer.h +++ b/src/schema/CTimer.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include "tasks.h" diff --git a/src/schema/cgameresourceserviceserver.h b/src/schema/cgameresourceserviceserver.h index 45c18c1..04d2f7e 100644 --- a/src/schema/cgameresourceserviceserver.h +++ b/src/schema/cgameresourceserviceserver.h @@ -19,7 +19,7 @@ #pragma once #include -#include "Plugin.h" +#include "plugin.h" class CGameEntitySystem; diff --git a/src/Shared.cpp b/src/shared.cpp similarity index 98% rename from src/Shared.cpp rename to src/shared.cpp index 6245f74..cacbd42 100644 --- a/src/Shared.cpp +++ b/src/shared.cpp @@ -2,7 +2,7 @@ // Created by Michal Přikryl on 20.09.2025. // Copyright (c) 2025 slynxcz. All rights reserved. // -#include "Shared.h" +#include "shared.h" #include #include #include diff --git a/src/Shared.h b/src/shared.h similarity index 100% rename from src/Shared.h rename to src/shared.h