A Smoll game engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.2 KiB

пре 11 месеци
пре 11 месеци
пре 11 месеци
пре 11 месеци
пре 11 месеци
пре 11 месеци
  1. using System.Numerics;
  2. using Raylib_cs;
  3. namespace Smoll.Ex1 {
  4. class RectangleGizmoComponent : Smoll.Component {
  5. Complex size;
  6. Color color;
  7. Transform2DComponent? ownerTransform;
  8. public RectangleGizmoComponent(int width, int height, Color color)
  9. {
  10. this.size = width + Complex.ImaginaryOne*height;
  11. this.color = color;
  12. }
  13. public override void OnAttached() {
  14. ownerTransform = owner.GetComponent<Transform2DComponent>();
  15. }
  16. public override void Draw(Smoll.Layer.DrawMode drawMode) {
  17. ownerTransform ??= owner.GetComponent<Transform2DComponent>();
  18. ownerTransform ??= new Transform2DComponent();
  19. var tr = ownerTransform.AbsoluteTransform();
  20. Raylib.DrawRectanglePro(
  21. new Rectangle(
  22. (float)tr.position.Real,
  23. (float)tr.position.Imaginary,
  24. (float)(size.Real*tr.scale),
  25. (float)(size.Imaginary*tr.scale)
  26. ),
  27. new Vector2(
  28. (float)(0),
  29. (float)(0)
  30. ),
  31. tr.angle*180f/MathF.PI,
  32. color
  33. );
  34. }
  35. }
  36. }