/project/Naruto_ninja_story/model/ModelNaruto.cpp
http://narutortsproject.googlecode.com/ · C++ · 390 lines · 13 code · 5 blank · 372 comment · 0 complexity · 38543b919aeabd888d8eb651344f2a97 MD5 · raw file
- #include "ModelNaruto.h"
- #include "Object/Object/Object.h"
- #include "Object/Body/Body_physic.h"
-
- ModelNaruto::ModelNaruto()
- {
- };
-
- ModelNaruto::~ModelNaruto()
- {
-
- };
-
- void ModelNaruto::Initialize()
- {
- Model::Initialize();
-
- /*load("../../data/model/Naruto_03.N3D");
- //load("../../data/model/Sasuke.N3D");
-
- AddAnimation(ANI_IDLE, "idle", 10.0*40.0, 100.0*40.0, true);
- AddAnimation(ANI_FORWARD, "forward", 110.0*40.0, 126.0*40.0, true);
- AddAnimation(ANI_JUMP, "jump", 170.0*40.0, 220.0*40.0, false);
-
- AddAnimation(ANI_PUNCH_01, "punch_01", 225.0*40.0, 237.0*40.0, false);
- AddAnimation(ANI_PUNCH_02, "punch_02", 237.0*40.0, 247.0*40.0, false);
- AddAnimation(ANI_PUNCH_03, "punch_03", 247.0*40.0, 261.0*40.0, false);
- AddAnimation(ANI_PUNCH_04, "punch_04", 261.0*40.0, 278.0*40.0, false);
-
- AddAnimation(ANI_PUNCH_05, "punch_05", 315.0*40.0, 330.0*40.0, false);
- AddAnimation(ANI_PUNCH_06, "punch_06", 330.0*40.0, 338.0*40.0, false);
- AddAnimation(ANI_PUNCH_07, "punch_07", 338.0*40.0, 355.0*40.0, false);
-
- AddAnimation(ANI_PUNCH_08, "punch_08", 365.0*40.0, 400.0*40.0, false);
-
- AddAnimation(ANI_PUNCH_09, "punch_air_09", 430.0*40.0, 448.0*40.0, false);
- AddAnimation(ANI_PUNCH_10, "punch_air_10", 470.0*40.0, 490.0*40.0, false);
-
- AddAnimation(ANI_PAINT_01, "pain_01", 410.0*40.0, 425.0*40.0, false);
-
- //Create physic body
- m_base_body = new Body_physic;
-
- float l = 12.0f;
- float w = 12.0f;
- float h = 35.0f;
-
- float rad_jumper = 10.0f;
- float rad_wheel = 6.0f;
- float wheel_offset = 1.8f;
-
- //Create base body
- dBodyID body = dBodyCreate(m_world);
- dMass m;
- dMassSetBox(&m, 1.0f, l, w, h);
- dBodySetMass(body, &m);
- dBodySetMaxAngularSpeed(body, 0.0f);
- dGeomID geom = dCreateBox(0, l, w, h);
- dGeomSetBody(geom, body);
- dSpaceAdd(m_space, geom);
- m_base_body->SetPhysicBody(body, geom);
- m_base_body->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_base_body->PhBodySetMatrix();
- //m_base_body->DebugContact(true);
-
- Mesh_base* mesh = new Mesh_base;
- mesh->CreateBox(l, w, h);
- m_base_body->SetMesh(mesh);
- m_base_body->SetColorDiffuse(255, 255, 255, 64);
- insert_body(m_base_body);
-
- //Create wheel !!
- m_body_wheel = new Body_physic;
-
- dBodyID body_wheel = dBodyCreate(m_world);
- dMass m_wheel;
- dMassSetSphere(&m_wheel, 1.0f, rad_wheel);
- dBodySetMass(body_wheel, &m_wheel);
- dBodySetMaxAngularSpeed(body_wheel, 1.0f);
- dGeomID geom_wheel = dCreateSphere(0, rad_wheel);
- dGeomSetBody(geom_wheel, body_wheel);
- dSpaceAdd(m_space, geom_wheel);
- m_body_wheel->SetPhysicBody(body_wheel, geom_wheel);
- m_body_wheel->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_body_wheel->PhBodySetMatrix();
- m_body_wheel_offset.x = 0.0f;
- m_body_wheel_offset.y = 0.0f;
- m_body_wheel_offset.z = -h/2 - rad_wheel + wheel_offset;
- m_body_wheel->PhSetPosition(m_body_wheel_offset.x, m_body_wheel_offset.y, m_body_wheel_offset.z);
- //m_body_wheel->DebugContact(true);
- //m_body_wheel->SetCfm(0.0001f);
-
- Mesh_base* mesh_wheel = new Mesh_base;
- mesh_wheel->CreateSphere(rad_wheel, 16);
- m_body_wheel->SetMesh(mesh_wheel);
- m_body_wheel->SetColorDiffuse(0, 255, 255, 64);
- insert_body(m_body_wheel);
-
- m_joint_ball = dJointCreateBall(m_world, m_joint_group_own);
- dJointAttach(m_joint_ball, body_wheel, body);
-
- m_body_wheel->PhExclud(m_base_body);
- m_base_body->PhExclud(m_body_wheel);
-
- //dJointSetBallAnchor(joint_ball, 0.0f, 0.0f, 0.0f);
-
- //dJointSetSliderAxis(joint, 0.0f, 0.0f, 1.0f);
- //dJointSetSliderParam(joint, dParamFMax, 4000.0);
- //dJointSetSliderParam(joint, dParamLoStop, 0.0f);
- //dJointSetSliderParam(joint, dParamHiStop, 20.0f);
-
-
- m_body_right_fist_obj = FindBody("punch_right");
- if (m_body_right_fist_obj)
- {
- m_body_right_fist = new Body_physic;
- dBodyID body_right_fist = dBodyCreate(m_world);
- dMass m_right_fist;
- dMassSetSphere(&m_right_fist, 1.0f, 5.0f);
- dBodySetMass(body_right_fist, &m_right_fist);
- dBodySetMaxAngularSpeed(body_right_fist, 0.0f);
- dGeomID geom_right_fist = dCreateSphere(0, 5.0f);
- dGeomSetBody(geom_right_fist, body_right_fist);
- dSpaceAdd(m_space, geom_right_fist);
- m_body_right_fist->SetPhysicBody(body_right_fist, geom_right_fist);
- m_body_right_fist->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_body_right_fist->PhBodySetMatrix();
-
- float x, y, z;
- m_body_right_fist_obj->GetPosition(x, y, z);
- m_body_right_fist->PhSetPosition(x, y, z);
- m_body_right_fist->DebugContact(true);
- m_body_right_fist->ProcessCollision(false);
-
- Mesh_base* mesh_first = new Mesh_base;
- mesh_first->CreateSphere(5.0f, 16);
- m_body_right_fist->SetMesh(mesh_first);
- m_body_right_fist->SetColorDiffuse(0, 255, 0, 64);
-
- m_body_right_fist->SetModel(this);
- m_body_right_fist->SetBindAction(&m_punch_action);
-
- insert_body(m_body_right_fist);
- };
-
- m_body_left_fist_obj = FindBody("punch_left");
- if (m_body_left_fist_obj)
- {
- m_body_left_fist = new Body_physic;
- dBodyID body_left_fist = dBodyCreate(m_world);
- dMass m_left_fist;
- dMassSetSphere(&m_left_fist, 1.0f, 5.0f);
- dBodySetMass(body_left_fist, &m_left_fist);
- dBodySetMaxAngularSpeed(body_left_fist, 0.0f);
- dGeomID geom_left_fist = dCreateSphere(0, 5.0f);
- dGeomSetBody(geom_left_fist, body_left_fist);
- dSpaceAdd(m_space, geom_left_fist);
- m_body_left_fist->SetPhysicBody(body_left_fist, geom_left_fist);
- m_body_left_fist->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_body_left_fist->PhBodySetMatrix();
-
- float x, y, z;
- m_body_left_fist_obj->GetPosition(x, y, z);
- m_body_left_fist->PhSetPosition(x, y, z);
- m_body_left_fist->DebugContact(true);
- m_body_left_fist->ProcessCollision(false);
-
- Mesh_base* mesh_first = new Mesh_base;
- mesh_first->CreateSphere(5.0f, 16);
- m_body_left_fist->SetMesh(mesh_first);
- m_body_left_fist->SetColorDiffuse(0, 255, 0, 64);
-
- m_body_left_fist->SetModel(this);
- m_body_left_fist->SetBindAction(&m_punch_action);
-
- insert_body(m_body_left_fist);
- };
-
- m_body_left_foot_obj = FindBody("punch_leg_left");
- if (m_body_left_foot_obj)
- {
- m_body_left_foot = new Body_physic;
- dBodyID body_left_foot = dBodyCreate(m_world);
- dMass m_left_foot;
- dMassSetSphere(&m_left_foot, 1.0f, 5.0f);
- dBodySetMass(body_left_foot, &m_left_foot);
- dBodySetMaxAngularSpeed(body_left_foot, 0.0f);
- dGeomID geom_left_foot = dCreateSphere(0, 5.0f);
- dGeomSetBody(geom_left_foot, body_left_foot);
- dSpaceAdd(m_space, geom_left_foot);
- m_body_left_foot->SetPhysicBody(body_left_foot, geom_left_foot);
- m_body_left_foot->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_body_left_foot->PhBodySetMatrix();
-
- float x, y, z;
- m_body_left_foot_obj->GetPosition(x, y, z);
- m_body_left_foot->PhSetPosition(x, y, z);
- m_body_left_foot->DebugContact(true);
- m_body_left_foot->ProcessCollision(false);
-
- Mesh_base* mesh_foot = new Mesh_base;
- mesh_foot->CreateSphere(5.0f, 16);
- m_body_left_foot->SetMesh(mesh_foot);
- m_body_left_foot->SetColorDiffuse(0, 255, 0, 64);
-
- m_body_left_foot->SetModel(this);
- m_body_left_foot->SetBindAction(&m_punch_action);
-
- insert_body(m_body_left_foot);
- };
-
- m_body_right_foot_obj = FindBody("punch_leg_right");
- if (m_body_right_foot_obj)
- {
- m_body_right_foot = new Body_physic;
- dBodyID body_right_foot = dBodyCreate(m_world);
- dMass m_right_foot;
- dMassSetSphere(&m_right_foot, 1.0f, 5.0f);
- dBodySetMass(body_right_foot, &m_right_foot);
- dBodySetMaxAngularSpeed(body_right_foot, 0.0f);
- dGeomID geom_right_foot = dCreateSphere(0, 5.0f);
- dGeomSetBody(geom_right_foot, body_right_foot);
- dSpaceAdd(m_space, geom_right_foot);
- m_body_right_foot->SetPhysicBody(body_right_foot, geom_right_foot);
- m_body_right_foot->PhBodySetOffset(0.0f, 0.0f, 0.0f);
- m_body_right_foot->PhBodySetMatrix();
-
- float x, y, z;
- m_body_right_foot_obj->GetPosition(x, y, z);
- m_body_right_foot->PhSetPosition(x, y, z);
- m_body_right_foot->DebugContact(true);
- m_body_right_foot->ProcessCollision(false);
-
- Mesh_base* mesh_foot = new Mesh_base;
- mesh_foot->CreateSphere(5.0f, 16);
- m_body_right_foot->SetMesh(mesh_foot);
- m_body_right_foot->SetColorDiffuse(0, 255, 0, 64);
-
- m_body_right_foot->SetModel(this);
- m_body_right_foot->SetBindAction(&m_punch_action);
-
- insert_body(m_body_right_foot);
- };
-
- m_body_wheel->SetModel(this);
- m_base_body->SetModel(this);
-
- m_body_wheel->SetIgnoredGroup(m_ignored_group_counter);
- m_base_body->SetIgnoredGroup(m_ignored_group_counter);
-
- if (m_body_right_fist)
- m_body_right_fist->SetIgnoredGroup(m_ignored_group_counter);
- if (m_body_left_fist)
- m_body_left_fist->SetIgnoredGroup(m_ignored_group_counter);
- if (m_body_left_foot)
- m_body_left_foot->SetIgnoredGroup(m_ignored_group_counter);
- if (m_body_right_foot)
- m_body_right_foot->SetIgnoredGroup(m_ignored_group_counter);
-
- m_ignored_group_counter++;
-
-
- //|Punches: | hand | lag |
- //| ground: | 1 | 2 |
- //| run | 3 | 4 |
- //| jump | 5 | 6 |
-
- //AddAnimation(ANI_PUNCH_01, "punch_01", 225.0*40.0, 237.0*40.0, false);
- double start = 225.0;
- double end = 237.0;
- if (m_body_left_fist)
- InitializePunch(m_body_left_fist->GetId(), 0, -1, 1, ANI_PUNCH_01, Tpoint3f(0.0f, -1.0f, 0.0f), 15, 2,
- (end-start)*40.0, (231.0 - start)*40.0, (234.0-start)*40.0, 200.0,
- 0.0, (end - start)*40.0, 0.2f, Tpoint3f(0.0f, 0.0f, 0.0f),
- (231.0-start)*40.0, SOUND_PUNCH_00, SOUND_SHOUT_00 | SOUND_SHOUT_01, 20);
-
- //AddAnimation(ANI_PUNCH_02, "punch_02", 237.0*40.0, 247.0*40.0, false);
- start = 237.0;
- end = 247.0;
- if (m_body_left_fist)
- //InitializePunch(m_body_left_fist->GetId(), 1, 0, 1, ANI_PUNCH_02, Tpoint3f(0.0f, -1.0f, 0.0f), 20, 2, 800.0, 440.0, 720.0, 400.0, 0.0, 600.0, 0.2f, Tpoint3f(0.0f, 0.0f, 0.0f), 560.0, SOUND_PUNCH_01, SOUND_SHOUT_00 | SOUND_SHOUT_01, 30);
- InitializePunch(m_body_left_fist->GetId(), 1, 0, 1, ANI_PUNCH_02, Tpoint3f(0.0f, -1.0f, 0.0f), 20, 2,
- (end-start)*40.0, (244.0 - start)*40.0, (248.0-start)*40.0, 200.0,
- 0.0, (end - start)*40.0, 0.2f, Tpoint3f(0.0f, 0.0f, 0.0f),
- (245.0-start)*40.0, SOUND_PUNCH_01, SOUND_SHOUT_00 | SOUND_SHOUT_01, 30);
-
- //AddAnimation(ANI_PUNCH_03, "punch_03", 247.0*40.0, 261.0*40.0, false);
- start = 247.0;
- end = 261.0;
- if (m_body_right_fist)
- //InitializePunch(m_body_right_fist->GetId(), 2, 1, 1, ANI_PUNCH_03, Tpoint3f(1.0f, 0.0f, 0.0f), 25, 2, 800.0, 440.0, 750.0, 400.0, 360.0, 800.0, 0.15f, Tpoint3f(0.0f, 0.0f, 0.0f), 520.0, SOUND_PUNCH_02, SOUND_SHOUT_00 | SOUND_SHOUT_01 | SOUND_SHOUT_02, 80);
- InitializePunch(m_body_right_fist->GetId(), 2, 1, 1, ANI_PUNCH_03, Tpoint3f(1.0f, 0.0f, 0.0f), 25, 2,
- (end-start)*40.0, (255.0 - start)*40.0, (260.0-start)*40.0, 200.0,
- (254.0 - start)*40.0, (end - start)*40.0, 0.15f, Tpoint3f(0.0f, 0.0f, 0.0f),
- (257.0-start)*40.0, SOUND_PUNCH_02, SOUND_SHOUT_00 | SOUND_SHOUT_01 | SOUND_SHOUT_02, 80);
-
- //AddAnimation(ANI_PUNCH_04, "punch_04", 261.0*40.0, 278.0*40.0, false);
- start = 261.0;
- end = 278.0;
- if (m_body_left_foot)
- //InitializePunch(m_body_left_foot->GetId(), 3, 2, 2, ANI_PUNCH_04, Tpoint3f(0.0f, -1.0f, 0.5f), 30, 5, 1000.0, 400.0, 720.0, 1000.0, 200.0, 600.0, 1.0f, Tpoint3f(0.0f, 0.0f, 0.0f), 350.0, SOUND_PUNCH_03, SOUND_SHOUT_03, 100);
- InitializePunch(m_body_left_foot->GetId(), 3, 2, 2, ANI_PUNCH_04, Tpoint3f(0.0f, -1.0f, 0.5f), 30, 5,
- (end-start)*40.0, (268.0 - start)*40.0, (271.0-start)*40.0, 99999.0,
- (268.0 - start)*40.0, (272.0 - start)*40.0, 1.0f, Tpoint3f(0.0f, 0.0f, 0.0f),
- (268.0-start)*40.0, SOUND_PUNCH_03, SOUND_SHOUT_03, 100);
-
- //AddAnimation(ANI_PUNCH_05, "punch_05", 315.0*40.0, 330.0*40.0, false);
- if (m_body_left_foot)
- InitializePunch(m_body_left_foot->GetId(), 4, -1, 2, ANI_PUNCH_05, Tpoint3f(0.0f, -1.0f, 0.5f), 20, 2, 600.0, 200.0, 360.0, 360.0, 0.0, 400.0, 0.4f, Tpoint3f(0.0f, 0.0f, 0.0f), 200.0, SOUND_PUNCH_01, SOUND_SHOUT_00 | SOUND_SHOUT_01, 30);
- //AddAnimation(ANI_PUNCH_06, "punch_06", 330.0*40.0, 338.0*40.0, false);
- if (m_body_right_foot)
- InitializePunch(m_body_right_foot->GetId(), 5, 4, 2, ANI_PUNCH_06, Tpoint3f(0.0f, -1.0f, 0.5f), 20, 2, 320.0, 40.0, 320.0, 80.0, 0.0, 400.0, 0.4f, Tpoint3f(0.0f, 0.0f, 0.0f), 40.0, SOUND_PUNCH_02, SOUND_SHOUT_00 | SOUND_SHOUT_01, 30);
- //AddAnimation(ANI_PUNCH_07, "punch_07", 338.0*40.0, 355.0*40.0, false);
- if (m_body_left_fist)
- InitializePunch(m_body_left_fist->GetId(), 6, 5, 1, ANI_PUNCH_07, Tpoint3f(-1.0f, 0.0f, 0.3f), 30, 5, 680.0, 280.0, 560.0, 1000.0, 160.0, 560.0, 1.1f, Tpoint3f(0.0f, 0.0f, 0.0f), 280.0, SOUND_PUNCH_03, SOUND_SHOUT_03 | SOUND_SHOUT_02, 100);
-
- //AddAnimation(ANI_PUNCH_08, "punch_08", 365.0*40.0, 400.0*40.0, false);
- if (m_body_left_fist)
- InitializePunch(m_body_left_fist->GetId(), 7, -1, 3, ANI_PUNCH_08, Tpoint3f(0.0f, 0.3f, -0.3f), 30, 5, 1400.0, 600.0, 840.0, 2000.0, 0.0, 920.0, 0.8f, Tpoint3f(0.0f, 0.0f, 0.0f), 600.0, SOUND_PUNCH_03, SOUND_SHOUT_03 | SOUND_SHOUT_02, 100);
-
- //AddAnimation(ANI_PUNCH_09, "punch_air_09", 430.0*40.0, 448.0*40.0, false);
- start = 430.0;
- end = 448.0;
- if (m_body_right_foot)
- InitializePunch(m_body_right_foot->GetId(), 8, -1, 6, ANI_PUNCH_09, Tpoint3f(0.0f, 0.0f, -1.0f), 35, 5,
- (end-start)*40.0, (441.0 - start)*40.0, (445.0-start)*40.0, 99999.0,
- 0.0, (end - start)*40.0, 0.5, Tpoint3f(0.0f, 0.0f, 0.0f),
- (441.0-start)*40.0, SOUND_PUNCH_03, SOUND_SHOUT_02, 100);
-
- //AddAnimation(ANI_PUNCH_10, "punch_air_10", 470.0*40.0, 490.0*40.0, false);
- start = 470.0;
- end = 490.0;
- if (m_body_right_fist)
- InitializePunch(m_body_right_fist->GetId(), 9, -1, 5, ANI_PUNCH_10, Tpoint3f(0.0f, -1.0f, -0.1f), 35, 5,
- (end-start)*40.0, (483.0 - start)*40.0, (487.0-start)*40.0, 99999.0,
- 0.0, (end - start)*40.0, 0.3, Tpoint3f(0.0f, 0.0f, 0.0f),
- (484.0-start)*40.0, SOUND_PUNCH_02, SOUND_SHOUT_01, 100);
- SetAnimation(ANI_IDLE);
-
- //Initialize Bone Connectors
- m_bone_connector_count = 12;
- m_bone_connector = new BonePhysicConnector[m_bone_connector_count];
- m_bone_connector[0].connector_id = FindBodyId("connectrol_01");
- m_bone_connector[0].bone_a = FindBodyId("HandRd");
- m_bone_connector[0].bone_b = FindBodyId("HandR");
-
- m_bone_connector[1].connector_id = FindBodyId("connectrol_02");
- m_bone_connector[1].bone_a = FindBodyId("HandR");
- m_bone_connector[1].bone_b = FindBodyId("body");
-
- m_bone_connector[2].connector_id = FindBodyId("connectrol_05");
- m_bone_connector[2].bone_a = FindBodyId("HandLd");
- m_bone_connector[2].bone_b = FindBodyId("HandL");
-
- m_bone_connector[3].connector_id = FindBodyId("connectrol_04");
- m_bone_connector[3].bone_a = FindBodyId("HandL");
- m_bone_connector[3].bone_b = FindBodyId("body");
-
- m_bone_connector[4].connector_id = FindBodyId("connectrol_11");
- m_bone_connector[4].bone_a = FindBodyId("FootR");
- m_bone_connector[4].bone_b = FindBodyId("LegRd");
-
- m_bone_connector[5].connector_id = FindBodyId("connectrol_09");
- m_bone_connector[5].bone_a = FindBodyId("LegRd");
- m_bone_connector[5].bone_b = FindBodyId("LegR");
-
- m_bone_connector[6].connector_id = FindBodyId("connectrol_07");
- m_bone_connector[6].bone_a = FindBodyId("LegR");
- m_bone_connector[6].bone_b = FindBodyId("Torso");
-
- m_bone_connector[7].connector_id = FindBodyId("connectrol_12");
- m_bone_connector[7].bone_a = FindBodyId("FootL");
- m_bone_connector[7].bone_b = FindBodyId("LegLd");
-
- m_bone_connector[8].connector_id = FindBodyId("connectrol_10");
- m_bone_connector[8].bone_a = FindBodyId("LegLd");
- m_bone_connector[8].bone_b = FindBodyId("LegL");
-
- m_bone_connector[9].connector_id = FindBodyId("connectrol_08");
- m_bone_connector[9].bone_a = FindBodyId("LegL");
- m_bone_connector[9].bone_b = FindBodyId("Torso");
-
- m_bone_connector[10].connector_id = FindBodyId("connectrol_06");
- m_bone_connector[10].bone_a = FindBodyId("Torso");
- m_bone_connector[10].bone_b = FindBodyId("body");
-
- m_bone_connector[11].connector_id = FindBodyId("connectrol_03");
- m_bone_connector[11].bone_a = FindBodyId("Head");
- m_bone_connector[11].bone_b = FindBodyId("body");*/
- };