internal MouseCoordinates(Application application, EntityGameView view) { Vector2i mousePosition = Mouse.GetPosition(application.Window); View = view; if (view.Camera != null && view.Camera.View != null) { View cameraView = view.Camera.View; Vector2f viewCenter = cameraView.Center; Vector2u windowSize = application.Window.Size; Camera defaultCamera = view.Camera; Vector2f offset = new Vector2f( viewCenter.X - (windowSize.X / 2) + mousePosition.X, viewCenter.Y - (windowSize.Y / 2) + mousePosition.Y ); WorldPosition = offset.Rotate(cameraView.Rotation); WindowPosition = new Vector2f(mousePosition.X, mousePosition.Y); } else { WindowPosition = new Vector2f(mousePosition.X, mousePosition.Y); WorldPosition = WindowPosition; } }
/// <summary> /// Creates a copy of the prefab entity /// </summary> /// <returns>A copy of the prefab entity</returns> public Entity Instantiate(EntityGameView parent) { Entity child = original.Clone(); child.SetParentView(parent); child.Name = original.Name; parent.AddEntity(child); return(child); }
public static void DebugRender(this EntityGameView view, RenderTarget target) { #if DEBUG if (DebugRenderer.DebugRenderingEnabled) { foreach (var child in view.Descendants) { var pos = child.Transform.Position; var rot = child.Transform.Rotation; if (child.IsBeingDestroyed) { CircleShape cs = new CircleShape(5); cs.Position = pos - new Vector2f(-2.5f, -2.5f); cs.FillColor = new Color(255, 0, 0, 50); target.Draw(cs); } UITransform uiTransform; if (child.FindComponent(out uiTransform)) { RectangleShape rs = new RectangleShape(uiTransform.GlobalSize); rs.Position = pos; rs.FillColor = Color.Transparent; rs.OutlineColor = new Color(255, 255, 0, 100); rs.OutlineThickness = 1; target.Draw(rs); Entities.Components.Transform parentTransform; if (child.Parent != null && child.Parent.FindComponent(out parentTransform)) { VertexArray yOffset = new VertexArray(PrimitiveType.LineStrip); yOffset.Append(new Vertex(new Vector2f(pos.X, parentTransform.Position.Y), new Color(0, 255, 0, 50))); yOffset.Append(new Vertex(pos, new Color(0, 255, 0, 50))); target.Draw(yOffset); VertexArray xOffset = new VertexArray(PrimitiveType.LineStrip); xOffset.Append(new Vertex(new Vector2f(parentTransform.Position.X, pos.Y), new Color(255, 0, 0, 50))); xOffset.Append(new Vertex(pos, new Color(255, 0, 0, 50))); target.Draw(xOffset); } } /*if (child.FindComponent(out UIText text)) * { * RectangleShape rs = new RectangleShape(text.Transform.Size); * rs.Position = text.Transform.Position; * rs.FillColor = Color.Transparent; * rs.OutlineColor = Color.Cyan; * rs.OutlineThickness = 1; * target.Draw(rs); * }*/ VertexArray transformLeft = new VertexArray(PrimitiveType.LineStrip); transformLeft.Append(new Vertex(pos, Color.Red)); transformLeft.Append(new Vertex(pos + new Vector2f(15, 0).Rotate(rot), Color.Red)); target.Draw(transformLeft); VertexArray transformUp = new VertexArray(PrimitiveType.LineStrip); transformUp.Append(new Vertex(pos, Color.Green)); transformUp.Append(new Vertex(pos + new Vector2f(0, 15).Rotate(rot), Color.Green)); target.Draw(transformUp); } } #endif }