diff --git a/Source/Render/Primitives/RenderPrimitive.cpp b/Source/Render/Primitives/RenderPrimitive.cpp index 43ca397..24a8216 100644 --- a/Source/Render/Primitives/RenderPrimitive.cpp +++ b/Source/Render/Primitives/RenderPrimitive.cpp @@ -77,3 +77,33 @@ RenderCommand* RenderCommand::FreeVertices() { return this; } + +// OFFSET: 0x00569360 +// FUNCTION: fn_02255 +RenderPrimitive& RenderPrimitive::operator=(const RenderPrimitive& other) { + std::memcpy(this->quad, other.quad, sizeof(this->quad)); + return *this; +} + +// OFFSET: 0x00569380 +// FUNCTION: fn_02256 +void RenderCommand::AllocateTriangles(std::uint32_t triangleCount) { + const std::uint32_t vertexCount = triangleCount * 3; + auto* vertices = new RenderVertex[vertexCount]; + for (std::uint32_t i = 0; i < vertexCount; ++i) { + vertices[i].Reset(); + } + this->vertices = vertices; +} + +// OFFSET: 0x00569470 + +// OFFSET: 0x00569580 +// FUNCTION: fn_02264 +void RenderCommand::SetPosition(std::uint32_t index, const float* position) { + RenderVertex& vertex = this->vertices[index]; + vertex.x = position[0]; + vertex.y = position[1]; + vertex.z = position[2]; + vertex.rhw = position[3]; +} diff --git a/Source/Render/Primitives/RenderPrimitive.h b/Source/Render/Primitives/RenderPrimitive.h index c724f08..d7a9863 100644 --- a/Source/Render/Primitives/RenderPrimitive.h +++ b/Source/Render/Primitives/RenderPrimitive.h @@ -56,6 +56,8 @@ struct RenderPrimitive : RenderCommand { RenderPrimitive& operator=(const RenderPrimitive& other); }; +void DrawPrimitive(RenderCommand* primitive); + static_assert(sizeof(RenderVertex) == 32); #if defined(_WIN32) && !defined(_WIN64) static_assert(sizeof(RenderCommand) == 40);