blob: 304e87e65e2afef6382f0559424cb705486cdc96 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//========= Copyright Valve Corporation, All rights reserved. ============//
#include "stdafx.h"
#include "simplify.h"
extern IPhysicsCollision *physcollision;
vcollide_t *ConvertVCollideToPHX( const vcollide_t *pCollideIn, const simplifyparams_t ¶ms, int *pSize, bool bStoreSurfaceprops, bool bStoreSolidNames )
{
Assert( !pCollideIn->isPacked );
vcollide_t *pCollideOut = new vcollide_t;
pCollideOut->solids = new CPhysCollide *[pCollideIn->solidCount];
pCollideOut->solidCount = pCollideIn->solidCount;
*pSize = 0;
for ( int i = 0; i < pCollideIn->solidCount; i++ )
{
Assert( pCollideIn->solids[i] );
pCollideOut->solids[i] = SimplifyCollide( pCollideIn->solids[i], i, params );
Assert( pCollideOut->solids[i] );
int collideSize = physcollision->CollideSize( pCollideOut->solids[i] );
*pSize += collideSize;
}
int packedTextSize;
pCollideOut->pKeyValues = (char *)physcollision->PackVCollideText( pCollideIn->pKeyValues, &packedTextSize, bStoreSolidNames, bStoreSurfaceprops );
pCollideOut->isPacked = true;
pCollideOut->descSize = packedTextSize;
*pSize += packedTextSize;
return pCollideOut;
}
void DestroyPHX( vcollide_t *pCollide )
{
for ( int i = 0; i < pCollide->solidCount; i++ )
{
physcollision->DestroyCollide( pCollide->solids[i] );
}
delete[] pCollide->solids;
physcollision->DestroyVCollideText( pCollide->pKeyValues );
delete pCollide;
}
|