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(); } } }
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); }