private static GetRectAxisForViewDir ( |
||
bounds | ||
rotation | ||
viewDir | Vector3 | |
return | int |
private static int GetRectAxisForViewDir(Bounds bounds, Quaternion rotation, Vector3 viewDir)
{
if (s_LockHandleRectAxisActive)
{
return s_LockHandleRectAxis;
}
if (viewDir == Vector3.zero)
{
return 2;
}
if (bounds.size == Vector3.zero)
{
bounds.size = Vector3.one;
}
int num2 = -1;
float num3 = -1f;
for (int i = 0; i < 3; i++)
{
Vector3 zero = Vector3.zero;
Vector3 vector2 = Vector3.zero;
int num5 = (i + 1) % 3;
int num6 = (i + 2) % 3;
zero[num5] = bounds.size[num5];
vector2[num6] = bounds.size[num6];
float magnitude = Vector3.Cross(Vector3.ProjectOnPlane((Vector3) (rotation * zero), viewDir), Vector3.ProjectOnPlane((Vector3) (rotation * vector2), viewDir)).magnitude;
if (magnitude > num3)
{
num3 = magnitude;
num2 = i;
}
}
return num2;
}
internal static void LockHandleRectRotation() { Bounds bounds = InternalEditorUtility.CalculateSelectionBoundsInSpace(Tools.handlePosition, Tools.handleRotation, Tools.rectBlueprintMode); Tools.s_LockHandleRectAxis = Tools.GetRectAxisForViewDir(bounds, Tools.handleRotation, SceneView.currentDrawingSceneView.camera.transform.forward); Tools.s_LockHandleRectAxisActive = true; }