* MeshGenStream class to Mesh Chunks
* WorldInterpolationStream class to client-side-gen chunks (wip)
* Clean up attemptMeshChunk, adjacentChunkExists, and getAdjacentsCull
* Remove handleMeshGenQueue and handleChunkGenQueue
* Rewrite LocalWorld Update method to use Streams
* Delete WorldThreadDefs
* Seperate chunk functions into ChunkVec class
* Seperate Vec3Compare function into Vec3Compare class
* VecUtils class to get cardinal directions
* Server World Class
* WorldGenStream class to handle multithreaded map generation
* ServerPlayer stores active chunk boundaries
* BlockChunk stores position
* Renamed client World to LocalWorld
* Disabled client side Generation
* ServerConnection stores chunk packets to be used by the GameScene,
which gives them to the world (change later?)
* Reenabled "BlockChunk Packet Encoding" test in tests/BlockChunk.cpp
* Frustum class for Frustum Calculations
* FrustumAABB class for Axis Aligned Bounding Boxes
* FrustumPlane classes for defining the planes
* Cleaned up Ray class
* Converted Camera properties to variables
* Only render chunks if inside of Frustum
* Interpolation Class
* noise folder with NoiseParams, NoiseSampler, and NoiseSample classes
* MapGenJobs are in a seperate file
* Rewrite of MapGen class.
* Rewrite GUI shader to allow colored rectangles
* Histograms have overwrite mode to make it easier to read them
* White histogram textures
* Mesh Gen and Map Gen histograms
* More distinct and easy to read Debug Gui
* Resize buffers when the window resizes.
* Histogram class for displaying per-frame data.
* Histogram can either push data to the left when new data arrives
(false) or Overwrite with a moving insertion point (true) based on the
editInPlace variable.
* Server Regurgitates player location info to all clients
* PlayerEntity class for representing other Players on the server
* Temporary ServerEntity rendering code in GameScene
* Handle packet events properly on both classes
* PacketType & PacketChannel class
* ServerPeer & ServerPlayer classes for storing info on the server
* ConnectionList class to organize ServerPlayers and ServerPeers
* Makefiles use GLOBs and Libraries to have better organization
* Zeus directory renamed to src
* New test directory for unit tests
* Using Catch2 for unit tests
* Added unit tests to BlockChunk serialization
* Updated ServerConnection Authentication call to supply name 'Aurailus'
* Packet::deserialize now returns a pointer
* Move most of the packet handling code from Server to ConnMan
* Added visible and culls properties to node definitions in lua.
* Added solid property to node definitions in lua.
* Added 5 variants of tallgrass (which are not solid and do not cull).
* Made air non-solid.
* Made leaves not cull.
* Made world generation generate tallgrass.
Move connection code from Client.cpp to ServerConnection.cpp
GameScene connects to the server and sets player position based on it.
Server 'authenticates' client from (currently unused) token before giving it data.
Packets now support encoding floats and strings.
Server now acknowledges port argument.
ServerPlayer class for keeping track of client Player entities.
New stuff:
* Client will fork and exec a given path with the "server" argument if supplied.
* Packet class to help transfer data between client and server.
* New Server class which accepts handshake from client
* GameScene now attempts to connect to a server and ends if it fails.
Fixes:
* Changed deltaTime to double on Player class
* SceneManager defaults Scene to nullptr to fix seg fault.
* Moved some code to DebugGui and out of GameScene.
* World class stores per-frame updates for chunks and meshes.
* Scene emits warning if a derived class doesn't override all methods.
* GameScene overrides cleanup
* Created MenuScene to test having multiple scenes.
* Moved commented code out of Main
* Moved renderer->update to the Client class
* Changed all references of delta in the player class to a double.
* Delete vertices from MeshPart when deleting the object.
* SceneManager class allows swapping between scenes easily.
* Scene interface to provide methods for the SceneManager to interact with scenes.
* GameInstance turned into GameScene (derived from Scene)
* Practically move all non-commented code from main.cpp
* Create Client.cpp/h class and move logic out of main.cpp
* Create default constructor for Renderer
* Fix definition of default:stone
* Change GameInstance:update() to use a double instead of a GLfloat