From 1f43eb83a87385e90322a2360e9165f394a3a589 Mon Sep 17 00:00:00 2001 From: MSaska Date: Wed, 3 Sep 2025 21:25:13 +0200 Subject: [PATCH] =?UTF-8?q?I=20fuck=C3=ADng=20hate=20that=20I=20don't=20ha?= =?UTF-8?q?ve=20possibility=20to=20spawn=20schematic=20using=20data.=20Now?= =?UTF-8?q?=20we=20do.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Features/ObjectSpawner.cs | 17 +++++++++++++++++ .../Schematics/SerializableSchematic.cs | 11 +++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) 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);