public void Render(RenderComposer c) { var colorMultiplier = (byte)(_mouseDragging ? 100 : 50); c.RenderOutline(Rect, Color); if (_anchor == 5) { c.RenderSprite(Rect, Color.Add(Color, colorMultiplier).SetAlpha(colorMultiplier)); } c.RenderCircle(Rect.Position.ToVec3(), 2, _anchor == 1 ? Color.Add(Color, colorMultiplier) : Color, true); c.RenderCircle(Rect.TopRight.ToVec3(), 2, _anchor == 2 ? Color.Add(Color, colorMultiplier) : Color, true); c.RenderCircle(Rect.BottomRight.ToVec3(), 2, _anchor == 3 ? Color.Add(Color, colorMultiplier) : Color, true); c.RenderCircle(Rect.BottomLeft.ToVec3(), 2, _anchor == 4 ? Color.Add(Color, colorMultiplier) : Color, true); }
public override void Draw(RenderComposer composer) { composer.SetUseViewMatrix(false); composer.RenderSprite(new Vector3(0, 0, 0), Engine.Renderer.CurrentTarget.Size, Color.CornflowerBlue); composer.SetUseViewMatrix(true); foreach (RopeSimConnection2D p in _connections) { composer.RenderLine((p.Start.Position + new Vector2(_circleRadius)).ToVec3(), (p.End.Position + new Vector2(_circleRadius)).ToVec3(), Color.White); } if (_dragging != null) { Vector2 worldMouse = Engine.Renderer.Camera.ScreenToWorld(Engine.Host.MousePosition); composer.RenderLine((_dragging.Position + new Vector2(_circleRadius)).ToVec3(), worldMouse.ToVec3(), Color.Red); } if (_draggingCut != Vector2.Zero) { Vector2 worldMouse = Engine.Renderer.Camera.ScreenToWorld(Engine.Host.MousePosition); composer.RenderLine(_draggingCut.ToVec3(), worldMouse.ToVec3(), Color.Red); } foreach (var p in _points) { composer.RenderCircle(p.Position.ToVec3(), _circleRadius, p.Locked ? Color.Magenta : Color.Black); } }
public override void Render(RenderComposer composer) { // If she's in a magic flow render her as a circle if (IsMagicFlowActive) { composer.RenderCircle(CollisionBox.Center.ToVec3(Z), 15, Color.Pink, true); return; } // If walking on an incline apply rotation if (InclineAngle != 0f) { composer.PushModelMatrix( Matrix4x4.CreateRotationZ(InclineAngle, new Vector3(Center, 0)) ); } // Render the sprite composer.RenderSprite( Position, Size, !IsGravityPushActive ? Color.White : Color.Pink, Sprite.Texture, Sprite.CurrentFrame, IsFacingRight, false ); // Remove the rotation matrix if (InclineAngle != 0f) { composer.PopModelMatrix(); } if (IsGravityPushActive) { composer.RenderOutline( new Vector3( CollisionBox.Center.X - GravityPushRange, CollisionBox.Center.Y - GravityPushRange, 15 ), new Vector2(GravityPushRange * 2), Color.Pink, 2 ); } }
public void Draw(RenderComposer composer) { foreach (Decoration bg in Backgrounds) { bg.Render(composer); } foreach (Decoration dec in BackgroundDecorations) { if (IsTransformOnSreen(dec)) { dec.Render(composer); } } foreach (Unit unit in Units) { if (IsTransformOnSreen(unit)) { unit.Render(composer); } } foreach (Collision.LineSegment plat in CollisionPlatforms) { plat.Render(composer); } // Draw Magic Flows foreach (MagicFlow mf in MagicFlows) { mf.Render(composer); } // Render Scene Changers for (int i = 0; i < SceneChangers.Count; i++) { SceneChangers[i].Render(composer); } // Render the player Player.Render(composer); foreach (Decoration dec in ForegroundDecorations) { if (IsTransformOnSreen(dec)) { dec.Render(composer); } } // Draw the room ceiling composer.RenderLine(new Vector3(0, 0, 15), new Vector3(LoadedRoom.Size.X, 0, 6), Color.Cyan, 1); // Draw camera position (probably the center of the screen) composer.RenderCircle(Engine.Renderer.Camera.Position, 1, Color.Cyan); // Display the current interaction if (CurrentInteration != null) { CurrentInteration.Render(composer); } // Draw DebugObjects' CollisionBoxes for (int i = 0; i < DebugObjects.Count; i++) { DebugObject debugObj = DebugObjects[i]; debugObj.RenderObjectRectange(composer); } // Disabled the camera and draw on Screen Space instead of World Space composer.SetUseViewMatrix(false); // Draw DebugObjects for (int i = 0; i < DebugObjects.Count; i++) { DebugObject debugObj = DebugObjects[i]; int fontSize = 18; float debugObjDisplayWidth = debugObj.LongestLine.Length * 8; // Magic number TextureAsset textureAsset = Engine.AssetLoader.Get <TextureAsset>("Textures/better-transparent-black.png"); composer.RenderSprite( new Vector3(debugObjDisplayWidth * i, 0, 15), new Vector2(debugObjDisplayWidth, Engine.Configuration.RenderSize.Y), Color.White, textureAsset.Texture ); composer.RenderString( new Vector3(debugObjDisplayWidth * i, 0, 15), Color.Red, debugObj.ToString(), Engine.AssetLoader.Get <FontAsset>("Fonts/Calibri 400.ttf").GetAtlas(fontSize) ); } // Draw circle on mouse pointer composer.RenderCircle(new Vector3(Engine.InputManager.MousePosition, 15), 3, Color.Red, true); // Draw mouse coordinates composer.RenderString( new Vector3(20, Engine.Configuration.RenderSize.Y - 80, 15), Color.Red, Engine.InputManager.MousePosition.ToString(), Engine.AssetLoader.Get <FontAsset>("Fonts/Calibri 400.ttf").GetAtlas(18) ); // Enable the camera again composer.SetUseViewMatrix(true); // Render the Emotion Tools UI //composer.RenderToolsMenu(); }
///<summary> /// Render the object's Transform rectangle. /// Emotion specific method. ///</summary> public void RenderObjectRectange(RenderComposer composer) { // Check if Item can be cast to Unit in "unit" variable and if so provides the "unit" variable for further use if (Item is Unit unit) { // Draw texture center composer.RenderCircle(Item.Center.ToVec3(Item.Z), 3, Color.Green, true); if (unit.InclineAngle != 0f) { composer.PushModelMatrix( Matrix4x4.CreateRotationZ(unit.InclineAngle, new Vector3(unit.Center, 0)) ); } // Draw the texture rectangle composer.RenderOutline(Item.Position, Item.Size, Color.Green, 2); if (unit.InclineAngle != 0f) { composer.PopModelMatrix(); } // Draw future position for units Vector3 futurePosition; if (!unit.IsAffectedByGravityPush) { futurePosition = new Vector3( unit.CollisionBox.X + (unit.VelocityX * unit.RunTimer.Progress), unit.CollisionBox.Y - (unit.GravityTimer.Progress * unit.StartingVelocityY), unit.CollisionBox.Z ); } else { if (unit.GravityPushPushDurationTimer != null) { futurePosition = new Vector3( unit.CollisionBox.X + (unit.VelocityX * unit.GravityPushPushDurationTimer.Progress), unit.CollisionBox.Y - unit.StartingVelocityY, unit.CollisionBox.Z ); } else { futurePosition = new Vector3( unit.CollisionBox.X, unit.CollisionBox.Y - unit.StartingVelocityY, unit.CollisionBox.Z ); } } composer.RenderOutline(futurePosition, unit.CollisionBox.Size, Color.Cyan, 1); // Draw last position of the CollisionBox composer.RenderOutline(unit.LastState.CollisionBox.Position, unit.LastState.CollisionBox.Size, Color.Yellow, 2); // Draw CollisionBox for units composer.RenderOutline(unit.CollisionBox.Position, unit.CollisionBox.Size, Color.Red, 2); // Draw CollisionBox center for units composer.RenderCircle(unit.CollisionBox.Center.ToVec3(Item.Z), 3, Color.Red, true); } else if (Item is Decoration dec) { // Draw texture center composer.RenderCircle(Item.Center.ToVec3(Item.Z), 3, Color.Green, true); // Draw texture rectangle (without rotation) composer.RenderOutline(dec.Position, dec.DisplaySize, Color.Blue, 2); if (dec.Rotation != 0f) { // Tiled rotates images around the bottom left corner composer.PushModelMatrix( Matrix4x4.CreateRotationZ(dec.Rotation, new Vector3(dec.X, dec.Y + dec.DisplaySize.Y, 0)) ); } // Draw texture rectangle (with rotation) composer.RenderOutline(dec.Position, dec.DisplaySize, Color.Red, 2); if (dec.Rotation != 0f) { // Tiled rotates images around the bottom left corner composer.PopModelMatrix(); } } }