move ugly convertion of axis locks 3 bit flags to a wasted vector3 down to PhysicsActor. Let engines use LockAngularMotion with either Vector3 argument or byte

This commit is contained in:
UbitUmarov
2015-10-20 19:00:26 +01:00
parent d8528a7ba0
commit 0045398324
2 changed files with 16 additions and 21 deletions

View File

@@ -3861,16 +3861,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
if (pa != null)
{
// physics should also get a byte and not a Vector3 TODO
Vector3 lrRotationAxis = Vector3.One;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_X) != 0 )
lrRotationAxis.X = 0f;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_Y) != 0 )
lrRotationAxis.Y = 0f;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_Z) != 0 )
lrRotationAxis.Z = 0f;
pa.LockAngularMotion(lrRotationAxis);
pa.LockAngularMotion(RotationAxisLocks);
ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(pa);
}
}
@@ -4882,16 +4873,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
if(LocalId == ParentGroup.RootPart.LocalId)
{
// ugly code: physics should also get a byte and not a Vector3 TODO
Vector3 lrRotationAxis = Vector3.One;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_X) != 0 )
lrRotationAxis.X = 0f;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_Y) != 0 )
lrRotationAxis.Y = 0f;
if((RotationAxisLocks & (byte)SceneObjectGroup.axisSelect.STATUS_ROTATE_Z) != 0 )
lrRotationAxis.Z = 0f;
pa.LockAngularMotion(lrRotationAxis);
pa.LockAngularMotion(RotationAxisLocks);
}
if (VolumeDetectActive) // change if not the default only