예제 #1
0
        public unsafe override void Begin()
        {
            this.currentlyInside = HashSetPool <HealthComponent> .item;
            this.timers          = DictionaryPool <HealthComponent, Single> .item;

            Single *ptr     = stackalloc Single[1];
            var     trigger = new SphereTriggerCallbackProvider <Callbacks>();
            var     data    = new EffectData();

            this.damageMult   = this.boost * this.power;
            trigger.cb.orb    = this;
            data.genericFloat = trigger.cb.maxDuration = this.duration *= this.boost;
            data.origin       = trigger.cb.origin = this.origin;
            data.scale        = trigger.cb.minRadius = minRadius;
            ptr[0]            = trigger.cb.maxRadius = maxRadius * this.boost;
            data.genericUInt  = *((UInt32 *)ptr);
            trigger.Start();

            if (orbEffect == EffectIndex.Invalid)
            {
                orbEffect = EffectCatalog.FindEffectIndexFromPrefab(VFXModule.GetSporeOrbPrefab());
            }
            EffectManager.SpawnEffect(orbEffect, data, true);
            base.Begin();
        }
예제 #2
0
		public uint[] GetSpellFamilyMask(EffectIndex index)
		{
			switch (index)
			{
				case EffectIndex.Zero: return SpellFamilyMask0;
				case EffectIndex.One: return SpellFamilyMask1;
				case EffectIndex.Two: return SpellFamilyMask2;
			}
			return null;
		}
예제 #3
0
        public uint[] GetSpellFamilyMask(EffectIndex index)
        {
            switch (index)
            {
            case EffectIndex.Zero: return(SpellFamilyMask0);

            case EffectIndex.One: return(SpellFamilyMask1);

            case EffectIndex.Two: return(SpellFamilyMask2);
            }
            return(null);
        }
예제 #4
0
 // Token: 0x0600055E RID: 1374 RVA: 0x00015BF4 File Offset: 0x00013DF4
 public static void SpawnEffect(EffectIndex effectIndex, EffectData effectData, bool transmit)
 {
     if (transmit)
     {
         EffectManager.TransmitEffect(effectIndex, effectData, null);
         if (NetworkServer.active)
         {
             return;
         }
     }
     if (NetworkClient.active)
     {
         if (effectData.networkSoundEventIndex != NetworkSoundEventIndex.Invalid)
         {
             PointSoundManager.EmitSoundLocal(NetworkSoundEventCatalog.GetAkIdFromNetworkSoundEventIndex(effectData.networkSoundEventIndex), effectData.origin);
         }
         EffectDef effectDef = EffectCatalog.GetEffectDef(effectIndex);
         if (effectDef == null)
         {
             return;
         }
         string spawnSoundEventName = effectDef.spawnSoundEventName;
         if (!string.IsNullOrEmpty(spawnSoundEventName))
         {
             PointSoundManager.EmitSoundLocal((AkEventIdArg)spawnSoundEventName, effectData.origin);
         }
         SurfaceDef surfaceDef = SurfaceDefCatalog.GetSurfaceDef(effectData.surfaceDefIndex);
         if (surfaceDef != null)
         {
             string impactSoundString = surfaceDef.impactSoundString;
             if (!string.IsNullOrEmpty(impactSoundString))
             {
                 PointSoundManager.EmitSoundLocal((AkEventIdArg)impactSoundString, effectData.origin);
             }
         }
         if (!VFXBudget.CanAffordSpawn(effectDef.prefabVfxAttributes))
         {
             return;
         }
         if (effectDef.cullMethod != null && !effectDef.cullMethod(effectData))
         {
             return;
         }
         EffectData      effectData2 = effectData.Clone();
         EffectComponent component   = UnityEngine.Object.Instantiate <GameObject>(effectDef.prefab, effectData2.origin, effectData2.rotation).GetComponent <EffectComponent>();
         if (component)
         {
             component.effectData = effectData2.Clone();
         }
     }
 }
예제 #5
0
        public uint[] GetSpellFamilyMask(EffectIndex index)
        {
            switch (index)
            {
            case EffectIndex.Zero:
                return(this.SpellFamilyMask0);

            case EffectIndex.One:
                return(this.SpellFamilyMask1);

            case EffectIndex.Two:
                return(this.SpellFamilyMask2);

            default:
                return((uint[])null);
            }
        }
예제 #6
0
 // Token: 0x0600055F RID: 1375 RVA: 0x00015D04 File Offset: 0x00013F04
 private static void TransmitEffect(EffectIndex effectIndex, EffectData effectData, NetworkConnection netOrigin = null)
 {
     EffectManager.outgoingEffectMessage.effectIndex = effectIndex;
     EffectData.Copy(effectData, EffectManager.outgoingEffectMessage.effectData);
     if (NetworkServer.active)
     {
         using (IEnumerator <NetworkConnection> enumerator = NetworkServer.connections.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 NetworkConnection networkConnection = enumerator.Current;
                 if (networkConnection != null && networkConnection != netOrigin)
                 {
                     networkConnection.SendByChannel(52, EffectManager.outgoingEffectMessage, EffectManager.qosChannel.intVal);
                 }
             }
             return;
         }
     }
     if (ClientScene.readyConnection != null)
     {
         ClientScene.readyConnection.SendByChannel(52, EffectManager.outgoingEffectMessage, EffectManager.qosChannel.intVal);
     }
 }
예제 #7
0
		public SpellEffect(Spell spell, EffectIndex index)
		{
			Spell = spell;
			EffectIndex = index;
		}
예제 #8
0
 public SpellEffect(Spell spell, EffectIndex index)
 {
     Spell       = spell;
     EffectIndex = index;
 }
 // Token: 0x06000360 RID: 864 RVA: 0x0000D703 File Offset: 0x0000B903
 public static void WriteEffectIndex(this NetworkWriter writer, EffectIndex effectIndex)
 {
     writer.WritePackedUInt32((uint)(effectIndex + 1));
 }
예제 #10
0
 public Task <UnitProperty> GetEffect(EffectIndex effectIndex)
 => Task.FromResult(State.Effects[(int)effectIndex]);