You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
4.7 KiB
C#
110 lines
4.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
namespace RootMotion.Dynamics
|
|
{
|
|
|
|
[CustomEditor(typeof(PuppetMasterLite))]
|
|
public class PuppetMasterLiteInspector : Editor
|
|
{
|
|
private PuppetMasterLite script { get { return target as PuppetMasterLite; } }
|
|
private MonoScript monoScript;
|
|
|
|
void OnEnable()
|
|
{
|
|
if (!Application.isPlaying)
|
|
{
|
|
monoScript = MonoScript.FromMonoBehaviour(script);
|
|
int currentExecutionOrder = MonoImporter.GetExecutionOrder(monoScript);
|
|
if (currentExecutionOrder != 10101) MonoImporter.SetExecutionOrder(monoScript, 10101);
|
|
}
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
base.OnInspectorGUI();
|
|
|
|
if (script.muscles.Length == 0)
|
|
{
|
|
var p = script.GetComponent<PuppetMaster>();
|
|
if (p == null) return;
|
|
|
|
EditorGUILayout.Space();
|
|
if (GUILayout.Button("Convert PuppetMaster to PuppetMasterLite"))
|
|
{
|
|
script.targetRoot = p.targetRoot;
|
|
script.fixTargetTransforms = p.fixTargetTransforms;
|
|
script.blendTime = p.blendTime;
|
|
script.mappingWeight = p.mappingWeight;
|
|
script.pinWeight = p.pinWeight;
|
|
script.muscleWeight = p.muscleWeight;
|
|
script.muscleSpring = p.muscleSpring;
|
|
script.muscleDamper = p.muscleDamper;
|
|
script.updateJointAnchors = p.updateJointAnchors;
|
|
script.angularPinning = p.angularPinning;
|
|
|
|
script.muscles = new MuscleLite[p.muscles.Length];
|
|
for (int i = 0; i < script.muscles.Length; i++)
|
|
{
|
|
script.muscles[i] = new MuscleLite();
|
|
script.muscles[i].joint = p.muscles[i].joint;
|
|
script.muscles[i].target = p.muscles[i].target;
|
|
script.muscles[i].pinWeightMlp = p.muscles[i].props.pinWeight;
|
|
script.muscles[i].muscleWeightMlp = p.muscles[i].props.muscleWeight;
|
|
script.muscles[i].muscleDamperMlp = p.muscles[i].props.muscleDamper;
|
|
script.muscles[i].mappingWeightMlp = p.muscles[i].props.mappingWeight;
|
|
//script.muscles[i].mapPosition = p.muscles[i].props.mapPosition;
|
|
}
|
|
|
|
var behaviours = p.transform.parent != null ? p.transform.parent.GetComponentsInChildren<BehaviourBase>() : new BehaviourBase[0];
|
|
for (int i = 0; i < behaviours.Length; i++)
|
|
{
|
|
behaviours[i].gameObject.SetActive(false);
|
|
}
|
|
|
|
DestroyImmediate(p);
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
EditorGUILayout.Space();
|
|
if (GUILayout.Button("Convert PuppetMasterLite to PuppetMaster"))
|
|
{
|
|
var p = script.gameObject.AddComponent<PuppetMaster>();
|
|
|
|
p.targetRoot = script.targetRoot;
|
|
p.fixTargetTransforms = script.fixTargetTransforms;
|
|
p.blendTime = script.blendTime;
|
|
p.mappingWeight = script.mappingWeight;
|
|
p.pinWeight = script.pinWeight;
|
|
p.muscleWeight = script.muscleWeight;
|
|
p.muscleSpring = script.muscleSpring;
|
|
p.muscleDamper = script.muscleDamper;
|
|
p.updateJointAnchors = script.updateJointAnchors;
|
|
p.angularPinning = script.angularPinning;
|
|
|
|
p.muscles = new Muscle[script.muscles.Length];
|
|
for (int i = 0; i < p.muscles.Length; i++)
|
|
{
|
|
p.muscles[i] = new Muscle();
|
|
p.muscles[i].joint = script.muscles[i].joint;
|
|
p.muscles[i].target = script.muscles[i].target;
|
|
p.muscles[i].props.pinWeight = script.muscles[i].pinWeightMlp;
|
|
p.muscles[i].props.muscleWeight = script.muscles[i].muscleWeightMlp;
|
|
p.muscles[i].props.muscleDamper = script.muscles[i].muscleDamperMlp;
|
|
p.muscles[i].props.mappingWeight = script.muscles[i].mappingWeightMlp;
|
|
//p.muscles[i].props.mapPosition = script.muscles[i].mapPosition;
|
|
}
|
|
|
|
DestroyImmediate(script);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|