public void CollectDirections(CollectDirectionsEvent evt, VerticalTargetingNode verticalTargeting) { TargetingData targetingData = evt.TargetingData; VerticalTargetingComponent component = verticalTargeting.verticalTargeting; CollectDirection(targetingData.Origin, targetingData.Dir, 0f, targetingData); Vector3 leftDirectionWorld = new MuzzleLogicAccessor(verticalTargeting.muzzlePoint, verticalTargeting.weaponInstance).GetLeftDirectionWorld(); if (component.NumRaysUp > 0) { base.CollectSectorDirections(targetingData.Origin, targetingData.Dir, leftDirectionWorld, component.AngleUp / ((float)component.NumRaysUp), component.NumRaysUp, targetingData); } if (component.NumRaysDown > 0) { base.CollectSectorDirections(targetingData.Origin, targetingData.Dir, leftDirectionWorld, -component.AngleDown / ((float)component.NumRaysDown), component.NumRaysDown, targetingData); } }
public void ApplyTargetFocusAngles(NodeAddedEvent e, TargetFocusEffectNode effect, [JoinByTank, Context] VerticalTargetingNode weapon, [JoinByTank, Context] SelfTankNode tank) { if (!weapon.Entity.HasComponent <WeaponPreparedByTargetFocusEffectComponent>()) { float angleDown = weapon.verticalTargeting.AngleDown; float angleUp = weapon.verticalTargeting.AngleUp; float num3 = ((float)weapon.verticalTargeting.NumRaysUp) / angleUp; float num4 = ((float)weapon.verticalTargeting.NumRaysDown) / angleDown; weapon.verticalTargeting.AngleDown += effect.targetFocusVerticalTargeting.AdditionalAngleDown; weapon.verticalTargeting.AngleUp += effect.targetFocusVerticalTargeting.AdditionalAngleUp; weapon.verticalTargeting.NumRaysUp = Mathf.RoundToInt(num3 * weapon.verticalTargeting.AngleUp); weapon.verticalTargeting.NumRaysDown = Mathf.RoundToInt(num4 * weapon.verticalTargeting.AngleDown); weapon.Entity.AddComponent <WeaponPreparedByTargetFocusEffectComponent>(); } }