void OnCurveChanged(GameObject gObject, AnimatableProperty property) { RigGoalController[] controllers = gObject.GetComponentsInChildren <RigGoalController>(); if (controllers.Length > 0) { if ((ToolsManager.CurrentToolName() == "Animation")) { //update all goals' curves UpdateGoalCurve(controllers); } else { //only update rig's root curve UpdateGoalCurve(new RigGoalController[] { controllers[0] }); } } if (property != AnimatableProperty.PositionX && property != AnimatableProperty.PositionY && property != AnimatableProperty.PositionZ) { return; } if (!Selection.IsSelected(gObject)) { return; } UpdateCurve(gObject); }
public CommandAddKeyframes(GameObject obj, bool updateCurve = true) : base("Add Keyframes") { gObject = obj; Interpolation interpolation = GlobalState.Settings.interpolation; int frame = GlobalState.Animation.CurrentFrame; bool isHuman = obj.TryGetComponent <RigController>(out RigController skinController); if (ToolsManager.CurrentToolName() != "Animation" || !isHuman) { new CommandAddKeyframe(gObject, AnimatableProperty.PositionX, frame, gObject.transform.localPosition.x, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.PositionY, frame, gObject.transform.localPosition.y, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.PositionZ, frame, gObject.transform.localPosition.z, interpolation, updateCurve).Submit(); // convert to ZYX euler Vector3 angles = ReduceAngles(gObject.transform.localRotation); new CommandAddKeyframe(gObject, AnimatableProperty.RotationX, frame, angles.x, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.RotationY, frame, angles.y, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.RotationZ, frame, angles.z, interpolation, updateCurve).Submit(); } CameraController controller = gObject.GetComponent <CameraController>(); LightController lcontroller = gObject.GetComponent <LightController>(); if (null != controller) { new CommandAddKeyframe(gObject, AnimatableProperty.CameraFocal, frame, controller.focal, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.CameraFocus, frame, controller.Focus, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.CameraAperture, frame, controller.aperture, interpolation, updateCurve).Submit(); } else if (null != lcontroller) { new CommandAddKeyframe(gObject, AnimatableProperty.Power, frame, lcontroller.Power, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.ColorR, frame, lcontroller.Color.r, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.ColorG, frame, lcontroller.Color.g, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.ColorB, frame, lcontroller.Color.b, interpolation, updateCurve).Submit(); } else { // Scale Vector3 scale = gObject.transform.localScale; new CommandAddKeyframe(gObject, AnimatableProperty.ScaleX, frame, scale.x, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.ScaleY, frame, scale.y, interpolation, updateCurve).Submit(); new CommandAddKeyframe(gObject, AnimatableProperty.ScaleZ, frame, scale.z, interpolation, updateCurve).Submit(); } if (isHuman && ToolsManager.CurrentToolName() == "Animation") { foreach (Transform child in gObject.transform) { RecursiveAddKeyFrame(child, frame, interpolation); } } }
void Start() { OnToolChangedEvent += ToolsManager.OnChangeTool; string firstToolName = ToolsManager.CurrentToolName(); ChangeTab(firstToolName); currentToolName = firstToolName; //ChangeTool(firstToolName); colorPanel = tabButtonsContainer.Find("ColorPanel").gameObject; keyboardWindow.localScale = Vector3.zero; numericKeyboardWindow.localScale = Vector3.zero; createInstanceVFXPrefab = Resources.Load <GameObject>("VFX/ParticleSpawn"); deleteInstanceVFXPrefab = Resources.Load <GameObject>("VFX/ParticleDespawn"); }
void UpdateFromSelection() { ClearCurves(); foreach (GameObject gObject in Selection.SelectedObjects) { AddCurve(gObject); if (gObject.TryGetComponent(out RigController skinController)) { if ((ToolsManager.CurrentToolName() == "Animation")) { AddHumanCurve(gObject, skinController); } else { //Only display curve for Rig's root RigGoalController goalController = skinController.RootObject.GetComponent <RigGoalController>(); AddGoalCurve(goalController, skinController); } } } }
public void OnRemoveKeyFrame() { CommandGroup group = new CommandGroup("Remove Keyframe"); try { foreach (GameObject gObject in Selection.SelectedObjects) { if (gObject.TryGetComponent <RigController>(out RigController controller) && ToolsManager.CurrentToolName() != "Animation") { new CommandRemoveRecursiveKeyframes(gObject).Submit(); } else { if (GlobalState.Animation.ObjectHasKeyframeAt(gObject, GlobalState.Animation.CurrentFrame)) { new CommandRemoveKeyframes(gObject).Submit(); } } }