diff options
Diffstat (limited to 'source/Player.cpp')
-rw-r--r-- | source/Player.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
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<bool> 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<float>{ 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<const RenderObject> Player::GetRenderObjects() const { + return { &renderObject, 1 }; } void Player::HandleKeyInput(int key, int action) { |