146 Commits over 181 Days - 0.03cph!
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
Remove log and update texture 3d test (probably wrong)
Add ChunkLightMap.SetHealth / GetHealth and have a seperate PendingData and Data for volume texture updates
Add BlockState.OnCreated and BlockState.OnRemoved and update volume texture for health accordingly
Add BlockState.ShouldTick and BlockState.TickRate let states decide if they do anything
Just only send the dirty ones that have a valid state still
Remove dirty block state update if a block is removed
Try using BinaryHelper to ensure state updates don't fail if a current block doesn't support that state
Added VoxelWorld.GetBlockType<T>() for ease
Add distance params and condition param to SetBlock and GetBlock methods