mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
Split up sprite and circle renderer component
This commit is contained in:
@@ -875,10 +875,12 @@ namespace GlitchyEngine.Renderer
|
||||
|
||||
public static void DrawSprite(Matrix transform, SpriteRendererComponent* spriteRenderer, uint32 entityId)
|
||||
{
|
||||
if (spriteRenderer.IsCircle)
|
||||
DrawCircle(transform, spriteRenderer.Sprite.Get() ?? s_whiteTexture, spriteRenderer.Color, 1.0f, spriteRenderer.UvTransform, entityId);
|
||||
else
|
||||
DrawQuad(transform, spriteRenderer.Sprite.Get() ?? s_whiteTexture, spriteRenderer.Color, spriteRenderer.UvTransform, entityId);
|
||||
DrawQuad(transform, spriteRenderer.Sprite.Get() ?? s_whiteTexture, spriteRenderer.Color, spriteRenderer.UvTransform, entityId);
|
||||
}
|
||||
|
||||
public static void DrawCircle(Matrix transform, CircleRendererComponent* spriteRenderer, uint32 entityId)
|
||||
{
|
||||
DrawCircle(transform, spriteRenderer.Sprite.Get() ?? s_whiteTexture, spriteRenderer.Color, spriteRenderer.InnerRadius, spriteRenderer.UvTransform, entityId);
|
||||
}
|
||||
|
||||
// Textured quad pivot
|
||||
|
||||
+20
-7
@@ -22,7 +22,7 @@ namespace GlitchyEngine.World
|
||||
{
|
||||
public readonly UUID ID;
|
||||
|
||||
/// Create aa new IDComponent with a random UUID.
|
||||
/// Create a new IDComponent with a random UUID.
|
||||
public this()
|
||||
{
|
||||
ID = UUID();
|
||||
@@ -52,7 +52,25 @@ namespace GlitchyEngine.World
|
||||
public ColorRGBA Color = .White;
|
||||
public Vector4 UvTransform = .(0, 0, 1, 1);
|
||||
|
||||
public bool IsCircle = false;
|
||||
public this()
|
||||
{
|
||||
}
|
||||
|
||||
public this(ColorRGBA color)
|
||||
{
|
||||
Color = color;
|
||||
}
|
||||
}
|
||||
|
||||
[Component("Circle Renderer")]
|
||||
struct CircleRendererComponent
|
||||
{
|
||||
public AssetHandle<Texture2D> Sprite = .Invalid;
|
||||
|
||||
public ColorRGBA Color = .White;
|
||||
public Vector4 UvTransform = .(0, 0, 1, 1);
|
||||
|
||||
public float InnerRadius = 0.0f;
|
||||
|
||||
public this()
|
||||
{
|
||||
@@ -62,11 +80,6 @@ namespace GlitchyEngine.World
|
||||
{
|
||||
Color = color;
|
||||
}
|
||||
|
||||
/*public void Dispose()
|
||||
{
|
||||
_sprite?.ReleaseRef();
|
||||
}*/
|
||||
}
|
||||
|
||||
struct SceneCamera : Camera
|
||||
+7
-9
@@ -8,15 +8,13 @@ namespace GlitchyEngine.World
|
||||
public StringView Name
|
||||
{
|
||||
get => _name;
|
||||
set mut => SetName(value);
|
||||
}
|
||||
|
||||
public void SetName(StringView name) mut
|
||||
{
|
||||
if (_name == null)
|
||||
_name = new String(name);
|
||||
else
|
||||
_name.Set(name);
|
||||
set mut
|
||||
{
|
||||
if (_name == null)
|
||||
_name = new String(value);
|
||||
else
|
||||
_name.Set(value);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose() mut
|
||||
@@ -94,6 +94,7 @@ namespace GlitchyEngine.World
|
||||
CopyComponents<MeshComponent>(this, target);
|
||||
CopyComponents<EditorComponent>(this, target);
|
||||
CopyComponents<SpriteRendererComponent>(this, target);
|
||||
CopyComponents<CircleRendererComponent>(this, target);
|
||||
CopyComponents<CameraComponent>(this, target);
|
||||
CopyComponents<NativeScriptComponent>(this, target);
|
||||
CopyComponents<LightComponent>(this, target);
|
||||
@@ -309,6 +310,11 @@ namespace GlitchyEngine.World
|
||||
Renderer2D.DrawSprite(transform.WorldTransform, sprite, entity.Index);
|
||||
}
|
||||
|
||||
for (var (entity, transform, circle) in _ecsWorld.Enumerate<TransformComponent, CircleRendererComponent>())
|
||||
{
|
||||
Renderer2D.DrawCircle(transform.WorldTransform, circle, entity.Index);
|
||||
}
|
||||
|
||||
Renderer2D.EndScene();
|
||||
|
||||
// Gamma correct composit target and draw it into viewport
|
||||
@@ -372,6 +378,11 @@ namespace GlitchyEngine.World
|
||||
Renderer2D.DrawSprite(transform.WorldTransform, sprite, entity.Index);
|
||||
}
|
||||
|
||||
for (var (entity, transform, circle) in _ecsWorld.Enumerate<TransformComponent, CircleRendererComponent>())
|
||||
{
|
||||
Renderer2D.DrawCircle(transform.WorldTransform, circle, entity.Index);
|
||||
}
|
||||
|
||||
Renderer2D.EndScene();
|
||||
|
||||
Renderer2D.BeginScene(camera, .BackToFront);
|
||||
@@ -406,7 +417,7 @@ namespace GlitchyEngine.World
|
||||
entity.AddComponent<TransformComponent>();
|
||||
|
||||
let nameComponent = entity.AddComponent<NameComponent>();
|
||||
nameComponent.SetName(name.IsEmpty ? "Entity" : name);
|
||||
nameComponent.Name = (name.IsEmpty ? "Entity" : name);
|
||||
|
||||
// If no id is given generate a random one.
|
||||
IDComponent idComponent = (id == default) ? IDComponent() : IDComponent(id);
|
||||
|
||||
@@ -87,10 +87,14 @@ class SceneSerializer
|
||||
SerializeComponent<SpriteRendererComponent>(writer, entity, "SpriteRendererComponent", scope (component) =>
|
||||
{
|
||||
Serialize.Value(writer, "Color", component.Color);
|
||||
Serialize.Value(writer, "IsCircle", component.IsCircle);
|
||||
|
||||
Serialize.Value(writer, "Sprite", component.Sprite);
|
||||
|
||||
Serialize.Value(writer, "UvTransform", component.UvTransform);
|
||||
});
|
||||
SerializeComponent<CircleRendererComponent>(writer, entity, "CircleRendererComponent", scope (component) =>
|
||||
{
|
||||
Serialize.Value(writer, "Color", component.Color);
|
||||
Serialize.Value(writer, "InnerRadius", component.InnerRadius);
|
||||
Serialize.Value(writer, "Sprite", component.Sprite);
|
||||
Serialize.Value(writer, "UvTransform", component.UvTransform);
|
||||
});
|
||||
|
||||
@@ -325,7 +329,7 @@ class SceneSerializer
|
||||
|
||||
Deserialize.Value(reader, "Name", out name);
|
||||
|
||||
component.SetName(name);
|
||||
component.Name = name;
|
||||
|
||||
delete name;
|
||||
|
||||
@@ -336,12 +340,21 @@ class SceneSerializer
|
||||
{
|
||||
Try!(Deserialize.Value(reader, "Color", out component.Color));
|
||||
reader.EntryEnd();
|
||||
Try!(Deserialize.Value(reader, "IsCircle", out component.IsCircle));
|
||||
reader.EntryEnd();
|
||||
|
||||
Try!(Deserialize.Value(reader, "Sprite", out component.Sprite));
|
||||
reader.EntryEnd();
|
||||
Try!(Deserialize.Value(reader, "UvTransform", out component.UvTransform));
|
||||
|
||||
return .Ok;
|
||||
}));
|
||||
case "CircleRendererComponent":
|
||||
Try!(DeserializeComponent<CircleRendererComponent>(reader, entity, scope (component) =>
|
||||
{
|
||||
Try!(Deserialize.Value(reader, "Color", out component.Color));
|
||||
reader.EntryEnd();
|
||||
Try!(Deserialize.Value(reader, "InnerRadius", out component.InnerRadius));
|
||||
reader.EntryEnd();
|
||||
Try!(Deserialize.Value(reader, "Sprite", out component.Sprite));
|
||||
reader.EntryEnd();
|
||||
Try!(Deserialize.Value(reader, "UvTransform", out component.UvTransform));
|
||||
|
||||
return .Ok;
|
||||
|
||||
Reference in New Issue
Block a user