private GameObject GenerateSpawnObject() { var location = FindLocation(); location.InUse = true; var o = new LevelObjectTemplate { Lot = SpawnTemplate, Position = location.Position, Rotation = location.Rotation, Scale = LevelObject.Scale, LegoInfo = Settings, ObjectId = ObjectId.FromFlags(ObjectIdFlags.Spawned | ObjectIdFlags.Client) }; var obj = GameObject.Instantiate(o, Zone, this); if (obj.TryGetComponent <DestructibleComponent>(out var destructibleComponent)) { Listen(destructibleComponent.OnSmashed, (smasher, lootOwner) => { location.InUse = false; }); } return(obj); }
public static GameObject Spawner(LevelObjectTemplate levelObject, Object parent) { if (!levelObject.LegoInfo.TryGetValue("spawntemplate", out var spawnTemplate)) { Logger.Error("Instantiating a spawner without a \"spawntemplete\" is now allowed."); return(null); } if (spawnTemplate is string s) { spawnTemplate = int.Parse(s); } var instance = GameObject.Instantiate( parent, position: levelObject.Position, rotation: levelObject.Rotation, scale: -1, objectId: (long)levelObject.ObjectId, lot: levelObject.Lot ); var spawnerComponent = instance.AddComponent <SpawnerComponent>(); spawnerComponent.Settings = levelObject.LegoInfo; spawnerComponent.SpawnTemplate = new Lot((int)spawnTemplate); spawnerComponent.LevelObject = levelObject; levelObject.LegoInfo.Remove("spawntemplate"); return(instance); }
private void SpawnLevelObject(LevelObjectTemplate levelObject) { var obj = GameObject.Instantiate(levelObject, this); SpawnerComponent spawner = default; if (levelObject.LegoInfo.TryGetValue("loadSrvrOnly", out var serverOnly) && (bool)serverOnly || levelObject.LegoInfo.TryGetValue("carver_only", out var carverOnly) && (bool)carverOnly || levelObject.LegoInfo.TryGetValue("renderDisabled", out var disabled) && (bool)disabled) { obj.Layer = StandardLayer.Hidden; }
public static GameObject Spawner(LevelObjectTemplate levelObject, Object parent) { if (!levelObject.LegoInfo.TryGetValue("spawntemplate", out var spawnTemplate)) { Logger.Error("Instantiating a spawner without a \"spawntemplate\" is not allowed."); return(null); } if (spawnTemplate is string s) { spawnTemplate = int.Parse(s); } var instance = GameObject.Instantiate( parent, position: levelObject.Position, rotation: levelObject.Rotation, scale: -1, objectId: (ObjectId)levelObject.ObjectId, lot: levelObject.Lot ); instance.Settings = levelObject.LegoInfo; if (levelObject.LegoInfo.TryGetValue("trigger_id", out var trigger)) { Logger.Debug($"SPAWN TRIGGER: {trigger}"); } var spawnerComponent = instance.AddComponent <SpawnerComponent>(); spawnerComponent.SpawnTemplate = new Lot((int)spawnTemplate); spawnerComponent.SpawnScale = levelObject.Scale; if (levelObject.LegoInfo.TryGetValue("respawn", out var respawnTime)) { spawnerComponent.RespawnTime = Convert.ToInt32(Convert.ToSingle(respawnTime) * 1000); } return(instance); }
private void SpawnLevelObject(LevelObjectTemplate levelObject) { var obj = GameObject.Instantiate(levelObject, this); if (levelObject.LegoInfo.TryGetValue("loadSrvrOnly", out var serverOnly) && (bool)serverOnly || levelObject.LegoInfo.TryGetValue("carver_only", out var carverOnly) && (bool)carverOnly || levelObject.LegoInfo.TryGetValue("renderDisabled", out var disabled) && (bool)disabled) { obj.Layer = StandardLayer.Hidden; } if (!obj.TryGetComponent(out SpawnerComponent spawner)) { obj.Layer = StandardLayer.Hidden; } Start(obj); // // Only spawns should get constructed on the client. // spawner?.SpawnCluster(); }