Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion include/game/components.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include "components/physics/velocity.h"
#include "components/render/animator.h"
#include "components/render/camera.h"
#include "components/render/intent_handle.h"
#include "components/render/material.h"
#include "components/render/sprite.h"
#include "components/render/text.h"
Expand Down
15 changes: 0 additions & 15 deletions include/game/components/render/intent_handle.h

This file was deleted.

26 changes: 6 additions & 20 deletions include/game/components/render/sprite.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#pragma once
#include "maths/point.h"
#include "system/asset_manager.h"

//
namespace Game::Render
Expand All @@ -15,27 +17,11 @@ namespace Game::Render

struct Sprite
{
char *texture; // Texture name to uniform in
Rect src_rect; // UV from sprite to sample from.
Rect dst_rect; // UV applied on scene (Usually center {-halfX,-halfY,halfX,halfY})
uint32_t layer; // Layer to render
uint32_t order; // Order of render in layer
const AssetsRecord *sp = nullptr;
Math::Point pos[4]{};
uint32_t layer = 0; // Layer to render
uint32_t order = 0; // Order of render in layer
bool flipX = false; // Flip Image in X-axis
bool flipY = false; // Flip Image in Y-axis
uint32_t id;

Sprite() : texture(nullptr), layer(0), order(0)
{}

explicit Sprite(char *texture, const Rect src_rect) : texture(texture), src_rect(src_rect), layer(0), order(0)
{
const float w = src_rect.u1 - src_rect.u0;
const float h = src_rect.v1 - src_rect.v0;
dst_rect = {-w / 2, -h / 2, w / 2, h / 2};
}

explicit Sprite(char *texture, const Rect src_rect, const Rect dst_rect) :
texture(texture), src_rect(src_rect), dst_rect(dst_rect), layer(0), order(0)
{}
};
} // namespace Game::Render
4 changes: 2 additions & 2 deletions include/game/systems.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@
#include "game/systems/animation_system.h"
#include "systems/bullethell/shaking_system.h"
// Render Intent
#include "systems/render/draw_sprite.h"
#include "systems/render/draw_triangle.h"
#include "systems/render/set_camera.h"
#include "systems/render/sprite_intent.h"
#include "systems/render/text_intent.h"
// Test
#include "systems/test/spin_camera.h"
#include "systems/test/spin_triangle.h"
#include "systems/test/spin_sprite.h"

34 changes: 34 additions & 0 deletions include/game/systems/render/draw_sprite.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once
#include "draw_triangle.h"
#include "game/components/render/sprite.h"
#include "system.h"

namespace Game::Render
{
template<typename T>
void draw_sprite([[maybe_unused]] T &syscall, System::ECS::Query<Sprite, Material, Transform> &query)
{
for (auto &[id, comp]: query)
{
const auto &material = comp.get<Material>();
if (!material.visible)
continue;

const auto &sprite = comp.get<Sprite>();
const auto &tra = comp.get<Transform>();

auto &intent = System::Render::IntentStorage::allocate_packed();
intent.kind = System::Render::DrawKind::KIND_SPRITE;

Helpers::fill_common(intent, material, tra, (uint8_t) sprite.layer);
intent.common.sp = sprite.sp;
intent.common.info.sp_id = ASSET_INDEX(sprite.sp->id);

intent.special = System::Render::SpriteDrawDesc{
.points = {sprite.pos[0], sprite.pos[1], sprite.pos[2], sprite.pos[3]},
.flipX = sprite.flipX,
.flipY = sprite.flipY
};
}
}
} // namespace Game::Render
1 change: 0 additions & 1 deletion include/game/systems/render/set_camera.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ namespace Game::Render
intent_camera.scaleY = scaleY;
intent_camera.zoom = zoom;
intent_camera.rotation = rotation;
LOG_INFO("Camera set");
}
} // namespace Game::Render
14 changes: 0 additions & 14 deletions include/game/systems/render/sprite_intent.h

This file was deleted.

3 changes: 1 addition & 2 deletions include/game/systems/render/text_intent.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
#pragma once

#include "game/components/render/intent_handle.h"
#include "game/components/render/text.h"
#include "system.h"

namespace Game::Render
{
template<typename T>
void text_intent([[maybe_unused]] T &syscall, System::ECS::Query<Text, IntentHandle> &query)
void text_intent([[maybe_unused]] T &syscall, System::ECS::Query<Text> &query)
{
// Rewrite lmaoo
(void) query;
Expand Down
17 changes: 17 additions & 0 deletions include/game/systems/test/spin_sprite.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

extern "C" long double get_delta_time();

namespace Game::Render
{
template<typename T>
void spin_sprite([[maybe_unused]] T &syscall, System::ECS::Query<Game::Render::Sprite, Game::Render::Transform, Physics::Rotation> &query)
{
for (auto &entry: query)
{
auto &transform = entry.get<Game::Render::Transform>();
auto &rotation = entry.get<Physics::Rotation>();
transform.angleZ += static_cast<float>(rotation.angleZ * 1.0f * get_delta_time());
}
}
} // namespace Game::Render
16 changes: 0 additions & 16 deletions include/game/systems/test/spin_triangle.h

This file was deleted.

Loading