/// Handler for keydown void GameEconomicGameClient::HandlerFunctionKeyDown(StringHash eventType, VariantMap& eventData) { /// Get Urho3D Subsystem UI* ui = GetSubsystem<UI>(); /// Get component GameStateHandlerComponent * gamestatehandlercomponent_ = GetSubsystem<GameStateHandlerComponent>(); using namespace KeyDown; int key = eventData[P_KEY].GetInt(); /// parameters for debug related command if(key==KEY_F9) { RenderPath* effectRenderPath = GetSubsystem<Renderer>()->GetViewport(0)->GetRenderPath(); effectRenderPath->ToggleEnabled("Bloom"); } /// parameters for debug related command if(key==KEY_F10) { RenderPath* effectRenderPath = GetSubsystem<Renderer>()->GetViewport(0)->GetRenderPath(); effectRenderPath->ToggleEnabled("FXAA3"); } return; }
void SVGCircleElement::svgAttributeChanged(const QualifiedName& attrName) { SVGStyledTransformableElement::svgAttributeChanged(attrName); bool isLengthAttribute = attrName == SVGNames::cxAttr || attrName == SVGNames::cyAttr || attrName == SVGNames::rAttr; if (isLengthAttribute) updateRelativeLengthsInformation(); RenderPath* renderer = static_cast<RenderPath*>(this->renderer()); if (!renderer) return; if (SVGStyledTransformableElement::isKnownAttribute(attrName)) { renderer->setNeedsTransformUpdate(); RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); return; } if (isLengthAttribute) { renderer->setNeedsPathUpdate(); RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); return; } if (SVGTests::isKnownAttribute(attrName) || SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); }
void SVGStyledElement::rebuildRenderer() const { if (!renderer() || !renderer()->isRenderPath()) return; RenderPath* renderPath = static_cast<RenderPath*>(renderer()); SVGElement* parentElement = svg_dynamic_cast(parentNode()); if (parentElement && parentElement->renderer() && parentElement->isStyled() && parentElement->childShouldCreateRenderer(const_cast<SVGStyledElement*>(this))) renderPath->setNeedsLayout(true); }
void write(TextStream &ts, const RenderPath &path, int indent) { writeIndent(ts, indent); ts << path.renderName(); if (path.element()) { DeprecatedString tagName = getTagName(path.element()); if (!tagName.isEmpty()) ts << " {" << tagName << "}"; } ts << path << endl; }
void write(TextStream& ts, const RenderPath& path, int indent) { writeIndent(ts, indent); ts << path.renderName(); if (path.element()) { String tagName = getTagName(static_cast<SVGStyledElement*>(path.element())); if (!tagName.isEmpty()) ts << " {" << tagName << "}"; } ts << path << "\n"; }
void HandlePostRenderUpdate(StringHash eventType, VariantMap& eventData) { Viewport* vp = player->vp; if (!vp) return; RenderPath* rp = vp->GetRenderPath(); Vector2 sunPos = player->camera->WorldToScreenPoint(SunNode->GetWorldPosition()); sunPos.y_ = 1.0 - sunPos.y_; //GL have revert Y screen coords // Send current sun position on screen to post-process shader rp->SetShaderParameter("LightPositionOnScreen", Variant(sunPos)); debugUI->debugHud->SetAppStats(" Sun screen position ", String(Vector2(sunPos))); debugUI->debugHud->SetAppStats(" Change Light scattering RenderPath (Std/Lowres) Key =", String("F3")); debugUI->debugHud->SetAppStats(" Change RenderPath to Std Forward Key = ", String("F4")); }
void MultipleViewports::MoveCamera(float timeStep) { // Do not move if the UI has a focused element (the console) if (GetSubsystem<UI>()->GetFocusElement()) return; Input* input = GetSubsystem<Input>(); // Movement speed as world units per second const float MOVE_SPEED = 20.0f; // Mouse sensitivity as degrees per pixel const float MOUSE_SENSITIVITY = 0.1f; // Use this frame's mouse motion to adjust camera node yaw and pitch. Clamp the pitch between -90 and 90 degrees IntVector2 mouseMove = input->GetMouseMove(); yaw_ += MOUSE_SENSITIVITY * mouseMove.x_; pitch_ += MOUSE_SENSITIVITY * mouseMove.y_; pitch_ = Clamp(pitch_, -90.0f, 90.0f); // Construct new orientation for the camera scene node from yaw and pitch. Roll is fixed to zero cameraNode_->SetRotation(Quaternion(pitch_, yaw_, 0.0f)); // Read WASD keys and move the camera scene node to the corresponding direction if they are pressed if (input->GetKeyDown('W')) cameraNode_->Translate(Vector3::FORWARD * MOVE_SPEED * timeStep); if (input->GetKeyDown('S')) cameraNode_->Translate(Vector3::BACK * MOVE_SPEED * timeStep); if (input->GetKeyDown('A')) cameraNode_->Translate(Vector3::LEFT * MOVE_SPEED * timeStep); if (input->GetKeyDown('D')) cameraNode_->Translate(Vector3::RIGHT * MOVE_SPEED * timeStep); // Toggle post processing effects on the front viewport. Note that the rear viewport is unaffected RenderPath* effectRenderPath = GetSubsystem<Renderer>()->GetViewport(0)->GetRenderPath(); if (input->GetKeyPress('B')) effectRenderPath->ToggleEnabled("Bloom"); if (input->GetKeyPress('F')) effectRenderPath->ToggleEnabled("FXAA2"); // Toggle debug geometry with space if (input->GetKeyPress(KEY_SPACE)) drawDebug_ = !drawDebug_; }
void SVGPolyElement::svgAttributeChanged(const QualifiedName& attrName) { SVGStyledTransformableElement::svgAttributeChanged(attrName); // The points property is not a regular SVGAnimatedProperty, still we use the same SVG<->XML DOM synchronization framework. if (attrName == SVGNames::pointsAttr) setSynchronizedSVGAttributes(false); RenderPath* renderer = static_cast<RenderPath*>(this->renderer()); if (!renderer) return; if (SVGStyledTransformableElement::isKnownAttribute(attrName)) { renderer->setNeedsTransformUpdate(); renderer->setNeedsLayout(true); return; } if (attrName == SVGNames::pointsAttr) { renderer->setNeedsPathUpdate(); renderer->setNeedsLayout(true); return; } if (SVGTests::isKnownAttribute(attrName) || SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) renderer->setNeedsLayout(true); }
void SVGEllipseElement::svgAttributeChanged(const QualifiedName& attrName) { SVGStyledTransformableElement::svgAttributeChanged(attrName); RenderPath* renderer = static_cast<RenderPath*>(this->renderer()); if (!renderer) return; if (SVGStyledTransformableElement::isKnownAttribute(attrName)) { renderer->setNeedsTransformUpdate(); renderer->setNeedsLayout(true); return; } if (attrName == SVGNames::cxAttr || attrName == SVGNames::cyAttr || attrName == SVGNames::rxAttr || attrName == SVGNames::ryAttr) { renderer->setNeedsPathUpdate(); renderer->setNeedsLayout(true); return; } if (SVGTests::isKnownAttribute(attrName) || SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) renderer->setNeedsLayout(true); }