Importing testing project for XNA game studio.
Not sure those added files are sufficient for the source.
* Fixed order of vertices in the vertex buffer to direct all faces outwards.
* Erased inefficient, redundant, less straightforward commented codes. How could
it be understood by defining vertices with topLeftFront, topRightFront, blah blah blah?
* Imported PerlinNoise module from dxtest project.
* Aligned the cubes to represent volume.
It's not as slow as I expected.
I still don't get how to use BasicEffect.
Optimized perlin_noise a bit.
* Added texture to the terrain.
* Made the window larger.
Made the Player be able to stand and walk on the terrain.
Also added Player class itself.
Collision detection needs some adjustments, though.
Extracted Player class definition from Game1.cs to Player.cs, to make it maintainable.
fixes #1 Extracted Vec3i class definition from Game1 to Vec3i.cs.
Also added summary comment to Vec3i class definition.
fixes #4 I still doesn't understand why things are different between dxtest and xnatest,
but adding one to indices in volume rendering iterations seems to fix the problem.
Also, Player's rot member definition is opposite to dxtest's one, so I conjugated it.
fixes #6
* Added persistence parameter to perlin_noise().
Now Perlin Noise seems to really fractal noise with appropriate parameter.
Also, normalization factor is now obtained from theoretical limit, not actual maximum
value of the noise's range.
* Experimentally added a struct to pass numerious parameters to perlin_noise().
It worked, but this method's future is limited in that default value cannot be
assigned.
fixes #6 Making PerlinNoiseParams a class instead of struct seems to solve the
default value problem.
The parameters are not really class-like data, but cannot help the persistence=0 problem
with any other way.
fixes #5 Culled hidden faces with just as same algorithm as dxtest's.
We couldn't derive a struct, so CellInt could not be defined.
* fixes #12 Added width parameter to the Player.
The newly introduced collision box of the Player is also usedfor detecting collision
with the floor, which made logic more straightforward (not necessarily efficient or
short).
* Documented certain functions and member variables with XML style.
This should work with IDE hinting functionality and Doxygen.
* fixes #14 Added flying mode and walking mode. The space key now means jumping,
while Q and Z keys are available in flying mode to move vertically.
Also, gravity is ignored in flying mode.
* Made the Player's collision box have height.
* fixes #13 Added automatically-expanding border.
Now CellVolumes are indexed by Vec3i to remember non-limited space in optimized way.
In spite of various optimizations, drawing seems to take time. Not sure where is the
choking point, but suspecting that creating temporary Vec3i object may be a load for now.
* Added some XML source documents.
fixes #1 Separated Cell, CellVolume and World class to distinct source file to keep
the main source small.
Though those classes are internal classes of Game1, partial class definition allowed
us to do this.
fixes #15 Added ghost mode to the Player.
fixes #13 Made the world never repeat.
Well, precisely it does, if 32-bit register overflows.
PerlinNoise class is fixed a little to seemlessly connect adjacent CellVolumes.

It seems more optimization is necessary for drawing performance.
fixes #21 Copied face culling first introduced in project:dxtest to compare
efficiency between C++ and C#.
* fixes #21 Introduced scan-line method to reduce the load dramatically.
The scan line information must be cached before rendering and will require
updating after each modification to the terrain.
It should work with concave geometry, but I haven't tested.
* fixes #21 Introduced new Random struct whose algorithm is copied from
 clib library in project:projects to reduce load of random sequence initialization.
* Introduced logging functionality.