mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-06-09 20:32:10 +03:00
Add type check for script helper assignments from ScriptVariant_t
This commit is contained in:
parent
cbb60e1afd
commit
c0e12a2f58
@ -560,16 +560,18 @@ bool CAnimEventTInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_
|
|||||||
|
|
||||||
animevent_t *ani = ((animevent_t *)p);
|
animevent_t *ani = ((animevent_t *)p);
|
||||||
if (FStrEq( pszKey, "event" ))
|
if (FStrEq( pszKey, "event" ))
|
||||||
ani->event = variant;
|
return variant.AssignTo( &ani->event );
|
||||||
else if (FStrEq( pszKey, "options" ))
|
else if (FStrEq( pszKey, "options" ))
|
||||||
ani->options = variant;
|
// broken: return variant.AssignTo( &ani->options );
|
||||||
|
// variant memory is freed afterwards
|
||||||
|
return false;
|
||||||
else if (FStrEq( pszKey, "cycle" ))
|
else if (FStrEq( pszKey, "cycle" ))
|
||||||
ani->cycle = variant;
|
return variant.AssignTo( &ani->cycle );
|
||||||
else if (FStrEq( pszKey, "eventtime" ))
|
else if (FStrEq( pszKey, "eventtime" ))
|
||||||
ani->eventtime = variant;
|
return variant.AssignTo( &ani->eventtime );
|
||||||
else if (FStrEq( pszKey, "type" ))
|
else if (FStrEq( pszKey, "type" ))
|
||||||
ani->type = variant;
|
return variant.AssignTo( &ani->type );
|
||||||
else if (FStrEq( pszKey, "source" ))
|
else if (FStrEq( pszKey, "source" ) && variant.m_type == FIELD_HSCRIPT)
|
||||||
{
|
{
|
||||||
CBaseEntity *pEnt = ToEnt( variant.m_hScript );
|
CBaseEntity *pEnt = ToEnt( variant.m_hScript );
|
||||||
if (pEnt)
|
if (pEnt)
|
||||||
|
@ -440,13 +440,11 @@ bool CScriptColorInstanceHelper::Get( void *p, const char *pszKey, ScriptVariant
|
|||||||
bool CScriptColorInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_t &variant )
|
bool CScriptColorInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_t &variant )
|
||||||
{
|
{
|
||||||
Color *pClr = ((Color *)p);
|
Color *pClr = ((Color *)p);
|
||||||
if ( strlen(pszKey) == 1 )
|
|
||||||
{
|
|
||||||
int iVal;
|
int iVal;
|
||||||
variant.AssignTo( &iVal );
|
if ( strlen(pszKey) == 1 && variant.AssignTo( &iVal ) )
|
||||||
|
{
|
||||||
switch (pszKey[0])
|
switch (pszKey[0])
|
||||||
{
|
{
|
||||||
// variant.AssignTo( &(*pClr)[0] );
|
|
||||||
case 'r':
|
case 'r':
|
||||||
(*pClr)[0] = iVal;
|
(*pClr)[0] = iVal;
|
||||||
return true;
|
return true;
|
||||||
|
@ -259,17 +259,13 @@ bool CScriptQuaternionInstanceHelper::Set( void *p, const char *pszKey, ScriptVa
|
|||||||
switch (pszKey[0])
|
switch (pszKey[0])
|
||||||
{
|
{
|
||||||
case 'x':
|
case 'x':
|
||||||
variant.AssignTo( &pQuat->x );
|
return variant.AssignTo( &pQuat->x );
|
||||||
return true;
|
|
||||||
case 'y':
|
case 'y':
|
||||||
variant.AssignTo( &pQuat->y );
|
return variant.AssignTo( &pQuat->y );
|
||||||
return true;
|
|
||||||
case 'z':
|
case 'z':
|
||||||
variant.AssignTo( &pQuat->z );
|
return variant.AssignTo( &pQuat->z );
|
||||||
return true;
|
|
||||||
case 'w':
|
case 'w':
|
||||||
variant.AssignTo( &pQuat->w );
|
return variant.AssignTo( &pQuat->w );
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user