101 lines
2.1 KiB
C++
101 lines
2.1 KiB
C++
// ScriptObjectVector.h: interface for the CScriptObjectVector class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_SCRIPTOBJECTVECTOR_H__C72BCA75_0CD6_47F2_9812_177BF43A2018__INCLUDED_)
|
|
#define AFX_SCRIPTOBJECTVECTOR_H__C72BCA75_0CD6_47F2_9812_177BF43A2018__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
#include "IScriptSystem.h"
|
|
|
|
/*! this calss map an 3d vector to a LUA table with x,y,z members
|
|
*/
|
|
class CScriptObjectVector :
|
|
public _SmartScriptObject
|
|
{
|
|
public:
|
|
CScriptObjectVector()
|
|
{
|
|
}
|
|
CScriptObjectVector(IScriptSystem *pScriptSystem,bool bCreateEmpty=false):_SmartScriptObject(pScriptSystem,bCreateEmpty)
|
|
{
|
|
}
|
|
|
|
void Set(const Vec3 &v)
|
|
{
|
|
if(m_pSO->BeginSetGetChain())
|
|
{
|
|
m_pSO->SetValueChain("x",v.x);
|
|
m_pSO->SetValueChain("y",v.y);
|
|
m_pSO->SetValueChain("z",v.z);
|
|
m_pSO->EndSetGetChain();
|
|
}
|
|
}
|
|
Vec3 Get()
|
|
{
|
|
Vec3 v(0,0,0);
|
|
if(m_pSO->BeginSetGetChain())
|
|
{
|
|
m_pSO->GetValueChain("x",v.x);
|
|
m_pSO->GetValueChain("y",v.y);
|
|
m_pSO->GetValueChain("z",v.z);
|
|
m_pSO->EndSetGetChain();
|
|
}
|
|
else assert(0 && "validate before calling Get()");
|
|
|
|
return v;
|
|
}
|
|
/* Vec3& operator=(CScriptObjectVector &vec)
|
|
{
|
|
static Vec3 v3;
|
|
vec.Set(v3);
|
|
return v3;
|
|
}*/
|
|
CScriptObjectVector &operator=(const Vec3 &v3)
|
|
{
|
|
Set(v3);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
/*! this calss map an "color" to a LUA table with x,y,z members
|
|
*/
|
|
class CScriptObjectColor :
|
|
public _SmartScriptObject
|
|
{
|
|
public:
|
|
CScriptObjectColor(IScriptSystem *pScriptSystem,bool bCreateEmpty=false):_SmartScriptObject(pScriptSystem,bCreateEmpty)
|
|
{
|
|
}
|
|
|
|
void Set(const Vec3 &v)
|
|
{
|
|
m_pSO->SetAt(1,v.x);
|
|
m_pSO->SetAt(2,v.y);
|
|
m_pSO->SetAt(3,v.z);
|
|
}
|
|
Vec3 &Get()
|
|
{
|
|
static Vec3 v(0,0,0);
|
|
m_pSO->GetAt(1,v.x);
|
|
m_pSO->GetAt(2,v.y);
|
|
m_pSO->GetAt(3,v.z);
|
|
return v;
|
|
}
|
|
/* Vec3& operator=(CScriptObjectVector &vec)
|
|
{
|
|
static Vec3 v3;
|
|
vec.Set(v3);
|
|
return v3;
|
|
}*/
|
|
CScriptObjectColor &operator=(const Vec3 &v3)
|
|
{
|
|
Set(v3);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
#endif // !defined(AFX_SCRIPTOBJECTVECTOR_H__C72BCA75_0CD6_47F2_9812_177BF43A2018__INCLUDED_)
|