Skip to content

Commit

Permalink
RotateManipulator now using Matrix4 column setters
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Mott committed Oct 1, 2021
1 parent 7b9d06f commit 6ab8d9e
Showing 1 changed file with 31 additions and 22 deletions.
53 changes: 31 additions & 22 deletions radiantcore/selection/manipulators/RotateManipulator.cpp
Expand Up @@ -93,37 +93,46 @@ void RotateManipulator::UpdateColours()
void RotateManipulator::updateCircleTransforms()
{
Vector3 localViewpoint(
_pivot2World._worldSpace.getTransposed().transformDirection(_pivot2World._viewpointSpace.zCol3())
);
_pivot2World._worldSpace.getTransposed().transformDirection(
_pivot2World._viewpointSpace.zCol3()));

_circleX_visible = !math::isNear(g_vector3_axis_x, localViewpoint, 1e-6);
if(_circleX_visible)
if (_circleX_visible)
{
_local2worldX = Matrix4::getIdentity();
_local2worldX.yCol3Ref() = g_vector3_axis_x.cross(localViewpoint).getNormalised();
_local2worldX.zCol3Ref() = _local2worldX.xCol3().cross(
_local2worldX.yCol3()).getNormalised();
_local2worldX.premultiplyBy(_pivot2World._worldSpace);
_local2worldX = Matrix4::getIdentity();
_local2worldX.setYCol(
g_vector3_axis_x.cross(localViewpoint).getNormalised()
);
_local2worldX.setZCol(
_local2worldX.xCol3().cross(_local2worldX.yCol3()).getNormalised()
);
_local2worldX.premultiplyBy(_pivot2World._worldSpace);
}

_circleY_visible = !math::isNear(g_vector3_axis_y, localViewpoint, 1e-6);
if(_circleY_visible)
_circleY_visible = !math::isNear(g_vector3_axis_y, localViewpoint, 1e-6);
if (_circleY_visible)
{
_local2worldY = Matrix4::getIdentity();
_local2worldY.zCol3Ref() = g_vector3_axis_y.cross(localViewpoint).getNormalised();
_local2worldY.xCol3Ref() = _local2worldY.yCol3().cross(
_local2worldY.zCol3()).getNormalised();
_local2worldY.premultiplyBy(_pivot2World._worldSpace);
_local2worldY = Matrix4::getIdentity();
_local2worldY.setZCol(
g_vector3_axis_y.cross(localViewpoint).getNormalised()
);
_local2worldY.setXCol(
_local2worldY.yCol3().cross(_local2worldY.zCol3()).getNormalised()
);
_local2worldY.premultiplyBy(_pivot2World._worldSpace);
}

_circleZ_visible = !math::isNear(g_vector3_axis_z, localViewpoint, 1e-6);
if(_circleZ_visible)
_circleZ_visible = !math::isNear(g_vector3_axis_z, localViewpoint, 1e-6);
if (_circleZ_visible)
{
_local2worldZ = Matrix4::getIdentity();
_local2worldZ.xCol3Ref() = g_vector3_axis_z.cross(localViewpoint).getNormalised();
_local2worldZ.yCol3Ref() = _local2worldZ.zCol3().cross(
_local2worldZ.xCol3()).getNormalised();
_local2worldZ.premultiplyBy(_pivot2World._worldSpace);
_local2worldZ = Matrix4::getIdentity();
_local2worldZ.setXCol(
g_vector3_axis_z.cross(localViewpoint).getNormalised()
);
_local2worldZ.setYCol(
_local2worldZ.zCol3().cross(_local2worldZ.xCol3()).getNormalised()
);
_local2worldZ.premultiplyBy(_pivot2World._worldSpace);
}
}

Expand Down

0 comments on commit 6ab8d9e

Please sign in to comment.