source2sdk/sdk/worldrenderer.hpp

460 lines
12 KiB
C++
Raw Normal View History

2023-03-15 15:20:35 +00:00
#pragma once
#include <cstdint>
#include "!GlobalTypes.hpp"
2023-03-23 14:05:13 +00:00
// /////////////////////////////////////////////////////////////
2023-03-15 15:20:35 +00:00
// Binary: worldrenderer.dll
2023-09-28 04:26:38 +00:00
// Classes count: 27
2023-03-23 14:05:13 +00:00
// Enums count: 1
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
2023-03-15 15:20:35 +00:00
2023-03-23 14:05:13 +00:00
// Alignment: 4
2023-08-31 01:50:54 +00:00
// Size: 0x10
2023-03-15 15:20:35 +00:00
enum class ObjectTypeFlags_t : uint32_t
{
OBJECT_TYPE_NONE = 0x0,
OBJECT_TYPE_IMAGE_LOD = 0x1,
OBJECT_TYPE_GEOMETRY_LOD = 0x2,
OBJECT_TYPE_DECAL = 0x4,
OBJECT_TYPE_MODEL = 0x8,
OBJECT_TYPE_BLOCK_LIGHT = 0x10,
OBJECT_TYPE_NO_SHADOWS = 0x20,
OBJECT_TYPE_WORLDSPACE_TEXURE_BLEND = 0x40,
OBJECT_TYPE_DISABLED_IN_LOW_QUALITY = 0x80,
OBJECT_TYPE_NO_SUN_SHADOWS = 0x100,
OBJECT_TYPE_RENDER_WITH_DYNAMIC = 0x200,
OBJECT_TYPE_RENDER_TO_CUBEMAPS = 0x400,
OBJECT_TYPE_MODEL_HAS_LODS = 0x800,
2023-08-31 01:50:54 +00:00
OBJECT_TYPE_OVERLAY = 0x2000,
2023-03-15 15:20:35 +00:00
OBJECT_TYPE_PRECOMPUTED_VISMEMBERS = 0x4000,
OBJECT_TYPE_STATIC_CUBE_MAP = 0x8000,
};
2023-03-23 14:05:13 +00:00
struct CRenderBufferBinding;
2023-08-31 01:50:54 +00:00
struct AABB_t;
2023-03-23 14:05:13 +00:00
struct BakedLightingInfo_t;
struct WorldBuilderParams_t;
struct VoxelVisBlockOffset_t;
struct ChangeAccessorFieldPathIndex_t;
struct CEntityIdentity;
struct CScriptComponent;
// Alignment: 7
// Size: 0x30
2023-03-15 15:20:35 +00:00
struct EntityIOConnectionData_t
{
public:
2023-03-23 14:05:13 +00:00
CUtlString m_outputName; // 0x0
uint32_t m_targetType; // 0x8
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad000c[0x4]; // 0xc
2023-03-23 14:05:13 +00:00
public:
CUtlString m_targetName; // 0x10
CUtlString m_inputName; // 0x18
CUtlString m_overrideParam; // 0x20
float m_flDelay; // 0x28
int32_t m_nTimesToFire; // 0x2c
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 2
2023-08-31 01:50:54 +00:00
// Size: 0x40
2023-03-15 15:20:35 +00:00
struct EntityKeyValueData_t
{
2023-08-31 01:50:54 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x8]; // 0x0
2023-03-15 15:20:35 +00:00
public:
2023-08-31 01:50:54 +00:00
CUtlVector< EntityIOConnectionData_t > m_connections; // 0x8
CUtlBinaryBlock m_keyValuesData; // 0x20
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 4
// Size: 0x40
2023-03-15 15:20:35 +00:00
struct PermEntityLumpData_t
{
2023-08-31 01:50:54 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x8]; // 0x0
2023-03-15 15:20:35 +00:00
public:
2023-08-31 01:50:54 +00:00
CUtlString m_name; // 0x8
CUtlString m_hammerUniqueId; // 0x10
CUtlVector< CStrongHandleCopyable< InfoForResourceTypeCEntityLump > > m_childLumps; // 0x18
CUtlLeanVector< EntityKeyValueData_t > m_entityKeyValues; // 0x30
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 15
// Size: 0x90
2023-03-15 15:20:35 +00:00
struct SceneObject_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nObjectID; // 0x0
Vector4D m_vTransform[3]; // 0x4
float m_flFadeStartDistance; // 0x34
float m_flFadeEndDistance; // 0x38
Vector4D m_vTintColor; // 0x3c
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad004c[0x4]; // 0x4c
2023-03-23 14:05:13 +00:00
public:
CUtlString m_skin; // 0x50
ObjectTypeFlags_t m_nObjectTypeFlags; // 0x58
Vector m_vLightingOrigin; // 0x5c
uint32_t m_nLightGroup; // 0x68
int16_t m_nOverlayRenderOrder; // 0x6c
int16_t m_nLODOverride; // 0x6e
int32_t m_nCubeMapPrecomputedHandshake; // 0x70
int32_t m_nLightProbeVolumePrecomputedHandshake; // 0x74
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0078[0x8]; // 0x78
2023-03-23 14:05:13 +00:00
public:
CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x80
CStrongHandle< InfoForResourceTypeCRenderMesh > m_renderable; // 0x88
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 1
// Size: 0x4
2023-03-15 15:20:35 +00:00
struct BaseSceneObjectOverride_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nSceneObjectIndex; // 0x0
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 4
// Size: 0x28
2023-03-15 15:20:35 +00:00
struct ExtraVertexStreamOverride_t : public BaseSceneObjectOverride_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nSubSceneObject; // 0x4
uint32_t m_nDrawCallIndex; // 0x8
MeshDrawPrimitiveFlags_t m_nAdditionalMeshDrawPrimitiveFlags; // 0xc
CRenderBufferBinding m_extraBufferBinding; // 0x10
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 3
// Size: 0x18
2023-03-15 15:20:35 +00:00
struct MaterialOverride_t : public BaseSceneObjectOverride_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nSubSceneObject; // 0x4
uint32_t m_nDrawCallIndex; // 0x8
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad000c[0x4]; // 0xc
2023-03-23 14:05:13 +00:00
public:
CStrongHandle< InfoForResourceTypeIMaterial2 > m_pMaterial; // 0x10
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 10
// Size: 0x70
2023-03-15 15:20:35 +00:00
struct InfoOverlayData_t
{
public:
2023-03-23 14:05:13 +00:00
matrix3x4_t m_transform; // 0x0
float m_flWidth; // 0x30
float m_flHeight; // 0x34
float m_flDepth; // 0x38
Vector2D m_vUVStart; // 0x3c
Vector2D m_vUVEnd; // 0x44
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad004c[0x4]; // 0x4c
2023-03-23 14:05:13 +00:00
public:
CStrongHandle< InfoForResourceTypeIMaterial2 > m_pMaterial; // 0x50
int32_t m_nRenderOrder; // 0x58
Vector4D m_vTintColor; // 0x5c
int32_t m_nSequenceOverride; // 0x6c
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 5
// Size: 0x30
2023-03-15 15:20:35 +00:00
struct BakedLightingInfo_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nLightmapVersionNumber; // 0x0
uint32_t m_nLightmapGameVersionNumber; // 0x4
Vector2D m_vLightmapUvScale; // 0x8
bool m_bHasLightmaps; // 0x10
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0011[0x7]; // 0x11
2023-03-23 14:05:13 +00:00
public:
CUtlVector< CStrongHandle< InfoForResourceTypeCTextureBase > > m_lightMaps; // 0x18
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 4
// Size: 0x38
2023-03-15 15:20:35 +00:00
struct WorldNodeOnDiskBufferData_t
{
public:
2023-03-23 14:05:13 +00:00
int32_t m_nElementCount; // 0x0
int32_t m_nElementSizeInBytes; // 0x4
CUtlVector< RenderInputLayoutField_t > m_inputLayoutFields; // 0x8
CUtlVector< uint8 > m_pData; // 0x20
2023-03-15 15:20:35 +00:00
};
2023-08-31 01:50:54 +00:00
// Alignment: 9
// Size: 0x18
2023-03-15 15:20:35 +00:00
struct AggregateMeshInfo_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nVisClusterMemberOffset; // 0x0
uint8_t m_nVisClusterMemberCount; // 0x4
bool m_bHasTransform; // 0x5
int16_t m_nDrawCallIndex; // 0x6
2023-04-21 10:40:43 +00:00
int16_t m_nLODSetupIndex; // 0x8
uint8_t m_nLODGroupMask; // 0xa
Color m_vTintColor; // 0xb
2023-03-23 14:05:13 +00:00
private:
2023-04-21 10:40:43 +00:00
[[maybe_unused]] uint8_t __pad000f[0x1]; // 0xf
2023-03-23 14:05:13 +00:00
public:
ObjectTypeFlags_t m_objectFlags; // 0x10
2023-04-21 10:40:43 +00:00
int32_t m_nLightProbeVolumePrecomputedHandshake; // 0x14
2023-03-15 15:20:35 +00:00
};
2023-09-28 04:26:38 +00:00
// Alignment: 3
// Size: 0x38
2023-04-21 10:40:43 +00:00
struct AggregateLODSetup_t
{
public:
Vector m_vLODOrigin; // 0x0
float m_fMaxObjectScale; // 0xc
2023-09-28 04:26:38 +00:00
CUtlVectorFixedGrowable< float32 > m_fSwitchDistances; // 0x10
2023-04-21 10:40:43 +00:00
};
// Alignment: 8
// Size: 0x78
2023-03-15 15:20:35 +00:00
struct AggregateSceneObject_t
{
public:
2023-03-23 14:05:13 +00:00
ObjectTypeFlags_t m_allFlags; // 0x0
ObjectTypeFlags_t m_anyFlags; // 0x4
int16_t m_nLayer; // 0x8
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad000a[0x6]; // 0xa
2023-03-23 14:05:13 +00:00
public:
CUtlVector< AggregateMeshInfo_t > m_aggregateMeshes; // 0x10
2023-04-21 10:40:43 +00:00
CUtlVector< AggregateLODSetup_t > m_lodSetups; // 0x28
CUtlVector< uint16 > m_visClusterMembership; // 0x40
CUtlVector< matrix3x4_t > m_fragmentTransforms; // 0x58
CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x70
2023-03-15 15:20:35 +00:00
};
2023-08-31 01:50:54 +00:00
// Alignment: 3
// Size: 0x20
struct ClutterTile_t
{
public:
uint32_t m_nFirstInstance; // 0x0
uint32_t m_nLastInstance; // 0x4
AABB_t m_BoundsWs; // 0x8
};
// Alignment: 8
// Size: 0xa0
struct ClutterSceneObject_t
{
public:
AABB_t m_Bounds; // 0x0
ObjectTypeFlags_t m_flags; // 0x18
int16_t m_nLayer; // 0x1c
private:
[[maybe_unused]] uint8_t __pad001e[0x2]; // 0x1e
public:
CUtlVector< Vector > m_instancePositions; // 0x20
private:
[[maybe_unused]] uint8_t __pad0038[0x18]; // 0x38
public:
CUtlVector< float32 > m_instanceScales; // 0x50
CUtlVector< Color > m_instanceTintSrgb; // 0x68
CUtlVector< ClutterTile_t > m_tiles; // 0x80
CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x98
};
// Alignment: 13
// Size: 0x140
2023-03-15 15:20:35 +00:00
struct WorldNode_t
{
public:
2023-03-23 14:05:13 +00:00
CUtlVector< SceneObject_t > m_sceneObjects; // 0x0
CUtlVector< InfoOverlayData_t > m_infoOverlays; // 0x18
CUtlVector< uint16 > m_visClusterMembership; // 0x30
CUtlVector< AggregateSceneObject_t > m_aggregateSceneObjects; // 0x48
2023-08-31 01:50:54 +00:00
CUtlVector< ClutterSceneObject_t > m_clutterSceneObjects; // 0x60
CUtlVector< ExtraVertexStreamOverride_t > m_extraVertexStreamOverrides; // 0x78
CUtlVector< MaterialOverride_t > m_materialOverrides; // 0x90
CUtlVector< WorldNodeOnDiskBufferData_t > m_extraVertexStreams; // 0xa8
CUtlVector< CUtlString > m_layerNames; // 0xc0
CUtlVector< uint8 > m_sceneObjectLayerIndices; // 0xd8
CUtlVector< uint8 > m_overlayLayerIndices; // 0xf0
CUtlString m_grassFileName; // 0x108
BakedLightingInfo_t m_nodeLightingInfo; // 0x110
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 5
// Size: 0x20
2023-03-15 15:20:35 +00:00
struct WorldBuilderParams_t
{
public:
2023-03-23 14:05:13 +00:00
float m_flMinDrawVolumeSize; // 0x0
bool m_bBuildBakedLighting; // 0x4
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0005[0x3]; // 0x5
2023-03-23 14:05:13 +00:00
public:
Vector2D m_vLightmapUvScale; // 0x8
uint64_t m_nCompileTimestamp; // 0x10
uint64_t m_nCompileFingerprint; // 0x18
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 7
// Size: 0x50
2023-03-15 15:20:35 +00:00
struct NodeData_t
{
public:
2023-03-23 14:05:13 +00:00
int32_t m_nParent; // 0x0
Vector m_vOrigin; // 0x4
Vector m_vMinBounds; // 0x10
Vector m_vMaxBounds; // 0x1c
float m_flMinimumDistance; // 0x28
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad002c[0x4]; // 0x2c
2023-03-23 14:05:13 +00:00
public:
CUtlVector< int32 > m_ChildNodeIndices; // 0x30
CUtlString m_worldNodePrefix; // 0x48
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 4
// Size: 0x80
2023-03-15 15:20:35 +00:00
struct World_t
{
public:
2023-03-23 14:05:13 +00:00
WorldBuilderParams_t m_builderParams; // 0x0
CUtlVector< NodeData_t > m_worldNodes; // 0x20
BakedLightingInfo_t m_worldLightingInfo; // 0x38
CUtlVector< CStrongHandleCopyable< InfoForResourceTypeCEntityLump > > m_entityLumps; // 0x68
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 2
// Size: 0x8
2023-03-15 15:20:35 +00:00
struct VoxelVisBlockOffset_t
{
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nOffset; // 0x0
uint32_t m_nElementCount; // 0x4
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 13
// Size: 0xa0
2023-03-15 15:20:35 +00:00
class CVoxelVisibility
{
2023-03-25 17:14:12 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x40]; // 0x0
2023-03-15 15:20:35 +00:00
public:
2023-03-23 14:05:13 +00:00
uint32_t m_nBaseClusterCount; // 0x40
uint32_t m_nPVSBytesPerCluster; // 0x44
Vector m_vMinBounds; // 0x48
Vector m_vMaxBounds; // 0x54
float m_flGridSize; // 0x60
uint32_t m_nSkyVisibilityCluster; // 0x64
uint32_t m_nSunVisibilityCluster; // 0x68
VoxelVisBlockOffset_t m_NodeBlock; // 0x6c
VoxelVisBlockOffset_t m_RegionBlock; // 0x74
VoxelVisBlockOffset_t m_EnclosedClusterListBlock; // 0x7c
VoxelVisBlockOffset_t m_EnclosedClustersBlock; // 0x84
VoxelVisBlockOffset_t m_MasksBlock; // 0x8c
VoxelVisBlockOffset_t m_nVisBlocks; // 0x94
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 0
// Size: 0x1
2023-03-15 15:20:35 +00:00
struct VMapResourceData_t
{
2023-03-25 17:14:12 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x1]; // 0x0
2023-03-15 15:20:35 +00:00
public:
2023-03-25 17:14:12 +00:00
// No members available
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 0
// Size: 0x1
2023-03-15 15:20:35 +00:00
struct InfoForResourceTypeVMapResourceData_t
{
2023-03-25 17:14:12 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x1]; // 0x0
2023-03-15 15:20:35 +00:00
public:
2023-03-25 17:14:12 +00:00
// No members available
2023-03-15 15:20:35 +00:00
};
2023-09-28 04:26:38 +00:00
// Alignment: 0
// Size: 0x8
class CEntityComponent
{
private:
[[maybe_unused]] uint8_t __pad0000[0x8]; // 0x0
public:
// No members available
};
2023-03-23 14:05:13 +00:00
// Alignment: 11
// Size: 0x78
2023-03-15 15:20:35 +00:00
class CEntityIdentity
{
2023-03-25 17:14:12 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x14]; // 0x0
2023-03-15 15:20:35 +00:00
public:
// MNetworkEnable
// MNetworkChangeCallback "entityIdentityNameChanged"
2023-03-23 14:05:13 +00:00
int32_t m_nameStringableIndex; // 0x14
CUtlSymbolLarge m_name; // 0x18
CUtlSymbolLarge m_designerName; // 0x20
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0028[0x8]; // 0x28
2023-03-23 14:05:13 +00:00
public:
uint32_t m_flags; // 0x30
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0034[0x4]; // 0x34
2023-03-23 14:05:13 +00:00
public:
2023-03-15 15:20:35 +00:00
// MNetworkDisable
2023-03-23 14:05:13 +00:00
WorldGroupId_t m_worldGroupId; // 0x38
uint32_t m_fDataObjectTypes; // 0x3c
2023-03-15 15:20:35 +00:00
// MNetworkDisable
// MNetworkChangeAccessorFieldPathIndex
2023-03-23 14:05:13 +00:00
ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x40
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0042[0x16]; // 0x42
2023-03-23 14:05:13 +00:00
public:
CEntityIdentity* m_pPrev; // 0x58
CEntityIdentity* m_pNext; // 0x60
CEntityIdentity* m_pPrevByClass; // 0x68
CEntityIdentity* m_pNextByClass; // 0x70
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 3
// Size: 0x30
2023-09-28 04:26:38 +00:00
class CEntityInstance
2023-03-15 15:20:35 +00:00
{
2023-09-28 04:26:38 +00:00
private:
[[maybe_unused]] uint8_t __pad0000[0x8]; // 0x0
2023-03-15 15:20:35 +00:00
public:
// MNetworkDisable
2023-03-23 14:05:13 +00:00
CUtlSymbolLarge m_iszPrivateVScripts; // 0x8
2023-03-15 15:20:35 +00:00
// MNetworkEnable
// MNetworkPriority "56"
2023-03-23 14:05:13 +00:00
CEntityIdentity* m_pEntity; // 0x10
private:
2023-03-24 22:01:31 +00:00
[[maybe_unused]] uint8_t __pad0018[0x10]; // 0x18
2023-03-23 14:05:13 +00:00
public:
2023-03-15 15:20:35 +00:00
// MNetworkEnable
// MNetworkDisable
2023-03-23 14:05:13 +00:00
CScriptComponent* m_CScriptComponent; // 0x28
2023-03-15 15:20:35 +00:00
};
2023-03-23 14:05:13 +00:00
// Alignment: 1
// Size: 0x38
2023-03-15 15:20:35 +00:00
class CScriptComponent : public CEntityComponent
{
2023-03-25 17:14:12 +00:00
private:
[[maybe_unused]] uint8_t __pad0008[0x28]; // 0x8
2023-03-15 15:20:35 +00:00
public:
2023-03-23 14:05:13 +00:00
CUtlSymbolLarge m_scriptClassName; // 0x30
2023-03-25 17:14:12 +00:00
// Static fields:
2023-03-23 14:05:13 +00:00
static EntComponentInfo_t &Get_s_EntComponentInfo(){return *reinterpret_cast<EntComponentInfo_t*>(interfaces::g_schema->FindTypeScopeForModule("worldrenderer.dll")->FindDeclaredClass("CScriptComponent")->m_static_fields[0]->m_instance);};
static int32_t &Get_entity_component_error_class_decl_says_contained_but_impl_is_referenced(){return *reinterpret_cast<int32_t*>(interfaces::g_schema->FindTypeScopeForModule("worldrenderer.dll")->FindDeclaredClass("CScriptComponent")->m_static_fields[1]->m_instance);};
2023-03-15 15:20:35 +00:00
};