Ejemplo n.º 1
0
    public static void AttachAnimalToNetwork(AnimalSpawnZone zone, AnimalSpawnConfig spawn, GameObject gameObject)
    {
        AnimalDespawner animalDespawner = gameObject.GetComponent <AnimalDespawner>();

        if (!animalDespawner)
        {
            animalDespawner = gameObject.AddComponent <AnimalDespawner>();
        }
        animalDespawner.SpawnedFromZone = zone;
        animalDespawner.DespawnRadius   = 70f;
        animalDespawner.UpdateRate      = 1f;
        if (BoltNetwork.isServer)
        {
            BoltEntity boltEntity = gameObject.AddComponent <BoltEntity>();
            BoltEntity component  = gameObject.GetComponent <CoopAnimalServer>().NetworkContainerPrefab.GetComponent <BoltEntity>();
            using (BoltEntitySettingsModifier boltEntitySettingsModifier = component.ModifySettings())
            {
                using (BoltEntitySettingsModifier boltEntitySettingsModifier2 = boltEntity.ModifySettings())
                {
                    boltEntitySettingsModifier2.clientPredicted          = boltEntitySettingsModifier.clientPredicted;
                    boltEntitySettingsModifier2.persistThroughSceneLoads = boltEntitySettingsModifier.persistThroughSceneLoads;
                    boltEntitySettingsModifier2.allowInstantiateOnClient = boltEntitySettingsModifier.allowInstantiateOnClient;
                    boltEntitySettingsModifier2.prefabId     = boltEntitySettingsModifier.prefabId;
                    boltEntitySettingsModifier2.updateRate   = boltEntitySettingsModifier.updateRate;
                    boltEntitySettingsModifier2.serializerId = boltEntitySettingsModifier.serializerId;
                }
            }
            BoltNetwork.Attach(gameObject);
        }
    }
Ejemplo n.º 2
0
    private void SpawnOneAnimalForZoneOfType(AnimalSpawnZone zone, AnimalSpawnConfig spawn, Transform basePos)
    {
        if (spawn.nocturnal && !Clock.Dark)
        {
            return;
        }
        float sendDir;

        if (spawn.largeAnimalType)
        {
            sendDir = -1f;
        }
        else
        {
            sendDir = 1f;
        }
        Vector3 pos;

        if (AnimalSpawnController.TryFindSpawnPosition(basePos, sendDir, out pos))
        {
            Transform transform = PoolManager.Pools["creatures"].Spawn(spawn.Prefab.transform, pos, zone.transform.rotation);
            if (transform)
            {
                this.SetupAnimal(transform, zone);
            }
        }
    }
Ejemplo n.º 3
0
    private void SpawnOneAnimalForZoneOfType(AnimalSpawnZone zone, AnimalSpawnConfig spawn, Transform basePos)
    {
        if (spawn.nocturnal && !Clock.Dark)
        {
            return;
        }
        float sendDir;

        if (spawn.largeAnimalType)
        {
            sendDir = -1f;
        }
        else
        {
            sendDir = 1f;
        }
        Vector3 pos;

        if (AnimalSpawnController.TryFindSpawnPosition(basePos, sendDir, out pos))
        {
            Transform transform = PoolManager.Pools["creatures"].Spawn(spawn.Prefab.transform, pos, zone.transform.rotation);
            if (!transform)
            {
                return;
            }
            if (transform)
            {
                transform.GetChild(0).eulerAngles = new Vector3(0f, (float)UnityEngine.Random.Range(0, 360), 0f);
            }
            if (transform)
            {
                transform.SendMessage("startUpdateSpawn");
            }
            if (transform)
            {
                transform.SendMessage("setSnowType", zone.snowType, SendMessageOptions.DontRequireReceiver);
            }
            zone.SpawnedAnimals.Add(transform.gameObject);
            AnimalSpawnController.AttachAnimalToNetwork(zone, spawn, transform.gameObject);
        }
    }