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_PLUS = 415,
EVENT_INTERFACE_MODS = 416,
EVENT_INTERFACE_CAREER = 417,
EVENT_INTERFACE_CHAP = 420,
EVENT_INTERFACE_LIST = 421,

View File

@ -79,6 +79,7 @@ void InitializeRestext()
stringsText[RT_TITLE_READ] = TR("Load a saved mission");
stringsText[RT_TITLE_PLUS] = TR("Missions+");
stringsText[RT_TITLE_MODS] = TR("Mods");
stringsText[RT_TITLE_CAREER] = TR("Select destination");
stringsText[RT_PLAY_CHAP_CHAPTERS] = TR("Chapters:");
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_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_CAREER] = TR("Career mode");
stringsEvent[EVENT_INTERFACE_SATCOM] = TR("SatCom");
stringsEvent[EVENT_INTERFACE_MODS] = TR("Mods\\Mod manager");
stringsEvent[EVENT_INTERFACE_NAME] = TR("Change player\\Change player");

View File

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

View File

@ -54,23 +54,6 @@ namespace Gfx
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()
@ -257,10 +240,7 @@ void CCamera::SetType(CameraType type)
{
for (CObject* obj : CObjectManager::GetInstancePointer()->GetAllObjects())
{
if (IsObjectBeingTransported(obj))
continue;
SetGhostMode(obj, false); // opaque object
obj->m_bCameraGhost = false; // opaque object
}
}
@ -837,7 +817,7 @@ void CCamera::IsCollisionBack()
if (IsObjectBeingTransported(obj))
continue;
SetGhostMode(obj, false); // opaque object
obj->m_bCameraGhost = false; // opaque object
if (obj == m_cameraObj) continue;
@ -897,7 +877,7 @@ void CCamera::IsCollisionBack()
float len = glm::distance(m_actualEye, proj);
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 "object/object.h"
#include "object/old_object.h"
#include "object/interface/transportable_object.h"
#include "sound/sound.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(" visible = %s\n", m_objects[objRank].visible ? "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(" distance = %f\n", m_objects[objRank].distance);
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");
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;
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].baseObjRank = -1;
m_objects[objRank].shadowRank = -1;
m_objects[objRank].gameObject = gameObject;
return objRank;
}
@ -974,27 +979,6 @@ void CEngine::SetObjectDrawWorld(int objRank, bool 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)
{
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")
{
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")
{
@ -2789,6 +2774,33 @@ void CEngine::Render()
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()
{
if (!m_worldCaptured)
@ -2967,7 +2979,7 @@ void CEngine::Draw3DScene()
for (auto& data : p1.next)
{
if (m_objects[objRank].ghost) // transparent ?
if (IsGhostObject(objRank)) // transparent ?
{
transparent = true;
continue;
@ -3049,7 +3061,7 @@ void CEngine::Draw3DScene()
if (! m_objects[objRank].drawWorld)
continue;
if (!m_objects[objRank].ghost)
if (!IsGhostObject(objRank))
continue;
auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform;
@ -3695,7 +3707,7 @@ void CEngine::DrawInterface()
if (m_objects[objRank].type == ENG_OBJTYPE_TERRAIN)
continue;
if (! m_objects[objRank].drawFront)
if (! IsDrawFrontObject(objRank))
continue;
auto combinedMatrix = projectionViewMatrix * m_objects[objRank].transform;
@ -4882,7 +4894,7 @@ void CEngine::UpdateObjectShadowSpotNormal(int objRank)
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;
@ -4907,7 +4919,7 @@ int CEngine::AddStaticMesh(const std::string& key, const CModelMesh* mesh, const
baseObjRank = it->second;
}
int objRank = CreateObject();
int objRank = CreateObject(gameObject);
SetObjectBaseRank(objRank, baseObjRank);
SetObjectTransform(objRank, worldMatrix);
SetObjectType(objRank, ENG_OBJTYPE_FIX);
@ -4942,12 +4954,6 @@ const glm::mat4& CEngine::GetStaticMeshWorldMatrix(int meshHandle)
return m_objects[objRank].transform;
}
void CEngine::SetStaticMeshGhostMode(int meshHandle, bool enabled)
{
int objRank = meshHandle;
SetObjectGhostMode(objRank, enabled);
}
void CEngine::SetDebugLights(bool debugLights)
{
m_debugLights = debugLights;

View File

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

View File

@ -1248,7 +1248,7 @@ void CTerrain::FlushMaterialPoints()
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_objRanks[x+y*m_mosaicCount] = objRank;

View File

@ -22,6 +22,7 @@
#include <map>
// 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.
const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
{ LevelCategory::Missions, "missions" },
@ -31,6 +32,7 @@ const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
{ LevelCategory::CodeBattles, "battles" },
{ LevelCategory::GamePlus, "plus" },
{ LevelCategory::CustomLevels, "custom" },
{ LevelCategory::CareerMode, "career" },
};
std::string GetLevelCategoryDir(LevelCategory category)

View File

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

View File

@ -2728,7 +2728,7 @@ void CRobotMain::ScenePerso()
CObject* obj = SearchHuman();
if (obj != nullptr)
{
obj->SetDrawFront(true); // draws the interface
obj->m_bDrawFront = true; // draws the interface
assert(obj->Implements(ObjectInterfaceType::Movable));
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)
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 ?
{
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()));
}
// 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
m_engine->UpdateGroundSpotTextures();
@ -4521,7 +4556,7 @@ void CRobotMain::SaveOneScript(CObject *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)));
}
@ -4617,8 +4652,9 @@ bool CRobotMain::IOIsBusy()
}
//! 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("id", std::make_unique<CLevelParserParam>(obj->GetID()));
line->AddParam("pos", std::make_unique<CLevelParserParam>(obj->GetPosition()/g_unit));
@ -4647,17 +4683,32 @@ void CRobotMain::IOWriteObject(CLevelParserLine* line, CObject* obj, const std::
if (obj->Implements(ObjectInterfaceType::ProgramStorage))
{
CProgramStorageObject* programStorage = dynamic_cast<CProgramStorageObject*>(obj);
if (programStorage->GetProgramStorageIndex() >= 0)
// 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
{
// Probably an object created after the scene started, not loaded from level file
// This means it doesn't normally store programs so it doesn't have program storage id assigned
programStorage->SetProgramStorageIndex(999-objRank); // Set something that won't collide with normal programs
programStorage->SaveAllProgramsForSavedScene(line, programDir);
programStorage->SetProgramStorageIndex(-1); // Disable again
if (programStorage->GetProgramStorageIndex() >= 0)
{
programStorage->SaveAllProgramsForSavedScene(line, programDir);
}
else
{
// Probably an object created after the scene started, not loaded from level file
// This means it doesn't normally store programs so it doesn't have program storage id assigned
programStorage->SetProgramStorageIndex(999-objRank); // Set something that won't collide with normal programs
programStorage->SaveAllProgramsForSavedScene(line, programDir);
programStorage->SetProgramStorageIndex(-1); // Disable again
}
}
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
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;
for (CObject* obj : m_objMan->GetAllObjects())
{
if (obj->GetType() == OBJECT_TOTO) continue;
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));
IOWriteObjectTree(levelParser, obj, dirname, objRank, false);
}
try
{
@ -4834,12 +4892,18 @@ void CRobotMain::IOWriteSceneFinished()
}
//! 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);
params.power = -1.0f;
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;
// 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))
{
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);
}
@ -4874,7 +4938,7 @@ CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& pro
if (obj->Implements(ObjectInterfaceType::ProgramStorage))
{
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->LoadAllProgramsForSavedScene(line, programDir);
}
@ -4883,7 +4947,7 @@ CObject* CRobotMain::IOReadObject(CLevelParserLine *line, const std::string& pro
}
//! 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("/"));
@ -4902,40 +4966,43 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
std::map<int, CObject*> slots;
for (auto& line : levelParser.GetLines())
{
if (line->GetCommand() == "Mission")
m_gameTime = line->GetParam("gametime")->AsFloat(0.0f);
if (line->GetCommand() == "Map")
m_map->ZoomMap(line->GetParam("zoom")->AsFloat());
if (line->GetCommand() == "DoneResearch")
m_researchDone[0] = line->GetParam("bits")->AsInt();
if (line->GetCommand() == "BlitzMode")
if (!isSpaceshipSave)
{
float sleep = line->GetParam("sleep")->AsFloat();
float delay = line->GetParam("delay")->AsFloat();
float magnetic = line->GetParam("magnetic")->AsFloat()*g_unit;
float progress = line->GetParam("progress")->AsFloat();
m_lightning->SetStatus(sleep, delay, magnetic, progress);
if (line->GetCommand() == "Mission")
m_gameTime = line->GetParam("gametime")->AsFloat(0.0f);
if (line->GetCommand() == "Map")
m_map->ZoomMap(line->GetParam("zoom")->AsFloat());
if (line->GetCommand() == "DoneResearch")
m_researchDone[0] = line->GetParam("bits")->AsInt();
if (line->GetCommand() == "BlitzMode")
{
float sleep = line->GetParam("sleep")->AsFloat();
float delay = line->GetParam("delay")->AsFloat();
float magnetic = line->GetParam("magnetic")->AsFloat()*g_unit;
float progress = line->GetParam("progress")->AsFloat();
m_lightning->SetStatus(sleep, delay, magnetic, progress);
}
}
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++;
}
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++;
}
if (line->GetCommand() == "CreateSlotObject")
{
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++;
assert(slots.find(slotNum) == slots.end());
@ -4944,7 +5011,7 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
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))
sel = obj;

View File

@ -87,6 +87,7 @@ bool IsMainMenuPhase(Phase phase);
class CApplication;
class CEventQueue;
class CSoundInterface;
class CLevelParser;
class CLevelParserLine;
class CInput;
class CObjectManager;
@ -336,9 +337,10 @@ public:
bool IOIsBusy();
bool IOWriteScene(std::string filename, std::string filecbot, std::string filescreenshot, const std::string& info, bool emergencySave = false);
void IOWriteSceneFinished();
CObject* IOReadScene(std::string filename, std::string filecbot);
void IOWriteObject(CLevelParserLine *line, CObject* obj, const std::string& programDir, int objRank);
CObject* IOReadObject(CLevelParserLine *line, const std::string& programDir, const std::string& objCounterText, float objectProgress, int objRank = -1);
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, bool directProgramStorageIndex);
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);

View File

@ -20,6 +20,8 @@
#include "object/auto/autobase.h"
#include "common/resources/resourcemanager.h"
#include "graphics/engine/cloud.h"
#include "graphics/engine/engine.h"
#include "graphics/engine/lightning.h"
@ -27,6 +29,10 @@
#include "graphics/engine/terrain.h"
#include "level/robotmain.h"
#include "level/player_profile.h"
#include "level/parser/parser.h"
#include "level/parser/parserline.h"
#include "math/geometry.h"
@ -1369,15 +1375,66 @@ Error CAutoBase::TakeOff(bool printMsg)
return err;
}
err = m_main->CheckEndMission(false);
if (err != ERR_OK)
// taking off in career mode doesn't have to complete the mission
if (m_main->GetLevelCategory() != LevelCategory::CareerMode)
{
if (printMsg)
m_main->DisplayError(err, m_object);
return err;
err = m_main->CheckEndMission(false);
if (err != ERR_OK)
{
if (printMsg)
m_main->DisplayError(err, m_object);
return err;
}
}
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->DeselectAll();

View File

@ -79,7 +79,7 @@ void CMotionAnt::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type);
// 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_object->SetObjectRank(0, 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));
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the tail.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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));
// Creates a right-back thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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));
// Creates a right-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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));
// Creates a right-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
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));
// Creates two middle-right thighs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates two middle-right legs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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));
// Creates two middle-right foots.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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));
// Creates the right front thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
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));
// Creates the right front leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
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));
// Creates the right front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank);
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));
// Creates a left-back thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank);
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));
// Creates a left-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank);
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));
// Creates a left-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank);
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));
// Creates two middle-left thighs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank);
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));
// Creates two middle-left legs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank);
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));
// Creates two middle-left foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(17, rank);
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));
// Creates the left front thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank);
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));
// Creates the left front leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank);
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));
// Creates the left front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(20, rank);
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);
// 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_object->SetObjectRank(0, 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));
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the tail.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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));
// Creates a right-back thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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));
// Creates a right-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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));
// Creates a right-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
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));
// Creates two middle-right thighs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates two middle-right legs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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));
// Creates two middle-right feet.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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));
// Creates the right front thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
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));
// Creates the right front leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
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));
// Creates the right front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank);
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));
// Creates a left-back thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank);
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);
// Creates a left-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank);
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));
// Creates a left-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank);
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));
// Creates two middle-left thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank);
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);
// Creates two middle-left legs.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank);
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));
// Creates two middle-left feet.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(17, rank);
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));
// Creates front-left thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank);
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);
// Creates front-left leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank);
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));
// Creates front-left foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(20, rank);
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));
// Creates the right wing.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(21, rank);
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));
// Creates the left wing.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(22, rank);
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() )
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank);
face = m_main->GetGamerFace();
@ -125,7 +125,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
glasses = m_main->GetGamerGlasses();
if ( glasses != 0 )
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -142,7 +142,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
}
// 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_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));
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -198,7 +198,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
glasses = m_main->GetGamerGlasses();
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_object->SetObjectRank(15, m_glassesRank);
m_object->SetObjectParent(15, 1);
@ -207,7 +207,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
}
// Creates the right arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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));
// Creates the right forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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));
// Creates right hand.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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));
// Creates the right thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
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));
// Creates the right leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the right foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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));
// Creates the left arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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));
// Creates the left forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
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));
// Creates left hand.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
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));
// Creates the left thigh.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank);
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));
// Creates the left leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank);
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));
// Creates the left foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12);
@ -315,7 +315,7 @@ void CMotionHuman::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the neutron gun.
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_object->SetObjectRank(14, rank);
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);
// 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_object->SetObjectRank(0, rank);

View File

@ -74,7 +74,7 @@ void CMotionQueen::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetType(type);
// 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_object->SetObjectRank(0, 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));
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates a right-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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));
// Creates a right-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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));
// Creates a middle-right leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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));
// Creates a middle-right foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
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));
// Creates a right-front leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates a right-front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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));
// Creates a left-back leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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);
// Creates a left-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
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));
// Creates a middle-left leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
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);
// Creates a middle-left foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank);
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));
// Creates a left-front leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank);
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);
// Creates a left-front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank);
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));
// Creates the right antenna.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 1);
modelManager->AddModelReference("mother5", false, rank);
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_object->SetObjectRank(15, rank);
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));
// Creates the left antenna.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(16, rank);
m_object->SetObjectParent(16, 1);
modelManager->AddModelReference("mother5", false, rank);
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_object->SetObjectRank(17, rank);
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));
// Creates the right claw.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(18, rank);
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);
// Creates the left claw.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19, rank);
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);
// 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_object->SetObjectRank(0, rank);
// 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));
// Creates the abdomen.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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
// Creates the right leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3+i*4+j, rank);
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);
// Creates the left leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(19+i*4+j, rank);
if ( j == 0 ) parent = 0;
@ -167,7 +167,7 @@ void CMotionSpider::Create(glm::vec3 pos, float angle, ObjectType type,
}
// Creates the right mandible.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(35, rank);
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));
// Creates the left mandible.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(36, rank);
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);
// 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_object->SetObjectRank(0, rank);
modelManager->AddModelReference("toto1", false, rank);
@ -99,7 +99,7 @@ void CMotionToto::Create(glm::vec3 pos, float angle, ObjectType type,
m_object->SetRotationY(angle);
// Creates mouth.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the left eye.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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);
// Creates the right eye.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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);
// Creates left antenna.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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->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_object->SetObjectRank(5, rank);
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->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_object->SetObjectRank(6, rank);
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);
// Creates right antenna.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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->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_object->SetObjectRank(8, rank);
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->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_object->SetObjectRank(9, rank);
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);
// 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_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());
else
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
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_object->SetObjectRank(29, rank);
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());
else
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
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_object->SetObjectRank(29, rank);
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());
else
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
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_object->SetObjectRank(29, rank);
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());
else
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
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_object->SetObjectRank(29, rank);
m_object->SetObjectParent(29, 0);
@ -232,7 +232,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
}
else if (type == OBJECT_MOBILEwt)
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
@ -240,7 +240,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
}
else if (type == OBJECT_MOBILEft)
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
@ -248,7 +248,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
}
else if (type == OBJECT_MOBILEtt)
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
@ -256,7 +256,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
}
else if (type == OBJECT_MOBILEit)
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(28, rank);
m_object->SetObjectParent(28, 0);
@ -312,7 +312,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEia)
{
// Creates the arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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);
// Creates the forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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);
// Creates the hand.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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);
// Creates the close clamp.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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);
// Creates the remote clamp.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 3);
@ -364,7 +364,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEis)
{
// Creates the arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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);
// Creates the forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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);
// Creates the sensor.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2);
@ -397,7 +397,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEic)
{
// Creates the cannon.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -413,7 +413,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEii)
{
// Creates the insect cannon.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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->SetPartRotationZ(1, 0.0f);
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 1);
@ -436,7 +436,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEib)
{
// Creates the neutron gun.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -454,7 +454,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEwt)
{
// Creates the right-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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);
// Creates the right-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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));
// Creates the left-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0);
@ -491,7 +491,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEtg)
{
// Creates the right-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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);
// Creates the right-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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));
// Creates the left-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 0);
@ -533,7 +533,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEtt) // caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0);
@ -568,7 +568,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILErp) // large caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0);
@ -588,7 +588,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEst) // underwater caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0);
@ -607,7 +607,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEdr) // caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the left caterpillar.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0);
@ -631,7 +631,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
type == OBJECT_MOBILEft) // flying?
{
// Creates the front foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
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));
// Creates the right-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
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);
// Creates the left-back foot.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
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
// Creates the right leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6+i*3+j, rank);
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);
// Creates the left leg.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15+i*3+j, rank);
if ( j == 0 ) parent = 0;
@ -718,7 +718,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErt)
{
// Creates the holder.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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);
// Creates the pestle.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0);
@ -739,7 +739,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErc)
{
// Creates the holder.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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);
// Creates the cannon.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0);
@ -760,7 +760,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErr)
{
// Creates the holder.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the right arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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);
// Creates the right forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
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);
// Creates the left arm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
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);
// Creates the left forearm.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 4);
@ -807,7 +807,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErs)
{
// Creates the holder.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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);
// Creates the intermediate piston.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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);
// 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_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2);
@ -837,7 +837,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEsa)
{
// Creates the holder.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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));
// Creates the right tong.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
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));
// Creates the left tong.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 1);
@ -862,7 +862,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (m_object->GetTrainer())
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 0);
@ -873,7 +873,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_MOBILEdr)
{
// Creates the carousel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -883,7 +883,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the key.
if ( m_object->GetToy() )
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0);
@ -896,7 +896,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates pencils.
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_object->SetObjectRank(10+i, rank);
m_object->SetObjectParent(10+i, 1);
@ -912,7 +912,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the key.
if ( m_object->GetToy() )
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0);
@ -926,7 +926,7 @@ void CMotionVehicle::Create(glm::vec3 pos, float angle, ObjectType type,
if (type == OBJECT_APOLLO2)
{
// Creates the accessories.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
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->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_object->SetObjectRank(2, rank);
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);
// Creates the wheels.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0);
modelManager->AddModelReference("apolloj4", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(9, rank);
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));
// Creates mud guards.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 0);
modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 0);
modelManager->AddModelReference("apolloj6", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 0);
modelManager->AddModelReference("apolloj5", false, rank, m_object->GetTeam()); // wheel
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_object->SetObjectRank(13, rank);
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);
// 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_object->SetObjectRank(0, rank);
// 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;
// Creates the head.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
@ -120,7 +120,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
// Creates the body.
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_object->SetObjectRank(2+i, rank);
m_object->SetObjectParent(2+i, 0);
@ -130,7 +130,7 @@ void CMotionWorm::Create(glm::vec3 pos, float angle, ObjectType type,
}
// Creates the tail.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(m_object);
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2+WORM_PART, rank);
m_object->SetObjectParent(2+WORM_PART, 0);

View File

@ -162,8 +162,10 @@ public:
// TODO: remove from here once no longer necessary
void SetCameraCollisionSphere(const Math::Sphere& sphere);
//! Sets object's ghost mode
virtual void SetGhostMode(bool enabled) = 0;
//! Is the object translucent to prevent blocking the camera view?
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
void SetAnimateOnReset(bool animateOnReset);

View File

@ -338,7 +338,7 @@ CObjectUPtr CObjectFactory::CreateResource(const ObjectCreateParams& params)
obj->SetType(type);
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
obj->SetObjectRank(0, rank);
obj->SetEnergyLevel(power);
@ -462,7 +462,7 @@ CObjectUPtr CObjectFactory::CreateFlag(const ObjectCreateParams& params)
if ( type == OBJECT_FLAGy ) name = "flag1y";
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
obj->SetObjectRank(0, rank);
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++ )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank);
obj->SetObjectParent(1+i, i);
@ -517,7 +517,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER0 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier0", false, rank, obj->GetTeam());
@ -533,7 +533,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRIER1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier1", false, rank, obj->GetTeam());
@ -551,7 +551,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier2", false, rank, obj->GetTeam());
@ -569,7 +569,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barrier3", false, rank, obj->GetTeam());
@ -587,7 +587,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRICADE0 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barricade0", false, rank, obj->GetTeam());
@ -606,7 +606,7 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
if ( type == OBJECT_BARRICADE1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("barricade1", false, rank, obj->GetTeam());
@ -661,7 +661,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
type == OBJECT_PLANT3 ||
type == OBJECT_PLANT4 ) // standard?
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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_PLANT7 ) // clover?
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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 ||
type == OBJECT_PLANT9 ) // squash?
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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_PLANT14 ) // succulent?
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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_PLANT19 ) // fern?
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree0", false, rank, obj->GetTeam());
@ -787,7 +787,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree1", false, rank, obj->GetTeam());
@ -805,7 +805,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE2 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree2", false, rank, obj->GetTeam());
@ -823,7 +823,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE3 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree3", false, rank, obj->GetTeam());
@ -840,7 +840,7 @@ CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
if ( type == OBJECT_TREE4 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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")
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("tree5", false, rank, obj->GetTeam());
@ -899,7 +899,7 @@ CObjectUPtr CObjectFactory::CreateMushroom(const ObjectCreateParams& params)
if ( type == OBJECT_MUSHROOM1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("mush1", false, rank, obj->GetTeam());
@ -915,7 +915,7 @@ CObjectUPtr CObjectFactory::CreateMushroom(const ObjectCreateParams& params)
if ( type == OBJECT_MUSHROOM2 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, 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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, 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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen2", false, rank);
@ -1020,7 +1020,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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_METAL);
obj->SetObjectRank(0, rank);
@ -1035,7 +1035,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen4", false, rank);
@ -1055,7 +1055,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen5", false, rank);
@ -1070,7 +1070,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen6", false, rank);
@ -1089,7 +1089,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, 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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, 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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen9", false, rank);
@ -1148,7 +1148,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen10", false, rank);
@ -1172,7 +1172,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen11", false, rank);
@ -1195,7 +1195,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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_METAL);
obj->SetObjectRank(0, rank);
@ -1210,7 +1210,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen13", false, rank);
@ -1233,7 +1233,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen14", false, rank);
@ -1256,7 +1256,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen15", false, rank);
@ -1279,7 +1279,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen16", false, rank);
@ -1295,7 +1295,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen17", false, rank);
@ -1309,7 +1309,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen18", false, rank);
@ -1323,7 +1323,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen19", false, rank);
@ -1337,7 +1337,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen20", false, rank);
@ -1356,7 +1356,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, 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
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen22", false, rank);
@ -1381,7 +1381,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen23", false, rank);
@ -1406,7 +1406,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen24", false, rank);
@ -1420,7 +1420,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen25", false, rank);
@ -1434,7 +1434,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen26", false, rank);
@ -1457,7 +1457,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen27", false, rank);
@ -1470,7 +1470,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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_METAL);
obj->SetObjectRank(0, rank);
@ -1484,7 +1484,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen29", false, rank);
@ -1495,7 +1495,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen30", false, rank);
@ -1509,7 +1509,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen31", false, rank);
@ -1526,7 +1526,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen32", false, rank);
@ -1543,7 +1543,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen33", false, rank);
@ -1556,7 +1556,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen34", false, rank);
@ -1569,7 +1569,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen35", false, rank);
@ -1586,7 +1586,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen36", false, rank);
@ -1597,7 +1597,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen37", false, rank);
@ -1608,21 +1608,21 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen38a", false, rank);
obj->SetPartPosition(0, pos);
obj->SetPartRotationY(0, angle);
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
m_oldModelManager->AddModelReference("teen38b", false, rank); // engine
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);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1);
@ -1636,7 +1636,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen39", false, rank);
@ -1650,7 +1650,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen40", false, rank);
@ -1664,7 +1664,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen41", false, rank);
@ -1674,7 +1674,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen42", false, rank);
@ -1687,7 +1687,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen43", false, rank);
@ -1700,7 +1700,7 @@ CObjectUPtr CObjectFactory::CreateTeen(const ObjectCreateParams& params)
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("teen44", false, rank);
@ -1746,7 +1746,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
if ( type == OBJECT_QUARTZ0 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz0", false, rank, obj->GetTeam());
@ -1760,7 +1760,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
}
if ( type == OBJECT_QUARTZ1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz1", false, rank, obj->GetTeam());
@ -1774,7 +1774,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
}
if ( type == OBJECT_QUARTZ2 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz2", false, rank, obj->GetTeam());
@ -1788,7 +1788,7 @@ CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
}
if ( type == OBJECT_QUARTZ3 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("quartz3", false, rank, obj->GetTeam());
@ -1852,7 +1852,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
if ( type == OBJECT_ROOT0 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root0", false, rank, obj->GetTeam());
@ -1873,7 +1873,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
}
if ( type == OBJECT_ROOT1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root1", false, rank, obj->GetTeam());
@ -1894,7 +1894,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
}
if ( type == OBJECT_ROOT2 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root2", false, rank, obj->GetTeam());
@ -1914,7 +1914,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
}
if ( type == OBJECT_ROOT3 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root3", false, rank, obj->GetTeam());
@ -1936,7 +1936,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
}
if ( type == OBJECT_ROOT4 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam());
@ -1960,7 +1960,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
}
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);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("root4", false, rank, obj->GetTeam());
@ -1968,7 +1968,7 @@ CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
obj->SetRotationY(angle);
obj->SetScale(2.0f);
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -2020,7 +2020,7 @@ CObjectUPtr CObjectFactory::CreateHome(const ObjectCreateParams& params)
if ( type == OBJECT_HOME1 )
{
int rank = m_engine->CreateObject();
int rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("home1", false, rank, obj->GetTeam());
@ -2059,7 +2059,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetType(type);
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
obj->SetObjectRank(0, rank);
@ -2086,7 +2086,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilew1 ) // vehicle had wheels?
{
// Creates the right-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(6, rank);
obj->SetObjectParent(6, 0);
@ -2097,7 +2097,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(6, -Math::PI/2.0f);
// Creates the left-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank);
obj->SetObjectParent(7, 0);
@ -2109,7 +2109,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(7, -0.3f);
// Creates the right-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(8, rank);
obj->SetObjectParent(8, 0);
@ -2120,7 +2120,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationY(8, 0.3f);
// Creates the left-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0);
@ -2140,7 +2140,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilew2 ) // vehicle has wheels?
{
// Creates the left-back wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank);
obj->SetObjectParent(7, 0);
@ -2152,7 +2152,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
obj->SetPartRotationX(7, 0.4f);
// Creates the left-front wheel.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0);
@ -2172,7 +2172,7 @@ CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
if ( type == OBJECT_RUINmobilet1 ) // vehicle have caterpillars?
{
// Creates the cannon.
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -2477,7 +2477,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
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
obj->SetObjectRank(0, rank);
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
{
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(i+1, rank);
obj->SetObjectParent(i+1, 0);
@ -2496,7 +2496,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
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);
obj->SetObjectRank(5, rank);
obj->SetObjectParent(5, 0);
@ -2517,7 +2517,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
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
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apollof", false, rank, obj->GetTeam());
@ -2531,7 +2531,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
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
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apollom", false, rank, obj->GetTeam());
@ -2547,7 +2547,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
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
obj->SetObjectRank(0, rank);
m_oldModelManager->AddModelReference("apolloa", false, rank, obj->GetTeam());
@ -2555,7 +2555,7 @@ CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
obj->SetRotationY(angle);
obj->SetFloorHeight(0.0f);
rank = m_engine->CreateObject();
rank = m_engine->CreateObject(obj.get());
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);

View File

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

View File

@ -286,8 +286,8 @@ void COldObject::DeleteObject(bool bAll)
if (m_power->Implements(ObjectInterfaceType::Old))
{
dynamic_cast<COldObject&>(*m_power).SetTransporter(nullptr);
dynamic_cast<COldObject&>(*m_power).DeleteObject(bAll);
}
CObjectManager::GetInstance().DeleteObject(m_power);
m_power = nullptr;
}
if (m_cargo != nullptr)
@ -295,8 +295,8 @@ void COldObject::DeleteObject(bool bAll)
if (m_cargo->Implements(ObjectInterfaceType::Old))
{
dynamic_cast<COldObject&>(*m_cargo).SetTransporter(nullptr);
dynamic_cast<COldObject&>(*m_cargo).DeleteObject(bAll);
}
CObjectManager::GetInstance().DeleteObject(m_cargo);
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.
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.
bool COldObject::JostleObject(float force)

View File

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

View File

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

View File

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

View File

@ -68,7 +68,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
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
obj->SetObjectRank(0, rank);
@ -79,14 +79,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
modelManager->AddModelReference("portico2", false, rank, params.team);
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);
obj->SetObjectRank(2, rank);
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->SetPartRotationY(2, 45.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank);
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->SetPartRotationY(3, -60.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(4, rank);
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->SetPartRotationY(4, -55.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(5, rank);
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->SetPartRotationY(5, -45.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(6, rank);
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->SetPartRotationY(6, 60.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(7, rank);
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->SetPartRotationY(7, 55.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(8, rank);
obj->SetObjectParent(8, 0);
@ -143,14 +143,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(8, -Math::PI/2.0f);
obj->SetPartScale(8, 2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 8);
modelManager->AddModelReference("portico7", false, rank, params.team);
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);
obj->SetObjectRank(10, rank);
obj->SetObjectParent(10, 0);
@ -159,7 +159,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(10, -Math::PI/2.0f);
obj->SetPartScale(10, 2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(11, rank);
obj->SetObjectParent(11, 10);
@ -191,7 +191,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
for (int i=0 ; i<8 ; i++ )
{
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank);
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->SetPartRotationZ(1+i, Math::PI/2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(10+i, rank);
obj->SetObjectParent(10+i, 1+i);
modelManager->AddModelReference("base4", false, rank, params.team);
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);
obj->SetObjectRank(18+i, rank);
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));
}
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(9, rank);
obj->SetObjectParent(9, 0);
@ -254,7 +254,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -277,14 +277,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
modelManager->AddModelReference("search2", false, rank, params.team);
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);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1);
@ -309,14 +309,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
modelManager->AddModelReference("radar2", false, rank, params.team);
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);
obj->SetObjectRank(2, rank);
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->SetPartRotationY(2, -Math::PI/2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 2);
@ -363,7 +363,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
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->SetPartRotationZ(1, Math::PI/2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1);
modelManager->AddModelReference("labo3", false, rank, params.team);
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);
obj->SetObjectRank(3, rank);
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->SetPartRotationZ(3, 80.0f*Math::PI/180.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(4, rank);
obj->SetObjectParent(4, 2);
@ -395,7 +395,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationZ(4, 80.0f*Math::PI/180.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);
obj->SetObjectRank(5, rank);
obj->SetObjectParent(5, 2);
@ -425,7 +425,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
for (int i=0 ; i<9 ; i++ )
{
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1+i, rank);
obj->SetObjectParent(1+i, 0);
@ -434,7 +434,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationZ(1+i, Math::PI/2.0f);
obj->SetPartScaleZ(1+i, 0.30f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(10+i, rank);
obj->SetObjectParent(10+i, 0);
@ -480,7 +480,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -504,7 +504,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -544,14 +544,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
modelManager->AddModelReference("convert2", false, rank, params.team);
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);
obj->SetObjectRank(2, rank);
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->SetPartRotationX(2, -Math::PI*0.35f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(3, rank);
obj->SetObjectParent(3, 0);
@ -584,7 +584,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
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->SetPartRotationZ(1, Math::PI/2.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1);
@ -618,7 +618,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -667,14 +667,14 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
modelManager->AddModelReference("safe2", false, rank, params.team);
obj->SetPartScale(1, 1.05f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 0);
@ -696,7 +696,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -705,7 +705,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
obj->SetPartRotationY(1, -Math::PI/2.0f);
obj->SetPartScale(1, 3.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2, rank);
obj->SetObjectParent(2, 1);

View File

@ -54,7 +54,7 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
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
obj->SetObjectRank(0, rank);
@ -63,7 +63,7 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
obj->SetRotationY(params.angle);
obj->SetFloorHeight(0.0f);
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(1, rank);
obj->SetObjectParent(1, 0);
@ -72,14 +72,14 @@ std::unique_ptr<CExchangePost> CExchangePost::Create(
for (int i = 0; i < 3; ++i)
{
rank = engine->CreateObject();
rank = engine->CreateObject(obj.get());
engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
obj->SetObjectRank(2+i*2, rank);
obj->SetObjectParent(2+i*2, 1);
modelManager->AddModelReference("info3", false, rank);
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);
obj->SetObjectRank(3+i*2, rank);
obj->SetObjectParent(3+i*2, 2+i*2);

View File

@ -56,7 +56,7 @@ CStaticObject::CStaticObject(int id,
m_rotation.y = 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())
m_engine->AddStaticMeshShadowSpot(m_meshHandle, model->GetShadowSpot());
@ -103,11 +103,6 @@ void CStaticObject::TransformCameraCollisionSphere(Math::Sphere& collisionSphere
Math::Transform(worldMatrix, collisionSphere.pos);
}
void CStaticObject::SetGhostMode(bool enabled)
{
m_engine->SetStaticMeshGhostMode(m_meshHandle, enabled);
}
bool CStaticObject::IsStaticObject(ObjectType type)
{
return m_staticModelNames.count(type) > 0;

View File

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

View File

@ -446,7 +446,7 @@ void CDisplayInfo::StartDisplayInfo(std::string filename, int index, bool bSoluc
m_toto = SearchToto();
if ( m_toto != nullptr )
{
m_toto->SetDrawFront(true);
m_toto->m_bDrawFront = true;
assert(m_toto->Implements(ObjectInterfaceType::Movable));
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::GamePlus ) res = RT_TITLE_PLUS;
if ( m_category == LevelCategory::CustomLevels ) res = RT_TITLE_USER;
if ( m_category == LevelCategory::CareerMode ) res = RT_TITLE_CAREER;
GetResource(RES_TEXT, res, 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::FreeGame ) 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;
GetResource(RES_TEXT, res, name);
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, name);
@ -128,7 +130,8 @@ void CScreenLevelList::CreateInterface()
UpdateSceneChap(m_chap[m_category]);
if ( m_category != LevelCategory::FreeGame &&
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);
}
@ -144,6 +147,7 @@ void CScreenLevelList::CreateInterface()
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_LIST_MISSIONS;
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_LIST_FREEGAME;
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);
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
@ -186,7 +190,8 @@ void CScreenLevelList::CreateInterface()
// Button displays the "soluce":
if ( m_category != LevelCategory::Exercises &&
m_category != LevelCategory::GamePlus &&
m_category != LevelCategory::FreeGame )
m_category != LevelCategory::FreeGame &&
m_category != LevelCategory::CareerMode )
{
pos.x = ox+sx*9.5f;
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->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->SetState(STATE_SHADOW);
try
@ -144,6 +144,12 @@ void CScreenMainMenu::CreateInterface()
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;
pos.y = oy+sy*4.35f;
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);
break;
case EVENT_INTERFACE_CAREER:
m_main->SetLevel(LevelCategory::CareerMode, 0, 0);
m_main->ChangePhase(PHASE_LEVEL_LIST);
break;
case EVENT_INTERFACE_SETUP:
m_main->ChangePhase(CScreenSetup::GetTab());
break;