Exemplo n.º 1
0
        //:TODO: This will cause multiple traversals of the paths [perf]. Review.
        IHitResult GetClosestHit(Vector3 testPoint)
        {
            var closestMoveInstruction = _objectDetector.DetectMoveInstruction(testPoint);

            if (closestMoveInstruction != null)
            {
                return(closestMoveInstruction);
            }
            var closestPathSegment = _objectDetector.DetectPathSegment(testPoint);

            if (closestPathSegment != null)
            {
                return(closestPathSegment);
            }
            return(null);
        }
Exemplo n.º 2
0
        public override void Update(VrSession session)
        {
            var ctrl = session.RightController;

            if (_dragMoveInstr != null)
            {
                if (ctrl.InputState.TriggerPressed)
                {
                    //double newZoneVal =
                }
                else
                {
                    _dragMoveInstr = null;
                }
            }

            var ctrlPos   = ctrl.PointerTransform.Translation;
            var hitResult = _detector.DetectMoveInstruction(ctrlPos) as HitResult <RsMoveInstruction>;

            if (hitResult != null)
            {
                //:TODO: Update some preview

                if (ctrl.InputState.TriggerPressed && !ctrl.PreviousInputState.TriggerPressed)
                {
                    // Improve?
                    _zoneArg = hitResult.HitObject.InstructionArguments["Z"];
                    if (_zoneArg == null)
                    {
                        return;
                    }
                    int zoneVal = 0;
                    if (_zoneArg.Name.StartsWith("z") && _zoneArg.Enabled)
                    {
                        int.TryParse(_zoneArg.Value, out zoneVal);
                    }
                    _distOffset    = ctrlPos.Distance(hitResult.HitPoint) - zoneVal;
                    _dragMoveInstr = hitResult.HitObject;
                }
            }
        }