public void InitLaser(NodeAddedEvent e, SelfActiveTankNode activeTank, [JoinByTank] WeaponWithLaser weapon, [JoinAll] SingleNode <LaserSightSettingsComponent> settings) { if (settings.component.Enabled) { GameObject asset = weapon.shaftAimingLaser.Asset; for (int i = 0; i < weapon.muzzlePoint.Points.Length; i++) { GetInstanceFromPoolEvent eventInstance = new GetInstanceFromPoolEvent { Prefab = asset }; base.ScheduleEvent(eventInstance, activeTank); Transform instance = eventInstance.Instance; GameObject gameObject = instance.gameObject; ShaftAimingLaserBehaviour component = gameObject.GetComponent <ShaftAimingLaserBehaviour>(); weapon.shaftAimingLaser.EffectInstance = component; CustomRenderQueue.SetQueue(gameObject, 0xc4e); Transform transform = weapon.weaponInstance.WeaponInstance.transform; instance.position = transform.position; instance.rotation = transform.rotation; gameObject.SetActive(true); component.Init(); component.SetColor(Color.red); component.Show(); } weapon.Entity.AddComponent <ShaftAimingLaserReadyComponent>(); } }
private void UpdateLaser(TargetingData targeting, WeaponWithLaser weapon) { float maxLength = weapon.shaftAimingLaser.MaxLength; float minLength = weapon.shaftAimingLaser.MinLength; for (int i = 0; i < weapon.muzzlePoint.Points.Length; i++) { Vector3 forward = weapon.weaponInstance.WeaponInstance.transform.forward; Transform transform = weapon.muzzlePoint.Points[i]; Vector3 localPosition = transform.localPosition; Vector3 vector2 = transform.position - (forward * localPosition.magnitude); ShaftAimingLaserBehaviour behaviour = weapon.shaftAimingLaser.EffectInstances[i]; if (targeting.HasTargetHit() && ((targeting.BestDirection != null) && (targeting.BestDirection.Targets.Count > 0))) { Vector3 hitPoint = targeting.BestDirection.Targets[0].HitPoint; float num4 = Vector3.Distance(vector2, hitPoint); behaviour.UpdateTargetPosition(vector2, hitPoint, num4 >= (minLength + transform.localPosition.magnitude), num4 > transform.localPosition.magnitude); } else { bool flag; bool flag2; Vector3 point;