147 Commits over 424 Days - 0.01cph!
Make sure material override is done on the client
Add material override support to block model overrides
Create vertex buffer when mesh is created and only update size and data from then on
Send raw json via RPC for the client to load on spawn
Throw an exception if trying to initialize blocks with an invalid block id
HasTexture -> HideMesh. Add option to disable clearing state when setting a block on the server. Add ModelOverride and ModelFacesdirection to BlockResource. Add ModelBlockEntity and ModelBlockState.
Make some additional changes to block updates per tick
Some changes around outgoing block updates to make sure only the latest update is sent
Added BlockSoundData to BlockResource and support in AssetBlock
Added VoxelWorld.GetBlockType overload for position
Add BlockType.ShowInEditor
Print friendly name instead of unique ids in logs
Add BlockTextureList to BlockResource so directional sprite names can be specified
Change block resource format
Added AssetBlock. Added BlockResource. Added backwards compatibility for blocks that were classes but are now assets.
Make BlockType, LiquidBlock abstract. Don't add blocks to the valid blocklist if the type is abstract or a generic type
Add SourceLighting value (0-8) to BlockType for future stuff
Add ChunkRenderLayer.SetBrightness and ChunkRenderLayer.SetOpacity. Increase block texture limit from 32 to 512
Disable collision on detail models + clear details properly if a new neighbour is placed above us
Add BlockType.OnSpawnDetailModel
Pass in world position not local position to OnBlockAdded
Ensure block state, entities and callbacks are called for blocks when chunk initialize + detail mesh support
Optimize cached day cycle controller (for when none exists)
Added BlockType.Description
Fixed blocks not registering as new states when deserializing for client
Added VoxelWorld.GetBlocksInRadius
Don't make a test DayCycleController and then blame Louis
Add [HammerEntity] and [Title] to DayCycleController
Add BlockType.Icon and BlockEntity.VoxelWorld -> BlockEntity.World
Some safety around state updates
Changed some state stuff and send ints instead of bytes for bigger worlds
Add VoxelWorld.GetPositionsMaxs/Mins
Add ResetInterpolation() to ISourceEntity
Don't create states for a position outside of the world bounds
Fixed a bug where air block was being added (this took way too long to debug)
Remove logs
Add overload for SetBlockInDirection
Only update ChunkViewer every half a second
Add Viewer.IsBelowWorld and change Viewer.IsInMapBounds to Viewer.IsInWorld
Fixed various block state issues
Initialize health in BlockState.OnCreated
Change Set/GetHealth to Set/GetBlockDamage and update in BlockState