This was achieved by not counting edge overlapping for collisions (< instead of <=)
Floating point precision is not a concern, since the bounding boxes all exist in a coarse-grained power of two grid.
fixes#599
Mostly fixes#1030
It is currently not possible to make the whole vine break when the
support is removed as far as I can tell, but it works well otherwise.
progress towards #102
I also made a new Window, which is hidden by default, but we can use it
to start drawing things in Vulkan parallel to the rest of the game in
the future, to ease the transition process.
Progress:
- [x] Load/Store/Create
- [x] Fix deadlock on destruction
- [x] Behavior on destruction (should drop contained items)
- [x] Saving on change
- [x] What happens if the player gets out of render distance or someone
else breaks it while the chest is still open?
→ it becomes uninteractible
- [x] Don't make it crash
- [x] Don't make it kick the player
- [x] ~~Make it close the inventory on the client side~~ → #1740#1741
- [x] Cleanup, ~~check if there is any legacy chest loading code~~
- [x] Add missing chest variants and recipes
fixes#1060
After failing in #1725 I decided to use a different approach at
atomizing the palette compressed data, I added a new indirection which
can be used to swap the entire content in one atomic operation. This
should make the process itself cheaper than what I had implemented
before.
related: https://github.com/PixelGuys/Cubyz/issues/1471https://github.com/PixelGuys/Cubyz/issues/1413
improves https://github.com/PixelGuys/Cubyz/issues/277
Remaining work:
- [x] double check the implementation
- [x] Fully remove the ReadWriteLock
- [x] Check if this improved meshing performance → yes it did by 10-20%
- [x] Check if this improved block update speed → yes it did by ~25%
the back is now the goto push location, the front is now the goto pop
location. It was the other way around before due to confusion.
successor to #1709
I also decided to do the isEmpty changes discussed in #1709fixes#1320
I went ahead and rephrased much of the Game Design Principles to make
them clearer.
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
Co-authored-by: Krzysztof Wiśniewski <argmaster.world@gmail.com>
Co-authored-by: IntegratedQuantum <jahe788@gmail.com>
This is a first attempt to get rid of of reference counting #1413
Basically all threads execute a global sync point, this allows
determining a time when all temporary resources (such as meshes on the
client side used in lighting on other threads) have been freed with 100%
certainty.
Remaining work:
- [x] Implement the sync point
- [x] Implement free lists and free the resources
- [x] Determine if this is worth it performance wise
- [x] Use this for chunk meshes
- [x] Remove reference counting and the locks on the chunk storage data
structure
- [x] Measure performance of gathering many light samples and compare it
with master → around 15% reduction in time
- [x] Cleanup some unused things (mesh free list)