Overlay improvements

* Move render utils to dedicated file.
* Implement more render/mesh utils.
* Added structure for OverlayTriangle_t, OverlaySweptBox_t and OverlayCapsule_t.
OverlayCapsule_t has been modified to accommodate the size in r5 (2 new vectors).
This commit is contained in:
Kawe Mazidjatari 2022-07-07 21:31:00 +02:00
parent 0463647268
commit d8a45ae563
11 changed files with 351 additions and 56 deletions

View File

@ -5,14 +5,16 @@
//============================================================================// //============================================================================//
#include "core/stdafx.h" #include "core/stdafx.h"
#include "common/pseudodefs.h"
#include "tier0/tslist.h" #include "tier0/tslist.h"
#include "tier0/basetypes.h" #include "tier0/basetypes.h"
#include "tier1/cvar.h" #include "tier1/cvar.h"
#include "common/pseudodefs.h" #include "tier2/renderutils.h"
#include "engine/client/clientstate.h" #include "engine/client/clientstate.h"
#include "engine/host_cmd.h" #include "engine/host_cmd.h"
#include "engine/debugoverlay.h" #include "engine/debugoverlay.h"
#include "materialsystem/cmaterialsystem.h" #include "materialsystem/cmaterialsystem.h"
#include "mathlib/mathlib.h"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -82,7 +84,8 @@ void DestroyOverlay(OverlayBase_t* pOverlay)
LeaveCriticalSection(&*s_OverlayMutex); LeaveCriticalSection(&*s_OverlayMutex);
return; return;
case OverlayType_t::OVERLAY_BOX2: case OverlayType_t::OVERLAY_BOX2:
break; pOverlaySize = 88i64;
goto LABEL_MALLOC;
case OverlayType_t::OVERLAY_CAPSULE: case OverlayType_t::OVERLAY_CAPSULE:
pOverlaySize = 112i64; pOverlaySize = 112i64;
break; break;
@ -100,71 +103,24 @@ void DestroyOverlay(OverlayBase_t* pOverlay)
LeaveCriticalSection(&*s_OverlayMutex); LeaveCriticalSection(&*s_OverlayMutex);
} }
//script_client DrawAngledBox(<0,0,0>, <10,10,10>, <0,0,0>, <1000,1000,1000>, 20, 200, 220, true, 10)
void DrawBoxTest(OverlayBox_t* pBox) // FIXME: center within box and angles.
{
//Vector3D test = Vector3D(10, 10, 10).ToForward();
//printf("<%f, %f, %f>\n", test.x, test.y, test.z);
//v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false); // WIREFRAME
// Vertical
v_RenderLine({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, { pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
// Lower horizontal
v_RenderLine({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, { pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
// Upper horizontal
v_RenderLine({ pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, { pBox->origin_X, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, { pBox->origin_X, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, { pBox->origin_X + pBox->maxs.x, pBox->origin_Y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
v_RenderLine({ pBox->origin_X + pBox->maxs.x, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, { pBox->origin_X, pBox->origin_Y + pBox->maxs.y, pBox->origin_Z + pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Purpose: draws a generic overlay // Purpose: draws a generic overlay
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void DrawOverlay(OverlayBase_t* pOverlay) void DrawOverlay(OverlayBase_t* pOverlay)
{ {
//void* pRenderContext = nullptr; // ptr to CMatQueuedRenderContext vtable.
EnterCriticalSection(&*s_OverlayMutex); EnterCriticalSection(&*s_OverlayMutex);
//pRenderContext = (*(void*(__fastcall**)(void*))(**(std::int64_t**)g_pMaterialSystem + MATERIALSYSTEM_VCALL_OFF_0))((void*)g_pMaterialSystem);
//(*(void(__fastcall**)(void*, std::int64_t))(*(std::int64_t*)pRenderContext + CMATQUEUEDRENDERCONTEXT_VCALL_OFS_0))((void*)pRenderContext, 0x1);
switch (pOverlay->m_Type) switch (pOverlay->m_Type)
{ {
case OverlayType_t::OVERLAY_BOX: case OverlayType_t::OVERLAY_BOX:
{ {
//printf("%p\n", pOverlay); //printf("%p\n", pOverlay);
OverlayBox_t* pBox = static_cast<OverlayBox_t*>(pOverlay); // TODO: debug this since it doesn't work but does compute something.. OverlayBox_t* pBox = static_cast<OverlayBox_t*>(pOverlay);
// for testing, since RenderWireframeBox doesn't seem to work properly
//v_RenderWireframeBox({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, pBox->maxs, {0,0,0}, Color(pBox->r, pBox->g, pBox->b, 255), false); // <-- currently broken!
//v_RenderWireframeSphere({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, pBox->maxs.x, 8, 8, Color(pBox->r, pBox->g, pBox->b, 255), false);
//v_RenderLine({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, { pBox->origin_X, pBox->origin_Y, pBox->origin_Z+pBox->maxs.z }, Color(pBox->r, pBox->g, pBox->b, 255), false);
if (pBox->a < 1) if (pBox->a < 1)
pBox->a = 255; pBox->a = 255;
DrawBoxTest(pBox);
//if (pBox->a < 255) DrawAngledBox({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, { 0,0,0 }, pBox->mins, pBox->maxs, pBox->r, pBox->g, pBox->b, pBox->a, false);
//{
// RenderWireframeBox({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, pBox->angles, pBox->maxs, Color(pBox->r, pBox->g, pBox->b, 255), false);
//}
//else {
// RenderBox({ pBox->origin_X, pBox->origin_Y, pBox->origin_Z }, pBox->angles, pBox->mins, pBox->maxs, Color(pBox->r, pBox->g, pBox->b, pBox->a), false);
//}
break; break;
} }
case OverlayType_t::OVERLAY_SPHERE: case OverlayType_t::OVERLAY_SPHERE:
@ -181,31 +137,35 @@ void DrawOverlay(OverlayBase_t* pOverlay)
} }
case OverlayType_t::OVERLAY_TRIANGLE: case OverlayType_t::OVERLAY_TRIANGLE:
{ {
//printf("TRIANGLE %p\n", pOverlay);
break; break;
} }
case OverlayType_t::OVERLAY_SWEPT_BOX: case OverlayType_t::OVERLAY_SWEPT_BOX:
{ {
//printf("SBOX %p\n", pOverlay);
break; break;
} }
case OverlayType_t::OVERLAY_BOX2: case OverlayType_t::OVERLAY_BOX2:
{ {
//printf("BOX2 %p\n", pOverlay);
break; break;
} }
case OverlayType_t::OVERLAY_CAPSULE: case OverlayType_t::OVERLAY_CAPSULE:
{ {
//printf("CAPSULE %p\n", pOverlay);
break; break;
} }
case OverlayType_t::OVERLAY_UNK0: case OverlayType_t::OVERLAY_UNK0:
{ {
//printf("UNK0 %p\n", pOverlay);
break; break;
} }
case OverlayType_t::OVERLAY_UNK1: case OverlayType_t::OVERLAY_UNK1:
{ {
//printf("UNK1 %p\n", pOverlay);
break; break;
} }
} }
//(*(void(__fastcall**)(void*))(*(_QWORD*)pRenderContext + CMATQUEUEDRENDERCONTEXT_VCALL_OFS_1))(pRenderContext);
//(*(void(__fastcall**)(void*))(*(_QWORD*)pRenderContext + CMATQUEUEDRENDERCONTEXT_VCALL_OFS_2))(pRenderContext);
LeaveCriticalSection(&*s_OverlayMutex); LeaveCriticalSection(&*s_OverlayMutex);
} }

View File

@ -71,11 +71,11 @@ struct OverlayBox_t : public OverlayBase_t
{ {
OverlayBox_t(void) { m_Type = OverlayType_t::OVERLAY_BOX; } OverlayBox_t(void) { m_Type = OverlayType_t::OVERLAY_BOX; }
QAngle angles{}; //0x0020 - this isn't angles but idrk where it is RadianEuler angles{}; //0x0020 - this isn't angles but idrk where it is
float origin_X{}; //0x002C float origin_X{}; //0x002C
Vector3D unk30{}; //0x0030 RadianEuler unk30{}; //0x0030
float origin_Y{}; //0x003C float origin_Y{}; //0x003C
Vector3D unk40{}; //0x0040 RadianEuler unk40{}; //0x0040
float origin_Z{}; //0x004C float origin_Z{}; //0x004C
Vector3D mins{}; //0x0050 Vector3D mins{}; //0x0050
Vector3D maxs{}; //0x005C Vector3D maxs{}; //0x005C
@ -99,6 +99,51 @@ struct OverlaySphere_t : public OverlayBase_t
int a{}; int a{};
}; };
struct OverlayTriangle_t : public OverlayBase_t
{
OverlayTriangle_t() { m_Type = OverlayType_t::OVERLAY_TRIANGLE; }
Vector3D p1;
Vector3D p2;
Vector3D p3;
int r;
int g;
int b;
int a;
bool noDepthTest;
};
struct OverlaySweptBox_t : public OverlayBase_t
{
OverlaySweptBox_t() { m_Type = OverlayType_t::OVERLAY_SWEPT_BOX; }
Vector3D start;
Vector3D end;
Vector3D mins;
Vector3D maxs;
QAngle angles;
int r;
int g;
int b;
int a;
};
struct OverlayCapsule_t : public OverlayBase_t
{
OverlayCapsule_t() { m_Type = OverlayType_t::OVERLAY_CAPSULE; }
Vector3D start;
Vector3D end;
Vector3D radius;
Vector3D top;
Vector3D bottom;
int r;
int g;
int b;
int a;
bool m_bWireframe;
};
void DestroyOverlay(OverlayBase_t* pOverlay); void DestroyOverlay(OverlayBase_t* pOverlay);
void DrawOverlay(OverlayBase_t* pOverlay); void DrawOverlay(OverlayBase_t* pOverlay);
void DebugOverlays_Attach(); void DebugOverlays_Attach();

View File

@ -173,6 +173,27 @@
#define ALIGN128_POST #define ALIGN128_POST
#endif #endif
// This can be used to declare an abstract (interface only) class.
// Classes marked abstract should not be instantiated. If they are, and access violation will occur.
//
// Example of use:
//
// abstract_class CFoo
// {
// ...
// }
//
// MSDN __declspec(novtable) documentation: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_novtable.asp
//
// Note: NJS: This is not enabled for regular PC, due to not knowing the implications of exporting a class with no no vtable.
// It's probable that this shouldn't be an issue, but an experiment should be done to verify this.
//
#ifndef COMPILER_MSVCX360
#define abstract_class class
#else
#define abstract_class class NO_VTABLE
#endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Generally useful platform-independent macros (move to another file?) // Generally useful platform-independent macros (move to another file?)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

141
r5dev/tier2/meshutils.cpp Normal file
View File

@ -0,0 +1,141 @@
//===== Copyright <20> 2005-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: A set of utilities to render standard shapes
//
//===========================================================================//
#include "core/stdafx.h"
#include "tier2/meshutils.h"
// NOTE: This has to be the last file included!
//#include "tier0/memdbgon.h"
//-----------------------------------------------------------------------------
// Helper methods to create various standard index buffer types
//-----------------------------------------------------------------------------
void GenerateSequentialIndexBuffer(unsigned short* pIndices, int nIndexCount, int nFirstVertex)
{
if (!pIndices)
return;
// Format the sequential buffer
for (int i = 0; i < nIndexCount; ++i)
{
pIndices[i] = (unsigned short)(i + nFirstVertex);
}
}
void GenerateQuadIndexBuffer(unsigned short* pIndices, int nIndexCount, int nFirstVertex)
{
if (!pIndices)
return;
// Format the quad buffer
int i;
int numQuads = nIndexCount / 6;
unsigned short baseVertex = (unsigned short)nFirstVertex;
if (((size_t)pIndices & 0x3) == 0)
{
// Fast version, requires aligned indices
int* pWrite = (int*)pIndices;
int nWrite = (baseVertex << 16) | baseVertex;
for (i = 0; i < numQuads; ++i)
{
// Have to deal with endian-ness
if (IsX360() || IsPS3())
{
// this avoids compiler write reodering and prevents the write-combined out-of-order penalty
// _WriteBarrier won't compile here, and volatile is ignored
// the compiler otherwise scrambles these writes
*pWrite++ = nWrite + 1;
*pWrite++ = nWrite + (2 << 16);
*pWrite++ = nWrite + (2 << 16) + 3;
}
else
{
pWrite[0] = nWrite + (1 << 16);
pWrite[1] = nWrite + 2;
pWrite[2] = nWrite + (3 << 16) + 2;
pWrite += 3;
}
nWrite += (4 << 16) | 4;
}
}
else
{
for (i = 0; i < numQuads; ++i)
{
pIndices[0] = baseVertex;
pIndices[1] = baseVertex + 1;
pIndices[2] = baseVertex + 2;
// Triangle 2
pIndices[3] = baseVertex;
pIndices[4] = baseVertex + 2;
pIndices[5] = baseVertex + 3;
baseVertex += 4;
pIndices += 6;
}
}
}
void GeneratePolygonIndexBuffer(unsigned short* pIndices, int nIndexCount, int nFirstVertex)
{
if (!pIndices)
return;
int i, baseVertex;
int numPolygons = nIndexCount / 3;
baseVertex = nFirstVertex;
for (i = 0; i < numPolygons; ++i)
{
// Triangle 1
pIndices[0] = (unsigned short)(nFirstVertex);
pIndices[1] = (unsigned short)(nFirstVertex + i + 1);
pIndices[2] = (unsigned short)(nFirstVertex + i + 2);
pIndices += 3;
}
}
void GenerateLineStripIndexBuffer(unsigned short* pIndices, int nIndexCount, int nFirstVertex)
{
if (!pIndices)
return;
int i, baseVertex;
int numLines = nIndexCount / 2;
baseVertex = nFirstVertex;
for (i = 0; i < numLines; ++i)
{
pIndices[0] = (unsigned short)(nFirstVertex + i);
pIndices[1] = (unsigned short)(nFirstVertex + i + 1);
pIndices += 2;
}
}
void GenerateLineLoopIndexBuffer(unsigned short* pIndices, int nIndexCount, int nFirstVertex)
{
if (!pIndices)
{
return;
}
int i, baseVertex;
int numLines = nIndexCount / 2;
baseVertex = nFirstVertex;
pIndices[0] = (unsigned short)(nFirstVertex + numLines - 1);
pIndices[1] = (unsigned short)(nFirstVertex);
pIndices += 2;
for (i = 1; i < numLines; ++i)
{
pIndices[0] = (unsigned short)(nFirstVertex + i - 1);
pIndices[1] = (unsigned short)(nFirstVertex + i);
pIndices += 2;
}
}

26
r5dev/tier2/meshutils.h Normal file
View File

@ -0,0 +1,26 @@
//===== Copyright <20> 2005-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: A set of utilities to help with generating meshes
//
//===========================================================================//
#ifndef MESHUTILS_H
#define MESHUTILS_H
#ifdef _WIN32
#pragma once
#endif
//-----------------------------------------------------------------------------
// Helper methods to create various standard index buffer types
//-----------------------------------------------------------------------------
void GenerateSequentialIndexBuffer(unsigned short* pIndexMemory, int nIndexCount, int nFirstVertex);
void GenerateQuadIndexBuffer(unsigned short* pIndexMemory, int nIndexCount, int nFirstVertex);
void GeneratePolygonIndexBuffer(unsigned short* pIndexMemory, int nIndexCount, int nFirstVertex);
void GenerateLineStripIndexBuffer(unsigned short* pIndexMemory, int nIndexCount, int nFirstVertex);
void GenerateLineLoopIndexBuffer(unsigned short* pIndexMemory, int nIndexCount, int nFirstVertex);
#endif // MESHUTILS_H

View File

@ -0,0 +1,60 @@
//===== Copyright <20> 2005-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: A set of utilities to render standard shapes
//
//===========================================================================//
#include "core/stdafx.h"
#include "mathlib/color.h"
#include "mathlib/vector.h"
#include "mathlib/vector2d.h"
#include "mathlib/vector4d.h"
#include "mathlib/mathlib.h"
#include "tier2/renderutils.h"
#include "engine/debugoverlay.h"
Vector3D* GetBoxCorners(Vector3D org, QAngle ang, Vector3D mins, Vector3D maxs)
{
Vector3D forward;
Vector3D up;
Vector3D right;
AngleVectors(ang, &forward, &right, &up);
Vector3D orgs[8];
orgs[0] = org + (forward * mins.x) + (right * maxs.y) + (up * maxs.z);
orgs[1] = org + (forward * mins.x) + (right * mins.y) + (up * maxs.z);
orgs[2] = org + (forward * maxs.x) + (right * mins.y) + (up * maxs.z);
orgs[3] = org + (forward * maxs.x) + (right * maxs.y) + (up * maxs.z);
orgs[4] = org + (forward * mins.x) + (right * maxs.y) + (up * mins.z);
orgs[5] = org + (forward * mins.x) + (right * mins.y) + (up * mins.z);
orgs[6] = org + (forward * maxs.x) + (right * mins.y) + (up * mins.z);
orgs[7] = org + (forward * maxs.x) + (right * maxs.y) + (up * mins.z);
return orgs;
}
void DrawAngledBox(Vector3D org, QAngle ang, Vector3D mins, Vector3D maxs, int r, int g, int b, int a, bool throughSolid)
{
Vector3D* orgs = GetBoxCorners(org, ang, mins, maxs);
v_RenderLine(orgs[0], orgs[1], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[1], orgs[2], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[2], orgs[3], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[3], orgs[0], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[4], orgs[5], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[5], orgs[6], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[6], orgs[7], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[7], orgs[4], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[0], orgs[4], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[1], orgs[5], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[2], orgs[6], Color(r, g, b, a), throughSolid);
v_RenderLine(orgs[3], orgs[7], Color(r, g, b, a), throughSolid);
}
void RenderCapsule(const Vector3D& vStart, const Vector3D& vEnd, const float& flRadius, Color c)
{
}

10
r5dev/tier2/renderutils.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef RENDERUTILS_H
#define RENDERUTILS_H
#include "mathlib/vector.h"
Vector3D* GetBoxCorners(Vector3D org, QAngle ang, Vector3D mins, Vector3D maxs);
void DrawAngledBox(Vector3D org, QAngle ang, Vector3D mins, Vector3D maxs, int r, int g, int b, int a, bool throughSolid);
void RenderCapsule(const Vector3D& vStart, const Vector3D& vEnd, const float& flRadius, Color c);
#endif // RENDERUTILS_H

View File

@ -109,6 +109,8 @@
<ClCompile Include="..\tier1\IConVar.cpp" /> <ClCompile Include="..\tier1\IConVar.cpp" />
<ClCompile Include="..\tier1\NetAdr2.cpp" /> <ClCompile Include="..\tier1\NetAdr2.cpp" />
<ClCompile Include="..\tier1\strtools.cpp" /> <ClCompile Include="..\tier1\strtools.cpp" />
<ClCompile Include="..\tier2\meshutils.cpp" />
<ClCompile Include="..\tier2\renderutils.cpp" />
<ClCompile Include="..\tier2\socketcreator.cpp" /> <ClCompile Include="..\tier2\socketcreator.cpp" />
<ClCompile Include="..\vguimatsurface\MatSystemSurface.cpp" /> <ClCompile Include="..\vguimatsurface\MatSystemSurface.cpp" />
<ClCompile Include="..\vgui\vgui_baseui_interface.cpp" /> <ClCompile Include="..\vgui\vgui_baseui_interface.cpp" />
@ -458,6 +460,8 @@
<ClInclude Include="..\tier1\utldict.h" /> <ClInclude Include="..\tier1\utldict.h" />
<ClInclude Include="..\tier1\utlmemory.h" /> <ClInclude Include="..\tier1\utlmemory.h" />
<ClInclude Include="..\tier1\utlvector.h" /> <ClInclude Include="..\tier1\utlvector.h" />
<ClInclude Include="..\tier2\meshutils.h" />
<ClInclude Include="..\tier2\renderutils.h" />
<ClInclude Include="..\tier2\socketcreator.h" /> <ClInclude Include="..\tier2\socketcreator.h" />
<ClInclude Include="..\vguimatsurface\MatSystemSurface.h" /> <ClInclude Include="..\vguimatsurface\MatSystemSurface.h" />
<ClInclude Include="..\vgui\vgui_baseui_interface.h" /> <ClInclude Include="..\vgui\vgui_baseui_interface.h" />

View File

@ -540,6 +540,12 @@
<ClCompile Include="..\vstdlib\random.cpp"> <ClCompile Include="..\vstdlib\random.cpp">
<Filter>sdk\vstdlib</Filter> <Filter>sdk\vstdlib</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\tier2\renderutils.cpp">
<Filter>sdk\tier2</Filter>
</ClCompile>
<ClCompile Include="..\tier2\meshutils.cpp">
<Filter>sdk\tier2</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h"> <ClInclude Include="..\client\cdll_engine_int.h">
@ -1586,6 +1592,12 @@
<ClInclude Include="..\vstdlib\random.h"> <ClInclude Include="..\vstdlib\random.h">
<Filter>sdk\vstdlib</Filter> <Filter>sdk\vstdlib</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\tier2\renderutils.h">
<Filter>sdk\tier2</Filter>
</ClInclude>
<ClInclude Include="..\tier2\meshutils.h">
<Filter>sdk\tier2</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="..\shared\resource\lockedserver.png"> <Image Include="..\shared\resource\lockedserver.png">

View File

@ -116,6 +116,8 @@
<ClCompile Include="..\tier1\IConVar.cpp" /> <ClCompile Include="..\tier1\IConVar.cpp" />
<ClCompile Include="..\tier1\NetAdr2.cpp" /> <ClCompile Include="..\tier1\NetAdr2.cpp" />
<ClCompile Include="..\tier1\strtools.cpp" /> <ClCompile Include="..\tier1\strtools.cpp" />
<ClCompile Include="..\tier2\meshutils.cpp" />
<ClCompile Include="..\tier2\renderutils.cpp" />
<ClCompile Include="..\tier2\socketcreator.cpp" /> <ClCompile Include="..\tier2\socketcreator.cpp" />
<ClCompile Include="..\vguimatsurface\MatSystemSurface.cpp" /> <ClCompile Include="..\vguimatsurface\MatSystemSurface.cpp" />
<ClCompile Include="..\vgui\vgui_baseui_interface.cpp" /> <ClCompile Include="..\vgui\vgui_baseui_interface.cpp" />
@ -478,6 +480,8 @@
<ClInclude Include="..\tier1\utldict.h" /> <ClInclude Include="..\tier1\utldict.h" />
<ClInclude Include="..\tier1\utlmemory.h" /> <ClInclude Include="..\tier1\utlmemory.h" />
<ClInclude Include="..\tier1\utlvector.h" /> <ClInclude Include="..\tier1\utlvector.h" />
<ClInclude Include="..\tier2\meshutils.h" />
<ClInclude Include="..\tier2\renderutils.h" />
<ClInclude Include="..\tier2\socketcreator.h" /> <ClInclude Include="..\tier2\socketcreator.h" />
<ClInclude Include="..\vguimatsurface\MatSystemSurface.h" /> <ClInclude Include="..\vguimatsurface\MatSystemSurface.h" />
<ClInclude Include="..\vgui\vgui_baseui_interface.h" /> <ClInclude Include="..\vgui\vgui_baseui_interface.h" />

View File

@ -570,6 +570,12 @@
<ClCompile Include="..\mathlib\color_conversion.cpp"> <ClCompile Include="..\mathlib\color_conversion.cpp">
<Filter>sdk\mathlib</Filter> <Filter>sdk\mathlib</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\tier2\renderutils.cpp">
<Filter>sdk\tier2</Filter>
</ClCompile>
<ClCompile Include="..\tier2\meshutils.cpp">
<Filter>sdk\tier2</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h"> <ClInclude Include="..\client\cdll_engine_int.h">
@ -1655,6 +1661,12 @@
<ClInclude Include="..\mathlib\ssequaternion.h"> <ClInclude Include="..\mathlib\ssequaternion.h">
<Filter>sdk\mathlib</Filter> <Filter>sdk\mathlib</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\tier2\renderutils.h">
<Filter>sdk\tier2</Filter>
</ClInclude>
<ClInclude Include="..\tier2\meshutils.h">
<Filter>sdk\tier2</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="..\shared\resource\lockedserver.png"> <Image Include="..\shared\resource\lockedserver.png">