ZeroVR/ZeroPacientVR/Assets/Octave3D World Builder/Scripts/Objects/Object Placement/ObjectInstantiation.cs

67 lines
2.9 KiB
C#

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
namespace O3DWB
{
public static class ObjectInstantiation
{
#region Public Static Functions
public static ObjectPlacementGuide InstantiateObjectPlacementGuide(Prefab prefab, string name)
{
GameObject guideObject = Octave3DWorldBuilder.Instantiate(prefab.UnityPrefab) as GameObject;
guideObject.name = name;
ObjectPlacementGuide objectPlacementGuide = guideObject.AddComponent<ObjectPlacementGuide>();
guideObject.transform.parent = Octave3DWorldBuilder.ActiveInstance.transform;
return objectPlacementGuide;
}
public static List<GameObject> InstantiateObjectHirarchiesFromPlacementDataCollection(List<ObjectPlacementData> objectPlacementDataCollection)
{
if (objectPlacementDataCollection.Count == 0) return new List<GameObject>();
var instantiatedHierarchyRoots = new List<GameObject>(objectPlacementDataCollection.Count);
foreach(ObjectPlacementData objectPlacementData in objectPlacementDataCollection)
{
instantiatedHierarchyRoots.Add(InstantiateObjectHierarchyFromPlacementData(objectPlacementData));
}
return instantiatedHierarchyRoots;
}
public static GameObject InstantiateObjectHierarchyFromPlacementData(ObjectPlacementData objectPlacementData)
{
return InstantiateObjectHierarchyFromPrefab(objectPlacementData.Prefab, objectPlacementData.WorldPosition, objectPlacementData.WorldRotation, objectPlacementData.WorldScale);
}
public static GameObject InstantiateObjectHierarchyFromPrefab(Prefab prefab, Transform transformData)
{
return InstantiateObjectHierarchyFromPrefab(prefab, transformData.position, transformData.rotation, transformData.lossyScale);
}
public static GameObject InstantiateObjectHierarchyFromPrefab(Prefab prefab, Vector3 worldPosition, Quaternion worldRotation, Vector3 worldScale)
{
return InstantiateObjectHierarchyFromPrefab(prefab.UnityPrefab, worldPosition, worldRotation, worldScale);
}
public static GameObject InstantiateObjectHierarchyFromPrefab(GameObject prefab, Vector3 worldPosition, Quaternion worldRotation, Vector3 worldScale)
{
GameObject instantiatedObject = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
UndoEx.RegisterCreatedGameObject(instantiatedObject);
instantiatedObject.name = prefab.name;
Transform objectTransform = instantiatedObject.transform;
objectTransform.position = worldPosition;
objectTransform.rotation = worldRotation;
objectTransform.localScale = worldScale;
SceneViewCamera.Instance.SetObjectVisibilityDirty();
return instantiatedObject;
}
#endregion
}
}
#endif