00001 #include "Horde3D.h"
00002 #include "Horde3DUtils.h"
00003 #include <iostream>
00004
00005 #include "Vec3.h"
00006 #include "Game.h"
00007 #include "Airplane.h"
00008
00012 Airplane::Airplane() {
00013 H3DRes planeRes = h3dAddResource(H3DResTypes::SceneGraph, "models/plane/plane.scene.xml", 0);
00014 H3DRes particleSysRes = h3dAddResource(H3DResTypes::SceneGraph, "particles/airplaneStream/airplaneStream.scene.xml", 0);
00015 bool loaded = h3dutLoadResourcesFromDisk(::Values::CONTENT_DIR);
00016 if(! loaded) std::cout << "could not load airplane ressources" << std::endl;
00017
00018 _model = h3dAddNodes(H3DRootNode, planeRes);
00019
00020 _emitter1 = h3dAddNodes(_model, particleSysRes);
00021 _emitter2 = h3dAddNodes(_model, particleSysRes);
00022 h3dSetNodeTransform(_emitter1, 0, 0, -2.2f,
00023 90, 0, 0,
00024 1, 1, 1);
00025 h3dSetNodeTransform(_emitter2, 0, 0, 2.2f,
00026 90, 0, 0,
00027 1, 1, 1);
00028 h3dSetNodeActivation(_emitter1, true);
00029 h3dSetNodeActivation(_emitter2, true);
00030
00031 setPosition(20.0f);
00032 }
00033
00034 Airplane::~Airplane(){
00035 }
00036
00041 void Airplane::update(float timeStep) {
00042 Vec3 speed(2, 0, 0);
00043 speed *= (::Values::AIRPLANE_SPEED_KM_H / 3.6 * timeStep);
00044 Vec3 currentPosition = getPosition();
00045 currentPosition += speed;
00046
00047 setPosition(currentPosition.x);
00048 if(currentPosition.x > 400 || currentPosition.x < -400) {
00049 setPosition(-400);
00050 }
00051
00052 Game::advanceEmitter(_emitter1, timeStep);
00053 Game::advanceEmitter(_emitter2, timeStep);
00054 }
00055
00060 bool Airplane::isReadyForJump() {
00061 Vec3 currentPostion = getPosition();
00062
00063 if(currentPostion.x >= 20 && currentPostion.x <= 32) {
00064 return true;
00065 }
00066 return false;
00067 }
00068
00073 Vec3 Airplane::getPosition() {
00074 float tx, ty, tz;
00075 float rx, ry, rz;
00076 float sx, sy, sz;
00077 h3dGetNodeTransform(_model, &tx, &ty, &tz, &rx, &ry, &rz, &sx, &sy, &sz);
00078 return Vec3(tx, ty, tz);
00079 }
00080
00085 void Airplane::setPosition(float x) {
00086 float dropheight = 30.0f;
00087 h3dSetNodeTransform(_model,
00088 x, dropheight, 20,
00089 0, 0, 0,
00090 2, 2, 2);
00091 }