// Token: 0x06000EBE RID: 3774 RVA: 0x000489C0 File Offset: 0x00046BC0
        public void SimpleMuzzleFlash(GameObject effectPrefab, GameObject obj, string muzzleName, bool transmit)
        {
            if (!obj)
            {
                return;
            }
            ModelLocator component = obj.GetComponent <ModelLocator>();

            if (component && component.modelTransform)
            {
                ChildLocator component2 = component.modelTransform.GetComponent <ChildLocator>();
                if (component2)
                {
                    int       childIndex = component2.FindChildIndex(muzzleName);
                    Transform transform  = component2.FindChild(childIndex);
                    if (transform)
                    {
                        EffectData effectData = new EffectData
                        {
                            origin = transform.position
                        };
                        effectData.SetChildLocatorTransformReference(obj, childIndex);
                        EffectManager.instance.SpawnEffect(effectPrefab, effectData, transmit);
                    }
                }
            }
        }
Beispiel #2
0
        // Token: 0x06000B38 RID: 2872 RVA: 0x0004B60C File Offset: 0x0004980C
        public void CreateEffect(AnimationEvent animationEvent)
        {
            Transform  transform  = this.childLocator.FindChild(animationEvent.stringParameter);
            EffectData effectData = new EffectData();

            effectData.origin = transform.position;
            effectData.SetChildLocatorTransformReference(base.gameObject, this.childLocator.FindChildIndex(animationEvent.stringParameter));
            EffectManager.instance.SpawnEffect((GameObject)animationEvent.objectReferenceParameter, effectData, animationEvent.intParameter != 0);
        }
Beispiel #3
0
        // Token: 0x060005D7 RID: 1495 RVA: 0x0001834C File Offset: 0x0001654C
        public void CreateEffect(AnimationEvent animationEvent)
        {
            Transform transform = base.transform;
            int       num       = -1;

            if (!string.IsNullOrEmpty(animationEvent.stringParameter))
            {
                num = this.childLocator.FindChildIndex(animationEvent.stringParameter);
                if (num != -1)
                {
                    transform = this.childLocator.FindChild(num);
                }
            }
            bool       transmit   = animationEvent.intParameter != 0;
            EffectData effectData = new EffectData();

            effectData.origin = transform.position;
            effectData.SetChildLocatorTransformReference(this.bodyObject, num);
            EffectManager.SpawnEffect((GameObject)animationEvent.objectReferenceParameter, effectData, transmit);
        }
Beispiel #4
0
        // Token: 0x0600042F RID: 1071 RVA: 0x000113A0 File Offset: 0x0000F5A0
        private void FireSingle(Vector3 normal, int muzzleIndex)
        {
            float   num    = this.maxDistance;
            Vector3 vector = this.origin + normal * this.maxDistance;
            List <BulletAttack.BulletHit> list = new List <BulletAttack.BulletHit>();
            bool flag  = this.radius == 0f || this.smartCollision;
            bool flag2 = this.radius != 0f;
            HashSet <GameObject> hashSet = null;

            if (this.smartCollision)
            {
                hashSet = new HashSet <GameObject>();
            }
            if (flag)
            {
                RaycastHit[] array = Physics.RaycastAll(this.origin, normal, num, this.hitMask, this.queryTriggerInteraction);
                for (int i = 0; i < array.Length; i++)
                {
                    BulletAttack.BulletHit bulletHit = default(BulletAttack.BulletHit);
                    this.InitBulletHitFromRaycastHit(ref bulletHit, this.origin, normal, ref array[i]);
                    list.Add(bulletHit);
                    if (this.smartCollision)
                    {
                        hashSet.Add(bulletHit.entityObject);
                    }
                    if (bulletHit.distance < num)
                    {
                        num = bulletHit.distance;
                    }
                }
            }
            if (flag2)
            {
                LayerMask mask = this.hitMask;
                if (this.smartCollision)
                {
                    mask &= ~LayerIndex.world.mask;
                }
                RaycastHit[] array2 = Physics.SphereCastAll(this.origin, this.radius, normal, num, mask, this.queryTriggerInteraction);
                for (int j = 0; j < array2.Length; j++)
                {
                    BulletAttack.BulletHit bulletHit2 = default(BulletAttack.BulletHit);
                    this.InitBulletHitFromRaycastHit(ref bulletHit2, this.origin, normal, ref array2[j]);
                    if (!this.smartCollision || !hashSet.Contains(bulletHit2.entityObject))
                    {
                        list.Add(bulletHit2);
                    }
                }
            }
            this.ProcessHitList(list, ref vector, new List <GameObject>());
            if (this.tracerEffectPrefab)
            {
                EffectData effectData = new EffectData
                {
                    origin = vector,
                    start  = this.origin
                };
                effectData.SetChildLocatorTransformReference(this.weapon, muzzleIndex);
                EffectManager.SpawnEffect(this.tracerEffectPrefab, effectData, true);
            }
        }