// Token: 0x06000F18 RID: 3864 RVA: 0x00063E78 File Offset: 0x00062078
    protected IEnumerator StartHidingPickupForSeconds(int seconds)
    {
        this.IsAvailable = false;
        ParticleEffectController.ShowPickUpEffect(this._pickupItem.position, 100);
        foreach (MeshRenderer r in this._renderers)
        {
            if (r != null)
            {
                r.enabled = false;
            }
        }
        if (seconds > 0)
        {
            yield return(new WaitForSeconds((float)seconds));

            ParticleEffectController.ShowPickUpEffect(this._pickupItem.position, 5);
            yield return(new WaitForSeconds(1f));

            foreach (MeshRenderer r2 in this._renderers)
            {
                r2.enabled = true;
            }
            this.IsAvailable = true;
        }
        else
        {
            base.enabled = false;
            yield return(new WaitForSeconds(2f));

            UnityEngine.Object.Destroy(base.gameObject);
        }
        yield break;
    }
Beispiel #2
0
    // Token: 0x06001003 RID: 4099 RVA: 0x00065AD8 File Offset: 0x00063CD8
    public void ShowExplosionEffect(Vector3 point, Vector3 normal, string tag, ParticleConfigurationType effectType)
    {
        switch (tag)
        {
        case "Wood":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.WoodEffect, point, normal);
            return;

        case "Stone":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.StoneEffect, point, normal);
            return;

        case "Metal":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.MetalEffect, point, normal);
            return;

        case "Sand":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.SandEffect, point, normal);
            return;

        case "Grass":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.GrassEffect, point, normal);
            return;

        case "Avatar":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.Splat, point, normal);
            return;

        case "Water":
            ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.WaterEffect, point, normal);
            return;
        }
        ParticleEffectController.ShowExplosionEffect(effectType, SurfaceEffectType.Default, point, normal);
    }
Beispiel #3
0
 // Token: 0x06001F59 RID: 8025 RVA: 0x000968C0 File Offset: 0x00094AC0
 protected virtual void Update()
 {
     if (GameState.Current.Map != null && GameState.Current.Map.HasWaterPlane && this._positionSign != Mathf.Sign(this._transform.position.y - GameState.Current.Map.WaterPlaneHeight))
     {
         this._positionSign = Mathf.Sign(this._transform.position.y - GameState.Current.Map.WaterPlaneHeight);
         ParticleEffectController.ProjectileWaterRipplesEffect(this.ExplosionEffect, this._transform.position);
     }
 }
Beispiel #4
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);
            }
        }
    }
Beispiel #5
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);
        }
    }
    }                                                                                    //(字典)從ParticleEffectType取得物件池所在的陣列索引

    //------------------------------------------------------------------------------------------------------------------------------------------------

    void Awake()
    {
        if (_instance == null)
        {
            _instance    = this; //設定單例模式
            isBeCombined = false;
        }
        else //場景出現2個實例時
        {
            isBeCombined = true;
        }
    }
Beispiel #7
0
    // Token: 0x06000898 RID: 2200 RVA: 0x00037CDC File Offset: 0x00035EDC
    private static bool CanPlayEffectAt(Vector3 v)
    {
        if (ParticleEffectController._nextCleanup < Time.time)
        {
            ParticleEffectController._nextCleanup = Time.time + 30f;
            ParticleEffectController._effects.Clear();
        }
        Vector3 key = ParticleEffectController.PositionRaster(v);
        float   num;

        if (!ParticleEffectController._effects.TryGetValue(key, out num) || num < Time.time)
        {
            ParticleEffectController._effects[key] = Time.time + 1f;
            return(true);
        }
        return(false);
    }
Beispiel #8
0
    // Token: 0x06002012 RID: 8210 RVA: 0x000998D0 File Offset: 0x00097AD0
    private void EmitWaterImpactParticles(Ray ray, float radius)
    {
        Vector3 origin = ray.origin;
        Vector3 vector = origin + ray.direction * radius;

        if (GameState.Current.Map != null && GameState.Current.Map.HasWaterPlane && ((origin.y > GameState.Current.Map.WaterPlaneHeight && vector.y < GameState.Current.Map.WaterPlaneHeight) || (origin.y < GameState.Current.Map.WaterPlaneHeight && vector.y > GameState.Current.Map.WaterPlaneHeight)))
        {
            Vector3 hitPoint = vector;
            hitPoint.y = GameState.Current.Map.WaterPlaneHeight;
            if (!Mathf.Approximately(ray.direction.y, 0f))
            {
                hitPoint.x = (GameState.Current.Map.WaterPlaneHeight - vector.y) / ray.direction.y * ray.direction.x + vector.x;
                hitPoint.z = (GameState.Current.Map.WaterPlaneHeight - vector.y) / ray.direction.y * ray.direction.z + vector.z;
            }
            MoveTrailrendererObject trailRenderer = this.Decorator.TrailRenderer;
            ParticleEffectController.ShowHitEffect(ParticleConfigurationType.MeleeDefault, SurfaceEffectType.WaterEffect, Vector3.up, hitPoint, Vector3.up, origin, 1f, ref trailRenderer, this.Decorator.transform);
        }
    }
 // Token: 0x06000F19 RID: 3865 RVA: 0x00063EA4 File Offset: 0x000620A4
 public void SetItemAvailable(bool isVisible)
 {
     if (isVisible)
     {
         ParticleEffectController.ShowPickUpEffect(this._pickupItem.position, 5);
     }
     else if (this.IsAvailable)
     {
         ParticleEffectController.ShowPickUpEffect(this._pickupItem.position, 100);
     }
     foreach (MeshRenderer renderer in this._renderers)
     {
         if (renderer)
         {
             renderer.enabled = isVisible;
         }
     }
     this.IsAvailable = isVisible;
 }
Beispiel #10
0
    // Token: 0x0600185C RID: 6236 RVA: 0x00082830 File Offset: 0x00080A30
    public void OnJump()
    {
        ICharacterState state = this.State;

        state.MovementState |= (MoveStates.Grounded | MoveStates.Jumping);
        if (this.Avatar.Decorator)
        {
            this.Avatar.Decorator.PlayJumpSound();
            if (this.Avatar.Decorator.AnimationController)
            {
                this.Avatar.Decorator.AnimationController.Jump();
            }
            RaycastHit raycastHit;
            if (Physics.Raycast(this._transform.position, Vector3.down, out raycastHit, 3f, UberstrikeLayerMasks.ProtectionMask))
            {
                ParticleEffectController.ShowJumpEffect(raycastHit.point, raycastHit.normal);
            }
        }
    }
Beispiel #11
0
    // Token: 0x06001F5A RID: 8026 RVA: 0x00096970 File Offset: 0x00094B70
    protected void Explode(Vector3 point, Vector3 normal, string tag)
    {
        this.Destroy();
        if (this.Detonator != null)
        {
            this.Detonator.Explode(point);
        }
        Singleton <ExplosionManager> .Instance.PlayExplosionSound(point, this._explosionSound);

        Singleton <ExplosionManager> .Instance.ShowExplosionEffect(point, normal, tag, this.ExplosionEffect);

        if (this._showHeatwave)
        {
            ParticleEffectController.ShowHeatwaveEffect(base.transform.position);
        }
        if (this._explosionEffect)
        {
            UnityEngine.Object.Instantiate(this._explosionEffect, point, Quaternion.LookRotation(normal));
        }
    }
Beispiel #12
0
    // Token: 0x06001126 RID: 4390 RVA: 0x00068634 File Offset: 0x00066834
    public Vector3 Explode()
    {
        Vector3 result = Vector3.zero;

        try
        {
            if (this._explosionSound != null)
            {
                AutoMonoBehaviour <SfxManager> .Instance.Play3dAudioClip(this._explosionSound, base.transform.position, 1f);
            }
            if (this._explosionSfx)
            {
                GameObject gameObject = UnityEngine.Object.Instantiate(this._explosionSfx) as GameObject;
                if (gameObject)
                {
                    gameObject.transform.position = base.transform.position;
                    SelfDestroy selfDestroy = gameObject.AddComponent <SelfDestroy>();
                    if (selfDestroy)
                    {
                        selfDestroy.SetDelay(2f);
                    }
                }
            }
            else
            {
                ParticleEffectController.ShowExplosionEffect(ParticleConfigurationType.LauncherDefault, SurfaceEffectType.None, base.transform.position, Vector3.up);
            }
            if (this.OnProjectileExploded != null)
            {
                this.OnProjectileExploded(this);
            }
            result = base.transform.position;
            this.Destroy();
        }
        catch (Exception exception)
        {
            Debug.LogException(exception);
        }
        return(result);
    }
Beispiel #13
0
    // Token: 0x06001E33 RID: 7731 RVA: 0x000949EC File Offset: 0x00092BEC
    protected void EmitImpactParticles(RaycastHit hit, Vector3 direction, Vector3 muzzlePosition, float distance, bool playSound)
    {
        string            tag       = TagUtil.GetTag(hit.collider);
        Vector3           point     = hit.point;
        Vector3           hitNormal = hit.normal;
        SurfaceEffectType surface   = SurfaceEffectType.Default;

        if (this._effectMap.TryGetValue(tag, out surface))
        {
            if (GameState.Current.Map != null && GameState.Current.Map.HasWaterPlane && ((this._muzzlePosition.position.y > GameState.Current.Map.WaterPlaneHeight && point.y < GameState.Current.Map.WaterPlaneHeight) || (this._muzzlePosition.position.y < GameState.Current.Map.WaterPlaneHeight && point.y > GameState.Current.Map.WaterPlaneHeight)))
            {
                surface   = SurfaceEffectType.WaterEffect;
                hitNormal = Vector3.up;
                point.y   = GameState.Current.Map.WaterPlaneHeight;
                if (!Mathf.Approximately(direction.y, 0f))
                {
                    point.x = (GameState.Current.Map.WaterPlaneHeight - hit.point.y) / direction.y * direction.x + hit.point.x;
                    point.z = (GameState.Current.Map.WaterPlaneHeight - hit.point.y) / direction.y * direction.z + hit.point.z;
                }
            }
            ParticleEffectController.ShowHitEffect(this._effectType, surface, direction, point, hitNormal, muzzlePosition, distance, ref this._trailRenderer, this._parent);
        }
    }
Beispiel #14
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!");
        }
    }
Beispiel #15
0
 // Token: 0x06000892 RID: 2194 RVA: 0x00037730 File Offset: 0x00035930
 public static void ShowHitEffect(ParticleConfigurationType effectType, SurfaceEffectType surface, Vector3 direction, Vector3 hitPoint, Vector3 hitNormal, Vector3 muzzlePosition, float distance, ref MoveTrailrendererObject trailRenderer, Transform parent)
 {
     ParticleEffectController.ShowHitEffect(effectType, surface, direction, hitPoint, hitNormal, muzzlePosition, distance, ref trailRenderer, parent, 0);
 }