// 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; }
// 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); }
// 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); } }
// 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); } } }
// 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; } }
// 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); }
// 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; }
// 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); } } }
// 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)); } }
// 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); }
// 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); } }
// 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!"); } }
// 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); }