diff --git a/Features/ObjectSpawner.cs b/Features/ObjectSpawner.cs index 821e3a6..9a9745b 100644 --- a/Features/ObjectSpawner.cs +++ b/Features/ObjectSpawner.cs @@ -37,6 +37,23 @@ public static SchematicObject SpawnSchematic(string schematicName, Vector3 posit public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, Vector3 scale) => SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale }); + + //Data section + + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, SchematicObjectDataList data) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Data = data }); + + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, SchematicObjectDataList data) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Data = data }); + + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, SchematicObjectDataList data) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Data = data }); + + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, Vector3 scale, SchematicObjectDataList data) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Scale = scale, Data = data }); + + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, Vector3 scale, SchematicObjectDataList data) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale, Data = data }); public static bool TrySpawnSchematic(SerializableSchematic serializableSchematic, out SchematicObject schematic) { diff --git a/Features/Serializable/Schematics/SerializableSchematic.cs b/Features/Serializable/Schematics/SerializableSchematic.cs index fb48a38..248a028 100644 --- a/Features/Serializable/Schematics/SerializableSchematic.cs +++ b/Features/Serializable/Schematics/SerializableSchematic.cs @@ -14,6 +14,8 @@ public class SerializableSchematic : SerializableObject { public string SchematicName { get; set; } = "None"; + public SchematicObjectDataList Data { get; set; } = null; + public override GameObject? SpawnOrUpdateObject(Room? room = null, GameObject? instance = null) { PrimitiveObjectToy schematic = instance == null ? UnityEngine.Object.Instantiate(PrefabManager.PrimitiveObject) : instance.GetComponent(); @@ -28,10 +30,15 @@ public class SerializableSchematic : SerializableObject schematic.transform.SetPositionAndRotation(position, rotation); schematic.transform.localScale = Scale; + SchematicObjectDataList? data = null; + if (instance == null) { - _ = MapUtils.TryGetSchematicDataByName(SchematicName, out SchematicObjectDataList? data) ? data : null; - + if(Data is null) + _ = MapUtils.TryGetSchematicDataByName(SchematicName, out data) ? data : null; + else + data = Data; + if (data == null) { GameObject.Destroy(schematic.gameObject);