void LoadVertexAnim() { MegaVertexAnim am = (MegaVertexAnim)target; mods = am.gameObject.GetComponent <MegaModifiers>(); string filename = EditorUtility.OpenFilePanel("Vertex Animation File", lastpath, "mpc"); if (filename == null || filename.Length < 1) { return; } lastpath = filename; // Clear what we have Verts.Clear(); ParseFile(filename, AnimatedMeshCallback); am.Verts = Verts.ToArray(); BitArray animated = new BitArray(mods.verts.Length); int count = 0; for (int i = 0; i < Verts.Count; i++) { for (int v = 0; v < Verts[i].indices.Length; v++) { if (!animated[Verts[i].indices[v]]) { animated[Verts[i].indices[v]] = true; count++; } } } am.NoAnim = new int[mods.verts.Length - count]; int index = 0; for (int i = 0; i < animated.Count; i++) { if (!animated[i]) { am.NoAnim[index++] = i; } } am.maxtime = 0.0f; for (int i = 0; i < Verts.Count; i++) { float t = Verts[i].con.Times[Verts[i].con.Times.Length - 1]; if (t > am.maxtime) { am.maxtime = t; } } }
public override void OnInspectorGUI() { MegaVertexAnim am = (MegaVertexAnim)target; if (GUILayout.Button("Import Vertex Anim File")) { LoadVertexAnim(); EditorUtility.SetDirty(target); } // Basic mod stuff showmodparams = EditorGUILayout.Foldout(showmodparams, "Modifier Common Params"); if (showmodparams) { CommonModParamsBasic(am); #if false am.ModEnabled = EditorGUILayout.Toggle("Mod Enabled", am.ModEnabled); am.DisplayGizmo = EditorGUILayout.Toggle("Display Gizmo", am.DisplayGizmo); am.Order = EditorGUILayout.IntField("Order", am.Order); am.gizCol1 = EditorGUILayout.ColorField("Giz Col 1", am.gizCol1); am.gizCol2 = EditorGUILayout.ColorField("Giz Col 2", am.gizCol2); #endif } am.time = EditorGUILayout.FloatField("Time", am.time); am.maxtime = EditorGUILayout.FloatField("Loop Time", am.maxtime); am.animated = EditorGUILayout.Toggle("Animated", am.animated); am.speed = EditorGUILayout.FloatField("Speed", am.speed); am.LoopMode = (MegaRepeatMode)EditorGUILayout.EnumPopup("Loop Mode", am.LoopMode); am.blendMode = (MegaBlendAnimMode)EditorGUILayout.EnumPopup("Blend Mode", am.blendMode); if (am.blendMode == MegaBlendAnimMode.Additive) { am.weight = EditorGUILayout.FloatField("Weight", am.weight); } if (GUI.changed) { EditorUtility.SetDirty(target); } }