summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2011-06-14 23:37:07 +0000
committerleo2011-06-14 23:37:07 +0000
commit9ed269225a5ad6b1be4da119a677c0306e346a05 (patch)
tree5bb9b0314643b4fcc839140dbf70e3a60ab97ddc
parentace85d99c8a924686c6dbcdc13e91dbd8078462d (diff)
Support torso offsets in the Minifig Wizard.
git-svn-id: http://svn.leocad.org/branches/leocad-0.75@971 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--common/minifig.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/common/minifig.cpp b/common/minifig.cpp
index a95d886..984c3c3 100644
--- a/common/minifig.cpp
+++ b/common/minifig.cpp
@@ -1051,15 +1051,15 @@ void MinifigWizard::OnDraw ()
void MinifigWizard::Calculate()
{
float HeadOffset = 0.0f;
- Matrix44 Mat, Mat2;
+ Matrix44 Root, Mat, Mat2;
- Mat.LoadIdentity();
- Mat.SetTranslation(Vector3(0, 0, 2.88f));
- m_Matrices[LC_MFW_TORSO] = Mat;
+ Root.LoadIdentity();
+ Root.SetTranslation(Vector3(0, 0, 2.88f));
+ m_Matrices[LC_MFW_TORSO] = Mul(mSettings[LC_MFW_TORSO][GetSelectionIndex(LC_MFW_TORSO)].Offset, Root);
if (m_Info[LC_MFW_NECK])
{
- m_Matrices[LC_MFW_NECK] = Mul(mSettings[LC_MFW_NECK][GetSelectionIndex(LC_MFW_NECK)].Offset, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_NECK] = Mul(mSettings[LC_MFW_NECK][GetSelectionIndex(LC_MFW_NECK)].Offset, Root);
HeadOffset = 0.08f;
}
@@ -1068,7 +1068,7 @@ void MinifigWizard::Calculate()
Mat.CreateFromAxisAngle(Vector3(0, 0, 1), -LC_DTOR * m_Angles[LC_MFW_HEAD]);
Mat.SetTranslation(Vector3(0.0f, 0.0f, 0.96f + HeadOffset));
Mat = Mul(mSettings[LC_MFW_HEAD][GetSelectionIndex(LC_MFW_HEAD)].Offset, Mat);
- m_Matrices[LC_MFW_HEAD] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_HEAD] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_HAT])
@@ -1090,7 +1090,7 @@ void MinifigWizard::Calculate()
Mat = Mul(mSettings[LC_MFW_RIGHT_ARM][GetSelectionIndex(LC_MFW_RIGHT_ARM)].Offset, Mat);
Mat = Mul(Mat, Mat2);
Mat.SetTranslation(Vector3(-0.62f, 0.0f, -0.32f));
- m_Matrices[LC_MFW_RIGHT_ARM] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_RIGHT_ARM] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_RIGHT_HAND])
@@ -1123,7 +1123,7 @@ void MinifigWizard::Calculate()
Mat = Mul(mSettings[LC_MFW_LEFT_ARM][GetSelectionIndex(LC_MFW_LEFT_ARM)].Offset, Mat);
Mat = Mul(Mat, Mat2);
Mat.SetTranslation(Vector3(0.62f, 0.0f, -0.32f));
- m_Matrices[LC_MFW_LEFT_ARM] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_LEFT_ARM] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_LEFT_HAND])
@@ -1149,7 +1149,7 @@ void MinifigWizard::Calculate()
Mat.LoadIdentity();
Mat.SetTranslation(Vector3(0, 0, -1.28f));
Mat = Mul(mSettings[LC_MFW_HIPS][GetSelectionIndex(LC_MFW_HIPS)].Offset, Mat);
- m_Matrices[LC_MFW_HIPS] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_HIPS] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_RIGHT_LEG])
@@ -1157,7 +1157,7 @@ void MinifigWizard::Calculate()
Mat.CreateFromAxisAngle(Vector3(1, 0, 0), -LC_DTOR * m_Angles[LC_MFW_RIGHT_LEG]);
Mat.SetTranslation(Vector3(0, 0, -1.76f));
Mat = Mul(mSettings[LC_MFW_RIGHT_LEG][GetSelectionIndex(LC_MFW_RIGHT_LEG)].Offset, Mat);
- m_Matrices[LC_MFW_RIGHT_LEG] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_RIGHT_LEG] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_RIGHT_SHOE])
@@ -1176,7 +1176,7 @@ void MinifigWizard::Calculate()
Mat.CreateFromAxisAngle(Vector3(1, 0, 0), -LC_DTOR * m_Angles[LC_MFW_LEFT_LEG]);
Mat.SetTranslation(Vector3(0, 0, -1.76f));
Mat = Mul(mSettings[LC_MFW_LEFT_LEG][GetSelectionIndex(LC_MFW_LEFT_LEG)].Offset, Mat);
- m_Matrices[LC_MFW_LEFT_LEG] = Mul(Mat, m_Matrices[LC_MFW_TORSO]);
+ m_Matrices[LC_MFW_LEFT_LEG] = Mul(Mat, Root);
}
if (m_Info[LC_MFW_LEFT_SHOE])