summaryrefslogtreecommitdiffstats
path: root/src/object/motion/motionhuman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object/motion/motionhuman.cpp')
-rw-r--r--src/object/motion/motionhuman.cpp64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/object/motion/motionhuman.cpp b/src/object/motion/motionhuman.cpp
index 6d849d7..a9b79b5 100644
--- a/src/object/motion/motionhuman.cpp
+++ b/src/object/motion/motionhuman.cpp
@@ -14,21 +14,25 @@
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see http://www.gnu.org/licenses/.
-// motionhuman.cpp
-
-
-#include <stdio.h>
#include "object/motion/motionhuman.h"
+#include "app/app.h"
+
#include "graphics/engine/modelfile.h"
#include "graphics/engine/terrain.h"
#include "graphics/engine/water.h"
+
#include "math/geometry.h"
+
#include "object/robotmain.h"
+
#include "physics/physics.h"
+#include <stdio.h>
+
+
#define ADJUST_ANGLE false // true -> adjusts the angles of the members
const int ADJUST_ACTION = (3*3*3*3*MH_SPEC+3*3*3*MHS_SATCOM);
@@ -99,18 +103,22 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
// if ( m_engine->GetRestCreate() < 16 ) return false;
+
pModFile = new Gfx::CModelFile(m_iMan);
m_object->SetType(type);
option = m_object->GetOption();
+ std::string baseName;
+
if ( m_main->GetGamerOnlyHead() )
{
rank = m_engine->CreateObject();
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object
m_object->SetObjectRank(0, rank);
face = m_main->GetGamerFace();
- sprintf(filename, "data/models/human2h%d.mod", face+1);
+ baseName = m_app->GetDataFilePath(DIR_MODEL, "human2h%d.mod");
+ sprintf(filename, baseName.c_str(), face+1);
pModFile->ReadModel(filename);
pModFile->CreateEngineObject(rank);
@@ -121,7 +129,8 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(1, rank);
m_object->SetObjectParent(1, 0);
- sprintf(filename, "data/models/human2g%d.mod", glasses);
+ baseName = m_app->GetDataFilePath(DIR_MODEL, "human2g%d.mod");
+ sprintf(filename, baseName.c_str(), glasses);
pModFile->ReadModel(filename);
pModFile->CreateEngineObject(rank);
}
@@ -142,15 +151,15 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
if ( option == 0 ) // head in helmet?
{
- pModFile->ReadModel("data/models/human1c.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1c.mod"));
}
if ( option == 1 ) // head without helmet?
{
- pModFile->ReadModel("data/models/human1h.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1h.mod"));
}
if ( option == 2 ) // without a backpack?
{
- pModFile->ReadModel("data/models/human1v.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1v.mod"));
}
pModFile->CreateEngineObject(rank);
@@ -172,20 +181,22 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
if ( option == 0 ) // head in helmet?
{
face = m_main->GetGamerFace();
- sprintf(filename, "data/models/human2c%d.mod", face+1);
+ baseName = m_app->GetDataFilePath(DIR_MODEL, "human2c%d.mod");
+ sprintf(filename, baseName.c_str(), face+1);
pModFile->ReadModel(filename);
}
if ( option == 1 || // head without helmet?
option == 2 ) // without a backpack?
{
face = m_main->GetGamerFace();
- sprintf(filename, "data/models/human2h%d.mod", face+1);
+ baseName = m_app->GetDataFilePath(DIR_MODEL, "human2h%d.mod");
+ sprintf(filename, baseName.c_str(), face+1);
pModFile->ReadModel(filename);
}
}
if ( type == OBJECT_TECH )
{
- pModFile->ReadModel("data/models/human2t.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human2t.mod"));
}
pModFile->CreateEngineObject(rank);
m_object->SetPosition(1, Math::Vector(0.0f, 2.7f, 0.0f));
@@ -203,7 +214,8 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(15, rank);
m_object->SetObjectParent(15, 1);
- sprintf(filename, "data/models/human2g%d.mod", glasses);
+ baseName = m_app->GetDataFilePath(DIR_MODEL, "human2g%d.mod");
+ sprintf(filename, baseName.c_str(), glasses);
pModFile->ReadModel(filename);
pModFile->CreateEngineObject(rank);
}
@@ -213,7 +225,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(2, rank);
m_object->SetObjectParent(2, 0);
- pModFile->ReadModel("data/models/human3.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human3.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(2, Math::Vector(0.0f, 2.3f, -1.2f));
m_object->SetAngle(2, Math::Vector(90.0f*Math::PI/180.0f, 90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f));
@@ -223,7 +235,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(3, rank);
m_object->SetObjectParent(3, 2);
- pModFile->ReadModel("data/models/human4r.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human4r.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(3, Math::Vector(1.3f, 0.0f, 0.0f));
m_object->SetAngle(3, Math::Vector(0.0f*Math::PI/180.0f, -20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f));
@@ -233,7 +245,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(4, rank);
m_object->SetObjectParent(4, 3);
- pModFile->ReadModel("data/models/human5.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human5.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(4, Math::Vector(1.2f, 0.0f, 0.0f));
@@ -242,7 +254,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(5, rank);
m_object->SetObjectParent(5, 0);
- pModFile->ReadModel("data/models/human6.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human6.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(5, Math::Vector(0.0f, 0.0f, -0.7f));
m_object->SetAngle(5, Math::Vector(10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
@@ -252,7 +264,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(6, rank);
m_object->SetObjectParent(6, 5);
- pModFile->ReadModel("data/models/human7.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human7.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(6, Math::Vector(0.0f, -1.5f, 0.0f));
m_object->SetAngle(6, Math::Vector(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f));
@@ -262,7 +274,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(7, rank);
m_object->SetObjectParent(7, 6);
- pModFile->ReadModel("data/models/human8.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human8.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(7, Math::Vector(0.0f, -1.5f, 0.0f));
m_object->SetAngle(7, Math::Vector(-10.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
@@ -272,7 +284,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(8, rank);
m_object->SetObjectParent(8, 0);
- pModFile->ReadModel("data/models/human3.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human3.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(8, Math::Vector(0.0f, 2.3f, 1.2f));
@@ -283,7 +295,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(9, rank);
m_object->SetObjectParent(9, 8);
- pModFile->ReadModel("data/models/human4l.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human4l.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(9, Math::Vector(1.3f, 0.0f, 0.0f));
@@ -294,7 +306,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(10, rank);
m_object->SetObjectParent(10, 9);
- pModFile->ReadModel("data/models/human5.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human5.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(10, Math::Vector(1.2f, 0.0f, 0.0f));
@@ -304,7 +316,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(11, rank);
m_object->SetObjectParent(11, 0);
- pModFile->ReadModel("data/models/human6.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human6.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(11, Math::Vector(0.0f, 0.0f, 0.7f));
@@ -315,7 +327,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(12, rank);
m_object->SetObjectParent(12, 11);
- pModFile->ReadModel("data/models/human7.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human7.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(12, Math::Vector(0.0f, -1.5f, 0.0f));
@@ -326,7 +338,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(13, rank);
m_object->SetObjectParent(13, 12);
- pModFile->ReadModel("data/models/human8.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human8.mod"));
pModFile->Mirror();
pModFile->CreateEngineObject(rank);
m_object->SetPosition(13, Math::Vector(0.0f, -1.5f, 0.0f));
@@ -339,7 +351,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
m_object->SetObjectRank(14, rank);
m_object->SetObjectParent(14, 0);
- pModFile->ReadModel("data/models/human9.mod");
+ pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human9.mod"));
pModFile->CreateEngineObject(rank);
m_object->SetPosition(14, Math::Vector(-1.5f, 0.3f, -1.35f));
m_object->SetAngleZ(14, Math::PI);