Files
FC1/CryCommon/ScriptObjectVector.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

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_)