MB3_MeshBakerEditor.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. //----------------------------------------------
  2. // MeshBaker
  3. // Copyright © 2011-2012 Ian Deane
  4. //----------------------------------------------
  5. using UnityEngine;
  6. using System.Collections;
  7. using System.IO;
  8. using System;
  9. using System.Collections.Specialized;
  10. using System.Collections.Generic;
  11. using System.Text.RegularExpressions;
  12. using DigitalOpus.MB.Core;
  13. using UnityEditor;
  14. [CustomEditor(typeof(MB3_MeshBaker))]
  15. [CanEditMultipleObjects]
  16. public class MB3_MeshBakerEditor : Editor {
  17. MB3_MeshBakerEditorInternal mbe = new MB3_MeshBakerEditorInternal();
  18. [MenuItem("GameObject/Create Other/Mesh Baker/TextureBaker and MeshBaker",false,100)]
  19. public static GameObject CreateNewMeshBaker(){
  20. MB3_TextureBaker[] mbs = (MB3_TextureBaker[]) GameObject.FindObjectsOfType(typeof(MB3_TextureBaker));
  21. Regex regex = new Regex(@"\((\d+)\)$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
  22. int largest = 0;
  23. try{
  24. for (int i = 0; i < mbs.Length; i++){
  25. Match match = regex.Match(mbs[i].name);
  26. if (match.Success){
  27. int val = Convert.ToInt32(match.Groups[1].Value);
  28. if (val >= largest)
  29. largest = val + 1;
  30. }
  31. }
  32. } catch(Exception e){
  33. if (e == null) e = null; //Do nothing supress compiler warning
  34. }
  35. GameObject nmb = new GameObject("TextureBaker (" + largest + ")");
  36. nmb.transform.position = Vector3.zero;
  37. MB3_TextureBaker tb = nmb.AddComponent<MB3_TextureBaker>();
  38. tb.packingAlgorithm = MB2_PackingAlgorithmEnum.MeshBakerTexturePacker;
  39. nmb.AddComponent<MB3_MeshBakerGrouper>();
  40. GameObject meshBaker = new GameObject("MeshBaker");
  41. meshBaker.AddComponent<MB3_MeshBaker>();
  42. meshBaker.transform.parent = nmb.transform;
  43. return nmb.gameObject;
  44. }
  45. [MenuItem("GameObject/Create Other/Mesh Baker/MeshBaker",false,100)]
  46. public static GameObject CreateNewMeshBakerOnly()
  47. {
  48. MB3_MeshBaker[] mbs = (MB3_MeshBaker[])GameObject.FindObjectsOfType(typeof(MB3_MeshBaker));
  49. Regex regex = new Regex(@"\((\d+)\)$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
  50. int largest = 0;
  51. try
  52. {
  53. for (int i = 0; i < mbs.Length; i++)
  54. {
  55. Match match = regex.Match(mbs[i].name);
  56. if (match.Success)
  57. {
  58. int val = Convert.ToInt32(match.Groups[1].Value);
  59. if (val >= largest)
  60. largest = val + 1;
  61. }
  62. }
  63. }
  64. catch (Exception e)
  65. {
  66. if (e == null) e = null; //Do nothing supress compiler warning
  67. }
  68. GameObject meshBaker = new GameObject("MeshBaker ("+ largest + ")");
  69. meshBaker.AddComponent<MB3_MeshBaker>();
  70. return meshBaker.gameObject;
  71. }
  72. void OnEnable()
  73. {
  74. mbe.OnEnable(serializedObject);
  75. }
  76. void OnDisable()
  77. {
  78. mbe.OnDisable();
  79. }
  80. public override void OnInspectorGUI(){
  81. mbe.OnInspectorGUI(serializedObject, (MB3_MeshBakerCommon) target, typeof(MB3_MeshBakerEditorWindow));
  82. }
  83. }