- Timestamp:
- Jan 7, 2007, 2:50:47 PM (18 years ago)
- Location:
- branches/playability/src/world_entities
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/playability/src/world_entities/projectiles/spike_ball.cc
r10180 r10188 60 60 61 61 this->angle = 0; 62 this->rotationSpeed = 0; 62 this->rotationSpeed = 130; 63 64 this->halo = new Billboard(); 65 this->halo->setSize(2, 2); 66 this->halo->setTexture("hbolt_halo.png"); 63 67 /* 64 this->halo = new Billboard(); 65 this->halo->setSize(.35, .35); 66 this->halo->setTexture("hbolt_halo.png");*/ 68 // this->weaponMan = new WeaponManager(dynamic_cast<WorldEntity*>(this)); 69 this->weaponMan.setParentEntity(this); 70 71 Weapon* cannon = new SpikeLauncher(); 72 cannon->setName( "SpikeLauncher"); 73 this->weaponMan.addWeapon(cannon, 0, 0); 74 this->weaponMan.changeWeaponConfig(0); 75 */ 76 67 77 } 68 78 … … 105 115 this->setDamage(5); 106 116 this->setHealth(0); 117 this->rotationVector = VECTOR_RAND(1); 107 118 } 108 119 … … 197 208 glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z); 198 209 199 glRotatef(angle, 1.0, 0.0, 0.0);210 glRotatef(angle, this->rotationVector.x, this->rotationVector.y, this->rotationVector.z); 200 211 this->getAbsDir().matrix (matrix); 201 212 glMultMatrixf((float*)matrix); -
branches/playability/src/world_entities/projectiles/spike_ball.h
r10170 r10188 9 9 #include "projectile.h" 10 10 #include "effects/billboard.h" 11 12 #include "../weapons/spike_launcher.h" 11 13 #include "../weapons/weapon.h" 14 #include "../weapons/weapon_manager.h" 12 15 13 16 class Vector; … … 16 19 class ParticleEmitter; 17 20 class FastFactory; 21 class WeaponManager; 22 18 23 19 24 class SpikeBall : public Projectile … … 35 40 virtual void draw () const; 36 41 42 inline Vector getRotationVector() { return this->rotationVector; } 43 inline float getAngle() { return this->angle; } 44 37 45 // virtual void blow(); 38 46 … … 48 56 float angle; 49 57 float rotationSpeed; 58 Vector rotationVector; 50 59 51 60 Billboard* halo; 52 61 53 62 WorldEntity* hitEntity; // FIXME TEMPORARY 63 64 // WeaponManager weaponMan; 65 54 66 }; 55 67 -
branches/playability/src/world_entities/projectiles/swarm_projectile.cc
r10168 r10188 268 268 269 269 this->angle += this->rotationSpeed * time; 270 while (this->angle > 360) 271 this->angle -= 360; 270 272 271 273 this->lastDir = this->curDir; … … 309 311 glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z); 310 312 Vector tmpRot = this->getAbsCoor().cross(tmpDir); 311 glRotatef (angle Deg( this->getAbsCoor(), tmpDir), tmpRot.x, tmpRot.y, tmpRot.z );313 glRotatef (angleRad ( this->getAbsCoor(), tmpDir), tmpRot.x, tmpRot.y, tmpRot.z ); 312 314 glRotatef(this->angle, 1.0f, 0.0f, 0.0f); //spinning missile 313 315 this->getAbsDir().matrix (matrix); -
branches/playability/src/world_entities/space_ships/space_ship.cc
r10173 r10188 200 200 this->secWeaponMan.changeWeaponConfig(0); 201 201 202 curWeaponPrimary = 1;202 curWeaponPrimary = 3; 203 203 curWeaponSecondary = 0; 204 204 -
branches/playability/src/world_entities/weapons/heavy_blaster.cc
r10170 r10188 81 81 82 82 this->setCapability(WTYPE_ALLDIRS | WTYPE_DIRECTIONAL | WTYPE_LIGHT); 83 this->setProjectileTypeC("HBolt"); // FIXME temp project type until the blaste class exist83 this->setProjectileTypeC("HBolt"); // FIXME temp project type until the blaste class exist 84 84 // this->setProjectileTypeC("SpikeBall"); // FIXME temp project type until the blaste class exist 85 85 this->prepareProjectiles(5); -
branches/playability/src/world_entities/weapons/spike_launcher.cc
r10180 r10188 172 172 } 173 173 174 void SpikeLauncher::updateFireDir(Vector v, float angle){ 175 176 float** m = new float* [3]; 177 for( int i = 0; i < 3 ; i++) 178 m[i] = new float; 179 180 float nx, ny, nz, ca, sa; 181 nx = v.x; 182 ny = v.y; 183 nz = v.z; 184 185 ca = cos (angle); 186 sa = sin (angle); 187 // final version below... easier to to cheat with the one above. 188 /* 189 nx = this->getParent()->getRotationVector().x 190 ny = this->getParent()->getRotationVector().y 191 nz = this->getParent()->getRotationVector().z 192 193 ca = cos (this->getParent()->getAngle()); 194 sa = sin (this->getParent()->getAngle());*/ 195 196 m[0][0] = nx * nx * (1 - ca) + ca; 197 m[0][1] = nx * ny * (1 - ca) + nz * sa; 198 m[0][2] = nx * nz * (1 - ca) - ny * sa; 199 m[1][0] = nx * nz * (1 - ca) - nz * sa; 200 m[1][1] = ny * ny * (1 - ca) + ca; 201 m[1][2] = ny * nz * (1 - ca) + nx * sa; 202 m[2][0] = nx * nz * (1 - ca) + ny * sa; 203 m[2][1] = ny * nz * (1 - ca) - nx * sa; 204 m[2][2] = nz * nz * (1 - ca) + ca; 205 206 float x, y, z; 207 for (int i = 0; i < this->spikes;i++){ 208 x = m[0][0] * this->launcher[i].x + m[0][1] * this->launcher[i].y + m[0][2] * this->launcher[i].z; 209 y = m[1][0] * this->launcher[i].x + m[1][1] * this->launcher[i].y + m[1][2] * this->launcher[i].z; 210 z = m[2][0] * this->launcher[i].x + m[2][1] * this->launcher[i].y + m[2][2] * this->launcher[i].z; 211 212 this->launcher[i] = Vector (x, y, z); 213 } 214 } 215 216 174 217 void SpikeLauncher::fire() 175 218 { 219 // temporary solution to test module 220 updateFireDir(VECTOR_RAND(1), 20); 221 222 176 223 Projectile* pj = NULL; 177 224 // for( ObjectList<Playable>::const_iterator eIterator = Playable::objectList().begin(); eIterator !=Playable::objectList().end(); eIterator++) -
branches/playability/src/world_entities/weapons/spike_launcher.h
r10180 r10188 28 28 virtual void fire(); 29 29 30 virtual void updateFireDir(Vector v, float angle); 30 31 31 32 private:
Note: See TracChangeset
for help on using the changeset viewer.