SwordEffect::SwordEffect(EyeCandy* _base, bool* _dead, Vec3* _start, Vec3* _end, const SwordType _type, const Uint16 _LOD) { if (EC_DEBUG) std::cout << "SwordEffect (" << this << ") created (" << _type << ")." << std::endl; base = _base; dead = _dead; pos = _start; start = _start; end = _end; type = _type; bounds = NULL; mover = new ParticleMover(this); switch (type) { case SERPENT: { color[0] = 0.6; color[1] = 0.8; color[2] = 0.3; texture = EC_VOID; break; } case CUTLASS: { color[0] = 1.0; color[1] = 1.0; color[2] = 1.0; texture = EC_INVERSE; break; } case EMERALD_CLAYMORE: { color[0] = 0.3; color[1] = 1.0; color[2] = 0.3; texture = EC_CRYSTAL; break; } case SUNBREAKER: { color[0] = 1.0; color[1] = 0.8; color[2] = 0.3; texture = EC_VOID; break; } case ORC_SLAYER: { color[0] = 1.0; color[1] = 0.1; color[2] = 0.1; texture = EC_WATER; break; } case EAGLE_WING: { color[0] = 0.7; color[1] = 1.0; color[2] = 1.0; texture = EC_INVERSE; break; } case JAGGED_SABER: { color[0] = 1.0; color[1] = 0.3; color[2] = 1.0; texture = EC_TWINFLARE; break; } case SWORD_OF_FIRE: { color[0] = 1.0; color[1] = 0.6; color[2] = 0.3; texture = EC_FLARE; break; } case SWORD_OF_ICE: { color[0] = 0.4; color[1] = 0.5; color[2] = 1.0; texture = EC_CRYSTAL; break; } case SWORD_OF_MAGIC: { color[0] = 0.7; color[1] = 0.6; color[2] = 0.4; texture = EC_SHIMMER; break; } } old_end = *end; LOD = 100; desired_LOD = _LOD; request_LOD((float)base->last_forced_LOD); }
MissileEffect::MissileEffect(EyeCandy* _base, bool* _dead, Vec3* _pos, const MissileType _type, const Uint16 _LOD, int _hitOrMiss) { if (EC_DEBUG) std::cout << "MissileEffect (" << this << ") created (" << _type << ")." << std::endl; base = _base; dead = _dead; pos = _pos; type = _type; hitOrMiss = _hitOrMiss; bounds = NULL; mover = new ParticleMover(this); switch (type) { case MAGIC: { color[0] = 1.0; color[1] = 1.0; color[2] = 0.125; #ifdef NEW_TEXTURES texture = EC_SHIMMER; #else /* NEW_TEXTURES */ texture = &(base->TexShimmer); #endif /* NEW_TEXTURES */ break; } case FIRE: { color[0] = 1.0; color[1] = 0.125; color[2] = 0.125; #ifdef NEW_TEXTURES texture = EC_FLARE; #else /* NEW_TEXTURES */ texture = &(base->TexFlare); #endif /* NEW_TEXTURES */ break; } case ICE: { color[0] = 0.125; color[1] = 0.125; color[2] = 1.0; #ifdef NEW_TEXTURES texture = EC_CRYSTAL; #else /* NEW_TEXTURES */ texture = &(base->TexCrystal); #endif /* NEW_TEXTURES */ break; } case EXPLOSIVE: { color[0] = 0.75; color[1] = 0.75; color[2] = 0.75; #ifdef NEW_TEXTURES texture = EC_INVERSE; #else /* NEW_TEXTURES */ texture = &(base->TexInverse); #endif /* NEW_TEXTURES */ break; } } old_pos = *pos; LOD = 100; desired_LOD = _LOD; request_LOD((float)base->last_forced_LOD); // add first particle Vec3 velocity; velocity.randomize(0.25); Particle * p = new MissileParticle(this, mover, old_pos, velocity, size, alpha, color[0], color[1], color[2], texture, LOD, type); base->push_back_particle(p); }