Esempio n. 1
0
    void OnSelectionChange()
    {
        List <GameObject> new_objects  = new List <GameObject>();
        List <string>     new_prefixes = new List <string>();

        for (int i = 0; i < Selection.transforms.Length; ++i)
        {
            Transform t = Selection.transforms[i];
            //NeuronAnimatorInstance animator_driver = t.GetComponent<NeuronAnimatorInstance>();
            NeuronTransformsInstance   transform_driver   = t.GetComponent <NeuronTransformsInstance>();
            NeuronTransformsInstanceVR transform_driverVR = t.GetComponent <NeuronTransformsInstanceVR>();

            if (transform_driver != null)
            {
                new_objects.Add(t.gameObject);
                new_prefixes.Add(transform_driver.prefix != "" ? transform_driver.prefix : default_prefix);
            }
            else if (transform_driverVR != null)
            {
                new_objects.Add(t.gameObject);
                new_prefixes.Add(transform_driverVR.prefix != "" ? transform_driverVR.prefix : default_prefix);
            }
        }

        if (new_objects.Count > 0)
        {
            objects  = new_objects;
            prefixes = new_prefixes;
        }
    }
Esempio n. 2
0
    public override void OnInspectorGUI()
    {
        NeuronTransformsInstanceVR vrScript = (NeuronTransformsInstanceVR)target;


        DrawDefaultInspector();


        if (GUILayout.Button("Load bone references"))
        {
            Debug.Log("[NeuronTransformsInstanceVR] - LOAD all Transform references into the bones list!");

            vrScript.Bind(vrScript.root, vrScript.prefix);
            vrScript.editorScriptHasLoadedBones = true;

            EditorUtility.SetDirty(vrScript);
        }

        if (GUILayout.Button("Clear bone references"))
        {
            Debug.Log("[NeuronTransformsInstanceVR] - CLEAR all Transform references in the bones list!");

            for (int i = 0; i < vrScript.bones.Length; i++)
            {
                vrScript.bones[i] = null;
            }

            vrScript.editorScriptHasLoadedBones = false;

            EditorUtility.SetDirty(vrScript);
        }
    }
Esempio n. 3
0
        public bool Init(Transform root, string prefix, Transform[] bound_transforms, Transform rootOverride)
        {
            if (root == null)
            {
                Debug.LogError("[NeuronTransformsPhysicalReference] Invalid root Transform");
                return(false);
            }

            // check if there is enough Rigidbody Component on the bones,
            // if not return false to prevent init reference_object
            if (!CheckRigidbodies(bound_transforms))
            {
                Debug.LogError(string.Format(
                                   "[NeuronTransformsPhysicalReference] Trying to use physics update but no Rigidbody Component in Actor \"{0}\". Did you forget to add Rigidbody Component?",
                                   root.gameObject.name), root);
                return(false);
            }

            if (rootOverride == null)
            {
                // duplicate bound object as reference object,
                // we only use this reference object's transforms to get world transforms
                referenceObject      = (GameObject)GameObject.Instantiate(root.gameObject, root.position, root.rotation);
                referenceObject.name = string.Format("{0} (neuron reference)", root.gameObject.name);
                referenceTransforms  = new Transform[(int)NeuronBones.NumOfBones];
                NeuronHelper.Bind(referenceObject.transform, referenceTransforms, prefix, false, NeuronBoneVersion.NotSet_AutoByName);

                NeuronTransformsInstance referenceInstance = referenceObject.GetComponent <NeuronTransformsInstance> ();
                if (referenceInstance != null)
                {
                    referenceInstance.motionUpdateMethod = Neuron.UpdateMethod.Normal;
                }
                else
                {
                    NeuronTransformsInstanceVR referenceInstanceVR = referenceObject.GetComponent <NeuronTransformsInstanceVR> ();
                    if (referenceInstanceVR != null)
                    {
                        referenceInstance.motionUpdateMethod = Neuron.UpdateMethod.Normal;
                    }
                }

                // remove all unnecessary components, this will prevent rendering and any unexpected behaviour from custom scripts
                Component[] components = referenceObject.GetComponentsInChildren <Component> ();
                for (int i = 0; i < components.Length; ++i)
                {
                    Component c = components [i];
                    if (c.GetType() != typeof(Transform) &&
                        components [i].GetType() != typeof(NeuronTransformsInstance) &&
                        components [i].GetType() != typeof(NeuronTransformsInstanceVR))
                    {
                        GameObject.DestroyImmediate(c);
                    }
                }
            }
            else
            {
                referenceObject     = rootOverride.gameObject;
                referenceTransforms = new Transform[(int)NeuronBones.NumOfBones];
                NeuronHelper.Bind(rootOverride, referenceTransforms, prefix, false, NeuronBoneVersion.NotSet_AutoByName);
            }

            return(true);
        }