diff options
Diffstat (limited to 'src/object/motion/motionhuman.cpp')
-rw-r--r-- | src/object/motion/motionhuman.cpp | 64 |
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); |