/// <summary>
    /// Returns a random object pooler based on the given potential spawn data.
    /// </summary>
    /// <param name="potentialSpawnsDataArg"></param>
    /// <returns></returns>
    private NetworkObjectPooler GetRandomObjectPooler(
        List <SerializableDataFloatAndObjectPoolerContentType> potentialSpawnsDataArg)
    {
        // initialize tuple list as empty list
        List <(float, ObjectPoolerContentType)> tupleList = new List <(float, ObjectPoolerContentType)>();

        // loop through all potential spawns
        foreach (SerializableDataFloatAndObjectPoolerContentType iterData in potentialSpawnsDataArg)
        {
            // add potential spawn data as tuple to tuple list
            tupleList.Add((iterData.value1, iterData.value2));
        }

        // get random object pooler based on spawn chance
        ObjectPoolerContentType objPoolerContent = GeneralMethods.
                                                   GetRandomEntryFromChanceToValueCouple(RollChancePickType.TargetRarest, tupleList);

        // inittialize return pooler as NULL
        NetworkObjectPooler objPooler = null;

        // if actually got a non-default value from the random entries
        if (objPoolerContent != ObjectPoolerContentType.None)
        {
            // set object pooler to associated pooler reference
            objPooler = _gameManager.SpawnManager.GetNetworkObjectPooler(objPoolerContent);
        }

        // return the retreived pooler
        return(objPooler);
    }
Ejemplo n.º 2
0
    private void SpawnAbilityPrefabInternal(ActiveAbility abilityArg, CharacterData charDataArg)
    {
        // get object pooler associated with given ability
        NetworkObjectPooler netPooler = _spawnManager.GetAbilityPrefabPooler(abilityArg);

        // get a pooled object from pooler
        GameObject pooledAbilityObj = netPooler.GetFromPool(abilitySpawnPoint.position, abilitySpawnPoint.rotation);

        // spawn pooled object on network
        NetworkServer.Spawn(pooledAbilityObj);

        // get ability from pooled object
        ActiveAbilityController activeAbility = pooledAbilityObj.GetComponent <ActiveAbilityController>();

        // if no such component found
        if (activeAbility == null)
        {
            // print warning to console
            Debug.LogWarning("Ability object does NOT have ActiveAbilityController component! " +
                             $"Object name: {pooledAbilityObj.name}");

            // DONT continue code
            return;
        }

        // setup pooled active ability
        activeAbility.SetupActiveAbility(abilityArg, _characterMasterController, charDataArg);
    }
Ejemplo n.º 3
0
 /// <summary>
 /// Setup all variables that reference singleton instance related components.
 /// Call in Start(), needs to be start to give the instances time to be created.
 /// </summary>
 private void InitializeSingletonReferences()
 {
     _networkManagerCustom = (NetworkManagerCustom)NetworkManager.singleton;
     _bulletPooler         = GameManager.Instance.SpawnManager.
                             GetNetworkObjectPooler(ObjectPoolerContentType.ProjectileBullet);
 }
Ejemplo n.º 4
0
 private void Setup(SerializableDataObjectPoolerContentTypeAndNetworkObjectPooler templateArg)
 {
     value1 = templateArg.value1;
     value2 = templateArg.value2;
 }
Ejemplo n.º 5
0
 private void Setup(ObjectPoolerContentType value1Arg, NetworkObjectPooler value2Arg)
 {
     value1 = value1Arg;
     value2 = value2Arg;
 }
Ejemplo n.º 6
0
 private void Setup()
 {
     value1 = ObjectPoolerContentType.None;
     value2 = null;
 }
Ejemplo n.º 7
0
 public SerializableDataObjectPoolerContentTypeAndNetworkObjectPooler(
     ObjectPoolerContentType value1Arg, NetworkObjectPooler value2Arg)
 {
     Setup(value1Arg, value2Arg);
 }
 /// <summary>
 /// Sets up the reference to the object pool owner.
 /// </summary>
 private void InitializePoolOwner()
 {
     _objectPoolerOwner = GetComponentInParent <NetworkObjectPooler>();
 }
 /// <summary>
 /// Setup all variables that reference singleton instance related components.
 /// Call in Start(), needs to be start to give the instances time to be created.
 /// </summary>
 private void InitializeSingletonReferences()
 {
     _weakenProjectilePooler = GameManager.Instance.SpawnManager.
                               GetNetworkObjectPooler(ObjectPoolerContentType.ProjectileWeakener);
 }