forked from 0ad/0ad
6d5afc10ff
This was SVN commit r246.
161 lines
2.7 KiB
C++
Executable File
161 lines
2.7 KiB
C++
Executable File
#include "EntityProperties.h"
|
|
|
|
CGenericProperty::CGenericProperty()
|
|
{
|
|
m_type = PROP_INTEGER;
|
|
m_integer = 0;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( i32 value )
|
|
{
|
|
m_type = PROP_INTEGER;
|
|
m_integer = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( float value )
|
|
{
|
|
m_type = PROP_FLOAT;
|
|
m_float = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( CStr& value )
|
|
{
|
|
m_type = PROP_STRING;
|
|
m_string = new CStr( value );
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( CVector3D& value )
|
|
{
|
|
m_type = PROP_VECTOR;
|
|
m_vector = new CVector3D( value );
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( void* value )
|
|
{
|
|
m_type = PROP_PTR;
|
|
m_ptr = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( i32* value )
|
|
{
|
|
m_type = PROP_INTEGER_INTRINSIC;
|
|
m_integerptr = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( float* value )
|
|
{
|
|
m_type = PROP_FLOAT_INTRINSIC;
|
|
m_floatptr = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( CStr* value )
|
|
{
|
|
m_type = PROP_STRING_INTRINSIC;
|
|
m_string = value;
|
|
}
|
|
|
|
CGenericProperty::CGenericProperty( CVector3D* value )
|
|
{
|
|
m_type = PROP_VECTOR_INTRINSIC;
|
|
m_vector = value;
|
|
}
|
|
|
|
CGenericProperty::~CGenericProperty()
|
|
{
|
|
switch( m_type )
|
|
{
|
|
case PROP_STRING:
|
|
delete( m_string ); break;
|
|
case PROP_VECTOR:
|
|
delete( m_vector ); break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
CGenericProperty::operator CStr()
|
|
{
|
|
char working[64];
|
|
switch( m_type )
|
|
{
|
|
case PROP_STRING:
|
|
case PROP_STRING_INTRINSIC:
|
|
return( *m_string );
|
|
case PROP_VECTOR:
|
|
case PROP_VECTOR_INTRINSIC:
|
|
snprintf( working, 63, "{ %f, %f, %f }", m_vector->X, m_vector->Y, m_vector->Z );
|
|
working[63] = 0;
|
|
return( CStr( working ) );
|
|
case PROP_INTEGER:
|
|
return( CStr( m_integer ) );
|
|
case PROP_INTEGER_INTRINSIC:
|
|
return( CStr( *m_integerptr ) );
|
|
case PROP_FLOAT:
|
|
return( CStr( m_float ) );
|
|
case PROP_FLOAT_INTRINSIC:
|
|
return( CStr( *m_floatptr ) );
|
|
default:
|
|
return( CStr() );
|
|
}
|
|
}
|
|
|
|
CGenericProperty::operator CVector3D()
|
|
{
|
|
switch( m_type )
|
|
{
|
|
case PROP_VECTOR:
|
|
return( *m_vector );
|
|
default:
|
|
return( CVector3D() );
|
|
}
|
|
}
|
|
|
|
CGenericProperty::operator i32()
|
|
{
|
|
switch( m_type )
|
|
{
|
|
case PROP_INTEGER:
|
|
return( m_integer );
|
|
case PROP_INTEGER_INTRINSIC:
|
|
return( *m_integerptr );
|
|
case PROP_FLOAT:
|
|
return( (i32)m_float );
|
|
case PROP_FLOAT_INTRINSIC:
|
|
return( (i32)*m_floatptr );
|
|
case PROP_STRING:
|
|
return( m_string->ToInt() );
|
|
default:
|
|
return( 0 );
|
|
}
|
|
}
|
|
|
|
CGenericProperty::operator float()
|
|
{
|
|
switch( m_type )
|
|
{
|
|
case PROP_INTEGER:
|
|
return( (float)m_integer );
|
|
case PROP_INTEGER_INTRINSIC:
|
|
return( (float)*m_integerptr );
|
|
case PROP_FLOAT:
|
|
return( m_float );
|
|
case PROP_FLOAT_INTRINSIC:
|
|
return( *m_floatptr );
|
|
case PROP_STRING:
|
|
return( m_string->ToFloat() );
|
|
default:
|
|
return( 0.0f );
|
|
}
|
|
}
|
|
|
|
CGenericProperty::operator void*()
|
|
{
|
|
switch( m_type )
|
|
{
|
|
case PROP_PTR:
|
|
return( m_ptr );
|
|
default:
|
|
return( NULL );
|
|
}
|
|
}
|