public void DrawCubeOutLine() { if (HasOutLineTool) { Point3D CubePosition = new Point3D(-1, -1, -1); double PickDistance = 5; Vector3D ViewDir = CameraDirection; for (double i = 0; i <= PickDistance; i += 0.1f) { Point3D PickPosition = new Point3D(CameraPosition.X + ViewDir.X * i, CameraPosition.Y + ViewDir.Y * i, CameraPosition.Z + ViewDir.Z * i); CubePosition = new Point3D(Math.Round(CameraPosition.X + ViewDir.X * (i + 1)), Math.Round(CameraPosition.Y + ViewDir.Y * (i + 1)), Math.Round(CameraPosition.Z + ViewDir.Z * (i + 1))); if (ChunkTracker.HasVoxel(PickPosition)) { break; } } if (!CubeOutLinePosition.Equals(CubePosition)) { //redraw cube outline CubeOutLinePosition = CubePosition; TranslateTransform3D translation = new TranslateTransform3D(CubeOutLinePosition.X, CubeOutLinePosition.Y, CubeOutLinePosition.Z); CubeOutLineModel.Transform = translation; } //Debug.WriteLine(CubeOutLinePosition); } else { TranslateTransform3D translation = new TranslateTransform3D(-100, -100, -100); CubeOutLineModel.Transform = translation; CubeOutLinePosition = new Point3D(-100, -100, -100); } }