void CommandRestartParticleEffect::Execute() { BaseParticleEditorNode* selectedNode = ParticlesEditorController::Instance()->GetSelectedNode(); EffectParticleEditorNode* effectNode = dynamic_cast<EffectParticleEditorNode*>(selectedNode); if (!effectNode || !effectNode->GetRootNode() || !effectNode->GetRootNode()) { return; } ParticleEffectComponent * effectComponent = effectNode->GetParticleEffectComponent(); DVASSERT(effectComponent); effectComponent->Restart(); }
void CommandStartStopParticleEffect::Execute() { BaseParticleEditorNode* selectedNode = ParticlesEditorController::Instance()->GetSelectedNode(); EffectParticleEditorNode* effectNode = dynamic_cast<EffectParticleEditorNode*>(selectedNode); if (!effectNode || !effectNode->GetRootNode()) { return; } ParticleEffectComponent* effectComponent = effectNode->GetParticleEffectComponent(); if (this->isStart) { effectComponent->Start(); } else { effectComponent->Stop(); } }
void ParticlesEditorController::EmitSelectedNodeChanged(bool forceRefresh) { if (this->selectedNode == NULL) { emit EmitterSelected(NULL, this->selectedNode); return; } // Determine the exact node type and emit the event needed. EffectParticleEditorNode* effectEditorNode = dynamic_cast<EffectParticleEditorNode*>(this->selectedNode); if (effectEditorNode) { emit EmitterSelected(NULL, this->selectedNode); emit EffectSelected(effectEditorNode->GetRootNode()); return; } EmitterParticleEditorNode* emitterEditorNode = dynamic_cast<EmitterParticleEditorNode*>(this->selectedNode); if (emitterEditorNode) { emit EmitterSelected(emitterEditorNode->GetEmitterNode(), this->selectedNode); return; } LayerParticleEditorNode* layerEditorNode = dynamic_cast<LayerParticleEditorNode*>(this->selectedNode); if (layerEditorNode) { emit LayerSelected(layerEditorNode->GetEmitterNode(), layerEditorNode->GetLayer(), this->selectedNode, forceRefresh); return; } ForceParticleEditorNode* forceEditorNode = dynamic_cast<ForceParticleEditorNode*>(this->selectedNode); if (forceEditorNode) { emit ForceSelected(forceEditorNode->GetEmitterNode(), forceEditorNode->GetLayer(), forceEditorNode->GetForceIndex(), this->selectedNode); return; } // Cleanip the selection in case we don't know what to do. Logger::Warning("ParticlesEditorController::EmitSelectedNodeChanged() - unknown selected node type!"); EmitterSelected(NULL, this->selectedNode); }