public static bool isMaterialDynamic(EPhysicsMaterial material) { switch (material) { case EPhysicsMaterial.CLOTH_DYNAMIC: return(true); case EPhysicsMaterial.TILE_DYNAMIC: return(true); case EPhysicsMaterial.CONCRETE_DYNAMIC: return(true); case EPhysicsMaterial.FLESH_DYNAMIC: return(true); case EPhysicsMaterial.GRAVEL_DYNAMIC: return(true); case EPhysicsMaterial.METAL_DYNAMIC: return(true); case EPhysicsMaterial.WOOD_DYNAMIC: return(true); } return(false); }
public static RaycastInfo GenerateRaycast(GameObject Object, Vector3 Point, Collider col) { ELimb Limb = RaycastOptions.TargetLimb; if (RaycastOptions.UseRandomLimb) { ELimb[] Limbs = (ELimb[])Enum.GetValues(typeof(ELimb)); Limb = Limbs[MathUtilities.Random.Next(0, Limbs.Length)]; } EPhysicsMaterial mat = col == null ? EPhysicsMaterial.NONE : DamageTool.getMaterial(Point, Object.transform, col); if (RaycastOptions.UseTargetMaterial) { mat = RaycastOptions.TargetMaterial; } return(new RaycastInfo(Object.transform) { point = Point, direction = RaycastOptions.UseModifiedVector ? RaycastOptions.TargetRagdoll.ToVector() : OptimizationVariables.MainPlayer.look.aim.forward, limb = Limb, material = mat, player = Object.GetComponent <Player>(), zombie = Object.GetComponent <Zombie>(), vehicle = Object.GetComponent <InteractableVehicle>() }); }
public static RaycastInfo GenerateRaycast(GameObject Object, Vector3 Point, Collider col) { ELimb limb = RaycastOptions.TargetLimb; if (RaycastOptions.UseRandomLimb) { ELimb[] array = (ELimb[])Enum.GetValues(typeof(ELimb)); limb = array[MathUtilities.Random.Next(0, array.Length)]; } EPhysicsMaterial material = (col == null) ? EPhysicsMaterial.NONE : DamageTool.getMaterial(Point, Object.transform, col); return(new RaycastInfo(Object.transform) { point = Point, direction = OptimizationVariables.MainPlayer.look.aim.forward, limb = limb, material = material, player = Object.GetComponent <Player>(), zombie = Object.GetComponent <Zombie>(), vehicle = Object.GetComponent <InteractableVehicle>() }); }
// Token: 0x06000239 RID: 569 RVA: 0x00015518 File Offset: 0x00013718 public static RaycastInfo GenerateRaycast(GameObject Object, Vector3 Point) { ELimb limb = RaycastOptions.TargetLimb; if (RaycastOptions.UseRandomLimb) { limb = MathUtilities.RandomEnumValue <ELimb>(); } Collider component = Object.GetComponent <Collider>(); EPhysicsMaterial material = (component == null) ? EPhysicsMaterial.NONE : DamageTool.getMaterial(Point, Object.transform, component); return(new RaycastInfo(Object.transform) { point = Point, direction = Player.player.look.aim.forward, limb = limb, material = material, player = Object.GetComponent <Player>(), zombie = Object.GetComponentInParent <Zombie>(), vehicle = Object.GetComponent <InteractableVehicle>(), animal = Object.GetComponentInParent <Animal>() }); }
// Token: 0x0600280E RID: 10254 RVA: 0x000F2934 File Offset: 0x000F0D34 public static Transform effect(ushort id, Vector3 point, Vector3 normal) { EffectAsset effectAsset = (EffectAsset)Assets.find(EAssetType.EFFECT, id); if (effectAsset == null) { return(null); } if (effectAsset.splatterTemperature != EPlayerTemperature.NONE) { Transform transform = new GameObject().transform; transform.name = "Temperature"; transform.parent = Level.effects; transform.position = point + Vector3.down * -2f; transform.localScale = Vector3.one * 6f; transform.gameObject.SetActive(false); transform.gameObject.AddComponent <TemperatureTrigger>().temperature = effectAsset.splatterTemperature; transform.gameObject.SetActive(true); UnityEngine.Object.Destroy(transform.gameObject, effectAsset.splatterLifetime - effectAsset.splatterLifetimeSpread); } if (Dedicator.isDedicated) { if (!effectAsset.spawnOnDedicatedServer) { return(null); } } else if (GraphicsSettings.effectQuality == EGraphicQuality.OFF && !effectAsset.splatterLiquid) { return(null); } Quaternion quaternion = Quaternion.LookRotation(normal); if (effectAsset.randomizeRotation) { quaternion *= Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 360)); } Transform transform2 = EffectManager.pool.Instantiate(effectAsset.effect, point, quaternion).transform; transform2.name = id.ToString(); transform2.parent = Level.effects; if (effectAsset.splatter > 0 && (!effectAsset.gore || OptionsSettings.gore)) { for (int i = 0; i < (int)(effectAsset.splatter * ((effectAsset.splatterLiquid || !(Player.player != null) || Player.player.skills.boost != EPlayerBoost.SPLATTERIFIC) ? 1 : 8)); i++) { RaycastHit raycastHit; if (effectAsset.splatterLiquid) { float f = UnityEngine.Random.Range(0f, 6.28318548f); float num = UnityEngine.Random.Range(1f, 6f); Ray ray = new Ray(point + new Vector3(Mathf.Cos(f) * num, 0f, Mathf.Sin(f) * num), Vector3.down); int splatter = RayMasks.SPLATTER; LandscapeHoleUtility.raycastIgnoreLandscapeIfNecessary(ray, 8f, ref splatter); Physics.Raycast(ray, out raycastHit, 8f, splatter); } else { Ray ray2 = new Ray(point, -2f * normal + new Vector3(UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f))); int splatter2 = RayMasks.SPLATTER; LandscapeHoleUtility.raycastIgnoreLandscapeIfNecessary(ray2, 8f, ref splatter2); Physics.Raycast(ray2, out raycastHit, 8f, splatter2); } if (raycastHit.transform != null) { EPhysicsMaterial material = DamageTool.getMaterial(raycastHit.point, raycastHit.transform, raycastHit.collider); if (!PhysicsTool.isMaterialDynamic(material)) { float num2 = UnityEngine.Random.Range(1f, 2f); Transform transform3 = EffectManager.pool.Instantiate(effectAsset.splatters[UnityEngine.Random.Range(0, effectAsset.splatters.Length)], raycastHit.point + raycastHit.normal * UnityEngine.Random.Range(0.04f, 0.06f), Quaternion.LookRotation(raycastHit.normal) * Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 360))).transform; transform3.name = "Splatter"; transform3.parent = Level.effects; transform3.localScale = new Vector3(num2, num2, num2); transform3.gameObject.SetActive(true); if (effectAsset.splatterLifetime > 1.401298E-45f) { EffectManager.pool.Destroy(transform3.gameObject, effectAsset.splatterLifetime + UnityEngine.Random.Range(-effectAsset.splatterLifetimeSpread, effectAsset.splatterLifetimeSpread)); } else { EffectManager.pool.Destroy(transform3.gameObject, GraphicsSettings.effect); } } } } } if (effectAsset.gore) { transform2.GetComponent <ParticleSystem>().emission.enabled = OptionsSettings.gore; } if (!effectAsset.isStatic && transform2.GetComponent <AudioSource>() != null) { transform2.GetComponent <AudioSource>().pitch = UnityEngine.Random.Range(0.9f, 1.1f); } if (effectAsset.lifetime > 1.401298E-45f) { EffectManager.pool.Destroy(transform2.gameObject, effectAsset.lifetime + UnityEngine.Random.Range(-effectAsset.lifetimeSpread, effectAsset.lifetimeSpread)); } else { float num3 = 0f; MeshRenderer component = transform2.GetComponent <MeshRenderer>(); if (component == null) { ParticleSystem component2 = transform2.GetComponent <ParticleSystem>(); if (component2 != null) { if (component2.main.loop) { num3 = component2.main.startLifetime.constantMax; } else { num3 = component2.main.duration + component2.main.startLifetime.constantMax; } } AudioSource component3 = transform2.GetComponent <AudioSource>(); if (component3 != null && component3.clip != null && component3.clip.length > num3) { num3 = component3.clip.length; } } if (num3 < 1.401298E-45f) { num3 = GraphicsSettings.effect; } EffectManager.pool.Destroy(transform2.gameObject, num3); } if (effectAsset.blast > 0 && GraphicsSettings.blast && GraphicsSettings.renderMode == ERenderMode.DEFERRED) { EffectManager.effect(effectAsset.blast, point, new Vector3(UnityEngine.Random.Range(-0.1f, 0.1f), 1f, UnityEngine.Random.Range(-0.1f, 0.1f))); } return(transform2); }
// Token: 0x060033E6 RID: 13286 RVA: 0x00152070 File Offset: 0x00150470 public static void impact(Vector3 point, Vector3 normal, EPhysicsMaterial material, bool forceDynamic, CSteamID spectatorID, Vector3 spectatorPoint) { if (material == EPhysicsMaterial.NONE) { return; } ushort id = 0; if (material == EPhysicsMaterial.CLOTH_DYNAMIC || material == EPhysicsMaterial.TILE_DYNAMIC || material == EPhysicsMaterial.CONCRETE_DYNAMIC) { id = 38; } else if (material == EPhysicsMaterial.CLOTH_STATIC || material == EPhysicsMaterial.TILE_STATIC || material == EPhysicsMaterial.CONCRETE_STATIC) { id = ((!forceDynamic) ? 13 : 38); } else if (material == EPhysicsMaterial.FLESH_DYNAMIC) { id = 5; } else if (material == EPhysicsMaterial.GRAVEL_DYNAMIC) { id = 44; } else if (material == EPhysicsMaterial.GRAVEL_STATIC) { id = ((!forceDynamic) ? 14 : 44); } else if (material == EPhysicsMaterial.METAL_DYNAMIC) { id = 18; } else if (material == EPhysicsMaterial.METAL_STATIC || material == EPhysicsMaterial.METAL_SLIP) { id = ((!forceDynamic) ? 12 : 18); } else if (material == EPhysicsMaterial.WOOD_DYNAMIC) { id = 17; } else if (material == EPhysicsMaterial.WOOD_STATIC) { id = ((!forceDynamic) ? 2 : 17); } else if (material == EPhysicsMaterial.FOLIAGE_STATIC || material == EPhysicsMaterial.FOLIAGE_DYNAMIC) { id = 15; } else if (material == EPhysicsMaterial.SNOW_STATIC || material == EPhysicsMaterial.ICE_STATIC) { id = 41; } else if (material == EPhysicsMaterial.WATER_STATIC) { id = 16; } else if (material == EPhysicsMaterial.ALIEN_DYNAMIC) { id = 95; } DamageTool.impact(point, normal, id, spectatorID, spectatorPoint); }
// Token: 0x060033E5 RID: 13285 RVA: 0x0015205E File Offset: 0x0015045E public static void impact(Vector3 point, Vector3 normal, EPhysicsMaterial material, bool forceDynamic) { DamageTool.impact(point, normal, material, forceDynamic, CSteamID.Nil, point); }