public override void OnInspectorGUI() { MoveenSkelLimb1 skel = (MoveenSkelLimb1)this.skel; GUIStyle labelStyle = new GUIStyle { fontStyle = FontStyle.Bold, fontSize = 20, margin = new RectOffset(10, 10, 10, 10) }; EditorGUILayout.LabelField(""); EditorGUILayout.LabelField("Structure", labelStyle); EditorGUILayout.LabelField(""); bool oldValue = solveIk; solveIk = GUILayout.Toggle(solveIk, "regression solver help (editor only)"); if (oldValue != solveIk) { initWanteds(skel); } EditorGUILayout.LabelField(""); EditorGUI.BeginChangeCheck(); Undo.RecordObject(skel, "limb1editing"); skel.r1 = EditorGUILayout.FloatField("Bone 1 length", skel.r1); skel.r2 = EditorGUILayout.FloatField("Bone 2 length", skel.r2); skel.footPlatformHeight = EditorGUILayout.FloatField("Foot platform height", skel.footPlatformHeight); EditorGUILayout.LabelField(""); EditorGUILayout.LabelField("Geometry connection", labelStyle); EditorGUILayout.LabelField(""); skel.bonesGeometry[0] = (Transform)EditorGUILayout.ObjectField("Bone 1 geometry", skel.bonesGeometry[0], typeof(Transform), true); skel.bonesGeometry[1] = (Transform)EditorGUILayout.ObjectField("Bone 2 geometry", skel.bonesGeometry[1], typeof(Transform), true); skel.bonesGeometry[2] = (Transform)EditorGUILayout.ObjectField("Foot geometry", skel.bonesGeometry[2], typeof(Transform), true); EditorGUILayout.LabelField(""); MoveenSkelLimb2Editor.addBonesButton(skel); showDefaultInspector = EditorGUILayout.Foldout(showDefaultInspector, "raw inspector", true); if (showDefaultInspector) { DrawDefaultInspector(); } if (EditorGUI.EndChangeCheck()) { //why do we need both of these? EditorUtility.SetDirty(skel); skel.needsUpdate = true; if (solveIk) { skel.reset(); initWanteds(skel); } } }
private static void Gizmo(MoveenSkelLimb1 h, GizmoType gizmoType) { if (!h.isActiveAndEnabled) { return; } OnDrawGizmos(h); Gizmos.color = new Color(0, 1, 0, 0.4f); MoveenSkelLimb2Editor.drawSimpleSpiderGizmo(h.rotJoint, h.maxLen * 0.2f, h.transform.position, h.targetPosRel); if (((int)gizmoType & (int)GizmoType.InSelectionHierarchy) != 0 && solveIk) { Gizmos.color = IK_GIZMO_COLOR; Vector3 w2s = Camera.current.WorldToScreenPoint(h.targetPos); if (w2s.z > 0) { UnityEditorUtils.fillStripe2D(w2s.getXy(), IK_DISK_R1, IK_DISK_R2, 20); } drawIkHelp(h.transform, h); } }
public static void AddNewQuadruped() { GameObject root = createCommon("Moveen quadruped"); Stepper5 stepper5 = root.GetComponent <MoveenStepper5>().engine; stepper5.leadingLegRight = 0; stepper5.leadingLegLeft = 2; stepper5.forceBipedalEarlyStep = false; // root.transform.position = root.transform.position.withSetY(0.6f); float w = 0.3f; float v = 0.8f; float lh = -0.6f; //legs { GameObject leg = new GameObject("Anim leg FR"); leg.transform.parent = root.transform; leg.transform.localPosition = new Vector3(w, lh, -w); MoveenStep2 step = leg.AddComponent <MoveenStep2>(); MoveenSkelLimb1 skel = leg.AddComponent <MoveenSkelLimb1>(); step.step.comfortPosRel = new Vector3(v, -1, -v); skel.targetPosRel = step.step.comfortPosRel; skel.rotJoint.axisRel = new Vector3(0, 1, 0); skel.rotJoint.secondaryAxisRel = new Vector3(1, 0, -1).normalized; skel.footPlatformHeight = 0.1f; } { GameObject leg = new GameObject("Anim leg BL"); leg.transform.parent = root.transform; leg.transform.localPosition = new Vector3(-w, lh, w); MoveenStep2 step = leg.AddComponent <MoveenStep2>(); MoveenSkelLimb1 skel = leg.AddComponent <MoveenSkelLimb1>(); step.step.comfortPosRel = new Vector3(-v, -1, v); skel.targetPosRel = step.step.comfortPosRel; skel.rotJoint.axisRel = new Vector3(0, 1, 0); skel.rotJoint.secondaryAxisRel = new Vector3(-1, 0, 1).normalized; skel.footPlatformHeight = 0.1f; } { GameObject leg = new GameObject("Anim leg FL"); leg.transform.parent = root.transform; leg.transform.localPosition = new Vector3(w, lh, w); MoveenStep2 step = leg.AddComponent <MoveenStep2>(); MoveenSkelLimb1 skel = leg.AddComponent <MoveenSkelLimb1>(); step.step.comfortPosRel = new Vector3(v, -1, v); skel.targetPosRel = step.step.comfortPosRel; skel.rotJoint.axisRel = new Vector3(0, 1, 0); skel.rotJoint.secondaryAxisRel = new Vector3(1, 0, 1).normalized; skel.footPlatformHeight = 0.1f; } { GameObject leg = new GameObject("Anim leg BR"); leg.transform.parent = root.transform; leg.transform.localPosition = new Vector3(-w, lh, -w); MoveenStep2 step = leg.AddComponent <MoveenStep2>(); MoveenSkelLimb1 skel = leg.AddComponent <MoveenSkelLimb1>(); step.step.comfortPosRel = new Vector3(-v, -1, -v); skel.targetPosRel = step.step.comfortPosRel; skel.rotJoint.axisRel = new Vector3(0, 1, 0); skel.rotJoint.secondaryAxisRel = new Vector3(-1, 0, -1).normalized; skel.footPlatformHeight = 0.1f; } foreach (var step in root.GetComponentsInChildren <MoveenStep2>()) { step.step.stepSpeedMin = 6f; step.step.stepSpeedMin = 6f; step.step.comfortRadiusRatio = 0.7f; } }