#pragma once #include "Drawable.h" #include #include void Drawable::Draw(Graphics& gfx, Logger& logger) const noexcept { /*for (auto& b : binds) { b->Bind(gfx, logger); }*/ gfx.DrawIndexed(pIndexBuffer->GetCount()); }; void Drawable::ExecuteBind(Graphics& gfx, Logger& logger) noexcept { for (auto& b : binds) { b->Bind(gfx, logger); } for (auto& b : GetStaticBinds()) { b->Bind(gfx, logger); } }; void Drawable::AddBind(std::unique_ptr bind) noexcept { binds.push_back(std::move(bind)); } void Drawable::AddIndexBuffer(std::unique_ptr ibuf) noexcept { assert("Attempting to add index buffer a second time" && pIndexBuffer == nullptr); pIndexBuffer = ibuf.get(); binds.push_back(std::move(ibuf)); } void Drawable::SetCamera( Logger& logger, DirectX::XMVECTOR eyePosition, DirectX::XMVECTOR focusPosition, DirectX::XMVECTOR upDirection) noexcept { using namespace DirectX; this->eyePosition = eyePosition; this->focusPosition = focusPosition; this->upDirection = upDirection; /*this->upDirection = XMVectorSet(0.0f, 1.0f, 0.0f, 1.0f); this->focusPosition = XMVectorZero(); this->eyePosition = XMVectorSet(20.0f * sinValue, 10.0f, -20.0f * cosValue, 1.0f); XMFLOAT4 upDirection4; XMFLOAT4 eyePosition4; XMFLOAT4 focusPosition4; XMStoreFloat4(&upDirection4, this->upDirection); XMStoreFloat4(&eyePosition4, this->eyePosition); XMStoreFloat4(&focusPosition4, this->focusPosition); logger.PutLog("Drawable::SetCamera", "upDirection: {" + std::to_string(upDirection4.x) + ", " + std::to_string(upDirection4.y) + ", " + std::to_string(upDirection4.z) + ", " + std::to_string(upDirection4.w) + "}"); logger.PutLog("Drawable::SetCamera", "eyePosition: {" + std::to_string(eyePosition4.x) + ", " + std::to_string(eyePosition4.y) + ", " + std::to_string(eyePosition4.z) + ", " + std::to_string(eyePosition4.w) + "}"); logger.PutLog("Drawable::SetCamera", "focusPosition: {" + std::to_string(focusPosition4.x) + ", " + std::to_string(focusPosition4.y) + ", " + std::to_string(focusPosition4.z) + ", " + std::to_string(focusPosition4.w) + "}");*/ };