MB3_MultiMeshBaker.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //----------------------------------------------
  2. // MeshBaker
  3. // Copyright © 2011-2012 Ian Deane
  4. //----------------------------------------------
  5. using UnityEngine;
  6. using System.Collections;
  7. using System.Collections.Specialized;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. using DigitalOpus.MB.Core;
  12. using System.Text.RegularExpressions;
  13. /// <summary>
  14. /// Component that is an endless mesh. You don't need to worry about the 65k limit when adding meshes. It is like a List of combined meshes. Internally it manages
  15. /// a collection of CombinedMeshes that are added and deleted as necessary.
  16. ///
  17. /// Note that this implementation does
  18. /// not attempt to split meshes. Each mesh is added to one of the internal meshes as an atomic unit.
  19. ///
  20. /// This class is a Component. It must be added to a GameObject to use it. It is a wrapper for MB2_Multi_meshCombiner which contains the same functionality but is not a component
  21. /// so it can be instantiated like a normal class.
  22. /// </summary>
  23. public class MB3_MultiMeshBaker : MB3_MeshBakerCommon {
  24. [SerializeField] protected MB3_MultiMeshCombiner _meshCombiner = new MB3_MultiMeshCombiner();
  25. public override MB3_MeshCombiner meshCombiner{
  26. get {return _meshCombiner;}
  27. }
  28. public override bool AddDeleteGameObjects(GameObject[] gos, GameObject[] deleteGOs, bool disableRendererInSource){
  29. if (_meshCombiner.resultSceneObject == null){
  30. _meshCombiner.resultSceneObject = new GameObject("CombinedMesh-" + name);
  31. }
  32. meshCombiner.name = name + "-mesh";
  33. return _meshCombiner.AddDeleteGameObjects(gos,deleteGOs,disableRendererInSource);
  34. }
  35. public override bool AddDeleteGameObjectsByID(GameObject[] gos, int[] deleteGOs, bool disableRendererInSource){
  36. if (_meshCombiner.resultSceneObject == null){
  37. _meshCombiner.resultSceneObject = new GameObject("CombinedMesh-" + name);
  38. }
  39. meshCombiner.name = name + "-mesh";
  40. return _meshCombiner.AddDeleteGameObjectsByID(gos,deleteGOs,disableRendererInSource);
  41. }
  42. public void OnDestroy()
  43. {
  44. _meshCombiner.DisposeRuntimeCreated();
  45. }
  46. }