Port 2V0 UI Python bindings and app module link surface
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
#include "StdAfx.h"
|
||||
#include "../common/PortPythonPointer.h" // PORT: preserve Win32 pointer handles on 64-bit hosts
|
||||
|
||||
bool PyTuple_GetThingInstance(PyObject* poArgs, int pos, CGraphicThingInstance** ppRetThingInstance)
|
||||
{
|
||||
return PyTuple_GetPointer(poArgs, pos, ppRetThingInstance) && *ppRetThingInstance;
|
||||
}
|
||||
|
||||
PyObject* grpThingGenerate(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
char * szFileName;
|
||||
if (!PyTuple_GetString(poArgs, 0, &szFileName))
|
||||
return Py_BuildException();
|
||||
|
||||
if (strlen(szFileName) <= 0)
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
CResource* pResource = CResourceManager::Instance().GetResourcePointer(szFileName);
|
||||
|
||||
if (!pResource->IsType(CGraphicThing::Type()))
|
||||
return Py_BuildException();
|
||||
|
||||
CGraphicThingInstance * pThingInstance = CGraphicThingInstance::New();
|
||||
pThingInstance->ReserveModelThing(1);
|
||||
pThingInstance->ReserveModelInstance(1);
|
||||
pThingInstance->RegisterModelThing(0, static_cast<CGraphicThing*>(pResource));
|
||||
pThingInstance->SetModelInstance(0, 0, 0);
|
||||
return Py_BuildPointer(pThingInstance);
|
||||
}
|
||||
|
||||
PyObject* grpThingDelete(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicThingInstance * pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
CGraphicThingInstance::Delete(pThingInstance);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpThingSetFileName(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicThingInstance * pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
char* szFileName;
|
||||
if (!PyTuple_GetString(poArgs, 1, &szFileName))
|
||||
return Py_BuildException();
|
||||
|
||||
CResource* pResource = CResourceManager::Instance().GetResourcePointer(szFileName);
|
||||
|
||||
if (!pResource->IsType(CGraphicThing::Type()))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->Clear();
|
||||
pThingInstance->ReserveModelThing(1);
|
||||
pThingInstance->ReserveModelInstance(1);
|
||||
pThingInstance->RegisterModelThing(0, static_cast<CGraphicThing*>(pResource));
|
||||
pThingInstance->SetModelInstance(0, 0, 0);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpThingRender(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicThingInstance* pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->Render();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpThingUpdate(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicThingInstance* pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->Update();
|
||||
pThingInstance->Deform();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetThingPosition(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicThingInstance* pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
float x;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &x))
|
||||
return Py_BuildException();
|
||||
|
||||
float y;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &y))
|
||||
return Py_BuildException();
|
||||
|
||||
float z;
|
||||
if (!PyTuple_GetFloat(poArgs, 3, &z))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->SetPosition(x, y, z);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetThingRotation(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicThingInstance* pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
float fDegree;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &fDegree))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->SetRotation(fDegree);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetThingScale(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicThingInstance* pThingInstance;
|
||||
if (!PyTuple_GetThingInstance(poArgs, 0, &pThingInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
float x;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &x))
|
||||
return Py_BuildException();
|
||||
float y;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &y))
|
||||
return Py_BuildException();
|
||||
float z;
|
||||
if (!PyTuple_GetFloat(poArgs, 3, &z))
|
||||
return Py_BuildException();
|
||||
|
||||
pThingInstance->SetScale(x, y, z);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
void initgrpThing()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
{ "Update", grpThingUpdate, METH_VARARGS },
|
||||
{ "Render", grpThingRender, METH_VARARGS },
|
||||
{ "SetPosition", grpSetThingPosition, METH_VARARGS },
|
||||
{ "Generate", grpThingGenerate, METH_VARARGS },
|
||||
{ "Delete", grpThingDelete, METH_VARARGS },
|
||||
{ "SetFileName", grpThingSetFileName, METH_VARARGS },
|
||||
{ "SetRotation", grpSetThingRotation, METH_VARARGS },
|
||||
{ "SetScale", grpSetThingScale, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
Py_InitModule("grpThing", s_methods);
|
||||
}
|
||||
Reference in New Issue
Block a user