mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-06-07 19:32:09 +03:00
Fix GetPropFloatArray indexing on Vector members
This commit is contained in:
parent
ead5668dc8
commit
c3382cb481
@ -1243,17 +1243,20 @@ public:
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( pInfo->datatype == types::_VEC3 )
|
||||
index /= 3;
|
||||
unsigned int arraysize = pInfo->arraysize;
|
||||
|
||||
if ( index < 0 || (unsigned int)index >= pInfo->arraysize )
|
||||
if ( pInfo->datatype == types::_VEC3 )
|
||||
arraysize *= 3;
|
||||
|
||||
if ( index < 0 || (unsigned int)index >= arraysize )
|
||||
return -1;
|
||||
|
||||
switch ( pInfo->datatype )
|
||||
{
|
||||
case types::_VEC3:
|
||||
case types::_FLOAT:
|
||||
return *(float*)((char*)pEnt + pInfo->GetOffset( index ));
|
||||
case types::_VEC3:
|
||||
return ((float*)((char*)pEnt + pInfo->GetOffset( index / 3 )))[ index % 3 ];
|
||||
#ifdef GAME_DLL
|
||||
case types::_DAR_FLOAT:
|
||||
{
|
||||
@ -1285,19 +1288,24 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
if ( pInfo->datatype == types::_VEC3 )
|
||||
index /= 3;
|
||||
unsigned int arraysize = pInfo->arraysize;
|
||||
|
||||
if ( index < 0 || (unsigned int)index >= pInfo->arraysize )
|
||||
if ( pInfo->datatype == types::_VEC3 )
|
||||
arraysize *= 3;
|
||||
|
||||
if ( index < 0 || (unsigned int)index >= arraysize )
|
||||
return;
|
||||
|
||||
switch ( pInfo->datatype )
|
||||
{
|
||||
case types::_VEC3:
|
||||
case types::_FLOAT:
|
||||
*(float*)((char*)pEnt + pInfo->GetOffset( index )) = value;
|
||||
NetworkStateChanged( pEnt, pInfo->GetOffset( index ) );
|
||||
break;
|
||||
case types::_VEC3:
|
||||
((float*)((char*)pEnt + pInfo->GetOffset( index / 3 )))[ index % 3 ] = value;
|
||||
NetworkStateChanged( pEnt, pInfo->GetOffset( index / 3 ) );
|
||||
break;
|
||||
#ifdef GAME_DLL
|
||||
case types::_DAR_FLOAT:
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user