From f54370de7e4214cb7813d26b1a39a8f6e42b7b56 Mon Sep 17 00:00:00 2001 From: hnOsmium0001 Date: Mon, 25 Apr 2022 20:22:07 -0700 Subject: Initial work on rendering sprites to screen --- source/Player.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'source/Player.cpp') diff --git a/source/Player.cpp b/source/Player.cpp index f56d6ea..f97793e 100644 --- a/source/Player.cpp +++ b/source/Player.cpp @@ -19,8 +19,11 @@ std::span PlayerKeyBinds::GetKeyStatusArray() { } Player::Player(GameWorld* world, int id) - : GameObject(world) + : GameObject(KD_Player, world) , mId{ id } { + renderObject.SetMaterial(gDefaultMaterial.Get()); + renderObject.SetFormat(gVformatStandardPacked.Get(), Tags::IT_16Bit); + renderObject.RebuildIfNecessary(); } void Player::Awaken() { @@ -32,6 +35,8 @@ void Player::Resleep() { } void Player::Update() { + using namespace Tags; + if (keybinds.pressedLeft) { } if (keybinds.pressedRight) { @@ -40,6 +45,38 @@ void Player::Update() { // TODO jump controller // TODO attack controller + + // TODO set default sprite to get rid of this check + if (sprite.GetDefinition()) { + int prevFrame = sprite.GetFrame(); + sprite.PlayFrame(); + int currFrame = sprite.GetFrame(); + if (prevFrame != currFrame) { + uint16_t indices[6]; + Index_U16::Assign(indices, 0); + renderObject.GetIndexBuffer()->Upload((const std::byte*)indices, IT_16Bit, std::size(indices)); + + Vertex_PTC vertices[4]; + Vertex_PTC::Assign(vertices, Rect{ GetPos(), sprite.GetDefinition()->GetBoundingBox() }); + Vertex_PTC::Assign(vertices, 0.0f); + Vertex_PTC::Assign(vertices, RgbaColor(255, 255, 255)); + Vertex_PTC::Assign(vertices, sprite.GetFrameSubregion()); + renderObject.GetVertexBufferBindings().bindings[0]->Upload((const std::byte*)vertices, sizeof(vertices)); + } + } +} + +Material* Player::GetMaterial() const { + return renderObject.GetMaterial(); +} + +void Player::SetMaterial(Material* material) { + renderObject.SetMaterial(material); + renderObject.RebuildIfNecessary(); +} + +std::span Player::GetRenderObjects() const { + return { &renderObject, 1 }; } void Player::HandleKeyInput(int key, int action) { -- cgit v1.2.3-70-g09d2