Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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>()
        });
    }
Ejemplo n.º 4
0
        // 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>()
            });
        }
Ejemplo n.º 5
0
        // 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);
        }
Ejemplo n.º 6
0
        // 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);
        }
Ejemplo n.º 7
0
 // 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);
 }