void CMaterialEffects::Update(float frameTime) { SetUpdateMode(true); std::vector< SDelayedEffect >::iterator it = m_delayedEffects.begin(); std::vector< SDelayedEffect >::iterator next = it; while (it != m_delayedEffects.end()) { ++next; SDelayedEffect& cur = *it; cur.m_delay -= frameTime; if (cur.m_delay <= 0.0f) { cur.m_pEffectContainer->Execute(cur.m_effectRuntimeParams); next = m_delayedEffects.erase(it); } it = next; } #ifdef MATERIAL_EFFECTS_DEBUG if (CMaterialEffectsCVars::Get().mfx_DebugVisual) { m_pVisualDebug->Update(*this, frameTime); } #endif }
EC_ProximityTrigger::EC_ProximityTrigger(Scene *scene) : IComponent(scene), INIT_ATTRIBUTE_VALUE(active, "Is active", true), INIT_ATTRIBUTE_VALUE(thresholdDistance, "Threshold distance", 0.0f), INIT_ATTRIBUTE_VALUE(interval, "Trigger signal interval", 0.0f) { SetUpdateMode(); }
void EC_ProximityTrigger::AttributesChanged() { if (interval.ValueChanged()) SetUpdateMode(); }