amd64: fix multithread, fix vgui, fix physmodels

This commit is contained in:
nillerusr
2022-06-05 01:44:42 +03:00
parent 01413fdd71
commit 9ee21ecf90
63 changed files with 5679 additions and 2468 deletions
+19 -10
View File
@@ -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);