コード例 #1
0
        /// <summary>
        /// Build the <see cref="VisibilityProbeIntersectionJobData"/> and feed the <see cref="VisibilityProbeLocalPoints"/> based on targetted interactive object probe.
        /// </summary>
        private VisibilityProbeIntersectionJobData CalculatingVisibilityProbeJobData(RangeIntersectionCalculator RangeIntersectionCalculatorV2, ref int currentVisibilityProbeLocalPointsCounter)
        {
            var visibilityProbes = RangeIntersectionCalculatorV2.TrackedInteractiveObject.InteractiveGameObject.VisibilityProbe;
            VisibilityProbeIntersectionJobData visibilityProbeIntersectionJobData = default;

            if (visibilityProbes.LocalPoints != null && visibilityProbes.LocalPoints.Length > 0)
            {
                int startIndex = currentVisibilityProbeLocalPointsCounter;
                int endIndex   = startIndex;
                for (int i = 0; i < visibilityProbes.LocalPoints.Length; i++)
                {
                    this.VisibilityProbeLocalPoints[currentVisibilityProbeLocalPointsCounter] = visibilityProbes[i];
                    endIndex = currentVisibilityProbeLocalPointsCounter;
                    currentVisibilityProbeLocalPointsCounter += 1;
                }

                visibilityProbeIntersectionJobData = new VisibilityProbeIntersectionJobData()
                {
                    VisibilityProbeLocalToWorld = RangeIntersectionCalculatorV2.TrackedInteractiveObject.InteractiveGameObject.LogicCollider.transform.localToWorldMatrix,
                    VisibilityProbePositionsBeginIndexIncluded = startIndex,
                    VisibilityProbePositionsEndIndexIncluded   = endIndex
                };
            }

            return(visibilityProbeIntersectionJobData);
        }
コード例 #2
0
 public void CalculationDataSetupForRangeIntersectionCalculator(RangeIntersectionCalculator rangeIntersectionCalculator,
                                                                IsOccludedByObstacleJobData IsOccludedByObstacleJobData,
                                                                VisibilityProbeIntersectionJobData visibilityProbeIntersectionJobData, int currentObstacleIntersectionCalculatorCounter)
 {
     if (rangeIntersectionCalculator.GetAssociatedRangeObjectType() == RangeType.SPHERE)
     {
         var SphereRangeObject         = (SphereRangeObjectV2)rangeIntersectionCalculator.GetAssociatedRangeObject();
         var SphereIntersectionJobData = new SphereIntersectionJobData
         {
             RangeIntersectionCalculatorV2UniqueID = rangeIntersectionCalculator.RangeIntersectionCalculatorV2UniqueID,
             RangeTransform = SphereRangeObject.GetTransform(),
             IsOccludedByObstacleJobData        = IsOccludedByObstacleJobData,
             VisibilityProbeIntersectionJobData = visibilityProbeIntersectionJobData,
             ObstacleCalculationDataIndex       = SphereRangeObject.GetObstacleListener() == null ? -1 : (currentObstacleIntersectionCalculatorCounter - 1),
             SphereRadius = SphereRangeObject.SphereBoundingCollider.radius
         };
         this.SphereIntersectionJobData[this.currentSphereIntersectionJobdataCounter] = SphereIntersectionJobData;
         this.currentSphereIntersectionJobdataCounter += 1;
     }
 }
コード例 #3
0
 public void CalculationDataSetupForRangeIntersectionCalculator(RangeIntersectionCalculator rangeIntersectionCalculator,
                                                                IsOccludedByObstacleJobData IsOccludedByObstacleJobData, VisibilityProbeIntersectionJobData visibilityProbeIntersectionJobData, int currentObstacleIntersectionCalculatorCounter)
 {
     if (rangeIntersectionCalculator.GetAssociatedRangeObjectType() == RangeType.ROUNDED_FRUSTUM)
     {
         var RoundedFrustumRangeObject         = (RoundedFrustumRangeObjectV2)rangeIntersectionCalculator.GetAssociatedRangeObject();
         var RoundedFrustumIntersectionJobData = new RoundedFrustumIntersectionJobData
         {
             RangeIntersectionCalculatorV2UniqueID = rangeIntersectionCalculator.RangeIntersectionCalculatorV2UniqueID,
             FrustumRadius  = RoundedFrustumRangeObject.GetFrustum().GetFrustumFaceRadius(),
             RangeTransform = RoundedFrustumRangeObject.GetTransform(),
             IsOccludedByObstacleJobData        = IsOccludedByObstacleJobData,
             RoundedFrustumPositions            = RoundedFrustumRangeObject.GetFrustumWorldPositions(),
             VisibilityProbeIntersectionJobData = visibilityProbeIntersectionJobData,
             ObstacleCalculationDataIndex       = RoundedFrustumRangeObject.GetObstacleListener() == null ? -1 : (currentObstacleIntersectionCalculatorCounter - 1)
         };
         this.RoundedFrustumIntersectionJobData[currentRoundedFrustumIntersectionJobDataCounter] = RoundedFrustumIntersectionJobData;
         currentRoundedFrustumIntersectionJobDataCounter += 1;
     }
 }