Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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
                    );
            }
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        ///<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();
                }
            }
        }