initial commit

This commit is contained in:
2025-08-05 14:42:26 +03:00
commit 9907aebe36
29 changed files with 2040 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
using Engine.Core;
using Engine.Core.Debug;
namespace MyUniverse.Shared.Behaviours;
public class ExampleBehaviour : Behaviour, IFirstFrameUpdate, ILastFrameUpdate, IUpdate
{
private ILogger logger = null!;
public void FirstActiveFrame()
{
logger = Universe.FindRequiredBehaviour<ILogger>();
logger.Log(this, "First Frame");
}
public void LastActiveFrame()
{
logger.Log(this, $"Last Frame");
}
public void Update()
{
logger.Log(this, "Frame");
}
}

View File

@@ -0,0 +1,5 @@
using Engine.Core;
namespace MyUniverse.Shared.Behaviours;
public interface IRotator : IBehaviour;

View File

@@ -0,0 +1,13 @@
using Engine.Core;
namespace MyUniverse.Shared.Behaviours;
public class LinearRotator : Behaviour2D, IRotator, IUpdate
{
private float speed = 20f;
public void Update()
{
Transform.Rotation += Universe.Time.DeltaTime * speed;
}
}

View File

@@ -0,0 +1,31 @@
using System;
using Engine.Core;
using Engine.Integration.MonoGame;
using Engine.Systems.Input;
using Microsoft.Xna.Framework.Input;
namespace MyUniverse.Shared.Behaviours;
public class RotatorToggler : Behaviour2D, IFirstFrameUpdate, ILastFrameUpdate
{
private IRotator rotator = null!;
private KeyboardInputs inputs = null!;
public void FirstActiveFrame()
{
rotator = BehaviourController.GetRequiredBehaviour<IRotator>();
inputs = Universe.FindRequiredBehaviour<KeyboardInputs>();
inputs.RegisterOnPress(Keys.Space, ToggleRotator);
}
private void ToggleRotator(IButtonInputs<Keys> sender, IButtonInputs<Keys>.ButtonCallbackArguments args)
{
rotator.StateEnable.Enabled = !rotator.StateEnable.Enabled;
}
public void LastActiveFrame()
{
inputs.UnregisterOnPress(Keys.Space, ToggleRotator);
}
}

View File

@@ -0,0 +1,35 @@
using Engine.Core;
using Engine.Systems.Tween;
namespace MyUniverse.Shared.Behaviours;
public class TweenRotator : Behaviour2D, IRotator, IFirstFrameUpdate, ILastFrameUpdate
{
private float duration = 5f;
private float angle = 180;
private IEasing easeMethod = EaseInOutQuad.Instance;
private ITweenManager tweenManager = null!;
private ITween tween = null!;
public void FirstActiveFrame()
{
tweenManager = Universe.FindRequiredBehaviour<ITweenManager>();
TweenRotation();
}
private void TweenRotation()
{
if (Transform.Rotation >= 360f)
Transform.Rotation -= 360f;
tween = Transform.TweenRotation(tweenManager, duration, Transform.Rotation + angle)
.Ease(easeMethod)
.OnComplete(TweenRotation);
}
public void LastActiveFrame()
{
tweenManager.CancelTween(tween);
}
}