725 Commits over 516 Days - 0.06cph!
Experiments
Update Block Slices in a worker thread (thanks @Metapyziks for pointing out I needed ThreadStatic)
Send a connecting player 8 chunks a time but still very quickly
Merge branch 'main' into tasks
Start fleshing out an Inventory API
Stashing work on Inventory API
Fixed RPC related issues
Added test_item and MainInventory population
Added ChunkDataMap (currently only storing block health). Moved some stuff out of Game and into Map. Modifying ChunkDataMap values will network them accordingly. Block health is reset to 100 whenever a new block is created.
Cleanup old logs
InventoryContainer.Serialize / Deserialize
Added NetInventory a convenience BaseNetworkable with custom INetworkSerializer that will perform an initial synchronization of an InventoryContainer
Make sure InventorySystem.ClientDisconnected is called to properly clean up InventoryContainer connections
Fixed item stacking when using custom data. Refer to item types by library name or generics. Add test stack code.
Use library identifier instead of name. Fixed default stack size. Fixed stack size overflow.
Merge pull request #1 from Facepunch/tasks
Tasks + Inventory + Health
Use library identifier instead of name. Fixed default stack size. Fixed stack size overflow.
Fixed item stacking when using custom data. Refer to item types by library name or generics. Add test stack code.
Make sure InventorySystem.ClientDisconnected is called to properly clean up InventoryContainer connections
Added NetInventory a convenience BaseNetworkable with custom INetworkSerializer that will perform an initial synchronization of an InventoryContainer
InventoryContainer.Serialize / Deserialize
Added ChunkDataMap (currently only storing block health). Moved some stuff out of Game and into Map. Modifying ChunkDataMap values will network them accordingly. Block health is reset to 100 whenever a new block is created.
Added test_item and MainInventory population
Stashing work on Inventory API
Start fleshing out an Inventory API
Improved shadows and lighting on testmap
Updated temp textures
Support for higher quality materials
Add emission map, fix roughness
Merge branch 'main' into tasks
Send a connecting player 8 chunks a time but still very quickly
Update Block Slices in a worker thread (thanks @Metapyziks for pointing out I needed ThreadStatic)
BlockEntity.CenterOnBlock
Fixed north neighbour chunks not having light map updated + don't call UpdateAdjacents per opaque/translucent SO but instead do both at once (optimization)
Fixed grass side texture id being wrong is next to translucent blocks
Merge branch 'main' of sbox-corewars
Fixed torch light propagation order
Torch light level will be 6 instead of 14 for testing
Added BlockType.IsPassable and BlockType.HasTexture. Added block entity system. Automatically add/remove entities that blocks require. Use will place a random Red, Green or Blue torch for testing.
Add ServerEntity and ClientEntity support to BlockType to create entities for blocks if required
Merge branch 'main' of sbox-corewars
Added a real simple way of selecting blocks until something better is hooked up
Fixed Window block translucency and consolidate light dirtying
Don't cull faces if block is translucent
Fix remove queue not adding to right channel
Add light propagation code / seperate BFS passes for each color channel to support colored torches in theory
Avoid looping more than we need
Tidied up / refactored slightly. Translucent blocks are now their own scene object to allow for translucency pass. Now hand over to ogniK for shader magic.
Removed log
Fixed dirt not using correct texture ids in chunks other than chunk 0, 0, 0
An attempt to get sunlight working / propagating properly
Various fixes / optimizations for torchlight
Tidy up torchlight code and have it process BFS queue on tick
Temp check
Merge branch 'main' of sbox-corewars
Move LightMap to ChunkLightMap and do one texture per chunk (comment out sunlight propagation code as it's broken)
Merge branch 'main' of sbox-corewars
Merge in index component code
Rename method to make more sense
Vastly improved block system to dynamically assign block ids and read texture ids by name from the atlas. When saving maps in the future, I'll indicate which block ids in the data represent which names from the atlas.
Refactor and minor optimizations
Potentially working PoC for using volumentric texture to store light data for voxels (need ogniK to rescue me on the shader side)
Revert affected blocks (just add them all fuck it...)
Some additional tweaks / hacky(?) method to get light level from block opposite face
Making a backup of light progress
Initial torchlight code (no sun propagation yet) but still needs some additional work for face brightness to be affected by opposite block
Trying some performance improvements
Fixed an error with stripped out light propagation code (need to rework it)
Split up chunk slice loading into a task to avoid Source hang dialog when loading the map. Added a simple placeholder loading screen to show how many chunks are loaded.