diff --git a/Features/ObjectSpawner.cs b/Features/ObjectSpawner.cs index 821e3a6..0ec9c26 100644 --- a/Features/ObjectSpawner.cs +++ b/Features/ObjectSpawner.cs @@ -23,20 +23,20 @@ public static SchematicObject SpawnSchematic(SerializableSchematic serializableS return gameObject.GetComponent(); } - public static SchematicObject SpawnSchematic(string schematicName, Vector3 position) => - SpawnSchematic(new() { SchematicName = schematicName, Position = position }); + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, SchematicObjectDataList? data = null) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Data = data }); - public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation) => - SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles }); + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, SchematicObjectDataList? data = null) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Data = data }); - public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles) => - SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles }); + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, SchematicObjectDataList? data = null) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Data = data }); - public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, Vector3 scale) => - SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Scale = scale }); + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, Vector3 scale, SchematicObjectDataList? data = null) => + 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) => - SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale }); + public static SchematicObject SpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, Vector3 scale, SchematicObjectDataList? data = null) => + SpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale, Data = data }); public static bool TrySpawnSchematic(SerializableSchematic serializableSchematic, out SchematicObject schematic) { @@ -52,18 +52,18 @@ public static bool TrySpawnSchematic(SerializableSchematic serializableSchematic } } - public static bool TrySpawnSchematic(string schematicName, Vector3 position, out SchematicObject schematic) => - TrySpawnSchematic(new() { SchematicName = schematicName, Position = position }, out schematic); + public static bool TrySpawnSchematic(string schematicName, Vector3 position, out SchematicObject schematic, SchematicObjectDataList? data = null) => + TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Data = data }, out schematic); - public static bool TrySpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, out SchematicObject schematic) => - TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles }, out schematic); + public static bool TrySpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, out SchematicObject schematic, SchematicObjectDataList? data = null) => + TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Data = data }, out schematic); - public static bool TrySpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, out SchematicObject schematic) => - TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles }, out schematic); + public static bool TrySpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, out SchematicObject schematic, SchematicObjectDataList? data = null) => + TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Data = data }, out schematic); - public static bool TrySpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, Vector3 scale, out SchematicObject schematic) => - TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Scale = scale }, out schematic); + public static bool TrySpawnSchematic(string schematicName, Vector3 position, Quaternion rotation, Vector3 scale, out SchematicObject schematic, SchematicObjectDataList? data = null) => + TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = rotation.eulerAngles, Scale = scale, Data = data }, out schematic); - public static bool TrySpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, Vector3 scale, out SchematicObject schematic) => - TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale }, out schematic); + public static bool TrySpawnSchematic(string schematicName, Vector3 position, Vector3 eulerAngles, Vector3 scale, out SchematicObject schematic, SchematicObjectDataList? data = null) => + TrySpawnSchematic(new() { SchematicName = schematicName, Position = position, Rotation = eulerAngles, Scale = scale, Data = data }, out schematic); } diff --git a/Features/Serializable/Schematics/SerializableSchematic.cs b/Features/Serializable/Schematics/SerializableSchematic.cs index 30d0aa1..b6a3897 100644 --- a/Features/Serializable/Schematics/SerializableSchematic.cs +++ b/Features/Serializable/Schematics/SerializableSchematic.cs @@ -36,8 +36,18 @@ public class SerializableSchematic : SerializableObject } return schematic.gameObject; - } + } + public SchematicObjectDataList? Data + { + get + { + return _data ??= MapUtils.TryGetSchematicDataByName(SchematicName, out SchematicObjectDataList data) ? data : null; + } + set + { + _data = value; + } + } - private SchematicObjectDataList? Data => _data ??= MapUtils.TryGetSchematicDataByName(SchematicName, out SchematicObjectDataList data) ? data : null; private SchematicObjectDataList? _data; }