private static void Update() { if (selectionChanged == false) { return; } selectionChanged = false; if (Selection.activeObject != wrapper) { if (Selection.objects.Length > 1) { //they have multiple files selected return; } Object[] objects = Selection.objects; int[] instanceIds = new int[objects.Length + 1]; Object[] newObjects = new Object[objects.Length + 1]; for (int i = 0; i < objects.Length; i++) { newObjects[i] = objects[i]; instanceIds[i] = objects[i].GetInstanceID(); } string fn = AssetDatabase.GetAssetPath(Selection.activeInstanceID); if (fn.ToLower().EndsWith(".mr")) { if (wrapper == null) { wrapper = ScriptableObject.CreateInstance <MCSResourceFileWrapper>(); wrapper.hideFlags = HideFlags.DontSave; } newObjects[objects.Length] = wrapper; instanceIds[objects.Length] = wrapper.GetInstanceID(); wrapper.fileName = fn; Selection.activeObject = wrapper; } } }
public override void OnInspectorGUI() { MCSResourceFileWrapper wrapper = (MCSResourceFileWrapper)target; GUILayout.Label(wrapper.fileName); try { MCSResource mr = new MCSResource(); mr.Read(wrapper.fileName); EditorGUILayout.BeginHorizontal(); GUILayout.Label("" + mr.header.Keys.Length + " entries"); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("File", GUILayout.Width(250)); EditorGUILayout.LabelField("Size", GUILayout.Width(100)); EditorGUILayout.EndHorizontal(); for (int i = 0; i < mr.header.Keys.Length; i++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.TextField(mr.header.Keys[i], GUILayout.Width(250)); float kB = ((float)mr.header.Lengths[i]) / 1024f; EditorGUILayout.TextField(kB.ToString("F2") + "kB", GUILayout.Width(100)); bool export = GUILayout.Button("Export", GUILayout.Width(100)); if (export) { mr.UnpackResource(mr.header.Keys[i]); AssetDatabase.Refresh(); } EditorGUILayout.EndHorizontal(); } } catch { GUIStyle style = new GUIStyle(); style.normal.textColor = Color.red; GUILayout.Label("Can't parse resource file, it appears corrupted."); } }