Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Commit f7713d1

Browse files
author
Alexis Huvier
committed
feat(render): Finish Renderer
1 parent 9276c46 commit f7713d1

27 files changed

+448
-171
lines changed

Demos/SE_BasicGame/MyScene.cs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@ public MyScene()
2020
e1.AddComponent(new PhysicsComponent(fixedRotation: true, ignoreGravity: true)).AddRectangleCollision(new Vec2(50), restitution: 0f);
2121
e1.AddComponent(new ControlComponent(ControlType.FourDirection, speed: 300));
2222
AddEntity(e1);
23-
24-
var e2 = new Entity();
25-
e2.AddComponent(new TransformComponent(new Vec2(100, 300)));
26-
e2.AddComponent(new RectComponent(Color.Red, new Vec2(50)));
27-
e2.AddComponent(new PhysicsComponent(BodyType.Static, ignoreGravity: true, fixedRotation: true)).AddRectangleCollision(new Vec2(50), restitution: 0f);
28-
AddEntity(e2);
23+
24+
for (var x = 0; x < 20; x++)
25+
{
26+
for (var y = 0; y < 20; y++)
27+
{
28+
var e2 = new Entity();
29+
e2.AddComponent(new TransformComponent(new Vec2(240 + 120*x, 80 + 120*y)));
30+
e2.AddComponent(new RectComponent(Color.Red, new Vec2(50)));
31+
e2.AddComponent(new PhysicsComponent(BodyType.Static, ignoreGravity: true, fixedRotation: true)).AddRectangleCollision(new Vec2(50), restitution: 0f);
32+
AddEntity(e2);
33+
}
34+
}
2935

3036
AddWidget(new Selector(new Vec2(500), new List<string> { "Un", "Deux", "SUPPPPERRR TROIS !" }, "basic")).ValueChanged +=
3137
(_, args) => Console.WriteLine(args.OldValue + " => " + args.NewValue);
@@ -38,4 +44,19 @@ public MyScene()
3844
}, "idle", flipX: true));
3945
AddEntity(e3);
4046
}
47+
48+
public override void OpenScene()
49+
{
50+
base.OpenScene();
51+
Window!.CameraManager.FollowEntity = Entities[0];
52+
}
53+
54+
public override void Update(float delta)
55+
{
56+
base.Update(delta);
57+
58+
if (InputManager.IsKeyPressed(Key.A))
59+
Window!.CameraManager.Mode =
60+
Window!.CameraManager.Mode == CameraMode.Follow ? CameraMode.Basic : CameraMode.Follow;
61+
}
4162
}

SharpEngine/Component/RectComponent.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Numerics;
22
using Raylib_cs;
33
using SharpEngine.Math;
4+
using SharpEngine.Renderer;
45
using Color = SharpEngine.Utils.Color;
56

67
namespace SharpEngine.Component;
@@ -29,6 +30,11 @@ public class RectComponent: Component
2930
/// Offset of Rectangle
3031
/// </summary>
3132
public Vec2 Offset { get; set; }
33+
34+
/// <summary>
35+
/// Offset of ZLayer of Rectangle
36+
/// </summary>
37+
public int ZLayerOffset { get; set; }
3238

3339
private TransformComponent? _transform;
3440

@@ -39,12 +45,14 @@ public class RectComponent: Component
3945
/// <param name="size">Rectangle Size</param>
4046
/// <param name="displayed">If displayed</param>
4147
/// <param name="offset">Rectangle Offset</param>
42-
public RectComponent(Color color, Vec2 size, bool displayed = true, Vec2? offset = null)
48+
/// <param name="zLayerOffset">Offset of zLayer</param>
49+
public RectComponent(Color color, Vec2 size, bool displayed = true, Vec2? offset = null, int zLayerOffset = 0)
4350
{
4451
Color = color;
4552
Size = size;
4653
Displayed = displayed;
4754
Offset = offset ?? Vec2.Zero;
55+
ZLayerOffset = zLayerOffset;
4856
}
4957

5058
/// <inheritdoc />
@@ -64,7 +72,7 @@ public override void Draw()
6472
var size = Size * _transform.Scale;
6573
var position = _transform.GetTransformedPosition(Offset);
6674

67-
Raylib.DrawRectanglePro(new Rectangle(position.X, position.Y, size.X, size.Y), new Vector2(size.X / 2, size.Y / 2),
68-
_transform.Rotation, Color);
75+
DMRender.DrawRectangle(new Rect(position.X, position.Y, size.X, size.Y), size / 2, _transform.Rotation, Color,
76+
InstructionSource.Entity, _transform.ZLayer + ZLayerOffset);
6977
}
7078
}

SharpEngine/Component/SpriteComponent.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Numerics;
22
using Raylib_cs;
33
using SharpEngine.Math;
4+
using SharpEngine.Renderer;
45
using Color = SharpEngine.Utils.Color;
56

67
namespace SharpEngine.Component;
@@ -34,6 +35,11 @@ public class SpriteComponent: Component
3435
/// If Sprite is Flip Vertically
3536
/// </summary>
3637
public bool FlipY { get; set; }
38+
39+
/// <summary>
40+
/// Offset of ZLayer of Sprite
41+
/// </summary>
42+
public int ZLayerOffset { get; set; }
3743

3844
private TransformComponent? _transformComponent;
3945

@@ -45,13 +51,16 @@ public class SpriteComponent: Component
4551
/// <param name="offset">Offset (Vec2(0))</param>
4652
/// <param name="flipX">If Sprite is Flip Horizontally</param>
4753
/// <param name="flipY">If Sprite is Flip Vertically</param>
48-
public SpriteComponent(string texture, bool displayed = true, Vec2? offset = null, bool flipX = false, bool flipY = false)
54+
/// <param name="zLayerOffset">Offset of zLayer</param>
55+
public SpriteComponent(string texture, bool displayed = true, Vec2? offset = null, bool flipX = false,
56+
bool flipY = false, int zLayerOffset = 0)
4957
{
5058
Texture = texture;
5159
Displayed = displayed;
5260
Offset = offset ?? Vec2.Zero;
5361
FlipX = flipX;
5462
FlipY = flipY;
63+
ZLayerOffset = zLayerOffset;
5564
}
5665

5766
/// <inheritdoc />
@@ -73,13 +82,14 @@ public override void Draw()
7382

7483
var texture = window.TextureManager.GetTexture(Texture);
7584
var position = _transformComponent.GetTransformedPosition(Offset);
76-
Raylib.DrawTexturePro(
85+
DMRender.DrawTexture(
7786
texture,
78-
new Rectangle(0, 0, FlipX ? -texture.width : texture.width, FlipY ? -texture.height : texture.height),
79-
new Rectangle(position.X, position.Y, texture.width * _transformComponent.Scale.X,
87+
new Rect(0, 0, FlipX ? -texture.width : texture.width, FlipY ? -texture.height : texture.height),
88+
new Rect(position.X, position.Y, texture.width * _transformComponent.Scale.X,
8089
texture.height * _transformComponent.Scale.Y),
81-
new Vector2(texture.width / 2f * _transformComponent.Scale.X,
90+
new Vec2(texture.width / 2f * _transformComponent.Scale.X,
8291
texture.height / 2f * _transformComponent.Scale.Y),
83-
_transformComponent.Rotation, Color.White);
92+
_transformComponent.Rotation, Color.White, InstructionSource.Entity,
93+
_transformComponent.ZLayer + ZLayerOffset);
8494
}
8595
}

SharpEngine/Component/SpriteSheetComponent.cs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Numerics;
33
using Raylib_cs;
44
using SharpEngine.Math;
5+
using SharpEngine.Renderer;
56
using SharpEngine.Utils;
67
using Color = SharpEngine.Utils.Color;
78

@@ -46,6 +47,11 @@ public class SpriteSheetComponent: Component
4647
/// If Sprite is Flip Vertically
4748
/// </summary>
4849
public bool FlipY { get; set; }
50+
51+
/// <summary>
52+
/// Offset of ZLayer of Sprite Sheet
53+
/// </summary>
54+
public int ZLayerOffset { get; set; }
4955

5056
/// <summary>
5157
/// Current animation
@@ -78,8 +84,9 @@ public string Anim
7884
/// <param name="offset">Offset</param>
7985
/// <param name="flipX">If Sprite is Flip Horizontally</param>
8086
/// <param name="flipY">If Sprite is Flip Vertically</param>
87+
/// <param name="zLayerOffset">Offset of zLayer</param>
8188
public SpriteSheetComponent(string texture, Vec2 spriteSize, List<Animation> animations, string currentAnim = "",
82-
bool displayed = true, Vec2? offset = null, bool flipX = false, bool flipY = false)
89+
bool displayed = true, Vec2? offset = null, bool flipX = false, bool flipY = false, int zLayerOffset = 0)
8390
{
8491
Texture = texture;
8592
SpriteSize = spriteSize;
@@ -89,6 +96,7 @@ public SpriteSheetComponent(string texture, Vec2 spriteSize, List<Animation> ani
8996
Offset = offset ?? Vec2.Zero;
9097
FlipX = flipX;
9198
FlipY = flipY;
99+
ZLayerOffset = zLayerOffset;
92100
}
93101

94102
/// <summary>
@@ -147,14 +155,14 @@ public override void Draw()
147155

148156
var texture = window.TextureManager.GetTexture(Texture);
149157
var position = _transform.GetTransformedPosition(Offset);
150-
Raylib.DrawTexturePro(
158+
DMRender.DrawTexture(
151159
texture,
152-
new Rectangle(
153-
SpriteSize.X * (anim.Value.Indices[_currentImage] % (texture.width / SpriteSize.X)),
154-
SpriteSize.Y * (int)(anim.Value.Indices[_currentImage] / (int)(texture.width / SpriteSize.X)),
160+
new Rect(
161+
SpriteSize.X * (anim.Value.Indices[_currentImage] % (texture.width / SpriteSize.X)),
162+
SpriteSize.Y * (int)(anim.Value.Indices[_currentImage] / (int)(texture.width / SpriteSize.X)),
155163
FlipX ? -SpriteSize.X : SpriteSize.X, FlipY ? -SpriteSize.Y : SpriteSize.Y),
156-
new Rectangle(position.X, position.Y, SpriteSize.X * _transform.Scale.X,SpriteSize.Y * _transform.Scale.Y),
157-
new Vector2(SpriteSize.X / 2f * _transform.Scale.X, SpriteSize.Y / 2f * _transform.Scale.Y),
158-
_transform.Rotation, Color.White);
164+
new Rect(position.X, position.Y, SpriteSize.X * _transform.Scale.X, SpriteSize.Y * _transform.Scale.Y),
165+
new Vec2(SpriteSize.X / 2f * _transform.Scale.X, SpriteSize.Y / 2f * _transform.Scale.Y),
166+
_transform.Rotation, Color.White, InstructionSource.Entity, _transform.ZLayer + ZLayerOffset);
159167
}
160168
}

SharpEngine/Component/TextComponent.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Raylib_cs;
22
using SharpEngine.Math;
3+
using SharpEngine.Renderer;
34
using Color = SharpEngine.Utils.Color;
45

56
namespace SharpEngine.Component;
@@ -39,6 +40,11 @@ public class TextComponent: Component
3940
/// </summary>
4041
public int? FontSize;
4142

43+
/// <summary>
44+
/// Offset of ZLayer of Text
45+
/// </summary>
46+
public int ZLayerOffset { get; set; }
47+
4248
private TransformComponent? _transformComponent;
4349

4450
/// <summary>
@@ -50,15 +56,17 @@ public class TextComponent: Component
5056
/// <param name="displayed">If Text is Displayed (true)</param>
5157
/// <param name="fontSize">Font Size (null)</param>
5258
/// <param name="offset">Offset (Vec2(0))</param>
59+
/// <param name="zLayerOffset">Offset of zLayer</param>
5360
public TextComponent(string text, string font = "RAYLIB_DEFAULT", Color? color = null, bool displayed = true,
54-
int? fontSize = null, Vec2? offset = null)
61+
int? fontSize = null, Vec2? offset = null, int zLayerOffset = 0)
5562
{
5663
Text = text;
5764
Font = font;
5865
Color = color ?? Color.Black;
5966
Displayed = displayed;
6067
Offset = offset ?? Vec2.Zero;
6168
FontSize = fontSize;
69+
ZLayerOffset = zLayerOffset;
6270
}
6371

6472
/// <inheritdoc />
@@ -82,7 +90,8 @@ public override void Draw()
8290
var fontSize = FontSize ?? font.baseSize;
8391
var position = _transformComponent.GetTransformedPosition(Offset);
8492
var textSize = Raylib.MeasureTextEx(font, Text, fontSize, 2);
85-
86-
Raylib.DrawTextPro(font, Text, position, textSize / 2, _transformComponent.Rotation, fontSize, 2, Color);
93+
94+
DMRender.DrawText(font, Text, position, textSize / 2, _transformComponent.Rotation, fontSize, 2, Color,
95+
InstructionSource.Entity, _transformComponent.ZLayer + ZLayerOffset);
8796
}
8897
}

SharpEngine/Component/TransformComponent.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,25 @@ public class TransformComponent: Component
2121
/// Rotation of Component
2222
/// </summary>
2323
public float Rotation { get; set; }
24+
25+
/// <summary>
26+
/// ZLayer of Component
27+
/// </summary>
28+
public int ZLayer { get; set; }
2429

2530
/// <summary>
2631
/// Create TransformComponent
2732
/// </summary>
2833
/// <param name="position">Position (Vec2(0))</param>
2934
/// <param name="scale">Scale (Vec2(1))</param>
3035
/// <param name="rotation">Rotation (0)</param>
31-
public TransformComponent(Vec2? position = null, Vec2? scale = null, float rotation = 0)
36+
/// <param name="zLayer">ZLayer (0)</param>
37+
public TransformComponent(Vec2? position = null, Vec2? scale = null, float rotation = 0, int zLayer = 0)
3238
{
3339
Position = position ?? Vec2.Zero;
3440
Scale = scale ?? Vec2.One;
3541
Rotation = rotation;
42+
ZLayer = zLayer;
3643
}
3744

3845
/// <summary>

0 commit comments

Comments
 (0)