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