コード例 #1
0
ファイル: SpaceCenter.cs プロジェクト: BenChung/krpc
        public static double RaycastDistance(Tuple3 position, Tuple3 direction, ReferenceFrame referenceFrame)
        {
            if (ReferenceEquals(referenceFrame, null))
            {
                throw new ArgumentNullException(nameof(referenceFrame));
            }
            var        worldPosition  = referenceFrame.PositionToWorldSpace(position.ToVector());
            var        worldDirection = referenceFrame.DirectionToWorldSpace(direction.ToVector());
            RaycastHit hitInfo;
            bool       hit = Physics.Raycast(worldPosition, worldDirection, out hitInfo);

            return(hit ? hitInfo.distance : Double.PositiveInfinity);
        }
コード例 #2
0
ファイル: SpaceCenter.cs プロジェクト: BenChung/krpc
        public static Parts.Part RaycastPart(Tuple3 position, Tuple3 direction, ReferenceFrame referenceFrame)
        {
            if (ReferenceEquals(referenceFrame, null))
            {
                throw new ArgumentNullException(nameof(referenceFrame));
            }
            var        worldPosition  = referenceFrame.PositionToWorldSpace(position.ToVector());
            var        worldDirection = referenceFrame.DirectionToWorldSpace(direction.ToVector());
            RaycastHit hitInfo;
            bool       hit = Physics.Raycast(worldPosition, worldDirection, out hitInfo);

            if (!hit)
            {
                return(null);
            }
            var part = hitInfo.collider.gameObject.GetComponentInParent <global::Part>();

            return(part == null ? null : new Parts.Part(part));
        }
コード例 #3
0
ファイル: SpaceCenter.cs プロジェクト: BenChung/krpc
 public static Tuple3 TransformDirection(Tuple3 direction, ReferenceFrame from, ReferenceFrame to)
 {
     CheckReferenceFrames(from, to);
     return(to.DirectionFromWorldSpace(from.DirectionToWorldSpace(direction.ToVector())).ToTuple());
 }