void Test::ExplosionDemo(float dt) { timeAccumulator += dt; if (timeAccumulator > 1.f / 60.f) { ExplosionSpawn(50); timeAccumulator -= 1.f / 60.f; } EntityVec deadParticles; for (auto &entity : _entities) { TransformPtr transform = entity->GET_COMPONENT(Transform); ParticlePtr particle = entity->GET_COMPONENT(Particle); particle->lifetime -= dt; if (particle->lifetime <= 0.f) { deadParticles.push_back(entity); continue; } transform->position += particle->velocity * (rand() % 500 * dt); if (particle->lifetime <= 1.5f) transform->scale -= dt / 2.f;// *0.5f; } for (auto &it : deadParticles) ENGINE->GetActiveSpace()->RemoveEntity(it); }
static EntityKeySet entity_keys (const mesh::BulkData &bulk_data, const EntityVec &entities) { EntityKeySet tmp_keys; for (EntityVec::const_iterator e=entities.begin(); e!=entities.end(); ++e) { const mesh::EntityKey k = bulk_data.entity_key(*e); tmp_keys.insert(k); } return tmp_keys; }
//------------------------------------------------------------------------------------------------- void sdMap::Cull(const NiCamera& kCamera, EntityVec& kEntityVec) { EntityVecItr itr = m_kStaticObjectVec.begin(); EntityVecItr itr_end = m_kStaticObjectVec.end(); for (; itr != itr_end; ++itr) kEntityVec.push_back(*itr); }