Add skinning
This commit is contained in:
@@ -32,10 +32,19 @@ LuaPlus::LuaObject engineCreateEntity(const char* classname)
|
||||
{
|
||||
Entity* entity = static_cast<Entity*>(g_game->Lua_CreateEntity(classname));
|
||||
SDL_assert_always(entity);
|
||||
|
||||
entity->Init();
|
||||
|
||||
return entity->GetLuaObject();
|
||||
}
|
||||
|
||||
LuaPlus::LuaObject engineGetEntityFromID(lua_Integer id)
|
||||
{
|
||||
LuaPlus::LuaObject lookup = GetLuaState().GetGlobal("g_entities");
|
||||
LuaPlus::LuaObject entityTable = lookup.GetByIndex(id);
|
||||
return entityTable;
|
||||
}
|
||||
|
||||
void engineAddEntityToWorld(LuaPlus::LuaObject& object)
|
||||
{
|
||||
LuaPlus::LuaObject cppclass = object["__object"];
|
||||
@@ -45,6 +54,92 @@ void engineAddEntityToWorld(LuaPlus::LuaObject& object)
|
||||
g_world->AddEntity(entity);
|
||||
}
|
||||
|
||||
int cameraGetPos(LuaPlus::LuaState* state)
|
||||
{
|
||||
glm::vec3 v = glm::vec3(0.0f);
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetPosition();
|
||||
|
||||
state->PushNumber(v.x);
|
||||
state->PushNumber(v.y);
|
||||
state->PushNumber(v.z);
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
int cameraGetFront(LuaPlus::LuaState* state)
|
||||
{
|
||||
glm::vec3 v = glm::vec3(0.0f);
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetFront();
|
||||
|
||||
state->PushNumber(v.x);
|
||||
state->PushNumber(v.y);
|
||||
state->PushNumber(v.z);
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
int cameraGetRight(LuaPlus::LuaState* state)
|
||||
{
|
||||
glm::vec3 v = glm::vec3(0.0f);
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetRight();
|
||||
|
||||
state->PushNumber(v.x);
|
||||
state->PushNumber(v.y);
|
||||
state->PushNumber(v.z);
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
int cameraGetUp(LuaPlus::LuaState* state)
|
||||
{
|
||||
glm::vec3 v = glm::vec3(0.0f);
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetUp();
|
||||
|
||||
state->PushNumber(v.x);
|
||||
state->PushNumber(v.y);
|
||||
state->PushNumber(v.z);
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
int cameraGetYaw(LuaPlus::LuaState* state)
|
||||
{
|
||||
float v = 0.0f;
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetYaw();
|
||||
|
||||
state->PushNumber(v);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int cameraGetPitch(LuaPlus::LuaState* state)
|
||||
{
|
||||
float v = 0.0f;
|
||||
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera)
|
||||
v = camera->GetPitch();
|
||||
|
||||
state->PushNumber(v);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void registerEngine()
|
||||
{
|
||||
using namespace LuaPlus;
|
||||
@@ -55,10 +150,24 @@ void registerEngine()
|
||||
engineTable.RegisterDirect("warning", &engineWarning);
|
||||
engineTable.RegisterDirect("create_entity", &engineCreateEntity);
|
||||
engineTable.RegisterDirect("add_entity_to_world", &engineAddEntityToWorld);
|
||||
engineTable.RegisterDirect("get_entity_from_id", &engineGetEntityFromID);
|
||||
|
||||
LuaObject consoleTable = GetLuaState().GetGlobals().CreateTable("console");
|
||||
consoleTable.RegisterDirect("print", &consoleMsg);
|
||||
|
||||
LuaObject cameraTable = GetLuaState().GetGlobals().CreateTable("camera");
|
||||
cameraTable.Register("get_position", &cameraGetPos);
|
||||
cameraTable.Register("get_front", &cameraGetFront);
|
||||
cameraTable.Register("get_right", &cameraGetRight);
|
||||
cameraTable.Register("get_up", &cameraGetUp);
|
||||
cameraTable.Register("get_yaw", &cameraGetYaw);
|
||||
cameraTable.Register("get_pitch", &cameraGetPitch);
|
||||
|
||||
// action globals
|
||||
GetLuaState().DoString("ACTION_FIRE = 0");
|
||||
GetLuaState().DoString("ACTION_ALT_FIRE = 1");
|
||||
GetLuaState().DoString("ACTION_RELOAD = 2");
|
||||
|
||||
// animations globals
|
||||
GetLuaState().DoString("ANIM_PLAYBACK_NONE = 0");
|
||||
GetLuaState().DoString("ANIM_PLAYBACK_REPEAT = 1");
|
||||
@@ -231,6 +340,8 @@ void Game::LoadLevelXML(const char* mapname)
|
||||
entity->CreateTestBody();
|
||||
}
|
||||
|
||||
entity->Init();
|
||||
|
||||
//IEntityBase* entity = g_entityManager->CreateEntity(classname.as_string());
|
||||
g_world->AddEntity(entity);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user