mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
amd64: fix multithread, fix vgui, fix physmodels
This commit is contained in:
+19
-10
@@ -91,7 +91,8 @@ static int gSizes[FIELD_TYPECOUNT] =
|
||||
FIELD_SIZE( FIELD_MATERIALINDEX ),
|
||||
|
||||
FIELD_SIZE( FIELD_VECTOR2D ),
|
||||
FIELD_SIZE( FIELD_INTEGER64 ),
|
||||
FIELD_SIZE( FIELD_INTEGER64 ),
|
||||
FIELD_SIZE( FIELD_POINTER ),
|
||||
};
|
||||
|
||||
|
||||
@@ -687,7 +688,7 @@ bool CSave::ShouldSaveField( const void *pData, typedescription_t *pField )
|
||||
int *pEHandle = (int *)pData;
|
||||
for ( int i = 0; i < pField->fieldSize; ++i, ++pEHandle )
|
||||
{
|
||||
if ( (*pEHandle) != 0xFFFFFFFF )
|
||||
if ( (*pEHandle) != INVALID_EHANDLE_INDEX )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -721,11 +722,11 @@ bool CSave::WriteBasicField( const char *pname, void *pData, datamap_t *pRootMap
|
||||
case FIELD_FLOAT:
|
||||
WriteFloat( pField->fieldName, (float *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_STRING:
|
||||
WriteString( pField->fieldName, (string_t *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_VECTOR:
|
||||
WriteVector( pField->fieldName, (Vector *)pData, pField->fieldSize );
|
||||
break;
|
||||
@@ -1242,19 +1243,19 @@ bool CSave::WriteGameField( const char *pname, void *pData, datamap_t *pRootMap,
|
||||
case FIELD_CLASSPTR:
|
||||
WriteEntityPtr( pField->fieldName, (CBaseEntity **)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_EDICT:
|
||||
WriteEdictPtr( pField->fieldName, (edict_t **)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_EHANDLE:
|
||||
WriteEHandle( pField->fieldName, (EHANDLE *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_POSITION_VECTOR:
|
||||
WritePositionVector( pField->fieldName, (Vector *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_TIME:
|
||||
WriteTime( pField->fieldName, (float *)pData, pField->fieldSize );
|
||||
break;
|
||||
@@ -1262,7 +1263,7 @@ bool CSave::WriteGameField( const char *pname, void *pData, datamap_t *pRootMap,
|
||||
case FIELD_TICK:
|
||||
WriteTick( pField->fieldName, (int *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_MODELINDEX:
|
||||
{
|
||||
int nModelIndex = *(int*)pData;
|
||||
@@ -1298,7 +1299,7 @@ bool CSave::WriteGameField( const char *pname, void *pData, datamap_t *pRootMap,
|
||||
case FIELD_FUNCTION:
|
||||
WriteFunction( pRootMap, pField->fieldName, (inputfunc_t **)(char *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
|
||||
case FIELD_VMATRIX:
|
||||
WriteVMatrix( pField->fieldName, (VMatrix *)pData, pField->fieldSize );
|
||||
break;
|
||||
@@ -1314,6 +1315,10 @@ bool CSave::WriteGameField( const char *pname, void *pData, datamap_t *pRootMap,
|
||||
WriteInterval( pField->fieldName, (interval_t *)pData, pField->fieldSize );
|
||||
break;
|
||||
|
||||
case FIELD_POINTER:
|
||||
WriteData( pField->fieldName, sizeof(void*)*pField->fieldSize, (char *)pData );
|
||||
break;
|
||||
|
||||
default:
|
||||
Warning( "Bad field type\n" );
|
||||
Assert(0);
|
||||
@@ -2154,6 +2159,10 @@ void CRestore::ReadGameField( const SaveRestoreRecordHeader_t &header, void *pDe
|
||||
ReadInterval( (interval_t *)pDest, pField->fieldSize, header.size );
|
||||
break;
|
||||
|
||||
case FIELD_POINTER:
|
||||
ReadData( (char *)pDest, sizeof(void*)*pField->fieldSize, header.size );
|
||||
break;
|
||||
|
||||
default:
|
||||
Warning( "Bad field type\n" );
|
||||
Assert(0);
|
||||
|
||||
Reference in New Issue
Block a user