Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
            }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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();
        }