Commit e8a59d8c authored by chili's avatar chili
Browse files

applied transform before node transform

parent e7e22eda
...@@ -66,20 +66,20 @@ DirectX::XMMATRIX Mesh::GetTransformXM() const noexcept ...@@ -66,20 +66,20 @@ DirectX::XMMATRIX Mesh::GetTransformXM() const noexcept
// Node // Node
Node::Node( const std::string& name,std::vector<Mesh*> meshPtrs,const DirectX::XMMATRIX& transform ) noxnd Node::Node( const std::string& name,std::vector<Mesh*> meshPtrs,const DirectX::XMMATRIX& transform_in ) noxnd
: :
meshPtrs( std::move( meshPtrs ) ), meshPtrs( std::move( meshPtrs ) ),
name( name ) name( name )
{ {
dx::XMStoreFloat4x4( &baseTransform,transform ); dx::XMStoreFloat4x4( &transform,transform_in );
dx::XMStoreFloat4x4( &appliedTransform,dx::XMMatrixIdentity() ); dx::XMStoreFloat4x4( &appliedTransform,dx::XMMatrixIdentity() );
} }
void Node::Draw( Graphics& gfx,DirectX::FXMMATRIX accumulatedTransform ) const noxnd void Node::Draw( Graphics& gfx,DirectX::FXMMATRIX accumulatedTransform ) const noxnd
{ {
const auto built = const auto built =
dx::XMLoadFloat4x4( &baseTransform ) * dx::XMLoadFloat4x4( &appliedTransform ) *
dx::XMLoadFloat4x4( &appliedTransform ) * dx::XMLoadFloat4x4( &transform ) *
accumulatedTransform; accumulatedTransform;
for( const auto pm : meshPtrs ) for( const auto pm : meshPtrs )
{ {
......
...@@ -45,7 +45,7 @@ private: ...@@ -45,7 +45,7 @@ private:
std::string name; std::string name;
std::vector<std::unique_ptr<Node>> childPtrs; std::vector<std::unique_ptr<Node>> childPtrs;
std::vector<Mesh*> meshPtrs; std::vector<Mesh*> meshPtrs;
DirectX::XMFLOAT4X4 baseTransform; DirectX::XMFLOAT4X4 transform;
DirectX::XMFLOAT4X4 appliedTransform; DirectX::XMFLOAT4X4 appliedTransform;
}; };
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment