/// <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); }
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); }
/// <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); }
private void Setup(SerializableDataObjectPoolerContentTypeAndNetworkObjectPooler templateArg) { value1 = templateArg.value1; value2 = templateArg.value2; }
private void Setup(ObjectPoolerContentType value1Arg, NetworkObjectPooler value2Arg) { value1 = value1Arg; value2 = value2Arg; }
private void Setup() { value1 = ObjectPoolerContentType.None; value2 = null; }
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); }