Anima2D.BoneUtils.GetLocalEulerAngles C# (CSharp) Method

GetLocalEulerAngles() public static method

public static GetLocalEulerAngles ( Transform transform ) : Vector3
transform Transform
return Vector3
		public static Vector3 GetLocalEulerAngles(Transform transform)
		{
			InitializeReflection();
			
			object rotationOrder = GetRotationOrder(transform);
			
			if(transform && s_GetLocalEulerAnglesMethod != null && rotationOrder != null)
			{
				object[] parameters = { rotationOrder };
				return (Vector3) s_GetLocalEulerAnglesMethod.Invoke(transform,parameters);
			}
			
			return Vector3.zero;
		}
		

Usage Example

Beispiel #1
0
        static void OnCurveWasModified(AnimationClip clip, EditorCurveBinding binding, AnimationUtility.CurveModifiedType deleted)
        {
            AnimationUtility.onCurveWasModified -= OnCurveWasModified;

            bool flag = Event.current == null ||
                        (Event.current != null && Event.current.type != EventType.ExecuteCommand);

            var rootGameOject = AnimationWindowExtra.rootGameObject;

            if (flag &&
                rootGameOject &&
                deleted == AnimationUtility.CurveModifiedType.CurveModified &&
                binding.type == typeof(Transform) &&
                binding.propertyName.Contains("localEulerAnglesRaw"))
            {
                Transform transform   = AnimationWindowExtra.rootGameObject.transform.Find(binding.path);
                Vector3   eulerAngles = BoneUtils.GetLocalEulerAngles(transform);

                int frame = AnimationWindowExtra.frame;

                AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, binding);

                for (int i = 0; i < curve.length; i++)
                {
                    Keyframe keyframe = curve[i];

                    int keyframeFrame = (int)AnimationWindowExtra.TimeToFrame(keyframe.time);

                    if (frame == keyframeFrame)
                    {
                        if (binding.propertyName.Contains(".x"))
                        {
                            if (keyframe.value != eulerAngles.x)
                            {
                                //Debug.Log(binding.propertyName + "  " + keyframe.value + " -> " + eulerAngles.x.ToString());

                                keyframe.value = eulerAngles.x;
                            }
                        }
                        else if (binding.propertyName.Contains(".y"))
                        {
                            if (keyframe.value != eulerAngles.y)
                            {
                                //Debug.Log(binding.propertyName + "  " + keyframe.value + " -> " + eulerAngles.y.ToString());

                                keyframe.value = eulerAngles.y;
                            }
                        }
                        else if (binding.propertyName.Contains(".z"))
                        {
                            if (keyframe.value != eulerAngles.z)
                            {
                                //Debug.Log(binding.propertyName + "  " + keyframe.value + " -> " + eulerAngles.z.ToString());

                                keyframe.value = eulerAngles.z;
                            }
                        }

                        curve.MoveKey(i, keyframe);

                        CurveUtility.UpdateTangentsFromModeSurrounding(curve, i);

                        break;
                    }
                }

                AnimationUtility.SetEditorCurve(clip, binding, curve);
            }

            AnimationUtility.onCurveWasModified += OnCurveWasModified;
        }