예제 #1
0
        private void InspectMotion(BioJoint.Motion motion, string name)
        {
            SetGUIColor(Color8);
            using (new EditorGUILayout.VerticalScope("Box")) {
                SetGUIColor(Color5);
                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                EditorGUILayout.HelpBox(name, MessageType.None);
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();

                if (motion.IsEnabled())
                {
                    SetGUIColor(Color1);
                    motion.Constrained = EditorGUILayout.Toggle("Constrained", motion.Constrained);
                    if (motion.Constrained)
                    {
                        SetGUIColor(Color1);
                        motion.SetLowerLimit(EditorGUILayout.DoubleField("Lower Limit", motion.GetLowerLimit()));
                        SetGUIColor(Color1);
                        motion.SetUpperLimit(EditorGUILayout.DoubleField("Upper Limit", motion.GetUpperLimit()));
                        SetGUIColor(Color1);
                        motion.SetTargetValue(EditorGUILayout.Slider("Target Value", (float)motion.GetTargetValue(), (float)motion.GetLowerLimit(), (float)motion.GetUpperLimit()));
                    }
                    else
                    {
                        SetGUIColor(Color1);
                        motion.SetTargetValue(EditorGUILayout.DoubleField("Target Value", motion.GetTargetValue()));
                    }

                    GUI.skin.button.alignment = TextAnchor.MiddleCenter;
                    SetGUIColor(Color1);
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Disable", GUILayout.Width(250f), GUILayout.Height(20f)))
                    {
                        motion.SetEnabled(false);
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                }
                else
                {
                    GUI.skin.button.alignment = TextAnchor.MiddleCenter;
                    SetGUIColor(Color1);
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Enable", GUILayout.Width(250f), GUILayout.Height(20f)))
                    {
                        motion.SetEnabled(true);
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                }
            }
        }
예제 #2
0
        void LateUpdate()
        {
            PostcaptureAnimation(Root);

            UpdateData(Root);

            for (int i = 0; i < Solution.Length; i++)
            {
                Solution[i] = Evolution.GetModel().MotionPtrs[i].Motion.GetTargetValue(true);
            }
            Solution = Evolution.Optimise(Generations, Solution);

            for (int i = 0; i < Solution.Length; i++)
            {
                BioJoint.Motion motion = Evolution.GetModel().MotionPtrs[i].Motion;
                motion.SetTargetValue(Solution[i], true);

                /*
                 * if(motion.Joint.GetJointType() == JointType.Revolute) {
                 *      motion.SetTargetValue((float)Solution[i]);
                 * } else if(motion.Joint.GetJointType() == JointType.Continuous) {
                 *      motion.SetTargetValue(motion.GetTargetValue() + Mathf.Deg2Rad*Mathf.DeltaAngle(Mathf.Rad2Deg*motion.GetTargetValue(), Mathf.Rad2Deg*(float)Solution[i]));
                 * } else if(motion.Joint.GetJointType() == JointType.Prismatic) {
                 *      motion.SetTargetValue((float)Solution[i]);
                 * } else if(motion.Joint.GetJointType() == JointType.Floating) {
                 *      motion.SetTargetValue((float)Solution[i]);
                 * }
                 */
            }

            ProcessMotion(Root);
        }