diff --git a/Engine b/Engine index 985f898..ad444de 160000 --- a/Engine +++ b/Engine @@ -1 +1 @@ -Subproject commit 985f8983274dd3dac414f0b7904aae8747450f4f +Subproject commit ad444decbb7fad331278415d2437c9a01df694ab diff --git a/Shared/Behaviours/MousePositionerBehaviour.cs b/Shared/Behaviours/MousePositionerBehaviour.cs new file mode 100644 index 0000000..44f2014 --- /dev/null +++ b/Shared/Behaviours/MousePositionerBehaviour.cs @@ -0,0 +1,21 @@ +using Microsoft.Xna.Framework.Input; + +using Engine.Core; +using Engine.Integration.MonoGame; + +namespace MyUniverse.Shared.Behaviours; + +public class MousePositionerBehaviour : Behaviour2D, IUpdate, IFirstFrameUpdate +{ + private ICamera2D camera = null!; + + public void FirstActiveFrame() + { + camera = Universe.FindRequiredBehaviour(); + } + + public void Update() + { + Transform.Position = camera.ScreenToWorldPosition(Mouse.GetState().Position.ToVector2D()); + } +} diff --git a/Shared/UniverseSource.cs b/Shared/UniverseSource.cs index d4654fb..bf660a8 100644 --- a/Shared/UniverseSource.cs +++ b/Shared/UniverseSource.cs @@ -37,8 +37,14 @@ public static class UniverseSource public static void ApplyUniverse(IUniverse universe) { - IUniverseObject exampleObject = universe.InstantiateUniverseObject().SetUniverseObject("Example Object"); - ExampleBehaviour exampleBehaviour = exampleObject.BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Example Object") + .BehaviourController.AddBehaviour(); + + universe.InstantiateUniverseObject().SetUniverseObject("MouseObject") + .BehaviourController.AddBehaviour() + .BehaviourController.AddBehaviour() + .BehaviourController.AddBehaviour() + .BehaviourController.AddBehaviour(Shape2D.CreateNgon(4), new ColorRGB(255, 255, 0)).Priority = 10; universe.InstantiateUniverseObject() .SetUniverseObject("Rotating Triangle") @@ -51,6 +57,7 @@ public static class UniverseSource .BehaviourController.AddBehaviour().SetTransform(position: new(10f, -6f), scale: Vector2D.One * 5) .BehaviourController.AddBehaviour(Shape2D.Pentagon, new ColorRGB(128, 0, 128)) .BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject() .SetUniverseObject("Rotating Triangle") .BehaviourController.AddBehaviour().SetTransform(position: new(-10f, 6f), scale: Vector2D.One * 5)