/** * @brief * Called when a control event has occurred */ void Application67::OnControl(Control &cControl) { // Is it a button and was it just hit? if (cControl.GetType() == ControlButton && reinterpret_cast<Button&>(cControl).IsHit()) { // Check whether the escape key was pressed if (cControl.GetName() == "KeyboardEscape") { // Shut down the application Exit(0); // Restart the game } else if (cControl.GetName() == "KeyboardR") { Restart(); // Toggle post processing } else if (cControl.GetName() == "KeyboardP") { // Get the camera const SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Loop through all available post process scene node modifiers bool bRenderToTexture = false; uint32 nIndex = 0; SceneNodeModifier *pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", nIndex); while (pModifier) { // Toggle the active state of the post process scene node modifier pModifier->SetActive(!pModifier->IsActive()); if (pModifier->IsActive()) bRenderToTexture = true; // Next modifier, please pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", ++nIndex); } // Enable/disable render to texture for the post processing feature GetSceneRendererTool().SetPassAttribute("Begin", "Flags", bRenderToTexture ? "" : "Inactive"); } } } }
/** * @brief * Called when a control event has occurred */ void Application65::OnControl(Control &cControl) { // Is it a button and was it just hit? if (cControl.GetType() == ControlButton && reinterpret_cast<Button&>(cControl).IsHit()) { // Check whether the escape key was pressed if (cControl.GetName() == "KeyboardEscape") { // Shut down the application Exit(0); // Show/hide the help text } else if (cControl.GetName() == "KeyboardF1") { // Get the info text scene node SceneNode *pSceneNode = GetRootScene() ? GetRootScene()->GetByName("InfoText") : nullptr; if (pSceneNode) { // Toggle the active state of the scene node pSceneNode->SetActive(!pSceneNode->IsActive()); } // Toggle post processing } else if (cControl.GetName() == "KeyboardSpace") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Loop through all available post process scene node modifiers uint32 nIndex = 0; SceneNodeModifier *pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", nIndex); while (pModifier) { // Toggle the active state of the post process scene node modifier pModifier->SetActive(!pModifier->IsActive()); // Next modifier, please pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", ++nIndex); } } // Next post process effect } else if (cControl.GetName() == "KeyboardPageUp") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Increase the current selected modifier index m_nCurrentSelectedModifier++; if (m_nCurrentSelectedModifier >= m_lstModifierClasses.GetNumOfElements()) m_nCurrentSelectedModifier = 0; // Remove all old modifiers add the new one pCamera->ClearModifiers(); pCamera->AddModifier(m_lstModifierClasses[m_nCurrentSelectedModifier]->GetClassName()); } // Previous post process effect } else if (cControl.GetName() == "KeyboardPageDown") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Decrease the current selected modifier index if (m_nCurrentSelectedModifier) m_nCurrentSelectedModifier--; else m_nCurrentSelectedModifier = m_lstModifierClasses.GetNumOfElements()-1; // Remove all old modifiers add the new one pCamera->ClearModifiers(); pCamera->AddModifier(m_lstModifierClasses[m_nCurrentSelectedModifier]->GetClassName()); } // Custom post process effect: "Rainbow" } else if (cControl.GetName() == "Keyboard1") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new one pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCrazyBars", "ColorScaleY=\"0.002\""); } // Custom post process effect: "Cartoon" } else if (cControl.GetName() == "Keyboard2") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new ones pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\""); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCombineMultiplicate"); } // Custom post process effect: "Animated cartoon" } else if (cControl.GetName() == "Keyboard3") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new ones pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\""); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessOldFilm"); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCombineMultiplicate"); } // Custom post process effect: "Animated old cartoon" } else if (cControl.GetName() == "Keyboard4") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new ones pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\""); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCombineMultiplicate"); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessOldFilm"); } // Custom post process effect: "Scratch" } else if (cControl.GetName() == "Keyboard5") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new one pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\""); } // Custom post process effect: "Animated old scratch" } else if (cControl.GetName() == "Keyboard6") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new ones pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\""); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessOldFilm"); } // Custom post process effect: "Edge glow" } else if (cControl.GetName() == "Keyboard7") { // Get the currently used camera SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera()); if (pCamera) { // Remove all old modifiers add the new one pCamera->ClearModifiers(); pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "Filename=\"Data/PostProcesses/EdgeGlow.pp\""); } } } }