void SetEnalbeInput(bool enable) { if (mOverridingCamera){ mOverridingCamera->SetEnalbeInput(enable); return; } mProcessInput = enable; }
void EditThisParticle(const char* file){ if (mEditingParticle) mEditingParticle->StopImmediate(); bool numeric = IsNumeric(file); std::string fullpath; if (numeric) { fullpath = FindParticleNameWithID("data/particles", StringConverter::ParseInt(file)); } else { fullpath = file; fullpath += ".particle"; } ParticleEmitterPtr pnew = 0; if (strcmp(file, "0")) pnew = GetParticleEmitter(fullpath.c_str()); auto& renderer = Renderer::GetInstance(); if (pnew) { mEditingParticle = pnew; Logger::Log(FB_DEFAULT_LOG_ARG, FormatString("Editing : %s", fullpath.c_str()).c_str()); auto rt = renderer.GetMainRenderTarget(); assert(rt); if (!mOriginalCamera){ mOriginalCamera = rt->ReplaceCamera(mOverridingCamera); *mOverridingCamera = *mOriginalCamera; } mEditingParticle->SetPosition(mOverridingCamera->GetPosition() + mOverridingCamera->GetDirection() * 4.f); mEditingParticle->Active(true); mOverridingCamera->SetTarget(mEditingParticle); mOverridingCamera->SetEnalbeInput(true); } else if (strcmp(file, "0") == 0) { mEditingParticle->StopImmediate(); mEditingParticle = 0; auto rt = renderer.GetMainRenderTarget(); assert(rt); if (mOriginalCamera){ rt->ReplaceCamera(mOriginalCamera); mOriginalCamera = 0; } Logger::Log(FB_ERROR_LOG_ARG, "Exit particle editor"); } else { Logger::Log(FB_ERROR_LOG_ARG, FormatString("Cannot find the particle %s", fullpath.c_str()).c_str()); } }