ObjectInstantiation.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. using System.Collections.Generic;
  5. namespace O3DWB
  6. {
  7. public static class ObjectInstantiation
  8. {
  9. #region Public Static Functions
  10. public static ObjectPlacementGuide InstantiateObjectPlacementGuide(Prefab prefab, string name)
  11. {
  12. GameObject guideObject = Octave3DWorldBuilder.Instantiate(prefab.UnityPrefab) as GameObject;
  13. guideObject.name = name;
  14. ObjectPlacementGuide objectPlacementGuide = guideObject.AddComponent<ObjectPlacementGuide>();
  15. guideObject.transform.parent = Octave3DWorldBuilder.ActiveInstance.transform;
  16. return objectPlacementGuide;
  17. }
  18. public static List<GameObject> InstantiateObjectHirarchiesFromPlacementDataCollection(List<ObjectPlacementData> objectPlacementDataCollection)
  19. {
  20. if (objectPlacementDataCollection.Count == 0) return new List<GameObject>();
  21. var instantiatedHierarchyRoots = new List<GameObject>(objectPlacementDataCollection.Count);
  22. foreach(ObjectPlacementData objectPlacementData in objectPlacementDataCollection)
  23. {
  24. instantiatedHierarchyRoots.Add(InstantiateObjectHierarchyFromPlacementData(objectPlacementData));
  25. }
  26. return instantiatedHierarchyRoots;
  27. }
  28. public static GameObject InstantiateObjectHierarchyFromPlacementData(ObjectPlacementData objectPlacementData)
  29. {
  30. return InstantiateObjectHierarchyFromPrefab(objectPlacementData.Prefab, objectPlacementData.WorldPosition, objectPlacementData.WorldRotation, objectPlacementData.WorldScale);
  31. }
  32. public static GameObject InstantiateObjectHierarchyFromPrefab(Prefab prefab, Transform transformData)
  33. {
  34. return InstantiateObjectHierarchyFromPrefab(prefab, transformData.position, transformData.rotation, transformData.lossyScale);
  35. }
  36. public static GameObject InstantiateObjectHierarchyFromPrefab(Prefab prefab, Vector3 worldPosition, Quaternion worldRotation, Vector3 worldScale)
  37. {
  38. return InstantiateObjectHierarchyFromPrefab(prefab.UnityPrefab, worldPosition, worldRotation, worldScale);
  39. }
  40. public static GameObject InstantiateObjectHierarchyFromPrefab(GameObject prefab, Vector3 worldPosition, Quaternion worldRotation, Vector3 worldScale)
  41. {
  42. GameObject instantiatedObject = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
  43. UndoEx.RegisterCreatedGameObject(instantiatedObject);
  44. instantiatedObject.name = prefab.name;
  45. Transform objectTransform = instantiatedObject.transform;
  46. objectTransform.position = worldPosition;
  47. objectTransform.rotation = worldRotation;
  48. objectTransform.localScale = worldScale;
  49. SceneViewCamera.Instance.SetObjectVisibilityDirty();
  50. return instantiatedObject;
  51. }
  52. #endregion
  53. }
  54. }
  55. #endif