public void CollectSectorDirectionsEvent(Tanks.Battle.ClientCore.API.CollectSectorDirectionsEvent evt, VerticalSectorTargetingNode verticalSectorTargeting, [JoinByTank] WeaponNode weapon) { TargetingData targetingData = evt.TargetingData; VerticalSectorsTargetingComponent verticalSectorsTargeting = verticalSectorTargeting.verticalSectorsTargeting; CollectDirection(evt.TargetingData.Origin, evt.TargetingData.Dir, 0f, targetingData); if (evt.TargetSectors.Count != 0) { Vector3 leftDirectionWorld = new MuzzleLogicAccessor(weapon.muzzlePoint, weapon.weaponInstance).GetLeftDirectionWorld(); TargetSectorUtils.CutSectorsByOverlap((LinkedList <TargetSector>)evt.TargetSectors, 1f / verticalSectorsTargeting.RaysPerDegree); IEnumerator <TargetSector> enumerator = evt.TargetSectors.GetEnumerator(); while (enumerator.MoveNext()) { TargetSector current = enumerator.Current; float num = current.Length(); int numRays = (int)Math.Floor((double)(verticalSectorsTargeting.RaysPerDegree * num)); this.CollectSectorDirections(targetingData, leftDirectionWorld, current, numRays); } } }
public void ApplyTargetFocusAngles(NodeAddedEvent e, TargetFocusEffectNode effect, [JoinByTank, Context] VerticalSectorTargetingNode weapon, [JoinByTank, Context] SelfTankNode tank) { if (!weapon.Entity.HasComponent <WeaponPreparedByTargetFocusEffectComponent>()) { weapon.verticalSectorsTargeting.VAngleDown += effect.targetFocusVerticalSectorTargeting.AdditionalAngleDown; weapon.verticalSectorsTargeting.VAngleUp += effect.targetFocusVerticalSectorTargeting.AdditionalAngleUp; weapon.verticalSectorsTargeting.HAngle += effect.targetFocusVerticalSectorTargeting.AdditionalAngleHorizontal; weapon.Entity.AddComponent <WeaponPreparedByTargetFocusEffectComponent>(); } }