Beispiel #1
0
        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);
        }
Beispiel #2
0
 protected virtual void OnParametersChanged(GameObject gObject, Curve curve)
 {
     if (Selection.IsSelected(gObject))
     {
         UpdateUI();
     }
 }
Beispiel #3
0
 void OnAnimationAdded(GameObject gObject)
 {
     if (!Selection.IsSelected(gObject))
     {
         return;
     }
     UpdateCurve(gObject);
 }
Beispiel #4
0
        private void UpdateEraser()
        {
            GameObject hoveredObject = Selection.HoveredObject;

            if (null == hoveredObject && Selection.SelectedObjects.Count == 0)
            {
                return;
            }

            // If we have a hovered object, only destroy it
            if (null != hoveredObject)
            {
                // Don't delete UI handles
                if (hoveredObject.GetComponent <UIHandle>())
                {
                    return;
                }

                if (VRInput.GetValue(VRInput.primaryController, CommonUsages.triggerButton))
                {
                    CommandGroup group = new CommandGroup("Erase Hovered Object");
                    try
                    {
                        RemoveCollidedObject(hoveredObject);
                        selector.RemoveSiblingsFromSelection(hoveredObject, false);

                        new CommandRemoveGameObject(hoveredObject).Submit();
                    }
                    finally
                    {
                        group.Submit();
                    }
                }
            }

            // If we don't have any hovered object but we collided with a selection, delete the whole selection
            else if (collidedObjects.Count > 0 && Selection.IsSelected(collidedObjects[0]))
            {
                if (VRInput.GetValue(VRInput.primaryController, CommonUsages.triggerButton))
                {
                    CommandGroup group = new CommandGroup("Erase Selected Objects");
                    try
                    {
                        foreach (GameObject gobject in Selection.SelectedObjects)
                        {
                            RemoveCollidedObject(gobject);
                            selector.RemoveSiblingsFromSelection(gobject, false);

                            new CommandRemoveGameObject(gobject).Submit();
                        }
                    }
                    finally
                    {
                        group.Submit();
                    }
                }
            }
        }
Beispiel #5
0
 private void OnFocalClicked()
 {
     focalActionSelected = Selection.IsSelected(gameObject);
     if (!focalActionSelected)
     {
         Selection.AddToSelection(gameObject);
     }
     focalValueCommand = new CommandSetValue <float>("Camera Focal", "/CameraController/focal");
 }
Beispiel #6
0
 private void OnSelectionChanged(HashSet <GameObject> previousSelectedObjects, HashSet <GameObject> currentSelectedObjects)
 {
     if (Selection.IsSelected(cameraObject))
     {
         SetColor(UIOptions.PushedColor);
     }
     else
     {
         SetColor(UIOptions.BackgroundColor);
     }
 }
Beispiel #7
0
        void OnCurveChanged(GameObject gObject, AnimatableProperty property)
        {
            if (property != AnimatableProperty.PositionX && property != AnimatableProperty.PositionY && property != AnimatableProperty.PositionZ)
            {
                return;
            }

            if (!Selection.IsSelected(gObject))
            {
                return;
            }

            UpdateCurve(gObject);
        }
Beispiel #8
0
        bool HasParentOrConstraintSelected(Transform t, ref string parentLayerName)
        {
            Transform parent = t.parent;

            while (null != parent && parent.name != "RightHanded")
            {
                if (Selection.IsSelected(parent.gameObject))
                {
                    parentLayerName = LayerMask.LayerToName(parent.gameObject.layer);
                    return(true);
                }
                parent = parent.parent;
            }

            ParentConstraint constraint = t.gameObject.GetComponent <ParentConstraint>();

            if (null != constraint)
            {
                if (constraint.sourceCount > 0)
                {
                    GameObject sourceObject = constraint.GetSource(0).sourceTransform.gameObject;
                    if (Selection.IsSelected(sourceObject))
                    {
                        parentLayerName = LayerMask.LayerToName(sourceObject.layer);
                        return(true);
                    }
                }
            }

            LookAtConstraint lookAtConstraint = t.gameObject.GetComponent <LookAtConstraint>();

            if (null != lookAtConstraint)
            {
                if (lookAtConstraint.sourceCount > 0)
                {
                    ConstraintSource constraintSource = lookAtConstraint.GetSource(0);
                    GameObject       sourceObject     = constraintSource.sourceTransform.gameObject;
                    if (Selection.IsSelected(lookAtConstraint.GetSource(0).sourceTransform.gameObject))
                    {
                        parentLayerName = LayerMask.LayerToName(sourceObject.layer);
                        return(true);
                    }
                }
            }

            return(false);
        }
Beispiel #9
0
 private void OnActiveCameraChanged(GameObject _, GameObject activeCamera)
 {
     if (activeCamera == cameraObject)
     {
         SetColor(UIOptions.SceneHoverColor);
     }
     else
     {
         if (Selection.IsSelected(cameraObject))
         {
             SetColor(UIOptions.PushedColor);
         }
         else
         {
             SetColor(UIOptions.BackgroundColor);
         }
     }
 }
Beispiel #10
0
        private void OnHoveredChanged(GameObject previousHover, GameObject currentHover)
        {
            if (null != previousHover)
            {
                if (Selection.IsSelected(previousHover))
                {
                    SetRecursiveLayerSmart(previousHover, LayerType.Selection);
                }
                else
                {
                    SetRecursiveLayerSmart(previousHover, LayerType.Default);
                }
            }

            if (null != currentHover && !Selection.IsSelected(currentHover))
            {
                SetRecursiveLayerSmart(currentHover, LayerType.Hover);
            }
        }
Beispiel #11
0
        void UpdateActiveCamera(GameObject hoveredObject, HashSet <GameObject> currentSelection)
        {
            // --------------------------------------------
            // Check hover
            // --------------------------------------------
            GameObject hoveredCamera = null;

            if (null != hoveredObject && null != hoveredObject.GetComponent <CameraController>())
            {
                hoveredCamera = hoveredObject;
            }

            // Set current active camera from hovered one
            if (null != hoveredCamera && (hoveredCamera != ActiveCamera || Selection.IsSelected(hoveredCamera)))
            {
                // Enable current active camera
                ActiveCamera = hoveredCamera;
                return;
            }

            // --------------------------------------------
            // Check selected
            // --------------------------------------------
            GameObject selectedCamera = GetFirstCamera(currentSelection);

            if (null != selectedCamera && selectedCamera != ActiveCamera)
            {
                // Enable new one
                ActiveCamera = selectedCamera;
                return;
            }

            if (!GlobalState.Animation.IsAnimating() && null == hoveredCamera && null == selectedCamera)
            {
                ActiveCamera = null;
            }
        }
Beispiel #12
0
        void SetRecursiveLayerSmart(GameObject gObject, LayerType layerType, bool isChild = false)
        {
            string layerName = LayerMask.LayerToName(gObject.layer);

            bool isSkinMesh = gObject.TryGetComponent <SkinnedMeshRenderer>(out SkinnedMeshRenderer mesh);

            //
            // SELECT
            //
            if (layerType == LayerType.Selection)
            {
                if (layerName == "Default")
                {
                    if (isChild && !Selection.IsSelected(gObject) && !isSkinMesh)
                    {
                        layerName = "SelectionChild";
                    }
                    else
                    {
                        layerName = "Selection";
                    }
                }
                else if (layerName == "Hover" || layerName == "HoverChild")
                {
                    if (isChild && !Selection.IsSelected(gObject) && !isSkinMesh)
                    {
                        layerName = "SelectionChild";
                    }
                    else
                    {
                        layerName = "Selection";
                    }
                }
                else if (layerName == "CameraHidden")
                {
                    layerName = "SelectionCameraHidden";
                }
                else if (layerName == "HoverCameraHidden")
                {
                    layerName = "SelectionCameraHidden";
                }
            }
            //
            // HOVER
            //
            else if (layerType == LayerType.Hover)
            {
                if (layerName == "Default")
                {
                    if (isChild && !Selection.IsSelected(gObject) && !isSkinMesh)
                    {
                        layerName = "HoverChild";
                    }
                    else
                    {
                        layerName = "Hover";
                    }
                }
                else if (layerName == "Selection" || layerName == "SelectionChild")
                {
                    if (isChild && !Selection.IsSelected(gObject) && !isSkinMesh)
                    {
                        layerName = "HoverChild";
                    }
                    else
                    {
                        layerName = "Hover";
                    }
                }
                else if (layerName == "CameraHidden")
                {
                    layerName = "HoverCameraHidden";
                }
                else if (layerName == "SelectionCameraHidden")
                {
                    layerName = "HoverCameraHidden";
                }
            }
            //
            // RESET layer
            //
            else if (layerType == LayerType.Default)
            {
                if (layerName == "SelectionCameraHidden")
                {
                    layerName = "CameraHidden";
                }
                else if (layerName == "Hover" || layerName == "HoverChild")
                {
                    string parentLayer = "";
                    if (HasParentOrConstraintSelected(gObject.transform, ref parentLayer))
                    {
                        layerName = parentLayer + "Child";
                    }
                    else
                    {
                        layerName = "Default";
                    }
                }
                else if (layerName == "HoverCameraHidden")
                {
                    layerName = "CameraHidden";
                }
                else if (layerName == "Selection" || layerName == "SelectionChild")
                {
                    string parentLayer = "";
                    if (HasParentOrConstraintSelected(gObject.transform, ref parentLayer))
                    {
                        layerName = parentLayer + "Child";
                    }
                    else
                    {
                        layerName = "Default";
                    }
                }
            }

            gObject.layer = LayerMask.NameToLayer(layerName);
            for (int i = 0; i < gObject.transform.childCount; i++)
            {
                SetRecursiveLayerSmart(gObject.transform.GetChild(i).gameObject, layerType, true);
            }

            ParametersController parametersConstroller = gObject.GetComponent <ParametersController>();

            if (null != parametersConstroller)
            {
                foreach (GameObject sourceConstraint in parametersConstroller.constraintHolders)
                {
                    if (!Selection.IsSelected(sourceConstraint))
                    {
                        SetRecursiveLayerSmart(sourceConstraint, layerType, true);
                    }
                }
            }
        }