public static void ImpactEffect(HitInfo info) { if (!info.DoHitEffects) { return; } string materialName = StringPool.Get(info.HitMaterial); string strName = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), materialName); string decal = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), materialName); if (TerrainMeta.WaterMap != null && info.HitMaterial != Projectile.WaterMaterialID() && info.HitMaterial != Projectile.FleshMaterialID() && info.HitPositionWorld.y < TerrainMeta.WaterMap.GetHeight(info.HitPositionWorld) && WaterLevel.Test(info.HitPositionWorld, false)) { return; } if (BaseEntityEx.IsValid(info.HitEntity)) { GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info); if (impactEffect.isValid) { strName = impactEffect.resourcePath; } Run(strName, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); if (info.DoDecals) { Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); } } else { Type overrideType = Type.Generic; Run(strName, info.HitPositionWorld, info.HitNormalWorld, default(Vector3), overrideType); Run(decal, info.HitPositionWorld, info.HitNormalWorld, default(Vector3), overrideType); } if ((bool)info.WeaponPrefab) { BaseMelee baseMelee = info.WeaponPrefab as BaseMelee; if (baseMelee != null) { string strikeEffectPath = baseMelee.GetStrikeEffectPath(materialName); if (BaseEntityEx.IsValid(info.HitEntity)) { Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); } else { Run(strikeEffectPath, info.HitPositionWorld, info.HitNormalWorld); } } } if (info.damageTypes.Has(DamageType.Explosion)) { DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab"); } if (info.damageTypes.Has(DamageType.Heat)) { DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab"); } }
public static void ImpactEffect(HitInfo info) { if (!info.DoHitEffects) { return; } string materialName = StringPool.Get(info.HitMaterial); if (Object.op_Inequality((Object)TerrainMeta.WaterMap, (Object)null) && (int)info.HitMaterial != (int)Projectile.WaterMaterialID() && ((int)info.HitMaterial != (int)Projectile.FleshMaterialID() && info.HitPositionWorld.y < (double)WaterLevel.GetWaterDepth(info.HitPositionWorld))) { return; } string strName = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), materialName); string decal = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), materialName); if (info.HitEntity.IsValid()) { GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info); if (impactEffect.isValid) { strName = impactEffect.resourcePath; } Effect.server.Run(strName, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false); Effect.server.Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false); } else { Effect.server.Run(strName, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false); Effect.server.Run(decal, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false); } if (Object.op_Implicit((Object)info.WeaponPrefab)) { BaseMelee weaponPrefab = info.WeaponPrefab as BaseMelee; if (Object.op_Inequality((Object)weaponPrefab, (Object)null)) { string strikeEffectPath = weaponPrefab.GetStrikeEffectPath(materialName); if (info.HitEntity.IsValid()) { Effect.server.Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false); } else { Effect.server.Run(strikeEffectPath, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false); } } } if (info.damageTypes.Has(DamageType.Explosion)) { Effect.server.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab"); } if (!info.damageTypes.Has(DamageType.Heat)) { return; } Effect.server.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab"); }
virtual public void Play(BubbleDeathType type) { Play(); var effects = EffectDictionary.ContainsKey(type) ? EffectDictionary[type] : GetDefaultEffects(type); foreach (var effect in effects) { effectController.AddEffect(effect); } }
public void AddEffect(GameObject parent, AnimationType type, BubbleDeathType deathType, bool blocking) { if (!EffectDictionary.ContainsKey(deathType)) { EffectDictionary.Add(deathType, new List <IEnumerator>()); } var effect = blocking ? AnimationEffect.PlayAndRegister(parent, type, RegisterBlockers) : AnimationEffect.Play(parent, type); EffectDictionary[deathType].Add(effect); }
public static string GetParticle(DamageType damageType, string materialName) { switch (damageType) { case DamageType.Bullet: { return(EffectDictionary.GetParticle("bullet", materialName)); } case DamageType.Slash: { return(EffectDictionary.GetParticle("slash", materialName)); } case DamageType.Blunt: { return(EffectDictionary.GetParticle("blunt", materialName)); } case DamageType.Fall: case DamageType.Radiation: case DamageType.Bite: { return(EffectDictionary.GetParticle("blunt", materialName)); } case DamageType.Stab: { return(EffectDictionary.GetParticle("stab", materialName)); } default: { if (damageType == DamageType.Arrow) { return(EffectDictionary.GetParticle("bullet", materialName)); } return(EffectDictionary.GetParticle("blunt", materialName)); } } }
public static string GetDecal(DamageType damageType, string materialName) { switch (damageType) { case DamageType.Bullet: return(EffectDictionary.GetDecal("bullet", materialName)); case DamageType.Slash: return(EffectDictionary.GetDecal("slash", materialName)); case DamageType.Blunt: return(EffectDictionary.GetDecal("blunt", materialName)); case DamageType.Stab: return(EffectDictionary.GetDecal("stab", materialName)); case DamageType.Arrow: return(EffectDictionary.GetDecal("bullet", materialName)); default: return(EffectDictionary.GetDecal("blunt", materialName)); } }
public static string GetDisplacement(string impactType, string materialName) { return(EffectDictionary.LookupEffect("displacement", impactType, materialName)); }
public static string GetDecal(string impactType, string materialName) { return(EffectDictionary.LookupEffect("decals", impactType, materialName)); }
public static string GetParticle(string impactType, string materialName) { return(EffectDictionary.LookupEffect("impacts", impactType, materialName)); }
public override void readPacketData(PacketReader r) { _EffectDict = (EffectDictionary)r.ReadByte(); byte b = r.ReadByte(); while (true) { int num = 1449331065; while (true) { uint num2; switch ((num2 = (uint)num ^ 0x40D1E49Eu) % 8u) { case 4u: break; default: return; case 2u: _PositionTwo._PositionY = (((b & 0x10u) != 0) ? r.ReadSingle() : 0f); num = 1157121933; continue; case 3u: _JEsT6uIdK1eySUKAfntb2FPG6xS = ((((uint)b & (true ? 1u : 0u)) != 0) ? ColorUtil.Read(r) : _sEbsBUoH2nb2Xe0NgbAdtwAYgyn); _Duration = (((b & 0x20u) != 0) ? r.ReadSingle() : 1f); num = 324033816; continue; case 7u: _91Zhx0OBsUhlR5optw0cihxmls4 = (((b & 0x40u) != 0) ? CompressedInt.Read(r) : 0); num = 1116186011; continue; case 0u: _Py6PkxjHTY3O6pw4WuxldaFbWxH = r.ReadByte(); num = (int)(num2 * 204275967) ^ -480569097; continue; case 6u: { int num3; int num4; if ((b & 0x80u) != 0) { num3 = 1165841944; num4 = num3; } else { num3 = 1167361425; num4 = num3; } num = num3 ^ ((int)num2 * -168239607); continue; } case 5u: _PositionOne._PositionX = (((b & 2u) != 0) ? r.ReadSingle() : 0f); _PositionOne._PositionY = (((b & 4u) != 0) ? r.ReadSingle() : 0f); _PositionTwo._PositionX = (((b & 8u) != 0) ? r.ReadSingle() : 0f); num = 415062908; continue; case 1u: return; } break; } } }
public static void ImpactEffect(HitInfo info) { Vector3 vector3; string str = StringPool.Get(info.HitMaterial); string particle = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), str); string decal = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), str); if (TerrainMeta.WaterMap != null && info.HitMaterial != Projectile.WaterMaterialID() && info.HitMaterial != Projectile.FleshMaterialID() && info.HitPositionWorld.y < TerrainMeta.WaterMap.GetHeight(info.HitPositionWorld)) { return; } if (!info.HitEntity.IsValid()) { Vector3 hitPositionWorld = info.HitPositionWorld; Vector3 hitNormalWorld = info.HitNormalWorld; vector3 = new Vector3(); Effect.client.Run(particle, hitPositionWorld, hitNormalWorld, vector3); Vector3 hitPositionWorld1 = info.HitPositionWorld; Vector3 hitNormalWorld1 = info.HitNormalWorld; vector3 = new Vector3(); Effect.client.Run(decal, hitPositionWorld1, hitNormalWorld1, vector3); } else { GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info); if (impactEffect.isValid) { particle = impactEffect.resourcePath; } Effect.client.Run(particle, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); if (info.DoDecals) { Effect.client.Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); } } if (info.WeaponPrefab) { BaseMelee weaponPrefab = info.WeaponPrefab as BaseMelee; if (weaponPrefab != null) { string strikeEffectPath = weaponPrefab.GetStrikeEffectPath(str); if (!info.HitEntity.IsValid()) { Vector3 vector31 = info.HitPositionWorld; Vector3 hitNormalWorld2 = info.HitNormalWorld; vector3 = new Vector3(); Effect.client.Run(strikeEffectPath, vector31, hitNormalWorld2, vector3); } else { Effect.client.Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal); } } } if (info.damageTypes.Has(DamageType.Explosion)) { Effect.client.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab"); } if (info.damageTypes.Has(DamageType.Heat)) { Effect.client.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab"); } }