示例#1
0
        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;
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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
        }