public void CollectDirections(CollectDirectionsEvent evt, TargetingNode conicTargeting) { TargetingData targetingData = evt.TargetingData; ConicTargetingComponent component = conicTargeting.conicTargeting; CollectDirection(targetingData.Origin, targetingData.Dir, 0f, targetingData); float angleStep = component.HalfConeAngle / ((float)component.HalfConeNumRays); Vector3 leftDirectionWorld = new MuzzleLogicAccessor(conicTargeting.muzzlePoint, conicTargeting.weaponInstance).GetLeftDirectionWorld(); for (int i = 0; i < component.NumSteps; i++) { base.CollectSectorDirections(targetingData.Origin, targetingData.Dir, leftDirectionWorld, angleStep, component.HalfConeNumRays, targetingData); base.CollectSectorDirections(targetingData.Origin, targetingData.Dir, leftDirectionWorld, -angleStep, component.HalfConeNumRays, targetingData); leftDirectionWorld = (Vector3)(Quaternion.AngleAxis(180f / ((float)component.NumSteps), targetingData.Dir) * leftDirectionWorld); } }
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); } }