private void InstantiateExplosion(BulletHitEvent e, WeaponNode weaponNode) { BulletEffectComponent bulletEffect = weaponNode.bulletEffect; GetInstanceFromPoolEvent eventInstance = new GetInstanceFromPoolEvent { Prefab = bulletEffect.ExplosionPrefab, AutoRecycleTime = bulletEffect.ExplosionTime }; base.ScheduleEvent(eventInstance, weaponNode); GameObject gameObject = eventInstance.Instance.gameObject; gameObject.transform.position = e.Position; gameObject.transform.rotation = Quaternion.identity; gameObject.SetActive(true); }
public void SpawnExplosionOnBounce(UpdateBulletEvent e, BulletNode bulletNode, [JoinByTank] WeaponNode weaponNode) { BulletEffectComponent bulletEffect = weaponNode.bulletEffect; DirectionData data = e.TargetingData.Directions.First <DirectionData>(); if (data.StaticHit != null) { GetInstanceFromPoolEvent eventInstance = new GetInstanceFromPoolEvent { Prefab = bulletEffect.ExplosionPrefab, AutoRecycleTime = bulletEffect.ExplosionTime }; base.ScheduleEvent(eventInstance, new EntityStub()); Transform instance = eventInstance.Instance; instance.position = data.StaticHit.Position + (data.StaticHit.Normal * bulletEffect.ExplosionOffset); instance.rotation = Quaternion.LookRotation(data.StaticHit.Normal); instance.gameObject.SetActive(true); } }