예제 #1
0
    // Token: 0x06000895 RID: 2197 RVA: 0x00037A10 File Offset: 0x00035C10
    public static void ShowExplosionEffect(ParticleConfigurationType effectType, SurfaceEffectType surface, Vector3 hitPoint, Vector3 hitNormal)
    {
        if (ParticleEffectController.Exists && ParticleEffectController.CheckVisibility(hitPoint))
        {
            ParticleConfigurationPerWeapon particleConfigurationPerWeapon = ParticleEffectController.Instance._allConfigurations[effectType];
            bool flag = false;
            if (particleConfigurationPerWeapon != null)
            {
                switch (surface)
                {
                case SurfaceEffectType.WoodEffect:
                    ParticleEmissionSystem.HitMateriaHalfSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WoodEffect);
                    break;

                case SurfaceEffectType.WaterEffect:
                    ParticleEmissionSystem.WaterCircleParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterCircleEffect);
                    ParticleEmissionSystem.WaterSplashParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterExtraSplashEffect);
                    break;

                case SurfaceEffectType.StoneEffect:
                    ParticleEmissionSystem.HitMateriaHalfSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.StoneEffect);
                    break;

                case SurfaceEffectType.MetalEffect:
                    ParticleEmissionSystem.HitMateriaHalfSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.MetalEffect);
                    break;

                case SurfaceEffectType.GrassEffect:
                    ParticleEmissionSystem.HitMateriaHalfSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.GrassEffect);
                    break;

                case SurfaceEffectType.SandEffect:
                    ParticleEmissionSystem.HitMateriaHalfSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.SandEffect);
                    break;

                case SurfaceEffectType.Splat:
                    ParticleEmissionSystem.HitMateriaFullSphericParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.Splat);
                    break;
                }
                bool flag2 = QualitySettings.GetQualityLevel() > 0;
                if (flag2)
                {
                    ParticleEffectController.Instance._explosionParticleSystem.EmitDust(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.DustParameters);
                    ParticleEffectController.Instance._explosionParticleSystem.EmitSmoke(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.SmokeParameters);
                }
                if (flag2 || flag)
                {
                    ParticleEffectController.Instance._explosionParticleSystem.EmitTrail(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.TrailParameters);
                }
                ParticleEffectController.Instance._explosionParticleSystem.EmitBlast(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.BlastParameters);
                ParticleEffectController.Instance._explosionParticleSystem.EmitRing(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.RingParameters);
                ParticleEffectController.Instance._explosionParticleSystem.EmitSpark(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.ExplosionParameterSet.SparkParameters);
            }
        }
    }
예제 #2
0
    // Token: 0x06000896 RID: 2198 RVA: 0x00037C48 File Offset: 0x00035E48
    private static void WaterRipplesEffect(ParticleConfigurationPerWeapon effect, Vector3 hitPoint, Vector3 direction, Vector3 muzzlePosition, float distance)
    {
        float   d      = Math.Abs(muzzlePosition.y) * distance / (Math.Abs(hitPoint.y) + Math.Abs(muzzlePosition.y));
        Vector3 vector = direction * d + muzzlePosition;

        if (ParticleEffectController.CanPlayEffectAt(vector) && ParticleEffectController.CheckVisibility(vector))
        {
            ParticleEmissionSystem.WaterSplashParticles(vector, Vector3.up, effect.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterExtraSplashEffect);
            ParticleEmissionSystem.WaterCircleParticles(vector, Vector3.up, effect.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterCircleEffect);
        }
    }
예제 #3
0
 // Token: 0x06000899 RID: 2201 RVA: 0x00037D50 File Offset: 0x00035F50
 public static void ProjectileWaterRipplesEffect(ParticleConfigurationType effectType, Vector3 hitPosition)
 {
     if (ParticleEffectController.Exists && GameState.Current.Map != null)
     {
         ParticleConfigurationPerWeapon particleConfigurationPerWeapon = ParticleEffectController.Instance._allConfigurations[effectType];
         if (particleConfigurationPerWeapon != null)
         {
             ParticleEmissionSystem.WaterSplashParticles(hitPosition, Vector3.up, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterExtraSplashEffect);
             ParticleEmissionSystem.WaterCircleParticles(hitPosition, Vector3.up, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterCircleEffect);
         }
     }
 }
예제 #4
0
 // Token: 0x06000894 RID: 2196 RVA: 0x00037978 File Offset: 0x00035B78
 private static void ShowTrailEffect(ParticleConfigurationPerWeapon effect, MoveTrailrendererObject trailRenderer, Transform parent, Vector3 hitPoint, Vector3 muzzlePosition, float distance, Vector3 direction)
 {
     if (effect.WeaponImpactEffectConfiguration.UseTrailrendererForTrail)
     {
         if (effect.WeaponImpactEffectConfiguration.TrailrendererTrailPrefab != null)
         {
             if (trailRenderer == null)
             {
                 trailRenderer = (UnityEngine.Object.Instantiate(effect.WeaponImpactEffectConfiguration.TrailrendererTrailPrefab, muzzlePosition, Quaternion.identity) as MoveTrailrendererObject);
                 trailRenderer.gameObject.transform.parent = parent;
             }
             trailRenderer.MoveTrail(hitPoint, muzzlePosition, distance);
         }
     }
     else
     {
         ParticleEmissionSystem.TrailParticles(hitPoint, direction, effect.WeaponImpactEffectConfiguration.TrailParticleConfigurationForInstantHit, muzzlePosition, distance);
     }
 }
예제 #5
0
    // Token: 0x06000893 RID: 2195 RVA: 0x00037754 File Offset: 0x00035954
    public static void ShowHitEffect(ParticleConfigurationType effectType, SurfaceEffectType surface, Vector3 direction, Vector3 hitPoint, Vector3 hitNormal, Vector3 muzzlePosition, float distance, ref MoveTrailrendererObject trailRenderer, Transform parent, int damage)
    {
        if (ParticleEffectController.Exists)
        {
            ParticleConfigurationPerWeapon particleConfigurationPerWeapon = ParticleEffectController.Instance._allConfigurations[effectType];
            if (particleConfigurationPerWeapon != null)
            {
                ParticleEffectController.ShowTrailEffect(particleConfigurationPerWeapon, trailRenderer, parent, hitPoint, muzzlePosition, distance, direction);
                switch (surface)
                {
                case SurfaceEffectType.Default:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.WoodEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WoodEffect);
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.WaterEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.WaterCircleParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.WaterCircleEffect);
                    }
                    break;

                case SurfaceEffectType.StoneEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.StoneEffect);
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.MetalEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.MetalEffect);
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.GrassEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.GrassEffect);
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.SandEffect:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.SandEffect);
                        ParticleEmissionSystem.FireParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.FireParticleConfigurationForInstantHit);
                    }
                    break;

                case SurfaceEffectType.Splat:
                    if (ParticleEffectController.CheckVisibility(hitPoint))
                    {
                        ParticleEmissionSystem.HitMaterialRotatingParticles(hitPoint, hitNormal, particleConfigurationPerWeapon.WeaponImpactEffectConfiguration.SurfaceParameterSet.Splat);
                    }
                    break;
                }
            }
        }
        else
        {
            Debug.LogError("ParticleEffectController is not attached to a gameobject in scene!");
        }
    }