public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            DrawPoseGUI();

            EditorGUILayout.Space();

            using (new HorizontalGroup())
            {
                GUIContent createNewGUIContent = new GUIContent("Create new pose", EditorGUIUtility.IconContent("Toolbar Plus").image);

                if (GUILayout.Button(createNewGUIContent))
                {
                    NuitrackPose newPose = NuitrackEditorHelper.CreateAsset <NuitrackPose>("Pose", SavePosePath);
                    Selection.activeObject = newPose;
                }

                GUIContent copyNewGUIContent = new GUIContent("Duplicate pose", EditorGUIUtility.IconContent("TreeEditor.Duplicate").image);

                if (GUILayout.Button(copyNewGUIContent))
                {
                    string       newName  = string.Format("{0} (clone)", target.name);
                    NuitrackPose copyPose = NuitrackEditorHelper.CreateAsset <NuitrackPose>(newName, SavePosePath);

                    NuitrackPoseWrapper copyPoseWrapper = new NuitrackPoseWrapper(new SerializedObject(copyPose));
                    copyPoseWrapper.CopyFrom(poseWrapper);

                    Selection.activeObject = copyPose;
                }
            }
        }
        public void CopyFrom(NuitrackPoseWrapper sourcePose)
        {
            RelativeMode = sourcePose.RelativeMode;

            foreach (nuitrack.JointType jointType in this)
                this[jointType].CopyFrom(sourcePose[jointType]);

            serializedObject.ApplyModifiedProperties();
        }
Example #3
0
        void SaveRuntimePose(UserData.SkeletonData skeleton)
        {
            string       name    = "Runtime pose";
            NuitrackPose newPose = new NuitrackPose(name, skeleton);

            string saveFolder = SaveFolder.Replace(Application.dataPath, "");

            string[] separatePath = saveFolder.Split(new char[] { '\\', '/' }, System.StringSplitOptions.RemoveEmptyEntries);

            NuitrackPose        poseAsset           = NuitrackEditorHelper.CreateAsset <NuitrackPose>(name, separatePath);
            NuitrackPoseWrapper nuitrackPoseWrapper = new NuitrackPoseWrapper(new SerializedObject(poseAsset));

            nuitrackPoseWrapper.CopyFrom(newPose);

            Destroy(newPose);

            EditorApplication.isPlaying = false;
            Selection.activeObject      = poseAsset;
        }
        private void OnEnable()
        {
            NuitrackPreviewStage stage = CreateInstance <NuitrackPreviewStage>();

            StageUtility.GoToStage(stage, true);
            stage.SceneSetup(target);

            Selection.activeObject = target;

            poseWrapper = new NuitrackPoseWrapper(serializedObject);

            skeletonMapper             = new SkeletonMapperGUI <Transform>(NuitrackPoseWrapper.JointsMask, null, colorTheme);
            skeletonMapper.OnSelected += SkeletonMapper_OnSelected;

            skeletonPoseView = new SkeletonPoseView(null, NuitrackPoseWrapper.JointsMask, colorTheme);
            skeletonPoseView.OnBoneSetActive        += OnBoneActivated;
            skeletonPoseView.OnBoneDelete           += OnBoneDeactivated;
            skeletonPoseView.OnBoneRotate           += SkeletonPoseView_OnBoneRotate;
            skeletonPoseView.OnBoneToleranceChanged += SkeletonPoseView_OnBoneToleranceChanged;

            SceneView.duringSceneGui += OnSceneGUI;
        }