コード例 #1
0
        public MovingObjectPosition CalculateIntercept(Vec3D par1Vec3D, Vec3D par2Vec3D)
        {
            Vec3D vec3d  = par1Vec3D.GetIntermediateWithXValue(par2Vec3D, MinX);
            Vec3D vec3d1 = par1Vec3D.GetIntermediateWithXValue(par2Vec3D, MaxX);
            Vec3D vec3d2 = par1Vec3D.GetIntermediateWithYValue(par2Vec3D, MinY);
            Vec3D vec3d3 = par1Vec3D.GetIntermediateWithYValue(par2Vec3D, MaxY);
            Vec3D vec3d4 = par1Vec3D.GetIntermediateWithZValue(par2Vec3D, MinZ);
            Vec3D vec3d5 = par1Vec3D.GetIntermediateWithZValue(par2Vec3D, MaxZ);

            if (!IsVecInYZ(vec3d))
            {
                vec3d = null;
            }

            if (!IsVecInYZ(vec3d1))
            {
                vec3d1 = null;
            }

            if (!IsVecInXZ(vec3d2))
            {
                vec3d2 = null;
            }

            if (!IsVecInXZ(vec3d3))
            {
                vec3d3 = null;
            }

            if (!IsVecInXY(vec3d4))
            {
                vec3d4 = null;
            }

            if (!IsVecInXY(vec3d5))
            {
                vec3d5 = null;
            }

            Vec3D vec3d6 = null;

            if (vec3d != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d;
            }

            if (vec3d1 != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d1) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d1;
            }

            if (vec3d2 != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d2) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d2;
            }

            if (vec3d3 != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d3) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d3;
            }

            if (vec3d4 != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d4) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d4;
            }

            if (vec3d5 != null && (vec3d6 == null || par1Vec3D.SquareDistanceTo(vec3d5) < par1Vec3D.SquareDistanceTo(vec3d6)))
            {
                vec3d6 = vec3d5;
            }

            if (vec3d6 == null)
            {
                return(null);
            }

            sbyte byte0 = -1;

            if (vec3d6 == vec3d)
            {
                byte0 = 4;
            }

            if (vec3d6 == vec3d1)
            {
                byte0 = 5;
            }

            if (vec3d6 == vec3d2)
            {
                byte0 = 0;
            }

            if (vec3d6 == vec3d3)
            {
                byte0 = 1;
            }

            if (vec3d6 == vec3d4)
            {
                byte0 = 2;
            }

            if (vec3d6 == vec3d5)
            {
                byte0 = 3;
            }

            return(new MovingObjectPosition(0, 0, 0, byte0, vec3d6));
        }