Beispiel #1
0
	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());			
		}
	}