Compare commits

...

8 Commits

36 changed files with 615 additions and 542 deletions

View File

@ -225,6 +225,7 @@ enum EventType
EVENT_INTERFACE_SATCOM = 414, EVENT_INTERFACE_SATCOM = 414,
EVENT_INTERFACE_PLUS = 415, EVENT_INTERFACE_PLUS = 415,
EVENT_INTERFACE_MODS = 416, EVENT_INTERFACE_MODS = 416,
EVENT_INTERFACE_CAREER = 417,
EVENT_INTERFACE_CHAP = 420, EVENT_INTERFACE_CHAP = 420,
EVENT_INTERFACE_LIST = 421, EVENT_INTERFACE_LIST = 421,

View File

@ -79,6 +79,7 @@ void InitializeRestext()
stringsText[RT_TITLE_READ] = TR("Load a saved mission"); stringsText[RT_TITLE_READ] = TR("Load a saved mission");
stringsText[RT_TITLE_PLUS] = TR("Missions+"); stringsText[RT_TITLE_PLUS] = TR("Missions+");
stringsText[RT_TITLE_MODS] = TR("Mods"); stringsText[RT_TITLE_MODS] = TR("Mods");
stringsText[RT_TITLE_CAREER] = TR("Select destination");
stringsText[RT_PLAY_CHAP_CHAPTERS] = TR("Chapters:"); stringsText[RT_PLAY_CHAP_CHAPTERS] = TR("Chapters:");
stringsText[RT_PLAY_CHAP_PLANETS] = TR("Planets:"); stringsText[RT_PLAY_CHAP_PLANETS] = TR("Planets:");
@ -190,6 +191,7 @@ void InitializeRestext()
stringsEvent[EVENT_INTERFACE_FREE] = TR("Free game\\Free game without a specific goal"); stringsEvent[EVENT_INTERFACE_FREE] = TR("Free game\\Free game without a specific goal");
stringsEvent[EVENT_INTERFACE_CODE_BATTLES] = TR("Code battles\\Program your robot to be the best of them all!"); stringsEvent[EVENT_INTERFACE_CODE_BATTLES] = TR("Code battles\\Program your robot to be the best of them all!");
stringsEvent[EVENT_INTERFACE_USER] = TR("Custom levels\\Levels from mods created by the users"); stringsEvent[EVENT_INTERFACE_USER] = TR("Custom levels\\Levels from mods created by the users");
stringsEvent[EVENT_INTERFACE_CAREER] = TR("Career mode");
stringsEvent[EVENT_INTERFACE_SATCOM] = TR("SatCom"); stringsEvent[EVENT_INTERFACE_SATCOM] = TR("SatCom");
stringsEvent[EVENT_INTERFACE_MODS] = TR("Mods\\Mod manager"); stringsEvent[EVENT_INTERFACE_MODS] = TR("Mods\\Mod manager");
stringsEvent[EVENT_INTERFACE_NAME] = TR("Change player\\Change player"); stringsEvent[EVENT_INTERFACE_NAME] = TR("Change player\\Change player");

View File

@ -73,6 +73,7 @@ enum ResTextType
RT_TITLE_USER = 52, RT_TITLE_USER = 52,
RT_TITLE_PLUS = 53, RT_TITLE_PLUS = 53,
RT_TITLE_MODS = 54, RT_TITLE_MODS = 54,
RT_TITLE_CAREER = 55,
RT_PLAY_CHAP_CHAPTERS = 60, RT_PLAY_CHAP_CHAPTERS = 60,
RT_PLAY_CHAP_PLANETS = 61, RT_PLAY_CHAP_PLANETS = 61,

View File

@ -54,23 +54,6 @@ namespace Gfx
const float MOUSE_EDGE_MARGIN = 0.01f; const float MOUSE_EDGE_MARGIN = 0.01f;
//! Changes the level of transparency of an object and objects transported (battery & cargo)
static void SetGhostMode(CObject* obj, bool enabled)
{
obj->SetGhostMode(enabled);
if (obj->Implements(ObjectInterfaceType::Slotted))
{
CSlottedObject *slotted = dynamic_cast<CSlottedObject*>(obj);
for(int slot = slotted->GetNumSlots()-1; slot >= 0; slot--)
{
CObject *contained = slotted->GetSlotContainedObject(slot);
if (contained != nullptr)
contained->SetGhostMode(enabled);
}
}
}
CCamera::CCamera() CCamera::CCamera()
@ -257,10 +240,7 @@ void CCamera::SetType(CameraType type)
{ {
for (CObject* obj : CObjectManager::GetInstancePointer()->GetAllObjects()) for (CObject* obj : CObjectManager::GetInstancePointer()->GetAllObjects())
{ {
if (IsObjectBeingTransported(obj)) obj->m_bCameraGhost = false; // opaque object
continue;
SetGhostMode(obj, false); // opaque object
} }
} }
@ -837,7 +817,7 @@ void CCamera::IsCollisionBack()
if (IsObjectBeingTransported(obj)) if (IsObjectBeingTransported(obj))
continue; continue;
SetGhostMode(obj, false); // opaque object obj->m_bCameraGhost = false; // opaque object
if (obj == m_cameraObj) continue; if (obj == m_cameraObj) continue;
@ -897,7 +877,7 @@ void CCamera::IsCollisionBack()
float len = glm::distance(m_actualEye, proj); float len = glm::distance(m_actualEye, proj);
if (len > del) continue; if (len > del) continue;
SetGhostMode(obj, true); // ghost mode obj->m_bCameraGhost = true; // ghost mode
} }
} }

View File

@ -57,6 +57,11 @@
#include "math/geometry.h" #include "math/geometry.h"
#include "object/object.h"
#include "object/old_object.h"
#include "object/interface/transportable_object.h"
#include "sound/sound.h" #include "sound/sound.h"
#include "ui/controls/interface.h" #include "ui/controls/interface.h"
@ -821,11 +826,10 @@ void CEngine::DebugObject(int objRank)
l->Debug(" baseObjRank = %d\n", m_objects[objRank].baseObjRank); l->Debug(" baseObjRank = %d\n", m_objects[objRank].baseObjRank);
l->Debug(" visible = %s\n", m_objects[objRank].visible ? "true" : "false"); l->Debug(" visible = %s\n", m_objects[objRank].visible ? "true" : "false");
l->Debug(" drawWorld = %s\n", m_objects[objRank].drawWorld ? "true" : "false"); l->Debug(" drawWorld = %s\n", m_objects[objRank].drawWorld ? "true" : "false");
l->Debug(" drawFront = %s\n", m_objects[objRank].drawFront ? "true" : "false");
l->Debug(" type = %d\n", m_objects[objRank].type); l->Debug(" type = %d\n", m_objects[objRank].type);
l->Debug(" distance = %f\n", m_objects[objRank].distance); l->Debug(" distance = %f\n", m_objects[objRank].distance);
l->Debug(" shadowRank = %d\n", m_objects[objRank].shadowRank); l->Debug(" shadowRank = %d\n", m_objects[objRank].shadowRank);
l->Debug(" ghost = %s\n", m_objects[objRank].ghost ? "true" : "false"); l->Debug(" gameObject = %p\n", m_objects[objRank].gameObject);
l->Debug(" baseObj:\n"); l->Debug(" baseObj:\n");
int baseObjRank = m_objects[objRank].baseObjRank; int baseObjRank = m_objects[objRank].baseObjRank;
@ -876,7 +880,7 @@ void CEngine::DebugObject(int objRank)
} }
} }
int CEngine::CreateObject() int CEngine::CreateObject(CObject *gameObject)
{ {
int objRank = 0; int objRank = 0;
for ( ; objRank < static_cast<int>( m_objects.size() ); objRank++) for ( ; objRank < static_cast<int>( m_objects.size() ); objRank++)
@ -901,6 +905,7 @@ int CEngine::CreateObject()
m_objects[objRank].distance = 0.0f; m_objects[objRank].distance = 0.0f;
m_objects[objRank].baseObjRank = -1; m_objects[objRank].baseObjRank = -1;
m_objects[objRank].shadowRank = -1; m_objects[objRank].shadowRank = -1;
m_objects[objRank].gameObject = gameObject;
return objRank; return objRank;
} }
@ -974,27 +979,6 @@ void CEngine::SetObjectDrawWorld(int objRank, bool draw)
m_objects[objRank].drawWorld = draw; m_objects[objRank].drawWorld = draw;
} }
void CEngine::SetObjectTeam(int objRank, int team)
{
assert(objRank >= 0 && objRank < static_cast<int>(m_objects.size()));
m_objects[objRank].team = team;
}
void CEngine::SetObjectDrawFront(int objRank, bool draw)
{
assert(objRank >= 0 && objRank < static_cast<int>( m_objects.size() ));
m_objects[objRank].drawFront = draw;
}
void CEngine::SetObjectGhostMode(int objRank, bool enabled)
{
assert(objRank >= 0 && objRank < static_cast<int>( m_objects.size() ));
m_objects[objRank].ghost = enabled;
}
void CEngine::GetObjectBBox(int objRank, glm::vec3& min, glm::vec3& max) void CEngine::GetObjectBBox(int objRank, glm::vec3& min, glm::vec3& max)
{ {
assert(objRank >= 0 && objRank < static_cast<int>( m_objects.size() )); assert(objRank >= 0 && objRank < static_cast<int>( m_objects.size() ));
@ -2659,7 +2643,8 @@ Color CEngine::GetObjectColor(int object, const std::string& name)
{ {
if (name == "team") if (name == "team")
{ {
return CRobotMain::GetInstance().GetTeamColor(m_objects[object].team); CObject *obj = m_objects[object].gameObject;
return CRobotMain::GetInstance().GetTeamColor(obj ? obj->GetTeam() : 0);
} }
else if (name == "vehicle") else if (name == "vehicle")
{ {
@ -2789,6 +2774,33 @@ void CEngine::Render()
m_device->EndScene(); m_device->EndScene();
} }
bool CEngine::IsGhostObject(int objRank)
{
CObject *gameObject = m_objects[objRank].gameObject;
if (!gameObject)
return false; // terrain
if (gameObject->GetType() == OBJECT_BASE && objRank != dynamic_cast<COldObject&>(*gameObject).GetObjectRank(9))
return false; // Special case: only part 9 (the central pillar) of the spaceship turns translucent
while (gameObject->Implements(ObjectInterfaceType::Transportable))
{
CObject *transporter = dynamic_cast<CTransportableObject&>(*gameObject).GetTransporter();
if (transporter)
gameObject = transporter;
else
break;
}
return gameObject->m_bCameraGhost;
}
bool CEngine::IsDrawFrontObject(int objRank)
{
CObject *gameObject = m_objects[objRank].gameObject;
return gameObject && gameObject->m_bDrawFront;
}
void CEngine::Draw3DScene() void CEngine::Draw3DScene()
{ {
if (!m_worldCaptured) if (!m_worldCaptured)
@ -2967,7 +2979,7 @@ void CEngine::Draw3DScene()
for (auto& data : p1.next) for (auto& data : p1.next)
{ {
if (m_objects[objRank].ghost) // transparent ? if (IsGhostObject(objRank)) // transparent ?
{ {
transparent = true; transparent = true;
continue; continue;
@ -3049,7 +3061,7 @@ void CEngine::Draw3DScene()
if (! m_objects[objRank].drawWorld) if (! m_objects[objRank].drawWorld)
continue; continue;
if (!m_objects[objRank].ghost) if (!IsGhostObject(objRank))
continue; continue;
auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform; auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform;
@ -3695,7 +3707,7 @@ void CEngine::DrawInterface()
if (m_objects[objRank].type == ENG_OBJTYPE_TERRAIN) if (m_objects[objRank].type == ENG_OBJTYPE_TERRAIN)
continue; continue;
if (! m_objects[objRank].drawFront) if (! IsDrawFrontObject(objRank))
continue; continue;
auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform; auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform;
@ -4882,7 +4894,7 @@ void CEngine::UpdateObjectShadowSpotNormal(int objRank)
m_shadowSpots[shadowRank].normal = norm; m_shadowSpots[shadowRank].normal = norm;
} }
int CEngine::AddStaticMesh(const std::string& key, const CModelMesh* mesh, const glm::mat4& worldMatrix) int CEngine::AddStaticMesh(const std::string& key, const CModelMesh* mesh, const glm::mat4& worldMatrix, CObject *gameObject)
{ {
int baseObjRank = -1; int baseObjRank = -1;
@ -4907,7 +4919,7 @@ int CEngine::AddStaticMesh(const std::string& key, const CModelMesh* mesh, const
baseObjRank = it->second; baseObjRank = it->second;
} }
int objRank = CreateObject(); int objRank = CreateObject(gameObject);
SetObjectBaseRank(objRank, baseObjRank); SetObjectBaseRank(objRank, baseObjRank);
SetObjectTransform(objRank, worldMatrix); SetObjectTransform(objRank, worldMatrix);
SetObjectType(objRank, ENG_OBJTYPE_FIX); SetObjectType(objRank, ENG_OBJTYPE_FIX);
@ -4942,12 +4954,6 @@ const glm::mat4& CEngine::GetStaticMeshWorldMatrix(int meshHandle)
return m_objects[objRank].transform; return m_objects[objRank].transform;
} }
void CEngine::SetStaticMeshGhostMode(int meshHandle, bool enabled)
{
int objRank = meshHandle;
SetObjectGhostMode(objRank, enabled);
}
void CEngine::SetDebugLights(bool debugLights) void CEngine::SetDebugLights(bool debugLights)
{ {
m_debugLights = debugLights; m_debugLights = debugLights;

View File

@ -50,6 +50,7 @@ class CImage;
class CSystemUtils; class CSystemUtils;
struct Event; struct Event;
class CObject;
// Graphics module namespace // Graphics module namespace
namespace Gfx namespace Gfx
@ -126,8 +127,6 @@ struct EngineObject
bool visible = false; bool visible = false;
//! If true, object is behind the 2D interface //! If true, object is behind the 2D interface
bool drawWorld = false; bool drawWorld = false;
//! If true, the shape is before the 2D interface
bool drawFront = false;
//! Type of object //! Type of object
EngineObjectType type = ENG_OBJTYPE_NULL; EngineObjectType type = ENG_OBJTYPE_NULL;
//! Transformation matrix //! Transformation matrix
@ -136,10 +135,8 @@ struct EngineObject
float distance = 0.0f; float distance = 0.0f;
//! Rank of the associated shadow //! Rank of the associated shadow
int shadowRank = -1; int shadowRank = -1;
//! Ghost mode //! Associated game object, if any. Null for terrain.
bool ghost = false; CObject* gameObject = nullptr;
//! Team
int team = 0;
}; };
/** /**
@ -530,7 +527,7 @@ public:
* @param key key unique per object class * @param key key unique per object class
* @return mesh instance handle * @return mesh instance handle
*/ */
int AddStaticMesh(const std::string& key, const Gfx::CModelMesh* mesh, const glm::mat4& worldMatrix); int AddStaticMesh(const std::string& key, const Gfx::CModelMesh* mesh, const glm::mat4& worldMatrix, CObject *gameObject);
//! Removes given static mesh //! Removes given static mesh
void DeleteStaticMesh(int meshHandle); void DeleteStaticMesh(int meshHandle);
@ -541,9 +538,6 @@ public:
//! Returns static mesh world matrix //! Returns static mesh world matrix
const glm::mat4& GetStaticMeshWorldMatrix(int meshHandle); const glm::mat4& GetStaticMeshWorldMatrix(int meshHandle);
//! Sets transparency for static mesh
void SetStaticMeshGhostMode(int meshHandle, bool enabled);
/* *************** Object management *************** */ /* *************** Object management *************** */
@ -571,7 +565,7 @@ public:
void DebugObject(int objRank); void DebugObject(int objRank);
//! Creates a new object and returns its rank //! Creates a new object and returns its rank
int CreateObject(); int CreateObject(CObject *gameObject);
//! Deletes all objects, shadows and ground spots //! Deletes all objects, shadows and ground spots
void DeleteAllObjects(); void DeleteAllObjects();
//! Deletes the given object //! Deletes the given object
@ -597,13 +591,11 @@ public:
//! Sets drawWorld for given object //! Sets drawWorld for given object
void SetObjectDrawWorld(int objRank, bool draw); void SetObjectDrawWorld(int objRank, bool draw);
//! Sets drawFront for given object
void SetObjectDrawFront(int objRank, bool draw);
//! Sets the transparency level for given object //! Check if object is transparent to prevent blocking the camera view
void SetObjectGhostMode(int objRank, bool enabled); bool IsGhostObject(int objRank);
//! Sets team for given object //! Check if object draws in front of the user interface
void SetObjectTeam(int objRank, int team); bool IsDrawFrontObject(int objRank);
//! Returns the bounding box for an object //! Returns the bounding box for an object
void GetObjectBBox(int objRank, glm::vec3& min, glm::vec3& max); void GetObjectBBox(int objRank, glm::vec3& min, glm::vec3& max);

View File

@ -128,7 +128,6 @@ bool COldModelManager::AddModelReference(const std::string& fileName, bool mirro
} }
m_engine->SetObjectBaseRank(objRank, (*it).second.baseObjRank); m_engine->SetObjectBaseRank(objRank, (*it).second.baseObjRank);
m_engine->SetObjectTeam(objRank, team);
return true; return true;
} }
@ -147,7 +146,6 @@ bool COldModelManager::AddModelCopy(const std::string& fileName, bool mirrored,
int copyBaseObjRank = m_engine->CreateBaseObject(); int copyBaseObjRank = m_engine->CreateBaseObject();
m_engine->CopyBaseObject((*it).second.baseObjRank, copyBaseObjRank); m_engine->CopyBaseObject((*it).second.baseObjRank, copyBaseObjRank);
m_engine->SetObjectBaseRank(objRank, copyBaseObjRank); m_engine->SetObjectBaseRank(objRank, copyBaseObjRank);
m_engine->SetObjectTeam(objRank, team);
m_copiesBaseRanks.push_back(copyBaseObjRank); m_copiesBaseRanks.push_back(copyBaseObjRank);

View File

@ -1248,7 +1248,7 @@ void CTerrain::FlushMaterialPoints()
bool CTerrain::CreateSquare(int x, int y) bool CTerrain::CreateSquare(int x, int y)
{ {
int objRank = m_engine->CreateObject(); int objRank = m_engine->CreateObject(nullptr);
m_engine->SetObjectType(objRank, ENG_OBJTYPE_TERRAIN); m_engine->SetObjectType(objRank, ENG_OBJTYPE_TERRAIN);
m_objRanks[x+y*m_mosaicCount] = objRank; m_objRanks[x+y*m_mosaicCount] = objRank;

View File

@ -22,6 +22,7 @@
#include <map> #include <map>
// NOTE: Because of how save filenames are built, the first letter of category directories MUST be unique!! // NOTE: Because of how save filenames are built, the first letter of category directories MUST be unique!!
// Except career because it is a special case.
// TODO: I'm not sure about "challenges" + "custom". It may be messing things up already right now. // TODO: I'm not sure about "challenges" + "custom". It may be messing things up already right now.
const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = { const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
{ LevelCategory::Missions, "missions" }, { LevelCategory::Missions, "missions" },
@ -31,6 +32,7 @@ const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
{ LevelCategory::CodeBattles, "battles" }, { LevelCategory::CodeBattles, "battles" },
{ LevelCategory::GamePlus, "plus" }, { LevelCategory::GamePlus, "plus" },
{ LevelCategory::CustomLevels, "custom" }, { LevelCategory::CustomLevels, "custom" },
{ LevelCategory::CareerMode, "career" },
}; };
std::string GetLevelCategoryDir(LevelCategory category) std::string GetLevelCategoryDir(LevelCategory category)

View File

@ -30,6 +30,7 @@ enum class LevelCategory
CodeBattles, CodeBattles,
GamePlus, GamePlus,
CustomLevels, CustomLevels,
CareerMode,
Max, Max,
}; };

View File

@ -2728,7 +2728,7 @@ void CRobotMain::ScenePerso()
CObject* obj = SearchHuman(); CObject* obj = SearchHuman();
if (obj != nullptr) if (obj != nullptr)
{ {
obj->SetDrawFront(true); // draws the interface obj->m_bDrawFront = true; // draws the interface
assert(obj->Implements(ObjectInterfaceType::Movable)); assert(obj->Implements(ObjectInterfaceType::Movable));
CMotionHuman* mh = static_cast<CMotionHuman*>(dynamic_cast<CMovableObject&>(*obj).GetMotion()); CMotionHuman* mh = static_cast<CMotionHuman*>(dynamic_cast<CMovableObject&>(*obj).GetMotion());
@ -3376,6 +3376,15 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
if (!resetObject) if (!resetObject)
ChangeColor(); // changes the colors of texture ChangeColor(); // changes the colors of texture
if (m_levelCategory == LevelCategory::CareerMode)
{
std::string careerSaveDir = GetPlayerProfile()->GetSaveFile("__career__/" + std::to_string(m_levelChap) + "_" + std::to_string(m_levelRank));
if (CResourceManager::Exists(careerSaveDir+"/data.sav"))
{
m_sceneReadPath = careerSaveDir;
}
}
if (!m_sceneReadPath.empty()) // loading file ? if (!m_sceneReadPath.empty()) // loading file ?
{ {
m_ui->GetLoadingScreen()->SetProgress(0.25f, RT_LOADING_OBJECTS_SAVED); m_ui->GetLoadingScreen()->SetProgress(0.25f, RT_LOADING_OBJECTS_SAVED);
@ -3768,6 +3777,32 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
throw CLevelParserException("Unknown command: '" + line->GetCommand() + "' in " + line->GetLevelFilename() + ":" + StrUtils::ToString(line->GetLineNumber())); throw CLevelParserException("Unknown command: '" + line->GetCommand() + "' in " + line->GetLevelFilename() + ":" + StrUtils::ToString(line->GetLineNumber()));
} }
// Load the spaceship contents
if (m_levelCategory == LevelCategory::CareerMode) {
CObject* base = m_objMan->FindNearest(nullptr, OBJECT_BASE, 10000000.0f);
if(base) {
std::string saveDir = GetPlayerProfile()->GetSaveFile("__career__/__spaceship__");
// TODO: If it doesn't exist, use some global default instead of using whatever is in this level file
if(CResourceManager::Exists(saveDir))
{
for (CObject* obj : m_objMan->GetAllObjects())
{
if (obj == base) continue;
if (IsObjectBeingTransported(obj)) continue;
glm::vec3 oPos = obj->GetPosition();
float dist = Math::DistanceProjected(base->GetPosition(), oPos);
if ( dist < 32.0f )
{
m_objMan->DeleteObject(obj);
}
}
IOReadScene(saveDir+"/data.sav", saveDir+"/cbot.run", true, base->GetPosition());
}
}
}
// Do this here to prevent the first frame from taking a long time to render // Do this here to prevent the first frame from taking a long time to render
m_engine->UpdateGroundSpotTextures(); m_engine->UpdateGroundSpotTextures();
@ -4521,7 +4556,7 @@ void CRobotMain::SaveOneScript(CObject *obj)
CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj); CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj);
char categoryChar = GetLevelCategoryDir(m_levelCategory)[0]; char categoryChar = (m_levelCategory == LevelCategory::CareerMode ? 'X' : GetLevelCategoryDir(m_levelCategory)[0]);
programStorage->SaveAllUserPrograms(m_playerProfile->GetSaveFile(StrUtils::Format("%c%.3d%.3d", categoryChar, m_levelChap, m_levelRank))); programStorage->SaveAllUserPrograms(m_playerProfile->GetSaveFile(StrUtils::Format("%c%.3d%.3d", categoryChar, m_levelChap, m_levelRank)));
} }
@ -4617,8 +4652,9 @@ bool CRobotMain::IOIsBusy()
} }
//! Writes an object into the backup file //! Writes an object into the backup file
void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::string& programDir, int objRank) void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::string& programDir, int objRank, bool directProgramStorageIndex)
{ {
assert(obj->GetType() != OBJECT_NULL);
line->AddParam("type", std::make_unique<CLevelParserParam>(obj->GetType())); line->AddParam("type", std::make_unique<CLevelParserParam>(obj->GetType()));
line->AddParam("id", std::make_unique<CLevelParserParam>(obj->GetID())); line->AddParam("id", std::make_unique<CLevelParserParam>(obj->GetID()));
line->AddParam("pos", std::make_unique<CLevelParserParam>(obj->GetPosition()/g_unit)); line->AddParam("pos", std::make_unique<CLevelParserParam>(obj->GetPosition()/g_unit));
@ -4647,6 +4683,20 @@ void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::
if (obj->Implements(ObjectInterfaceType::ProgramStorage)) if (obj->Implements(ObjectInterfaceType::ProgramStorage))
{ {
CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj); CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj);
// directProgramStorageIndex=false: format for mission save files - pre-existing level objects have a unique index shared between levels, and non-pre-existing objects have 999-objIndex (maximum 999 and the last few may conflict with pre-existing objects)
// directProgramStorageIndex=true: format for career save files, program storage index is just the object rank, and we save it to allow future versions to change the index allocation.
if (directProgramStorageIndex)
{
int oldIndex = programStorage->GetProgramStorageIndex();
programStorage->SetProgramStorageIndex(objRank);
programStorage->SaveAllProgramsForSavedScene(line, programDir);
programStorage->SetProgramStorageIndex(oldIndex);
line->AddParam("programStorageIndex", std::make_unique<CLevelParserParam>(objRank));
}
else
{
if (programStorage->GetProgramStorageIndex() >= 0) if (programStorage->GetProgramStorageIndex() >= 0)
{ {
programStorage->SaveAllProgramsForSavedScene(line, programDir); programStorage->SaveAllProgramsForSavedScene(line, programDir);
@ -4659,6 +4709,7 @@ void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::
programStorage->SaveAllProgramsForSavedScene(line, programDir); programStorage->SaveAllProgramsForSavedScene(line, programDir);
programStorage->SetProgramStorageIndex(-1); // Disable again programStorage->SetProgramStorageIndex(-1); // Disable again
} }
}
if (obj->Implements(ObjectInterfaceType::Programmable)) if (obj->Implements(ObjectInterfaceType::Programmable))
{ {
@ -4671,6 +4722,39 @@ void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::
} }
} }
void CRobotMain::IOWriteObjectTree(CLevelParser& levelParser, CObject* obj, std::string const& dirname, int& objRank, bool directProgramStorageIndex)
{
if (obj->GetType() == OBJECT_TOTO) return;
if (IsObjectBeingTransported(obj)) return;
if (obj->Implements(ObjectInterfaceType::Destroyable) && dynamic_cast<CDestroyableObject&>(*obj).IsDying()) return;
CLevelParserLineUPtr line;
if (obj->Implements(ObjectInterfaceType::Slotted))
{
CSlottedObject* slotted = dynamic_cast<CSlottedObject*>(obj);
for (int slot = slotted->GetNumSlots() - 1; slot >= 0; slot--)
{
if (CObject *sub = slotted->GetSlotContainedObject(slot))
{
if (slot == slotted->MapPseudoSlot(CSlottedObject::Pseudoslot::POWER))
line = std::make_unique<CLevelParserLine>("CreatePower");
else if (slot == slotted->MapPseudoSlot(CSlottedObject::Pseudoslot::CARRYING))
line = std::make_unique<CLevelParserLine>("CreateFret");
else
line = std::make_unique<CLevelParserLine>("CreateSlotObject");
line->AddParam("slotNum", std::make_unique<CLevelParserParam>(slot));
IOWriteObject(line.get(), sub, dirname, objRank++, directProgramStorageIndex);
levelParser.AddLine(std::move(line));
}
}
}
line = std::make_unique<CLevelParserLine>("CreateObject");
IOWriteObject(line.get(), obj, dirname, objRank++, directProgramStorageIndex);
levelParser.AddLine(std::move(line));
}
//! Saves the current game //! Saves the current game
bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::string filescreenshot, const std::string& info, bool emergencySave) bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::string filescreenshot, const std::string& info, bool emergencySave)
{ {
@ -4735,33 +4819,7 @@ bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::s
int objRank = 0; int objRank = 0;
for (CObject* obj : m_objMan->GetAllObjects()) for (CObject* obj : m_objMan->GetAllObjects())
{ {
if (obj->GetType() == OBJECT_TOTO) continue; IOWriteObjectTree(levelParser, obj, dirname, objRank, false);
if (IsObjectBeingTransported(obj)) continue;
if (obj->Implements(ObjectInterfaceType::Destroyable) && dynamic_cast<CDestroyableObject&>(*obj).IsDying()) continue;
if (obj->Implements(ObjectInterfaceType::Slotted))
{
CSlottedObject* slotted = dynamic_cast<CSlottedObject*>(obj);
for (int slot = slotted->GetNumSlots() - 1; slot >= 0; slot--)
{
if (CObject *sub = slotted->GetSlotContainedObject(slot))
{
if (slot == slotted->MapPseudoSlot(CSlottedObject::Pseudoslot::POWER))
line = std::make_unique<CLevelParserLine>("CreatePower");
else if (slot == slotted->MapPseudoSlot(CSlottedObject::Pseudoslot::CARRYING))
line = std::make_unique<CLevelParserLine>("CreateFret");
else
line = std::make_unique<CLevelParserLine>("CreateSlotObject");
line->AddParam("slotNum", std::make_unique<CLevelParserParam>(slot));
IOWriteObject(line.get(), sub, dirname, objRank++);
levelParser.AddLine(std::move(line));
}
}
}
line = std::make_unique<CLevelParserLine>("CreateObject");
IOWriteObject(line.get(), obj, dirname, objRank++);
levelParser.AddLine(std::move(line));
} }
try try
{ {
@ -4834,12 +4892,18 @@ void CRobotMain::IOWriteSceneFinished()
} }
//! Resumes the game //! Resumes the game
CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& programDir, const std::string& objCounterText, float objectProgress, int objRank) CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& programDir, const std::string& objCounterText, float objectProgress, int objRank, glm::vec3 offsetPosition, bool isSpaceshipSave)
{ {
ObjectCreateParams params = CObject::ReadCreateParams(line); ObjectCreateParams params = CObject::ReadCreateParams(line);
params.power = -1.0f; params.power = -1.0f;
params.id = line->GetParam("id")->AsInt(); params.id = line->GetParam("id")->AsInt();
if(isSpaceshipSave)
{
// Ignore object ID in save file. It will conflict with existing objects in the world. Does it matter that the IDs change?
params.id = -1;
}
std::string details = objCounterText; std::string details = objCounterText;
// Object categories may spoil the level a bit, so hide them in release builds // Object categories may spoil the level a bit, so hide them in release builds
@ -4855,7 +4919,7 @@ CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& pro
if (obj->Implements(ObjectInterfaceType::Old)) if (obj->Implements(ObjectInterfaceType::Old))
{ {
COldObject* oldObj = dynamic_cast<COldObject*>(obj); COldObject* oldObj = dynamic_cast<COldObject*>(obj);
oldObj->SetPosition(line->GetParam("pos")->AsPoint() * g_unit); oldObj->SetPosition(line->GetParam("pos")->AsPoint() * g_unit + offsetPosition);
oldObj->SetRotation(line->GetParam("angle")->AsPoint() * Math::DEG_TO_RAD); oldObj->SetRotation(line->GetParam("angle")->AsPoint() * Math::DEG_TO_RAD);
} }
@ -4874,7 +4938,7 @@ CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& pro
if (obj->Implements(ObjectInterfaceType::ProgramStorage)) if (obj->Implements(ObjectInterfaceType::ProgramStorage))
{ {
CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj); CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj);
if (!line->GetParam("programStorageIndex")->IsDefined()) // Backwards compatibility if (!line->GetParam("programStorageIndex")->IsDefined()) // Backwards compatibility, also used for spaceship saves
programStorage->SetProgramStorageIndex(objRank); programStorage->SetProgramStorageIndex(objRank);
programStorage->LoadAllProgramsForSavedScene(line, programDir); programStorage->LoadAllProgramsForSavedScene(line, programDir);
} }
@ -4883,7 +4947,7 @@ CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& pro
} }
//! Resumes some part of the game //! Resumes some part of the game
CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot) CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot, bool isSpaceshipSave, glm::vec3 offsetPosition)
{ {
std::string dirname = filename.substr(0, filename.find_last_of("/")); std::string dirname = filename.substr(0, filename.find_last_of("/"));
@ -4901,6 +4965,8 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
int objCounter = 0; int objCounter = 0;
std::map<int, CObject*> slots; std::map<int, CObject*> slots;
for (auto& line : levelParser.GetLines()) for (auto& line : levelParser.GetLines())
{
if (!isSpaceshipSave)
{ {
if (line->GetCommand() == "Mission") if (line->GetCommand() == "Mission")
m_gameTime = line->GetParam("gametime")->AsFloat(0.0f); m_gameTime = line->GetParam("gametime")->AsFloat(0.0f);
@ -4919,23 +4985,24 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
float progress = line->GetParam("progress")->AsFloat(); float progress = line->GetParam("progress")->AsFloat();
m_lightning->SetStatus(sleep, delay, magnetic, progress); m_lightning->SetStatus(sleep, delay, magnetic, progress);
} }
}
if (line->GetCommand() == "CreateFret") if (line->GetCommand() == "CreateFret")
{ {
cargo = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects)); cargo = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects), -1, glm::vec3(0,0,0), isSpaceshipSave);
objCounter++; objCounter++;
} }
if (line->GetCommand() == "CreatePower") if (line->GetCommand() == "CreatePower")
{ {
power = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects)); power = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects), -1, glm::vec3(0,0,0), isSpaceshipSave);
objCounter++; objCounter++;
} }
if (line->GetCommand() == "CreateSlotObject") if (line->GetCommand() == "CreateSlotObject")
{ {
int slotNum = line->GetParam("slotNum")->AsInt(); int slotNum = line->GetParam("slotNum")->AsInt();
CObject *slotObject = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects)); CObject *slotObject = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects), -1, offsetPosition, isSpaceshipSave);
objCounter++; objCounter++;
assert(slots.find(slotNum) == slots.end()); assert(slots.find(slotNum) == slots.end());
@ -4944,7 +5011,7 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
if (line->GetCommand() == "CreateObject") if (line->GetCommand() == "CreateObject")
{ {
CObject* obj = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects), objRank++); CObject* obj = IOReadObject(line.get(), dirname, StrUtils::ToString<int>(objCounter+1)+" / "+StrUtils::ToString<int>(numObjects), static_cast<float>(objCounter) / static_cast<float>(numObjects), objRank++, offsetPosition, isSpaceshipSave);
if (line->GetParam("select")->AsBool(false)) if (line->GetParam("select")->AsBool(false))
sel = obj; sel = obj;

View File

@ -87,6 +87,7 @@ bool IsMainMenuPhase(Phase phase);
class CApplication; class CApplication;
class CEventQueue; class CEventQueue;
class CSoundInterface; class CSoundInterface;
class CLevelParser;
class CLevelParserLine; class CLevelParserLine;
class CInput; class CInput;
class CObjectManager; class CObjectManager;
@ -336,9 +337,10 @@ public:
bool IOIsBusy(); bool IOIsBusy();
bool IOWriteScene(std::string filename, std::string filecbot, std::string filescreenshot, const std::string& info, bool emergencySave = false); bool IOWriteScene(std::string filename, std::string filecbot, std::string filescreenshot, const std::string& info, bool emergencySave = false);
void IOWriteSceneFinished(); void IOWriteSceneFinished();
CObject* IOReadScene(std::string filename, std::string filecbot); CObject* IOReadScene(std::string filename, std::string filecbot, bool isSpaceshipSave = false, glm::vec3 offsetPosition = glm::vec3(0,0,0));
void IOWriteObject(CLevelParserLine *line, CObject* obj, const std::string& programDir, int objRank); void IOWriteObject(CLevelParserLine *line, CObject* obj, const std::string& programDir, int objRank, bool directProgramStorageIndex);
CObject* IOReadObject(CLevelParserLine *line, const std::string& programDir, const std::string& objCounterText, float objectProgress, int objRank = -1); void IOWriteObjectTree(CLevelParser& levelParser, CObject* obj, std::string const& dirname, int& objRank, bool directProgramStorageIndex);
CObject* IOReadObject(CLevelParserLine *line, const std::string& programDir, const std::string& objCounterText, float objectProgress, int objRank = -1, glm::vec3 offsetPosition = glm::vec3(0,0,0), bool isSpaceshipSave = false);
//@} //@}
int CreateSpot(glm::vec3 pos, Gfx::Color color); int CreateSpot(glm::vec3 pos, Gfx::Color color);

View File

@ -20,6 +20,8 @@
#include "object/auto/autobase.h" #include "object/auto/autobase.h"
#include "common/resources/resourcemanager.h"
#include "graphics/engine/cloud.h" #include "graphics/engine/cloud.h"
#include "graphics/engine/engine.h" #include "graphics/engine/engine.h"
#include "graphics/engine/lightning.h" #include "graphics/engine/lightning.h"
@ -27,6 +29,10 @@
#include "graphics/engine/terrain.h" #include "graphics/engine/terrain.h"
#include "level/robotmain.h" #include "level/robotmain.h"
#include "level/player_profile.h"
#include "level/parser/parser.h"
#include "level/parser/parserline.h"
#include "math/geometry.h" #include "math/geometry.h"
@ -1369,6 +1375,9 @@ Error CAutoBase::TakeOff(bool printMsg)
return err; return err;
} }
// taking off in career mode doesn't have to complete the mission
if (m_main->GetLevelCategory() != LevelCategory::CareerMode)
{
err = m_main->CheckEndMission(false); err = m_main->CheckEndMission(false);
if (err != ERR_OK) if (err != ERR_OK)
{ {
@ -1376,8 +1385,56 @@ Error CAutoBase::TakeOff(bool printMsg)
m_main->DisplayError(err, m_object); m_main->DisplayError(err, m_object);
return err; return err;
} }
}
FreezeCargo(true); // freeze whole cargo FreezeCargo(true); // freeze whole cargo
if (m_main->GetLevelCategory() == LevelCategory::CareerMode)
{
std::string careerSaveParentDir = m_main->GetPlayerProfile()->GetSaveFile("__career__");
if (!CResourceManager::DirectoryExists(careerSaveParentDir))
CResourceManager::CreateNewDirectory(careerSaveParentDir);
// Note: we don't write a cbot.run file - running programs won't remain running when transferred to other worlds.
// We still need a directory per save file, because programs are saved there.
std::string saveDir = careerSaveParentDir + "/__spaceship__";
if (CResourceManager::DirectoryExists(saveDir))
CResourceManager::RemoveExistingDirectory(saveDir);
CResourceManager::CreateNewDirectory(saveDir);
CLevelParser levelFile(saveDir+"/data.sav");
{
CLevelParserLineUPtr line = std::make_unique<CLevelParserLine>("SpaceShipSave");
line->AddParam("version", std::make_unique<CLevelParserParam>(1));
levelFile.AddLine(std::move(line));
}
int objRank = 0;
for(CObject* obj : m_cargoObjects)
{
glm::vec3 pos = obj->GetPosition();
obj->SetPosition(pos - m_object->GetPosition());
m_main->IOWriteObjectTree(levelFile, obj, saveDir, objRank, true);
obj->SetPosition(pos);
}
try
{
levelFile.Save();
}
catch (CLevelParserException& e)
{
GetLogger()->Error("Failed to save level state - %s\n", e.what()); // TODO add visual error to notify user that save failed
// return to normal gameplay - not tested at all, probably broken
FreezeCargo(false);
return ERR_UNKNOWN; // TODO: proper error code
}
// It's OK to save the cargo in the level save dir, because it's deleted when loading.
std::string levelSaveDir = careerSaveParentDir + "/" + std::to_string(m_main->GetLevelChap()) + "_" + std::to_string(m_main->GetLevelRank());
if (CResourceManager::DirectoryExists(levelSaveDir))
CResourceManager::RemoveExistingDirectory(levelSaveDir);
m_main->GetPlayerProfile()->SaveScene(levelSaveDir, "Career mode save");
}
m_main->SetMovieLock(true); // blocks everything until the end m_main->SetMovieLock(true); // blocks everything until the end
m_main->DeselectAll(); m_main->DeselectAll();

View File

@ -79,7 +79,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the main base. // Creates the main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
modelManager->AddModelReference("ant1", false, rank); modelManager->AddModelReference("ant1", false, rank);
@ -92,7 +92,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-0.5f, 1.0f, 0.0f), 4.0f)); m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-0.5f, 1.0f, 0.0f), 4.0f));
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -100,7 +100,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(2.0f, 0.0f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(2.0f, 0.0f, 0.0f));
// Creates the tail. // Creates the tail.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -108,7 +108,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(2, glm::vec3(-1.0f, 0.0f, 0.0f)); m_object->SetPartPosition(2, glm::vec3(-1.0f, 0.0f, 0.0f));
// Creates a right-back thigh. // Creates a right-back thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 0); m_object->SetObjectParent(3, 0);
@ -116,7 +116,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(3, glm::vec3(-0.4f, -0.1f, -0.3f)); m_object->SetPartPosition(3, glm::vec3(-0.4f, -0.1f, -0.3f));
// Creates a right-back leg. // Creates a right-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 3); m_object->SetObjectParent(4, 3);
@ -124,7 +124,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(4, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(4, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates a right-back foot. // Creates a right-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4); m_object->SetObjectParent(5, 4);
@ -132,7 +132,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates two middle-right thighs. // Creates two middle-right thighs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -140,7 +140,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.1f, -0.1f, -0.4f)); m_object->SetPartPosition(6, glm::vec3(0.1f, -0.1f, -0.4f));
// Creates two middle-right legs. // Creates two middle-right legs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 6); m_object->SetObjectParent(7, 6);
@ -148,7 +148,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates two middle-right foots. // Creates two middle-right foots.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 7); m_object->SetObjectParent(8, 7);
@ -156,7 +156,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(8, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(8, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates the right front thigh. // Creates the right front thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0); m_object->SetObjectParent(9, 0);
@ -164,7 +164,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(9, glm::vec3(1.4f, -0.1f, -0.6f)); m_object->SetPartPosition(9, glm::vec3(1.4f, -0.1f, -0.6f));
// Creates the right front leg. // Creates the right front leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank); m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 9); m_object->SetObjectParent(10, 9);
@ -172,7 +172,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(10, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(10, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates the right front foot. // Creates the right front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank); m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 10); m_object->SetObjectParent(11, 10);
@ -180,7 +180,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates a left-back thigh. // Creates a left-back thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank); m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 0); m_object->SetObjectParent(12, 0);
@ -188,7 +188,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(12, glm::vec3(-0.4f, -0.1f, 0.3f)); m_object->SetPartPosition(12, glm::vec3(-0.4f, -0.1f, 0.3f));
// Creates a left-back leg. // Creates a left-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank); m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12); m_object->SetObjectParent(13, 12);
@ -196,7 +196,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, 1.0f)); m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, 1.0f));
// Creates a left-back foot. // Creates a left-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank); m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 13); m_object->SetObjectParent(14, 13);
@ -204,7 +204,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(14, glm::vec3(0.0f, 0.0f, 2.0f)); m_object->SetPartPosition(14, glm::vec3(0.0f, 0.0f, 2.0f));
// Creates two middle-left thighs. // Creates two middle-left thighs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank); m_object->SetObjectRank(15, rank);
m_object->SetObjectParent(15, 0); m_object->SetObjectParent(15, 0);
@ -212,7 +212,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(15, glm::vec3(0.1f, -0.1f, 0.4f)); m_object->SetPartPosition(15, glm::vec3(0.1f, -0.1f, 0.4f));
// Creates two middle-left legs. // Creates two middle-left legs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank); m_object->SetObjectRank(16, rank);
m_object->SetObjectParent(16, 15); m_object->SetObjectParent(16, 15);
@ -220,7 +220,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(16, glm::vec3(0.0f, 0.0f, 1.0f)); m_object->SetPartPosition(16, glm::vec3(0.0f, 0.0f, 1.0f));
// Creates two middle-left foot. // Creates two middle-left foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(17, rank); m_object->SetObjectRank(17, rank);
m_object->SetObjectParent(17, 16); m_object->SetObjectParent(17, 16);
@ -228,7 +228,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(17, glm::vec3(0.0f, 0.0f, 2.0f)); m_object->SetPartPosition(17, glm::vec3(0.0f, 0.0f, 2.0f));
// Creates the left front thigh. // Creates the left front thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank); m_object->SetObjectRank(18, rank);
m_object->SetObjectParent(18, 0); m_object->SetObjectParent(18, 0);
@ -236,7 +236,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(18, glm::vec3(1.4f, -0.1f, 0.6f)); m_object->SetPartPosition(18, glm::vec3(1.4f, -0.1f, 0.6f));
// Creates the left front leg. // Creates the left front leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank); m_object->SetObjectRank(19, rank);
m_object->SetObjectParent(19, 18); m_object->SetObjectParent(19, 18);
@ -244,7 +244,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(19, glm::vec3(0.0f, 0.0f, 1.0f)); m_object->SetPartPosition(19, glm::vec3(0.0f, 0.0f, 1.0f));
// Creates the left front foot. // Creates the left front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(20, rank); m_object->SetObjectRank(20, rank);
m_object->SetObjectParent(20, 19); m_object->SetObjectParent(20, 19);

View File

@ -74,7 +74,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates main base. // Creates main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
modelManager->AddModelReference("bee1", false, rank); modelManager->AddModelReference("bee1", false, rank);
@ -87,7 +87,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-1.0f, 1.0f, 0.0f), 5.0f)); m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-1.0f, 1.0f, 0.0f), 5.0f));
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -95,7 +95,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(1.6f, 0.3f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(1.6f, 0.3f, 0.0f));
// Creates the tail. // Creates the tail.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -103,7 +103,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(2, glm::vec3(-0.8f, 0.0f, 0.0f)); m_object->SetPartPosition(2, glm::vec3(-0.8f, 0.0f, 0.0f));
// Creates a right-back thigh. // Creates a right-back thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 0); m_object->SetObjectParent(3, 0);
@ -111,7 +111,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(3, glm::vec3(-0.3f, -0.1f, -0.2f)); m_object->SetPartPosition(3, glm::vec3(-0.3f, -0.1f, -0.2f));
// Creates a right-back leg. // Creates a right-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 3); m_object->SetObjectParent(4, 3);
@ -119,7 +119,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(4, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(4, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates a right-back foot. // Creates a right-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4); m_object->SetObjectParent(5, 4);
@ -127,7 +127,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates two middle-right thighs. // Creates two middle-right thighs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -135,7 +135,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.3f, -0.1f, -0.4f)); m_object->SetPartPosition(6, glm::vec3(0.3f, -0.1f, -0.4f));
// Creates two middle-right legs. // Creates two middle-right legs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 6); m_object->SetObjectParent(7, 6);
@ -143,7 +143,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates two middle-right feet. // Creates two middle-right feet.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 7); m_object->SetObjectParent(8, 7);
@ -151,7 +151,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(8, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(8, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates the right front thigh. // Creates the right front thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0); m_object->SetObjectParent(9, 0);
@ -159,7 +159,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(9, glm::vec3(1.0f, -0.1f, -0.7f)); m_object->SetPartPosition(9, glm::vec3(1.0f, -0.1f, -0.7f));
// Creates the right front leg. // Creates the right front leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank); m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 9); m_object->SetObjectParent(10, 9);
@ -167,7 +167,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(10, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(10, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates the right front foot. // Creates the right front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank); m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 10); m_object->SetObjectParent(11, 10);
@ -175,7 +175,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates a left-back thigh. // Creates a left-back thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank); m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 0); m_object->SetObjectParent(12, 0);
@ -184,7 +184,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(12, Math::PI); m_object->SetPartRotationY(12, Math::PI);
// Creates a left-back leg. // Creates a left-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank); m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12); m_object->SetObjectParent(13, 12);
@ -192,7 +192,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates a left-back foot. // Creates a left-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank); m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 13); m_object->SetObjectParent(14, 13);
@ -200,7 +200,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(14, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(14, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates two middle-left thigh. // Creates two middle-left thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank); m_object->SetObjectRank(15, rank);
m_object->SetObjectParent(15, 0); m_object->SetObjectParent(15, 0);
@ -209,7 +209,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(15, Math::PI); m_object->SetPartRotationY(15, Math::PI);
// Creates two middle-left legs. // Creates two middle-left legs.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank); m_object->SetObjectRank(16, rank);
m_object->SetObjectParent(16, 15); m_object->SetObjectParent(16, 15);
@ -217,7 +217,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(16, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(16, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates two middle-left feet. // Creates two middle-left feet.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(17, rank); m_object->SetObjectRank(17, rank);
m_object->SetObjectParent(17, 16); m_object->SetObjectParent(17, 16);
@ -225,7 +225,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(17, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(17, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates front-left thigh. // Creates front-left thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank); m_object->SetObjectRank(18, rank);
m_object->SetObjectParent(18, 0); m_object->SetObjectParent(18, 0);
@ -234,7 +234,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(18, Math::PI); m_object->SetPartRotationY(18, Math::PI);
// Creates front-left leg. // Creates front-left leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank); m_object->SetObjectRank(19, rank);
m_object->SetObjectParent(19, 18); m_object->SetObjectParent(19, 18);
@ -242,7 +242,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(19, glm::vec3(0.0f, 0.0f, -1.0f)); m_object->SetPartPosition(19, glm::vec3(0.0f, 0.0f, -1.0f));
// Creates front-left foot. // Creates front-left foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(20, rank); m_object->SetObjectRank(20, rank);
m_object->SetObjectParent(20, 19); m_object->SetObjectParent(20, 19);
@ -250,7 +250,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(20, glm::vec3(0.0f, 0.0f, -2.0f)); m_object->SetPartPosition(20, glm::vec3(0.0f, 0.0f, -2.0f));
// Creates the right wing. // Creates the right wing.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(21, rank); m_object->SetObjectRank(21, rank);
m_object->SetObjectParent(21, 0); m_object->SetObjectParent(21, 0);
@ -258,7 +258,7 @@ void CMotionBee::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(21, glm::vec3(0.8f, 0.4f, -0.5f)); m_object->SetPartPosition(21, glm::vec3(0.8f, 0.4f, -0.5f));
// Creates the left wing. // Creates the left wing.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(22, rank); m_object->SetObjectRank(22, rank);
m_object->SetObjectParent(22, 0); m_object->SetObjectParent(22, 0);

View File

@ -115,7 +115,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
if ( m_main->GetGamerOnlyHead() ) if ( m_main->GetGamerOnlyHead() )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
face = m_main->GetGamerFace(); face = m_main->GetGamerFace();
@ -125,7 +125,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
glasses = m_main->GetGamerGlasses(); glasses = m_main->GetGamerGlasses();
if ( glasses != 0 ) if ( glasses != 0 )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -142,7 +142,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
} }
// Creates the main base. // Creates the main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
@ -161,7 +161,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(0.0f, 1.0f, 0.0f), 4.0f)); m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(0.0f, 1.0f, 0.0f), 4.0f));
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -198,7 +198,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
glasses = m_main->GetGamerGlasses(); glasses = m_main->GetGamerGlasses();
if ( glasses != 0 && type == OBJECT_HUMAN ) if ( glasses != 0 && type == OBJECT_HUMAN )
{ {
m_glassesRank = m_engine->CreateObject(); m_glassesRank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(m_glassesRank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(m_glassesRank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, m_glassesRank); m_object->SetObjectRank(15, m_glassesRank);
m_object->SetObjectParent(15, 1); m_object->SetObjectParent(15, 1);
@ -207,7 +207,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
} }
// Creates the right arm. // Creates the right arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -216,7 +216,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(2, glm::vec3(90.0f*Math::PI/180.0f, 90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f)); m_object->SetPartRotation(2, glm::vec3(90.0f*Math::PI/180.0f, 90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f));
// Creates the right forearm. // Creates the right forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -225,7 +225,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(3, glm::vec3(0.0f*Math::PI/180.0f, -20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f)); m_object->SetPartRotation(3, glm::vec3(0.0f*Math::PI/180.0f, -20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f));
// Creates right hand. // Creates right hand.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 3); m_object->SetObjectParent(4, 3);
@ -233,7 +233,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(4, glm::vec3(1.2f, 0.0f, 0.0f)); m_object->SetPartPosition(4, glm::vec3(1.2f, 0.0f, 0.0f));
// Creates the right thigh. // Creates the right thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 0); m_object->SetObjectParent(5, 0);
@ -242,7 +242,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(5, glm::vec3(10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f)); m_object->SetPartRotation(5, glm::vec3(10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
// Creates the right leg. // Creates the right leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 5); m_object->SetObjectParent(6, 5);
@ -251,7 +251,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(6, glm::vec3(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f)); m_object->SetPartRotation(6, glm::vec3(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f));
// Creates the right foot. // Creates the right foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 6); m_object->SetObjectParent(7, 6);
@ -260,7 +260,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(7, glm::vec3(-10.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f)); m_object->SetPartRotation(7, glm::vec3(-10.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
// Creates the left arm. // Creates the left arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
@ -269,7 +269,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(8, glm::vec3(-90.0f*Math::PI/180.0f, -90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f)); m_object->SetPartRotation(8, glm::vec3(-90.0f*Math::PI/180.0f, -90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f));
// Creates the left forearm. // Creates the left forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 8); m_object->SetObjectParent(9, 8);
@ -278,7 +278,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(9, glm::vec3(0.0f*Math::PI/180.0f, 20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f)); m_object->SetPartRotation(9, glm::vec3(0.0f*Math::PI/180.0f, 20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f));
// Creates left hand. // Creates left hand.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank); m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 9); m_object->SetObjectParent(10, 9);
@ -286,7 +286,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(10, glm::vec3(1.2f, 0.0f, 0.0f)); m_object->SetPartPosition(10, glm::vec3(1.2f, 0.0f, 0.0f));
// Creates the left thigh. // Creates the left thigh.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank); m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 0); m_object->SetObjectParent(11, 0);
@ -295,7 +295,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(11, glm::vec3(-10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f)); m_object->SetPartRotation(11, glm::vec3(-10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
// Creates the left leg. // Creates the left leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank); m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 11); m_object->SetObjectParent(12, 11);
@ -304,7 +304,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotation(12, glm::vec3(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f)); m_object->SetPartRotation(12, glm::vec3(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f));
// Creates the left foot. // Creates the left foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank); m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12); m_object->SetObjectParent(13, 12);
@ -315,7 +315,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the neutron gun. // Creates the neutron gun.
if ( option != 2 && !m_main->GetPlusExplorer()) // with backpack? if ( option != 2 && !m_main->GetPlusExplorer()) // with backpack?
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank); m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 0); m_object->SetObjectParent(14, 0);

View File

@ -54,7 +54,7 @@ void CMotionLevelController::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the main base. // Creates the main base.
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);

View File

@ -74,7 +74,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates main base. // Creates main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
modelManager->AddModelReference("mother1", false, rank); modelManager->AddModelReference("mother1", false, rank);
@ -87,7 +87,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-2.0f, 10.0f, 0.0f), 25.0f)); m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-2.0f, 10.0f, 0.0f), 25.0f));
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -95,7 +95,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(16.0f, 3.0f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(16.0f, 3.0f, 0.0f));
// Creates a right-back leg. // Creates a right-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -103,7 +103,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(2, glm::vec3(-5.0f, -1.0f, -12.0f)); m_object->SetPartPosition(2, glm::vec3(-5.0f, -1.0f, -12.0f));
// Creates a right-back foot. // Creates a right-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -111,7 +111,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(3, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(3, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates a middle-right leg. // Creates a middle-right leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 0); m_object->SetObjectParent(4, 0);
@ -119,7 +119,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(4, glm::vec3(3.5f, -1.0f, -12.0f)); m_object->SetPartPosition(4, glm::vec3(3.5f, -1.0f, -12.0f));
// Creates a middle-right foot. // Creates a middle-right foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4); m_object->SetObjectParent(5, 4);
@ -127,7 +127,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(5, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates a right-front leg. // Creates a right-front leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -135,7 +135,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(10.0f, -1.0f, -10.0f)); m_object->SetPartPosition(6, glm::vec3(10.0f, -1.0f, -10.0f));
// Creates a right-front foot. // Creates a right-front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 6); m_object->SetObjectParent(7, 6);
@ -143,7 +143,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(7, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates a left-back leg. // Creates a left-back leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
@ -152,7 +152,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(8, Math::PI); m_object->SetPartRotationY(8, Math::PI);
// Creates a left-back foot. // Creates a left-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 8); m_object->SetObjectParent(9, 8);
@ -160,7 +160,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(9, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(9, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates a middle-left leg. // Creates a middle-left leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank); m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 0); m_object->SetObjectParent(10, 0);
@ -169,7 +169,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(10, Math::PI); m_object->SetPartRotationY(10, Math::PI);
// Creates a middle-left foot. // Creates a middle-left foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank); m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 10); m_object->SetObjectParent(11, 10);
@ -177,7 +177,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(11, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates a left-front leg. // Creates a left-front leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank); m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 0); m_object->SetObjectParent(12, 0);
@ -186,7 +186,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(12, Math::PI); m_object->SetPartRotationY(12, Math::PI);
// Creates a left-front foot. // Creates a left-front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank); m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12); m_object->SetObjectParent(13, 12);
@ -194,14 +194,14 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, -8.5f)); m_object->SetPartPosition(13, glm::vec3(0.0f, 0.0f, -8.5f));
// Creates the right antenna. // Creates the right antenna.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank); m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 1); m_object->SetObjectParent(14, 1);
modelManager->AddModelReference("mother5", false, rank); modelManager->AddModelReference("mother5", false, rank);
m_object->SetPartPosition(14, glm::vec3(6.0f, 1.0f, -2.5f)); m_object->SetPartPosition(14, glm::vec3(6.0f, 1.0f, -2.5f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank); m_object->SetObjectRank(15, rank);
m_object->SetObjectParent(15, 14); m_object->SetObjectParent(15, 14);
@ -209,14 +209,14 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(15, glm::vec3(8.0f, 0.0f, 0.0f)); m_object->SetPartPosition(15, glm::vec3(8.0f, 0.0f, 0.0f));
// Creates the left antenna. // Creates the left antenna.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank); m_object->SetObjectRank(16, rank);
m_object->SetObjectParent(16, 1); m_object->SetObjectParent(16, 1);
modelManager->AddModelReference("mother5", false, rank); modelManager->AddModelReference("mother5", false, rank);
m_object->SetPartPosition(16, glm::vec3(6.0f, 1.0f, 2.5f)); m_object->SetPartPosition(16, glm::vec3(6.0f, 1.0f, 2.5f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(17, rank); m_object->SetObjectRank(17, rank);
m_object->SetObjectParent(17, 16); m_object->SetObjectParent(17, 16);
@ -224,7 +224,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(17, glm::vec3(8.0f, 0.0f, 0.0f)); m_object->SetPartPosition(17, glm::vec3(8.0f, 0.0f, 0.0f));
// Creates the right claw. // Creates the right claw.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank); m_object->SetObjectRank(18, rank);
m_object->SetObjectParent(18, 1); m_object->SetObjectParent(18, 1);
@ -233,7 +233,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartScaleX(18, 1.2f); m_object->SetPartScaleX(18, 1.2f);
// Creates the left claw. // Creates the left claw.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank); m_object->SetObjectRank(19, rank);
m_object->SetObjectParent(19, 1); m_object->SetObjectParent(19, 1);

View File

@ -103,7 +103,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the main base. // Creates the main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
// This is an "empty" object, without triangles // This is an "empty" object, without triangles
@ -116,7 +116,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-0.5f, 1.0f, 0.0f), 4.0f)); m_object->SetCameraCollisionSphere(Math::Sphere(glm::vec3(-0.5f, 1.0f, 0.0f), 4.0f));
// Creates the abdomen. // Creates the abdomen.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -124,7 +124,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(1.0f, 0.0f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(1.0f, 0.0f, 0.0f));
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -139,7 +139,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
snprintf(name.data(), name.size(), "spider%d", j+3); // 3..6 snprintf(name.data(), name.size(), "spider%d", j+3); // 3..6
// Creates the right leg. // Creates the right leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3+i*4+j, rank); m_object->SetObjectRank(3+i*4+j, rank);
if ( j == 0 ) parent = 0; if ( j == 0 ) parent = 0;
@ -152,7 +152,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(3+i*4+j, pos); m_object->SetPartPosition(3+i*4+j, pos);
// Creates the left leg. // Creates the left leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19+i*4+j, rank); m_object->SetObjectRank(19+i*4+j, rank);
if ( j == 0 ) parent = 0; if ( j == 0 ) parent = 0;
@ -167,7 +167,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
} }
// Creates the right mandible. // Creates the right mandible.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(35, rank); m_object->SetObjectRank(35, rank);
m_object->SetObjectParent(35, 1); m_object->SetObjectParent(35, 1);
@ -175,7 +175,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(35, glm::vec3(0.0f, 0.0f, -0.3f)); m_object->SetPartPosition(35, glm::vec3(0.0f, 0.0f, -0.3f));
// Creates the left mandible. // Creates the left mandible.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(36, rank); m_object->SetObjectRank(36, rank);
m_object->SetObjectParent(36, 1); m_object->SetObjectParent(36, 1);

View File

@ -91,7 +91,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
modelManager->AddModelReference("toto1", false, rank); modelManager->AddModelReference("toto1", false, rank);
@ -99,7 +99,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetRotationY(angle); m_object->SetRotationY(angle);
// Creates mouth. // Creates mouth.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -107,7 +107,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(1.00f, 0.17f, 0.00f)); m_object->SetPartPosition(1, glm::vec3(1.00f, 0.17f, 0.00f));
// Creates the left eye. // Creates the left eye.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -116,7 +116,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(2, -20.0f*Math::PI/180.0f); m_object->SetPartRotationY(2, -20.0f*Math::PI/180.0f);
// Creates the right eye. // Creates the right eye.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 0); m_object->SetObjectParent(3, 0);
@ -125,7 +125,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(3, 20.0f*Math::PI/180.0f); m_object->SetPartRotationY(3, 20.0f*Math::PI/180.0f);
// Creates left antenna. // Creates left antenna.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 0); m_object->SetObjectParent(4, 0);
@ -133,7 +133,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(4, glm::vec3(0.0f, 1.9f, 0.3f)); m_object->SetPartPosition(4, glm::vec3(0.0f, 1.9f, 0.3f));
m_object->SetPartRotationX(4, 30.0f*Math::PI/180.0f); m_object->SetPartRotationX(4, 30.0f*Math::PI/180.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4); m_object->SetObjectParent(5, 4);
@ -141,7 +141,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(5, glm::vec3(0.0f, 0.67f, 0.0f)); m_object->SetPartPosition(5, glm::vec3(0.0f, 0.67f, 0.0f));
m_object->SetPartRotationX(5, 30.0f*Math::PI/180.0f); m_object->SetPartRotationX(5, 30.0f*Math::PI/180.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 5); m_object->SetObjectParent(6, 5);
@ -150,7 +150,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationX(6, 30.0f*Math::PI/180.0f); m_object->SetPartRotationX(6, 30.0f*Math::PI/180.0f);
// Creates right antenna. // Creates right antenna.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -158,7 +158,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(7, glm::vec3(0.0f, 1.9f, -0.3f)); m_object->SetPartPosition(7, glm::vec3(0.0f, 1.9f, -0.3f));
m_object->SetPartRotationX(7, -30.0f*Math::PI/180.0f); m_object->SetPartRotationX(7, -30.0f*Math::PI/180.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 7); m_object->SetObjectParent(8, 7);
@ -166,7 +166,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(8, glm::vec3(0.0f, 0.67f, 0.0f)); m_object->SetPartPosition(8, glm::vec3(0.0f, 0.67f, 0.0f));
m_object->SetPartRotationX(8, -30.0f*Math::PI/180.0f); m_object->SetPartRotationX(8, -30.0f*Math::PI/180.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 8); m_object->SetObjectParent(9, 8);

View File

@ -97,7 +97,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the main base. // Creates the main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
@ -132,13 +132,13 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
modelManager->AddModelReference("lem1f", false, rank, m_object->GetTeam()); modelManager->AddModelReference("lem1f", false, rank, m_object->GetTeam());
else else
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
modelManager->AddModelReference("trainerf", false, rank, m_object->GetTeam()); modelManager->AddModelReference("trainerf", false, rank, m_object->GetTeam());
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(29, rank); m_object->SetObjectRank(29, rank);
m_object->SetObjectParent(29, 0); m_object->SetObjectParent(29, 0);
@ -155,13 +155,13 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
modelManager->AddModelReference("lem1t", false, rank, m_object->GetTeam()); modelManager->AddModelReference("lem1t", false, rank, m_object->GetTeam());
else else
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
modelManager->AddModelReference("trainert", false, rank, m_object->GetTeam()); modelManager->AddModelReference("trainert", false, rank, m_object->GetTeam());
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(29, rank); m_object->SetObjectRank(29, rank);
m_object->SetObjectParent(29, 0); m_object->SetObjectParent(29, 0);
@ -178,13 +178,13 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
modelManager->AddModelReference("lem1w", false, rank, m_object->GetTeam()); modelManager->AddModelReference("lem1w", false, rank, m_object->GetTeam());
else else
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
modelManager->AddModelReference("trainerw", false, rank, m_object->GetTeam()); modelManager->AddModelReference("trainerw", false, rank, m_object->GetTeam());
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(29, rank); m_object->SetObjectRank(29, rank);
m_object->SetObjectParent(29, 0); m_object->SetObjectParent(29, 0);
@ -201,13 +201,13 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
modelManager->AddModelReference("lem1i", false, rank, m_object->GetTeam()); modelManager->AddModelReference("lem1i", false, rank, m_object->GetTeam());
else else
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
modelManager->AddModelReference("traineri", false, rank, m_object->GetTeam()); modelManager->AddModelReference("traineri", false, rank, m_object->GetTeam());
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(29, rank); m_object->SetObjectRank(29, rank);
m_object->SetObjectParent(29, 0); m_object->SetObjectParent(29, 0);
@ -232,7 +232,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
} }
else if (type == OBJECT_MOBILEwt) else if (type == OBJECT_MOBILEwt)
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
@ -240,7 +240,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
} }
else if (type == OBJECT_MOBILEft) else if (type == OBJECT_MOBILEft)
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
@ -248,7 +248,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
} }
else if (type == OBJECT_MOBILEtt) else if (type == OBJECT_MOBILEtt)
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
@ -256,7 +256,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
} }
else if (type == OBJECT_MOBILEit) else if (type == OBJECT_MOBILEit)
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank); m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0); m_object->SetObjectParent(28, 0);
@ -312,7 +312,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEia) type == OBJECT_MOBILEia)
{ {
// Creates the arm. // Creates the arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -321,7 +321,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(1, ARM_NEUTRAL_ANGLE1); m_object->SetPartRotationZ(1, ARM_NEUTRAL_ANGLE1);
// Creates the forearm. // Creates the forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -330,7 +330,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(2, ARM_NEUTRAL_ANGLE2); m_object->SetPartRotationZ(2, ARM_NEUTRAL_ANGLE2);
// Creates the hand. // Creates the hand.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -340,7 +340,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationX(3, Math::PI/2.0f); m_object->SetPartRotationX(3, Math::PI/2.0f);
// Creates the close clamp. // Creates the close clamp.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 3); m_object->SetObjectParent(4, 3);
@ -349,7 +349,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(4, -Math::PI*0.10f); m_object->SetPartRotationZ(4, -Math::PI*0.10f);
// Creates the remote clamp. // Creates the remote clamp.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 3); m_object->SetObjectParent(5, 3);
@ -364,7 +364,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEis) type == OBJECT_MOBILEis)
{ {
// Creates the arm. // Creates the arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -373,7 +373,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(1, 110.0f*Math::PI/180.0f); m_object->SetPartRotationZ(1, 110.0f*Math::PI/180.0f);
// Creates the forearm. // Creates the forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -382,7 +382,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(2, -110.0f*Math::PI/180.0f); m_object->SetPartRotationZ(2, -110.0f*Math::PI/180.0f);
// Creates the sensor. // Creates the sensor.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -397,7 +397,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEic) type == OBJECT_MOBILEic)
{ {
// Creates the cannon. // Creates the cannon.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -413,7 +413,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEii) type == OBJECT_MOBILEii)
{ {
// Creates the insect cannon. // Creates the insect cannon.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -421,7 +421,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(0.0f, 5.3f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(0.0f, 5.3f, 0.0f));
m_object->SetPartRotationZ(1, 0.0f); m_object->SetPartRotationZ(1, 0.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -436,7 +436,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEib) type == OBJECT_MOBILEib)
{ {
// Creates the neutron gun. // Creates the neutron gun.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -454,7 +454,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEwt) type == OBJECT_MOBILEwt)
{ {
// Creates the right-back wheel. // Creates the right-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -462,7 +462,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(-3.0f, 1.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(-3.0f, 1.0f, -3.0f));
// Creates the left-back wheel. // Creates the left-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -471,7 +471,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(7, Math::PI); m_object->SetPartRotationY(7, Math::PI);
// Creates the right-front wheel. // Creates the right-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
@ -479,7 +479,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(8, glm::vec3(2.0f, 1.0f, -3.0f)); m_object->SetPartPosition(8, glm::vec3(2.0f, 1.0f, -3.0f));
// Creates the left-front wheel. // Creates the left-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0); m_object->SetObjectParent(9, 0);
@ -491,7 +491,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEtg) if (type == OBJECT_MOBILEtg)
{ {
// Creates the right-back wheel. // Creates the right-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -499,7 +499,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(-2.0f, 1.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(-2.0f, 1.0f, -3.0f));
// Creates the left-back wheel. // Creates the left-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -508,7 +508,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(7, Math::PI); m_object->SetPartRotationY(7, Math::PI);
// Creates the right-front wheel. // Creates the right-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
@ -516,7 +516,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(8, glm::vec3(3.0f, 1.0f, -3.0f)); m_object->SetPartPosition(8, glm::vec3(3.0f, 1.0f, -3.0f));
// Creates the left-front wheel. // Creates the left-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0); m_object->SetObjectParent(9, 0);
@ -533,7 +533,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEtt) // caterpillars? type == OBJECT_MOBILEtt) // caterpillars?
{ {
// Creates the right caterpillar. // Creates the right caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -547,7 +547,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.0f, 2.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(0.0f, 2.0f, -3.0f));
// Creates the left caterpillar. // Creates the left caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -568,7 +568,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILErp) // large caterpillars? type == OBJECT_MOBILErp) // large caterpillars?
{ {
// Creates the right caterpillar. // Creates the right caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -576,7 +576,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.0f, 2.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(0.0f, 2.0f, -3.0f));
// Creates the left caterpillar. // Creates the left caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -588,7 +588,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEst) // underwater caterpillars? type == OBJECT_MOBILEst) // underwater caterpillars?
{ {
// Creates the right caterpillar. // Creates the right caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -596,7 +596,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.0f, 1.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(0.0f, 1.0f, -3.0f));
// Creates the left caterpillar. // Creates the left caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -607,7 +607,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEdr) // caterpillars? if (type == OBJECT_MOBILEdr) // caterpillars?
{ {
// Creates the right caterpillar. // Creates the right caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -615,7 +615,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(0.0f, 1.0f, -3.0f)); m_object->SetPartPosition(6, glm::vec3(0.0f, 1.0f, -3.0f));
// Creates the left caterpillar. // Creates the left caterpillar.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -631,7 +631,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEft) // flying? type == OBJECT_MOBILEft) // flying?
{ {
// Creates the front foot. // Creates the front foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
@ -639,7 +639,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6, glm::vec3(1.7f, 3.0f, 0.0f)); m_object->SetPartPosition(6, glm::vec3(1.7f, 3.0f, 0.0f));
// Creates the right-back foot. // Creates the right-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
@ -648,7 +648,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(7, 120.0f*Math::PI/180.0f); m_object->SetPartRotationY(7, 120.0f*Math::PI/180.0f);
// Creates the left-back foot. // Creates the left-back foot.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
@ -687,7 +687,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
snprintf(name.data(), name.size(), "ant%d", j+4); // 4..6 snprintf(name.data(), name.size(), "ant%d", j+4); // 4..6
// Creates the right leg. // Creates the right leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6+i*3+j, rank); m_object->SetObjectRank(6+i*3+j, rank);
if ( j == 0 ) parent = 0; if ( j == 0 ) parent = 0;
@ -700,7 +700,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(6+i*3+j, pos); m_object->SetPartPosition(6+i*3+j, pos);
// Creates the left leg. // Creates the left leg.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15+i*3+j, rank); m_object->SetObjectRank(15+i*3+j, rank);
if ( j == 0 ) parent = 0; if ( j == 0 ) parent = 0;
@ -718,7 +718,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErt) if (type == OBJECT_MOBILErt)
{ {
// Creates the holder. // Creates the holder.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -727,7 +727,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(1, 0.0f); m_object->SetPartRotationZ(1, 0.0f);
// Creates the pestle. // Creates the pestle.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -739,7 +739,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErc) if (type == OBJECT_MOBILErc)
{ {
// Creates the holder. // Creates the holder.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -748,7 +748,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(1, Math::PI/8.0f); m_object->SetPartRotationZ(1, Math::PI/8.0f);
// Creates the cannon. // Creates the cannon.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -760,7 +760,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErr) if (type == OBJECT_MOBILErr)
{ {
// Creates the holder. // Creates the holder.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -768,7 +768,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(2.0f, 5.0f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(2.0f, 5.0f, 0.0f));
// Creates the right arm. // Creates the right arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -777,7 +777,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(2, 126.0f*Math::PI/180.0f); m_object->SetPartRotationZ(2, 126.0f*Math::PI/180.0f);
// Creates the right forearm. // Creates the right forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -786,7 +786,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(3, -144.0f*Math::PI/180.0f); m_object->SetPartRotationZ(3, -144.0f*Math::PI/180.0f);
// Creates the left arm. // Creates the left arm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 1); m_object->SetObjectParent(4, 1);
@ -795,7 +795,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(4, 126.0f*Math::PI/180.0f); m_object->SetPartRotationZ(4, 126.0f*Math::PI/180.0f);
// Creates the left forearm. // Creates the left forearm.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank); m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4); m_object->SetObjectParent(5, 4);
@ -807,7 +807,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErs) if (type == OBJECT_MOBILErs)
{ {
// Creates the holder. // Creates the holder.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -816,7 +816,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(1, 0.0f); m_object->SetPartRotationZ(1, 0.0f);
// Creates the intermediate piston. // Creates the intermediate piston.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -825,7 +825,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationZ(2, 0.0f); m_object->SetPartRotationZ(2, 0.0f);
// Creates the piston with the sphere. // Creates the piston with the sphere.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2); m_object->SetObjectParent(3, 2);
@ -837,7 +837,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEsa) if (type == OBJECT_MOBILEsa)
{ {
// Creates the holder. // Creates the holder.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -845,7 +845,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(1, glm::vec3(4.2f, 3.0f, 0.0f)); m_object->SetPartPosition(1, glm::vec3(4.2f, 3.0f, 0.0f));
// Creates the right tong. // Creates the right tong.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1); m_object->SetObjectParent(2, 1);
@ -853,7 +853,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(2, glm::vec3(0.5f, 0.0f, -1.5f)); m_object->SetPartPosition(2, glm::vec3(0.5f, 0.0f, -1.5f));
// Creates the left tong. // Creates the left tong.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank); m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 1); m_object->SetObjectParent(3, 1);
@ -862,7 +862,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (m_object->GetTrainer()) if (m_object->GetTrainer())
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank); m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 0); m_object->SetObjectParent(4, 0);
@ -873,7 +873,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEdr) if (type == OBJECT_MOBILEdr)
{ {
// Creates the carousel. // Creates the carousel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -883,7 +883,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the key. // Creates the key.
if ( m_object->GetToy() ) if ( m_object->GetToy() )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -896,7 +896,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates pencils. // Creates pencils.
for ( i=0 ; i<8 ; i++ ) for ( i=0 ; i<8 ; i++ )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10+i, rank); m_object->SetObjectRank(10+i, rank);
m_object->SetObjectParent(10+i, 1); m_object->SetObjectParent(10+i, 1);
@ -912,7 +912,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the key. // Creates the key.
if ( m_object->GetToy() ) if ( m_object->GetToy() )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -926,7 +926,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_APOLLO2) if (type == OBJECT_APOLLO2)
{ {
// Creates the accessories. // Creates the accessories.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -935,7 +935,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(1, -120.0f*Math::PI/180.0f); m_object->SetPartRotationY(1, -120.0f*Math::PI/180.0f);
m_object->SetPartRotationZ(1, 45.0f*Math::PI/180.0f); m_object->SetPartRotationZ(1, 45.0f*Math::PI/180.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank); m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0); m_object->SetObjectParent(2, 0);
@ -944,28 +944,28 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartRotationY(2, 30.0f*Math::PI/180.0f); m_object->SetPartRotationY(2, 30.0f*Math::PI/180.0f);
// Creates the wheels. // Creates the wheels.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank); m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0); m_object->SetObjectParent(6, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(6, glm::vec3(-5.75f, 1.65f, -5.0f)); m_object->SetPartPosition(6, glm::vec3(-5.75f, 1.65f, -5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank); m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0); m_object->SetObjectParent(7, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(7, glm::vec3(-5.75f, 1.65f, 5.0f)); m_object->SetPartPosition(7, glm::vec3(-5.75f, 1.65f, 5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank); m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0); m_object->SetObjectParent(8, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(8, glm::vec3(5.75f, 1.65f, -5.0f)); m_object->SetPartPosition(8, glm::vec3(5.75f, 1.65f, -5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank); m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0); m_object->SetObjectParent(9, 0);
@ -973,28 +973,28 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetPartPosition(9, glm::vec3(5.75f, 1.65f, 5.00f)); m_object->SetPartPosition(9, glm::vec3(5.75f, 1.65f, 5.00f));
// Creates mud guards. // Creates mud guards.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank); m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 0); m_object->SetObjectParent(10, 0);
modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(10, glm::vec3(-5.75f, 1.65f, -5.0f)); m_object->SetPartPosition(10, glm::vec3(-5.75f, 1.65f, -5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank); m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 0); m_object->SetObjectParent(11, 0);
modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(11, glm::vec3(-5.75f, 1.65f, 5.0f)); m_object->SetPartPosition(11, glm::vec3(-5.75f, 1.65f, 5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank); m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 0); m_object->SetObjectParent(12, 0);
modelManager->AddModelReference("apolloj5", false, rank, m_object->GetTeam()); // wheel modelManager->AddModelReference("apolloj5", false, rank, m_object->GetTeam()); // wheel
m_object->SetPartPosition(12, glm::vec3(5.75f, 1.65f, -5.0f)); m_object->SetPartPosition(12, glm::vec3(5.75f, 1.65f, -5.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank); m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 0); m_object->SetObjectParent(13, 0);

View File

@ -95,7 +95,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type); m_object->SetType(type);
// Creates the main base. // Creates the main base.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank); m_object->SetObjectRank(0, rank);
// This is an "empty" object, without triangles // This is an "empty" object, without triangles
@ -109,7 +109,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
px = 1.0f+WORM_PART/2; px = 1.0f+WORM_PART/2;
// Creates the head. // Creates the head.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank); m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0); m_object->SetObjectParent(1, 0);
@ -120,7 +120,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the body. // Creates the body.
for ( i=0 ; i<WORM_PART ; i++ ) for ( i=0 ; i<WORM_PART ; i++ )
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2+i, rank); m_object->SetObjectRank(2+i, rank);
m_object->SetObjectParent(2+i, 0); m_object->SetObjectParent(2+i, 0);
@ -130,7 +130,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
} }
// Creates the tail. // Creates the tail.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2+WORM_PART, rank); m_object->SetObjectRank(2+WORM_PART, rank);
m_object->SetObjectParent(2+WORM_PART, 0); m_object->SetObjectParent(2+WORM_PART, 0);

View File

@ -162,8 +162,10 @@ public:
// TODO: remove from here once no longer necessary // TODO: remove from here once no longer necessary
void SetCameraCollisionSphere(const Math::Sphere& sphere); void SetCameraCollisionSphere(const Math::Sphere& sphere);
//! Sets object's ghost mode //! Is the object translucent to prevent blocking the camera view?
virtual void SetGhostMode(bool enabled) = 0; bool m_bCameraGhost = false;
//! Does the object draw in front of the user interface?
bool m_bDrawFront = false;
//! Sets flag controlling animation effect on level reset //! Sets flag controlling animation effect on level reset
void SetAnimateOnReset(bool animateOnReset); void SetAnimateOnReset(bool animateOnReset);

View File

@ -338,7 +338,7 @@ CObjectUPtr CObjectFactory::CreateResource(const ObjectCreateParams& params)
obj->SetType(type); obj->SetType(type);
obj->SetTeam(params.team); obj->SetTeam(params.team);
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
obj->SetEnergyLevel(power); obj->SetEnergyLevel(power);
@ -462,7 +462,7 @@ CObjectUPtr CObjectFactory::CreateFlag(const ObjectCreateParams& params)
if ( type == OBJECT_FLAGy ) name = "flag1y"; if ( type == OBJECT_FLAGy ) name = "flag1y";
if ( type == OBJECT_FLAGv ) name = "flag1v"; if ( type == OBJECT_FLAGv ) name = "flag1v";
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam());
@ -478,7 +478,7 @@ CObjectUPtr CObjectFactory::CreateFlag(const ObjectCreateParams& params)
for (int i=0 ; i<4 ; i++ ) for (int i=0 ; i<4 ; i++ )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank); obj->SetObjectRank(1+i, rank);
obj->SetObjectParent(1+i, i); obj->SetObjectParent(1+i, i);
@ -517,7 +517,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER0 ) if ( type == OBJECT_BARRIER0 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier0", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barrier0", false, rank, obj->GetTeam());
@ -533,7 +533,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER1 ) if ( type == OBJECT_BARRIER1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barrier1", false, rank, obj->GetTeam());
@ -551,7 +551,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER2 ) // cardboard? if ( type == OBJECT_BARRIER2 ) // cardboard?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier2", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barrier2", false, rank, obj->GetTeam());
@ -569,7 +569,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER3 ) // match + straw? if ( type == OBJECT_BARRIER3 ) // match + straw?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier3", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barrier3", false, rank, obj->GetTeam());
@ -587,7 +587,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRICADE0 ) if ( type == OBJECT_BARRICADE0 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barricade0", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barricade0", false, rank, obj->GetTeam());
@ -606,7 +606,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRICADE1 ) if ( type == OBJECT_BARRICADE1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barricade1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("barricade1", false, rank, obj->GetTeam());
@ -661,7 +661,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
type == OBJECT_PLANT3 || type == OBJECT_PLANT3 ||
type == OBJECT_PLANT4 ) // standard? type == OBJECT_PLANT4 ) // standard?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
if ( type == OBJECT_PLANT0 ) m_oldModelManager->AddModelReference("plant0", false, rank, obj->GetTeam()); if ( type == OBJECT_PLANT0 ) m_oldModelManager->AddModelReference("plant0", false, rank, obj->GetTeam());
@ -685,7 +685,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
type == OBJECT_PLANT6 || type == OBJECT_PLANT6 ||
type == OBJECT_PLANT7 ) // clover? type == OBJECT_PLANT7 ) // clover?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
if ( type == OBJECT_PLANT5 ) m_oldModelManager->AddModelReference("plant5", false, rank, obj->GetTeam()); if ( type == OBJECT_PLANT5 ) m_oldModelManager->AddModelReference("plant5", false, rank, obj->GetTeam());
@ -703,7 +703,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_PLANT8 || if ( type == OBJECT_PLANT8 ||
type == OBJECT_PLANT9 ) // squash? type == OBJECT_PLANT9 ) // squash?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
if ( type == OBJECT_PLANT8 ) m_oldModelManager->AddModelReference("plant8", false, rank, obj->GetTeam()); if ( type == OBJECT_PLANT8 ) m_oldModelManager->AddModelReference("plant8", false, rank, obj->GetTeam());
@ -723,7 +723,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
type == OBJECT_PLANT13 || type == OBJECT_PLANT13 ||
type == OBJECT_PLANT14 ) // succulent? type == OBJECT_PLANT14 ) // succulent?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
if ( type == OBJECT_PLANT10 ) m_oldModelManager->AddModelReference("plant10", false, rank, obj->GetTeam()); if ( type == OBJECT_PLANT10 ) m_oldModelManager->AddModelReference("plant10", false, rank, obj->GetTeam());
@ -747,7 +747,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
type == OBJECT_PLANT18 || type == OBJECT_PLANT18 ||
type == OBJECT_PLANT19 ) // fern? type == OBJECT_PLANT19 ) // fern?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
if ( type == OBJECT_PLANT15 ) m_oldModelManager->AddModelReference("plant15", false, rank, obj->GetTeam()); if ( type == OBJECT_PLANT15 ) m_oldModelManager->AddModelReference("plant15", false, rank, obj->GetTeam());
@ -770,7 +770,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE0 ) if ( type == OBJECT_TREE0 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree0", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree0", false, rank, obj->GetTeam());
@ -787,7 +787,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE1 ) if ( type == OBJECT_TREE1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree1", false, rank, obj->GetTeam());
@ -805,7 +805,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE2 ) if ( type == OBJECT_TREE2 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree2", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree2", false, rank, obj->GetTeam());
@ -823,7 +823,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE3 ) if ( type == OBJECT_TREE3 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree3", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree3", false, rank, obj->GetTeam());
@ -840,7 +840,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE4 ) if ( type == OBJECT_TREE4 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree4", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree4", false, rank, obj->GetTeam());
@ -856,7 +856,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE5 ) // giant tree (for the world "teen") if ( type == OBJECT_TREE5 ) // giant tree (for the world "teen")
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree5", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("tree5", false, rank, obj->GetTeam());
@ -899,7 +899,7 @@ CObjectUPtr CObjectFactory::CreateMushroom(const ObjectCreateParams& params)
if ( type == OBJECT_MUSHROOM1 ) if ( type == OBJECT_MUSHROOM1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("mush1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("mush1", false, rank, obj->GetTeam());
@ -915,7 +915,7 @@ CObjectUPtr CObjectFactory::CreateMushroom(const ObjectCreateParams& params)
if ( type == OBJECT_MUSHROOM2 ) if ( type == OBJECT_MUSHROOM2 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("mush2", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("mush2", false, rank, obj->GetTeam());
@ -962,7 +962,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN0 ) // orange pencil lg=10 if ( type == OBJECT_TEEN0 ) // orange pencil lg=10
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen0", false, rank); m_oldModelManager->AddModelReference("teen0", false, rank);
@ -980,7 +980,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN1 ) // blue pencil lg=14 if ( type == OBJECT_TEEN1 ) // blue pencil lg=14
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen1", false, rank); m_oldModelManager->AddModelReference("teen1", false, rank);
@ -1000,7 +1000,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN2 ) // red pencil lg=16 if ( type == OBJECT_TEEN2 ) // red pencil lg=16
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen2", false, rank); m_oldModelManager->AddModelReference("teen2", false, rank);
@ -1020,7 +1020,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN3 ) // jar with pencils if ( type == OBJECT_TEEN3 ) // jar with pencils
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
//? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -1035,7 +1035,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN4 ) // scissors if ( type == OBJECT_TEEN4 ) // scissors
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen4", false, rank); m_oldModelManager->AddModelReference("teen4", false, rank);
@ -1055,7 +1055,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN5 ) // CD if ( type == OBJECT_TEEN5 ) // CD
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen5", false, rank); m_oldModelManager->AddModelReference("teen5", false, rank);
@ -1070,7 +1070,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN6 ) // book 1 if ( type == OBJECT_TEEN6 ) // book 1
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen6", false, rank); m_oldModelManager->AddModelReference("teen6", false, rank);
@ -1089,7 +1089,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN7 ) // book 2 if ( type == OBJECT_TEEN7 ) // book 2
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen7", false, rank); m_oldModelManager->AddModelReference("teen7", false, rank);
@ -1108,7 +1108,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN8 ) // a stack of books 1 if ( type == OBJECT_TEEN8 ) // a stack of books 1
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen8", false, rank); m_oldModelManager->AddModelReference("teen8", false, rank);
@ -1128,7 +1128,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN9 ) // a stack of books 2 if ( type == OBJECT_TEEN9 ) // a stack of books 2
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen9", false, rank); m_oldModelManager->AddModelReference("teen9", false, rank);
@ -1148,7 +1148,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN10 ) // bookcase if ( type == OBJECT_TEEN10 ) // bookcase
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen10", false, rank); m_oldModelManager->AddModelReference("teen10", false, rank);
@ -1172,7 +1172,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN11 ) // lamp if ( type == OBJECT_TEEN11 ) // lamp
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen11", false, rank); m_oldModelManager->AddModelReference("teen11", false, rank);
@ -1195,7 +1195,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN12 ) // coke if ( type == OBJECT_TEEN12 ) // coke
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
//? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -1210,7 +1210,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN13 ) // cardboard farm if ( type == OBJECT_TEEN13 ) // cardboard farm
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen13", false, rank); m_oldModelManager->AddModelReference("teen13", false, rank);
@ -1233,7 +1233,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN14 ) // open box if ( type == OBJECT_TEEN14 ) // open box
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen14", false, rank); m_oldModelManager->AddModelReference("teen14", false, rank);
@ -1256,7 +1256,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN15 ) // stack of cartons if ( type == OBJECT_TEEN15 ) // stack of cartons
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen15", false, rank); m_oldModelManager->AddModelReference("teen15", false, rank);
@ -1279,7 +1279,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN16 ) // watering can if ( type == OBJECT_TEEN16 ) // watering can
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen16", false, rank); m_oldModelManager->AddModelReference("teen16", false, rank);
@ -1295,7 +1295,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN17 ) // wheel | if ( type == OBJECT_TEEN17 ) // wheel |
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen17", false, rank); m_oldModelManager->AddModelReference("teen17", false, rank);
@ -1309,7 +1309,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN18 ) // wheel / if ( type == OBJECT_TEEN18 ) // wheel /
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen18", false, rank); m_oldModelManager->AddModelReference("teen18", false, rank);
@ -1323,7 +1323,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN19 ) // wheel = if ( type == OBJECT_TEEN19 ) // wheel =
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen19", false, rank); m_oldModelManager->AddModelReference("teen19", false, rank);
@ -1337,7 +1337,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN20 ) // wall with shelf if ( type == OBJECT_TEEN20 ) // wall with shelf
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen20", false, rank); m_oldModelManager->AddModelReference("teen20", false, rank);
@ -1356,7 +1356,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN21 ) // wall with window if ( type == OBJECT_TEEN21 ) // wall with window
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen21", false, rank); m_oldModelManager->AddModelReference("teen21", false, rank);
@ -1366,7 +1366,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN22 ) // wall with door and shelf if ( type == OBJECT_TEEN22 ) // wall with door and shelf
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen22", false, rank); m_oldModelManager->AddModelReference("teen22", false, rank);
@ -1381,7 +1381,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN23 ) // skateboard on wheels if ( type == OBJECT_TEEN23 ) // skateboard on wheels
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen23", false, rank); m_oldModelManager->AddModelReference("teen23", false, rank);
@ -1406,7 +1406,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN24 ) // skate / if ( type == OBJECT_TEEN24 ) // skate /
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen24", false, rank); m_oldModelManager->AddModelReference("teen24", false, rank);
@ -1420,7 +1420,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN25 ) // skate / if ( type == OBJECT_TEEN25 ) // skate /
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen25", false, rank); m_oldModelManager->AddModelReference("teen25", false, rank);
@ -1434,7 +1434,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN26 ) // ceiling lamp if ( type == OBJECT_TEEN26 ) // ceiling lamp
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen26", false, rank); m_oldModelManager->AddModelReference("teen26", false, rank);
@ -1457,7 +1457,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN27 ) // large plant? if ( type == OBJECT_TEEN27 ) // large plant?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen27", false, rank); m_oldModelManager->AddModelReference("teen27", false, rank);
@ -1470,7 +1470,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN28 ) // bottle? if ( type == OBJECT_TEEN28 ) // bottle?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
//? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -1484,7 +1484,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN29 ) // bridge? if ( type == OBJECT_TEEN29 ) // bridge?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen29", false, rank); m_oldModelManager->AddModelReference("teen29", false, rank);
@ -1495,7 +1495,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN30 ) // jump? if ( type == OBJECT_TEEN30 ) // jump?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen30", false, rank); m_oldModelManager->AddModelReference("teen30", false, rank);
@ -1509,7 +1509,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN31 ) // basket? if ( type == OBJECT_TEEN31 ) // basket?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen31", false, rank); m_oldModelManager->AddModelReference("teen31", false, rank);
@ -1526,7 +1526,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN32 ) // chair? if ( type == OBJECT_TEEN32 ) // chair?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen32", false, rank); m_oldModelManager->AddModelReference("teen32", false, rank);
@ -1543,7 +1543,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN33 ) // panel? if ( type == OBJECT_TEEN33 ) // panel?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen33", false, rank); m_oldModelManager->AddModelReference("teen33", false, rank);
@ -1556,7 +1556,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN34 ) // stone? if ( type == OBJECT_TEEN34 ) // stone?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen34", false, rank); m_oldModelManager->AddModelReference("teen34", false, rank);
@ -1569,7 +1569,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN35 ) // pipe? if ( type == OBJECT_TEEN35 ) // pipe?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen35", false, rank); m_oldModelManager->AddModelReference("teen35", false, rank);
@ -1586,7 +1586,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN36 ) // trunk? if ( type == OBJECT_TEEN36 ) // trunk?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen36", false, rank); m_oldModelManager->AddModelReference("teen36", false, rank);
@ -1597,7 +1597,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN37 ) // boat? if ( type == OBJECT_TEEN37 ) // boat?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen37", false, rank); m_oldModelManager->AddModelReference("teen37", false, rank);
@ -1608,21 +1608,21 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN38 ) // fan? if ( type == OBJECT_TEEN38 ) // fan?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen38a", false, rank); m_oldModelManager->AddModelReference("teen38a", false, rank);
obj->SetPartPosition(0, pos); obj->SetPartPosition(0, pos);
obj->SetPartRotationY(0, angle); obj->SetPartRotationY(0, angle);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
m_oldModelManager->AddModelReference("teen38b", false, rank); // engine m_oldModelManager->AddModelReference("teen38b", false, rank); // engine
obj->SetPartPosition(1, glm::vec3(0.0f, 30.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 30.0f, 0.0f));
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);
@ -1636,7 +1636,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN39 ) // potted plant? if ( type == OBJECT_TEEN39 ) // potted plant?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen39", false, rank); m_oldModelManager->AddModelReference("teen39", false, rank);
@ -1650,7 +1650,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN40 ) // balloon? if ( type == OBJECT_TEEN40 ) // balloon?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen40", false, rank); m_oldModelManager->AddModelReference("teen40", false, rank);
@ -1664,7 +1664,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN41 ) // fence? if ( type == OBJECT_TEEN41 ) // fence?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen41", false, rank); m_oldModelManager->AddModelReference("teen41", false, rank);
@ -1674,7 +1674,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN42 ) // clover? if ( type == OBJECT_TEEN42 ) // clover?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen42", false, rank); m_oldModelManager->AddModelReference("teen42", false, rank);
@ -1687,7 +1687,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN43 ) // clover? if ( type == OBJECT_TEEN43 ) // clover?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen43", false, rank); m_oldModelManager->AddModelReference("teen43", false, rank);
@ -1700,7 +1700,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
if ( type == OBJECT_TEEN44 ) // car? if ( type == OBJECT_TEEN44 ) // car?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen44", false, rank); m_oldModelManager->AddModelReference("teen44", false, rank);
@ -1746,7 +1746,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
if ( type == OBJECT_QUARTZ0 ) if ( type == OBJECT_QUARTZ0 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz0", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("quartz0", false, rank, obj->GetTeam());
@ -1760,7 +1760,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
} }
if ( type == OBJECT_QUARTZ1 ) if ( type == OBJECT_QUARTZ1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("quartz1", false, rank, obj->GetTeam());
@ -1774,7 +1774,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
} }
if ( type == OBJECT_QUARTZ2 ) if ( type == OBJECT_QUARTZ2 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz2", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("quartz2", false, rank, obj->GetTeam());
@ -1788,7 +1788,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
} }
if ( type == OBJECT_QUARTZ3 ) if ( type == OBJECT_QUARTZ3 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz3", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("quartz3", false, rank, obj->GetTeam());
@ -1852,7 +1852,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
if ( type == OBJECT_ROOT0 ) if ( type == OBJECT_ROOT0 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root0", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root0", false, rank, obj->GetTeam());
@ -1873,7 +1873,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
} }
if ( type == OBJECT_ROOT1 ) if ( type == OBJECT_ROOT1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root1", false, rank, obj->GetTeam());
@ -1894,7 +1894,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
} }
if ( type == OBJECT_ROOT2 ) if ( type == OBJECT_ROOT2 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root2", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root2", false, rank, obj->GetTeam());
@ -1914,7 +1914,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
} }
if ( type == OBJECT_ROOT3 ) if ( type == OBJECT_ROOT3 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root3", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root3", false, rank, obj->GetTeam());
@ -1936,7 +1936,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
} }
if ( type == OBJECT_ROOT4 ) if ( type == OBJECT_ROOT4 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam());
@ -1960,7 +1960,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
} }
if ( type == OBJECT_ROOT5 ) // gravity root ? if ( type == OBJECT_ROOT5 ) // gravity root ?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam());
@ -1968,7 +1968,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
obj->SetRotationY(angle); obj->SetRotationY(angle);
obj->SetScale(2.0f); obj->SetScale(2.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -2020,7 +2020,7 @@ CObjectUPtr CObjectFactory::CreateHome(const ObjectCreateParams& params)
if ( type == OBJECT_HOME1 ) if ( type == OBJECT_HOME1 )
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("home1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("home1", false, rank, obj->GetTeam());
@ -2059,7 +2059,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetType(type); obj->SetType(type);
obj->SetTeam(params.team); obj->SetTeam(params.team);
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -2086,7 +2086,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilew1 ) // vehicle had wheels? if ( type == OBJECT_RUINmobilew1 ) // vehicle had wheels?
{ {
// Creates the right-back wheel. // Creates the right-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(6, rank); obj->SetObjectRank(6, rank);
obj->SetObjectParent(6, 0); obj->SetObjectParent(6, 0);
@ -2097,7 +2097,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(6, -Math::PI/2.0f); obj->SetPartRotationX(6, -Math::PI/2.0f);
// Creates the left-back wheel. // Creates the left-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank); obj->SetObjectRank(7, rank);
obj->SetObjectParent(7, 0); obj->SetObjectParent(7, 0);
@ -2109,7 +2109,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(7, -0.3f); obj->SetPartRotationX(7, -0.3f);
// Creates the right-front wheel. // Creates the right-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(8, rank); obj->SetObjectRank(8, rank);
obj->SetObjectParent(8, 0); obj->SetObjectParent(8, 0);
@ -2120,7 +2120,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationY(8, 0.3f); obj->SetPartRotationY(8, 0.3f);
// Creates the left-front wheel. // Creates the left-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank); obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0); obj->SetObjectParent(9, 0);
@ -2140,7 +2140,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilew2 ) // vehicle has wheels? if ( type == OBJECT_RUINmobilew2 ) // vehicle has wheels?
{ {
// Creates the left-back wheel. // Creates the left-back wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank); obj->SetObjectRank(7, rank);
obj->SetObjectParent(7, 0); obj->SetObjectParent(7, 0);
@ -2152,7 +2152,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(7, 0.4f); obj->SetPartRotationX(7, 0.4f);
// Creates the left-front wheel. // Creates the left-front wheel.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank); obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0); obj->SetObjectParent(9, 0);
@ -2172,7 +2172,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilet1 ) // vehicle have caterpillars? if ( type == OBJECT_RUINmobilet1 ) // vehicle have caterpillars?
{ {
// Creates the cannon. // Creates the cannon.
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -2477,7 +2477,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
if ( type == OBJECT_APOLLO1 ) // LEM ? if ( type == OBJECT_APOLLO1 ) // LEM ?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apollol1", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("apollol1", false, rank, obj->GetTeam());
@ -2488,7 +2488,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
for (int i=0 ; i<4 ; i++ ) // creates feet for (int i=0 ; i<4 ; i++ ) // creates feet
{ {
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(i+1, rank); obj->SetObjectRank(i+1, rank);
obj->SetObjectParent(i+1, 0); obj->SetObjectParent(i+1, 0);
@ -2496,7 +2496,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
obj->SetPartRotationY(i+1, Math::PI/2.0f*i); obj->SetPartRotationY(i+1, Math::PI/2.0f*i);
} }
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(5, rank); obj->SetObjectRank(5, rank);
obj->SetObjectParent(5, 0); obj->SetObjectParent(5, 0);
@ -2517,7 +2517,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
if ( type == OBJECT_APOLLO3 ) // flag? if ( type == OBJECT_APOLLO3 ) // flag?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apollof", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("apollof", false, rank, obj->GetTeam());
@ -2531,7 +2531,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
if ( type == OBJECT_APOLLO4 ) // module? if ( type == OBJECT_APOLLO4 ) // module?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apollom", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("apollom", false, rank, obj->GetTeam());
@ -2547,7 +2547,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
if ( type == OBJECT_APOLLO5 ) // antenna? if ( type == OBJECT_APOLLO5 ) // antenna?
{ {
int rank = m_engine->CreateObject(); int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apolloa", false, rank, obj->GetTeam()); m_oldModelManager->AddModelReference("apolloa", false, rank, obj->GetTeam());
@ -2555,7 +2555,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
obj->SetRotationY(angle); obj->SetRotationY(angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = m_engine->CreateObject(); rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);

View File

@ -202,7 +202,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -211,7 +211,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -222,7 +222,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -233,7 +233,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -245,7 +245,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -254,7 +254,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -265,7 +265,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -276,7 +276,7 @@ public:
float angle = 0.0f, float angle = 0.0f,
float focus = Math::PI*2.0f, float focus = Math::PI*2.0f,
float minDist = 0.0f, float minDist = 0.0f,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool furthest = false, bool furthest = false,
RadarFilter filter = FILTER_NONE, RadarFilter filter = FILTER_NONE,
bool cbotTypes = false); bool cbotTypes = false);
@ -285,21 +285,21 @@ public:
//@{ //@{
CObject* FindNearest(CObject* pThis, CObject* FindNearest(CObject* pThis,
ObjectType type = OBJECT_NULL, ObjectType type = OBJECT_NULL,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool cbotTypes = false); bool cbotTypes = false);
CObject* FindNearest(CObject* pThis, CObject* FindNearest(CObject* pThis,
std::vector<ObjectType> type = std::vector<ObjectType>(), std::vector<ObjectType> type = std::vector<ObjectType>(),
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool cbotTypes = false); bool cbotTypes = false);
CObject* FindNearest(CObject* pThis, CObject* FindNearest(CObject* pThis,
glm::vec3 thisPosition, glm::vec3 thisPosition,
ObjectType type = OBJECT_NULL, ObjectType type = OBJECT_NULL,
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool cbotTypes = false); bool cbotTypes = false);
CObject* FindNearest(CObject* pThis, CObject* FindNearest(CObject* pThis,
glm::vec3 thisPosition, glm::vec3 thisPosition,
std::vector<ObjectType> type = std::vector<ObjectType>(), std::vector<ObjectType> type = std::vector<ObjectType>(),
float maxDist = 1000.0f, float maxDist = 10000000.0f,
bool cbotTypes = false); bool cbotTypes = false);
//@} //@}

View File

@ -286,8 +286,8 @@ void COldObject::DeleteObject(bool bAll)
if (m_power->Implements(ObjectInterfaceType::Old)) if (m_power->Implements(ObjectInterfaceType::Old))
{ {
dynamic_cast<COldObject&>(*m_power).SetTransporter(nullptr); dynamic_cast<COldObject&>(*m_power).SetTransporter(nullptr);
dynamic_cast<COldObject&>(*m_power).DeleteObject(bAll);
} }
CObjectManager::GetInstance().DeleteObject(m_power);
m_power = nullptr; m_power = nullptr;
} }
if (m_cargo != nullptr) if (m_cargo != nullptr)
@ -295,8 +295,8 @@ void COldObject::DeleteObject(bool bAll)
if (m_cargo->Implements(ObjectInterfaceType::Old)) if (m_cargo->Implements(ObjectInterfaceType::Old))
{ {
dynamic_cast<COldObject&>(*m_cargo).SetTransporter(nullptr); dynamic_cast<COldObject&>(*m_cargo).SetTransporter(nullptr);
dynamic_cast<COldObject&>(*m_cargo).DeleteObject(bAll);
} }
CObjectManager::GetInstance().DeleteObject(m_cargo);
m_cargo = nullptr; m_cargo = nullptr;
} }
} }
@ -1855,21 +1855,6 @@ glm::mat4 COldObject::GetWorldMatrix(int part)
} }
// Indicates whether the object should be drawn over the interface.
void COldObject::SetDrawFront(bool bDraw)
{
int i;
for ( i=0 ; i<OBJECTMAXPART ; i++ )
{
if ( m_objectPart[i].bUsed )
{
m_engine->SetObjectDrawFront(m_objectPart[i].object, bDraw);
}
}
}
// Creates shade under a vehicle as a negative light. // Creates shade under a vehicle as a negative light.
bool COldObject::CreateShadowLight(float height, Gfx::Color color) bool COldObject::CreateShadowLight(float height, Gfx::Color color)
@ -2662,27 +2647,6 @@ float COldObject::GetReactorRange()
} }
// Management of transparency of the object.
void COldObject::SetGhostMode(bool enabled)
{
int i;
for ( i=0 ; i<m_totalPart ; i++ )
{
if ( m_objectPart[i].bUsed )
{
if ( m_type == OBJECT_BASE )
{
if ( i != 9 ) continue; // no central pillar?
}
m_engine->SetObjectGhostMode(m_objectPart[i].object, enabled);
}
}
}
// Pushes an object. // Pushes an object.
bool COldObject::JostleObject(float force) bool COldObject::JostleObject(float force)

View File

@ -130,8 +130,6 @@ public:
void Write(CLevelParserLine* line) override; void Write(CLevelParserLine* line) override;
void Read(CLevelParserLine* line) override; void Read(CLevelParserLine* line) override;
void SetDrawFront(bool bDraw) override;
int GetShadowLight(); int GetShadowLight();
void SetFloorHeight(float height); void SetFloorHeight(float height);
@ -206,8 +204,6 @@ public:
void SetReactorRange(float reactorRange) override; void SetReactorRange(float reactorRange) override;
float GetReactorRange() override; float GetReactorRange() override;
void SetGhostMode(bool enabled) override;
Math::Sphere GetJostlingSphere() const override; Math::Sphere GetJostlingSphere() const override;
bool JostleObject(float force) override; bool JostleObject(float force) override;

View File

@ -46,11 +46,6 @@ int COldObjectInterface::GetOption()
throw std::logic_error("GetOption: not implemented!"); throw std::logic_error("GetOption: not implemented!");
} }
void COldObjectInterface::SetDrawFront(bool bDraw)
{
throw std::logic_error("SetDrawFront: not implemented!");
}
void COldObjectInterface::FloorAdjust() void COldObjectInterface::FloorAdjust()
{ {

View File

@ -53,8 +53,6 @@ public:
virtual int GetOption(); virtual int GetOption();
virtual void SetDrawFront(bool bDraw);
virtual void FloorAdjust(); virtual void FloorAdjust();

View File

@ -68,7 +68,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
float height = params.height; float height = params.height;
int rank = engine->CreateObject(); int rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -79,14 +79,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
modelManager->AddModelReference("portico2", false, rank, params.team); modelManager->AddModelReference("portico2", false, rank, params.team);
obj->SetPartPosition(1, glm::vec3(0.0f, 67.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 67.0f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);
@ -94,7 +94,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(2, glm::vec3(0.0f, 0.0f, -33.0f)); obj->SetPartPosition(2, glm::vec3(0.0f, 0.0f, -33.0f));
obj->SetPartRotationY(2, 45.0f*Math::PI/180.0f); obj->SetPartRotationY(2, 45.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank); obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 2); obj->SetObjectParent(3, 2);
@ -102,7 +102,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(3, glm::vec3(50.0f, 0.0f, 0.0f)); obj->SetPartPosition(3, glm::vec3(50.0f, 0.0f, 0.0f));
obj->SetPartRotationY(3, -60.0f*Math::PI/180.0f); obj->SetPartRotationY(3, -60.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(4, rank); obj->SetObjectRank(4, rank);
obj->SetObjectParent(4, 3); obj->SetObjectParent(4, 3);
@ -110,7 +110,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(4, glm::vec3(35.0f, 0.0f, 0.0f)); obj->SetPartPosition(4, glm::vec3(35.0f, 0.0f, 0.0f));
obj->SetPartRotationY(4, -55.0f*Math::PI/180.0f); obj->SetPartRotationY(4, -55.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(5, rank); obj->SetObjectRank(5, rank);
obj->SetObjectParent(5, 1); obj->SetObjectParent(5, 1);
@ -118,7 +118,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(5, glm::vec3(0.0f, 0.0f, 33.0f)); obj->SetPartPosition(5, glm::vec3(0.0f, 0.0f, 33.0f));
obj->SetPartRotationY(5, -45.0f*Math::PI/180.0f); obj->SetPartRotationY(5, -45.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(6, rank); obj->SetObjectRank(6, rank);
obj->SetObjectParent(6, 5); obj->SetObjectParent(6, 5);
@ -126,7 +126,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(6, glm::vec3(50.0f, 0.0f, 0.0f)); obj->SetPartPosition(6, glm::vec3(50.0f, 0.0f, 0.0f));
obj->SetPartRotationY(6, 60.0f*Math::PI/180.0f); obj->SetPartRotationY(6, 60.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank); obj->SetObjectRank(7, rank);
obj->SetObjectParent(7, 6); obj->SetObjectParent(7, 6);
@ -134,7 +134,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(7, glm::vec3(35.0f, 0.0f, 0.0f)); obj->SetPartPosition(7, glm::vec3(35.0f, 0.0f, 0.0f));
obj->SetPartRotationY(7, 55.0f*Math::PI/180.0f); obj->SetPartRotationY(7, 55.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(8, rank); obj->SetObjectRank(8, rank);
obj->SetObjectParent(8, 0); obj->SetObjectParent(8, 0);
@ -143,14 +143,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(8, -Math::PI/2.0f); obj->SetPartRotationY(8, -Math::PI/2.0f);
obj->SetPartScale(8, 2.0f); obj->SetPartScale(8, 2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank); obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 8); obj->SetObjectParent(9, 8);
modelManager->AddModelReference("portico7", false, rank, params.team); modelManager->AddModelReference("portico7", false, rank, params.team);
obj->SetPartPosition(9, glm::vec3(0.0f, 4.5f, 1.9f)); obj->SetPartPosition(9, glm::vec3(0.0f, 4.5f, 1.9f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(10, rank); obj->SetObjectRank(10, rank);
obj->SetObjectParent(10, 0); obj->SetObjectParent(10, 0);
@ -159,7 +159,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(10, -Math::PI/2.0f); obj->SetPartRotationY(10, -Math::PI/2.0f);
obj->SetPartScale(10, 2.0f); obj->SetPartScale(10, 2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(11, rank); obj->SetObjectRank(11, rank);
obj->SetObjectParent(11, 10); obj->SetObjectParent(11, 10);
@ -191,7 +191,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
for (int i=0 ; i<8 ; i++ ) for (int i=0 ; i<8 ; i++ )
{ {
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank); obj->SetObjectRank(1+i, rank);
obj->SetObjectParent(1+i, 0); obj->SetObjectParent(1+i, 0);
@ -201,14 +201,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(1+i, Math::PI/4.0f*i); obj->SetPartRotationY(1+i, Math::PI/4.0f*i);
obj->SetPartRotationZ(1+i, Math::PI/2.0f); obj->SetPartRotationZ(1+i, Math::PI/2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(10+i, rank); obj->SetObjectRank(10+i, rank);
obj->SetObjectParent(10+i, 1+i); obj->SetObjectParent(10+i, 1+i);
modelManager->AddModelReference("base4", false, rank, params.team); modelManager->AddModelReference("base4", false, rank, params.team);
obj->SetPartPosition(10+i, glm::vec3(23.5f, 0.0f, 7.0f)); obj->SetPartPosition(10+i, glm::vec3(23.5f, 0.0f, 7.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(18+i, rank); obj->SetObjectRank(18+i, rank);
obj->SetObjectParent(18+i, 1+i); obj->SetObjectParent(18+i, 1+i);
@ -216,7 +216,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(18+i, glm::vec3(23.5f, 0.0f, -7.0f)); obj->SetPartPosition(18+i, glm::vec3(23.5f, 0.0f, -7.0f));
} }
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank); obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0); obj->SetObjectParent(9, 0);
@ -254,7 +254,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -277,14 +277,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
modelManager->AddModelReference("search2", false, rank, params.team); modelManager->AddModelReference("search2", false, rank, params.team);
obj->SetPartPosition(1, glm::vec3(0.0f, 13.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 13.0f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);
@ -309,14 +309,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
modelManager->AddModelReference("radar2", false, rank, params.team); modelManager->AddModelReference("radar2", false, rank, params.team);
obj->SetPartPosition(1, glm::vec3(0.0f, 5.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 5.0f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 0); obj->SetObjectParent(2, 0);
@ -324,7 +324,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(2, glm::vec3(0.0f, 11.0f, 0.0f)); obj->SetPartPosition(2, glm::vec3(0.0f, 11.0f, 0.0f));
obj->SetPartRotationY(2, -Math::PI/2.0f); obj->SetPartRotationY(2, -Math::PI/2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank); obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 2); obj->SetObjectParent(3, 2);
@ -363,7 +363,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -371,14 +371,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(1, glm::vec3(-9.0f, 3.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(-9.0f, 3.0f, 0.0f));
obj->SetPartRotationZ(1, Math::PI/2.0f); obj->SetPartRotationZ(1, Math::PI/2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);
modelManager->AddModelReference("labo3", false, rank, params.team); modelManager->AddModelReference("labo3", false, rank, params.team);
obj->SetPartPosition(2, glm::vec3(9.0f, -1.0f, 0.0f)); obj->SetPartPosition(2, glm::vec3(9.0f, -1.0f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank); obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 2); obj->SetObjectParent(3, 2);
@ -386,7 +386,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(3, glm::vec3(0.0f, 0.0f, 0.0f)); obj->SetPartPosition(3, glm::vec3(0.0f, 0.0f, 0.0f));
obj->SetPartRotationZ(3, 80.0f*Math::PI/180.0f); obj->SetPartRotationZ(3, 80.0f*Math::PI/180.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(4, rank); obj->SetObjectRank(4, rank);
obj->SetObjectParent(4, 2); obj->SetObjectParent(4, 2);
@ -395,7 +395,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationZ(4, 80.0f*Math::PI/180.0f); obj->SetPartRotationZ(4, 80.0f*Math::PI/180.0f);
obj->SetPartRotationY(4, Math::PI*2.0f/3.0f); obj->SetPartRotationY(4, Math::PI*2.0f/3.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(5, rank); obj->SetObjectRank(5, rank);
obj->SetObjectParent(5, 2); obj->SetObjectParent(5, 2);
@ -425,7 +425,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
for (int i=0 ; i<9 ; i++ ) for (int i=0 ; i<9 ; i++ )
{ {
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank); obj->SetObjectRank(1+i, rank);
obj->SetObjectParent(1+i, 0); obj->SetObjectParent(1+i, 0);
@ -434,7 +434,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationZ(1+i, Math::PI/2.0f); obj->SetPartRotationZ(1+i, Math::PI/2.0f);
obj->SetPartScaleZ(1+i, 0.30f); obj->SetPartScaleZ(1+i, 0.30f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(10+i, rank); obj->SetObjectRank(10+i, rank);
obj->SetObjectParent(10+i, 0); obj->SetObjectParent(10+i, 0);
@ -480,7 +480,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -504,7 +504,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -544,14 +544,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
modelManager->AddModelReference("convert2", false, rank, params.team); modelManager->AddModelReference("convert2", false, rank, params.team);
obj->SetPartPosition(1, glm::vec3(0.0f, 14.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 14.0f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 0); obj->SetObjectParent(2, 0);
@ -559,7 +559,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(2, glm::vec3(0.0f, 11.5f, 0.0f)); obj->SetPartPosition(2, glm::vec3(0.0f, 11.5f, 0.0f));
obj->SetPartRotationX(2, -Math::PI*0.35f); obj->SetPartRotationX(2, -Math::PI*0.35f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank); obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 0); obj->SetObjectParent(3, 0);
@ -584,7 +584,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -592,7 +592,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartPosition(1, glm::vec3(0.0f, 20.0f, 0.0f)); obj->SetPartPosition(1, glm::vec3(0.0f, 20.0f, 0.0f));
obj->SetPartRotationZ(1, Math::PI/2.0f); obj->SetPartRotationZ(1, Math::PI/2.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);
@ -618,7 +618,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -667,14 +667,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
modelManager->AddModelReference("safe2", false, rank, params.team); modelManager->AddModelReference("safe2", false, rank, params.team);
obj->SetPartScale(1, 1.05f); obj->SetPartScale(1, 1.05f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 0); obj->SetObjectParent(2, 0);
@ -696,7 +696,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -705,7 +705,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(1, -Math::PI/2.0f); obj->SetPartRotationY(1, -Math::PI/2.0f);
obj->SetPartScale(1, 3.0f); obj->SetPartScale(1, 3.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank); obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1); obj->SetObjectParent(2, 1);

View File

@ -54,7 +54,7 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
obj->SetTeam(params.team); obj->SetTeam(params.team);
int rank = engine->CreateObject(); int rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
obj->SetObjectRank(0, rank); obj->SetObjectRank(0, rank);
@ -63,7 +63,7 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
obj->SetRotationY(params.angle); obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f); obj->SetFloorHeight(0.0f);
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank); obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0); obj->SetObjectParent(1, 0);
@ -72,14 +72,14 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
for (int i = 0; i < 3; ++i) for (int i = 0; i < 3; ++i)
{ {
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2+i*2, rank); obj->SetObjectRank(2+i*2, rank);
obj->SetObjectParent(2+i*2, 1); obj->SetObjectParent(2+i*2, 1);
modelManager->AddModelReference("info3", false, rank); modelManager->AddModelReference("info3", false, rank);
obj->SetPartPosition(2+i*2, glm::vec3(0.0f, 4.5f, 0.0f)); obj->SetPartPosition(2+i*2, glm::vec3(0.0f, 4.5f, 0.0f));
rank = engine->CreateObject(); rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3+i*2, rank); obj->SetObjectRank(3+i*2, rank);
obj->SetObjectParent(3+i*2, 2+i*2); obj->SetObjectParent(3+i*2, 2+i*2);

View File

@ -56,7 +56,7 @@ CStaticObject::CStaticObject(int id,
m_rotation.y = angleY; m_rotation.y = angleY;
glm::mat4 worldMatrix = ComputeWorldMatrix(position, angleY); glm::mat4 worldMatrix = ComputeWorldMatrix(position, angleY);
m_meshHandle = m_engine->AddStaticMesh(key, mesh, worldMatrix); m_meshHandle = m_engine->AddStaticMesh(key, mesh, worldMatrix, this);
if (model->HasShadowSpot()) if (model->HasShadowSpot())
m_engine->AddStaticMeshShadowSpot(m_meshHandle, model->GetShadowSpot()); m_engine->AddStaticMeshShadowSpot(m_meshHandle, model->GetShadowSpot());
@ -103,11 +103,6 @@ void CStaticObject::TransformCameraCollisionSphere(Math::Sphere& collisionSphere
Math::Transform(worldMatrix, collisionSphere.pos); Math::Transform(worldMatrix, collisionSphere.pos);
} }
void CStaticObject::SetGhostMode(bool enabled)
{
m_engine->SetStaticMeshGhostMode(m_meshHandle, enabled);
}
bool CStaticObject::IsStaticObject(ObjectType type) bool CStaticObject::IsStaticObject(ObjectType type)
{ {
return m_staticModelNames.count(type) > 0; return m_staticModelNames.count(type) > 0;

View File

@ -53,8 +53,6 @@ public:
void Read(CLevelParserLine* line) override; void Read(CLevelParserLine* line) override;
void Write(CLevelParserLine* line) override; void Write(CLevelParserLine* line) override;
void SetGhostMode(bool enabled) override;
public: public:
static bool IsStaticObject(ObjectType type); static bool IsStaticObject(ObjectType type);

View File

@ -446,7 +446,7 @@ void CDisplayInfo::StartDisplayInfo(std::string filename, int index, bool bSoluc
m_toto = SearchToto(); m_toto = SearchToto();
if ( m_toto != nullptr ) if ( m_toto != nullptr )
{ {
m_toto->SetDrawFront(true); m_toto->m_bDrawFront = true;
assert(m_toto->Implements(ObjectInterfaceType::Movable)); assert(m_toto->Implements(ObjectInterfaceType::Movable));
CMotionToto* toto = static_cast<CMotionToto*>(dynamic_cast<CMovableObject&>(*m_toto).GetMotion()); CMotionToto* toto = static_cast<CMotionToto*>(dynamic_cast<CMovableObject&>(*m_toto).GetMotion());

View File

@ -91,6 +91,7 @@ void CScreenLevelList::CreateInterface()
if ( m_category == LevelCategory::CodeBattles ) res = RT_TITLE_CODE_BATTLES; if ( m_category == LevelCategory::CodeBattles ) res = RT_TITLE_CODE_BATTLES;
if ( m_category == LevelCategory::GamePlus ) res = RT_TITLE_PLUS; if ( m_category == LevelCategory::GamePlus ) res = RT_TITLE_PLUS;
if ( m_category == LevelCategory::CustomLevels ) res = RT_TITLE_USER; if ( m_category == LevelCategory::CustomLevels ) res = RT_TITLE_USER;
if ( m_category == LevelCategory::CareerMode ) res = RT_TITLE_CAREER;
GetResource(RES_TEXT, res, name); GetResource(RES_TEXT, res, name);
pw->SetName(name); pw->SetName(name);
@ -114,6 +115,7 @@ void CScreenLevelList::CreateInterface()
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_CHAP_PLANETS; if ( m_category == LevelCategory::Missions ) res = RT_PLAY_CHAP_PLANETS;
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_CHAP_PLANETS; if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_CHAP_PLANETS;
if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_CHAP_PLANETS; if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_CHAP_PLANETS;
if ( m_category == LevelCategory::CareerMode ) res = RT_PLAY_CHAP_PLANETS;
if ( m_category == LevelCategory::CustomLevels ) res = RT_PLAY_CHAP_USERLVL; if ( m_category == LevelCategory::CustomLevels ) res = RT_PLAY_CHAP_USERLVL;
GetResource(RES_TEXT, res, name); GetResource(RES_TEXT, res, name);
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, name);
@ -128,7 +130,8 @@ void CScreenLevelList::CreateInterface()
UpdateSceneChap(m_chap[m_category]); UpdateSceneChap(m_chap[m_category]);
if ( m_category != LevelCategory::FreeGame && if ( m_category != LevelCategory::FreeGame &&
m_category != LevelCategory::CodeBattles && m_category != LevelCategory::CodeBattles &&
m_category != LevelCategory::CustomLevels ) // Don't show completion marks in free game, code battles and userlevels m_category != LevelCategory::CustomLevels &&
m_category != LevelCategory::CareerMode ) // Don't show completion marks in free game, code battles and userlevels
{ {
pli->SetState(STATE_EXTEND); pli->SetState(STATE_EXTEND);
} }
@ -144,6 +147,7 @@ void CScreenLevelList::CreateInterface()
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_LIST_MISSIONS; if ( m_category == LevelCategory::Missions ) res = RT_PLAY_LIST_MISSIONS;
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_LIST_FREEGAME; if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_LIST_FREEGAME;
if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_LIST_MISSIONS; if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_LIST_MISSIONS;
if ( m_category == LevelCategory::CareerMode ) res = RT_PLAY_LIST_MISSIONS;
GetResource(RES_TEXT, res, name); GetResource(RES_TEXT, res, name);
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
@ -186,7 +190,8 @@ void CScreenLevelList::CreateInterface()
// Button displays the "soluce": // Button displays the "soluce":
if ( m_category != LevelCategory::Exercises && if ( m_category != LevelCategory::Exercises &&
m_category != LevelCategory::GamePlus && m_category != LevelCategory::GamePlus &&
m_category != LevelCategory::FreeGame ) m_category != LevelCategory::FreeGame &&
m_category != LevelCategory::CareerMode )
{ {
pos.x = ox+sx*9.5f; pos.x = ox+sx*9.5f;
pos.y = oy+sy*5.8f; pos.y = oy+sy*5.8f;

View File

@ -123,7 +123,7 @@ void CScreenMainMenu::CreateInterface()
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_CODE_BATTLES); pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_CODE_BATTLES);
pb->SetState(STATE_SHADOW); pb->SetState(STATE_SHADOW);
pos.y = oy+sy*5.8f; pos.y = oy+sy*5.9f;
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_USER); pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_USER);
pb->SetState(STATE_SHADOW); pb->SetState(STATE_SHADOW);
try try
@ -144,6 +144,12 @@ void CScreenMainMenu::CreateInterface()
GetLogger()->Error("Failed loading userlevel button name: %s\n", e.what()); GetLogger()->Error("Failed loading userlevel button name: %s\n", e.what());
} }
pos.y = oy+sy*5.0f;
ddim.y = dim.y*0.4f;
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_CAREER);
pb->SetState(STATE_SHADOW);
ddim.y = dim.y*0.5f; ddim.y = dim.y*0.5f;
pos.y = oy+sy*4.35f; pos.y = oy+sy*4.35f;
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_NAME); pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_NAME);
@ -243,6 +249,11 @@ bool CScreenMainMenu::EventProcess(const Event &event)
m_main->ChangePhase(PHASE_LEVEL_LIST); m_main->ChangePhase(PHASE_LEVEL_LIST);
break; break;
case EVENT_INTERFACE_CAREER:
m_main->SetLevel(LevelCategory::CareerMode, 0, 0);
m_main->ChangePhase(PHASE_LEVEL_LIST);
break;
case EVENT_INTERFACE_SETUP: case EVENT_INTERFACE_SETUP:
m_main->ChangePhase(CScreenSetup::GetTab()); m_main->ChangePhase(CScreenSetup::GetTab());
break; break;