Commit Graph

19 Commits

Author SHA1 Message Date
haslersn
1796c09ca1 common: Rework volume API
See the doc comments in `common/src/vol.rs` for more information on
the API itself.

The changes include:

* Consistent `Err`/`Error` naming.
  * Types are named `...Error`.
  * `enum` variants are named `...Err`.
* Rename `VolMap{2d, 3d}` -> `VolGrid{2d, 3d}`. This is in preparation
  to an upcoming change where a “map” in the game related sense will
  be added.
* Add volume iterators. There are two types of them:
  * _Position_ iterators obtained from the trait `IntoPosIterator`
    using the method
    `fn pos_iter(self, lower_bound: Vec3<i32>, upper_bound: Vec3<i32>) -> ...`
    which returns an iterator over `Vec3<i32>`.
  * _Volume_ iterators obtained from the trait `IntoVolIterator`
    using the method
    `fn vol_iter(self, lower_bound: Vec3<i32>, upper_bound: Vec3<i32>) -> ...`
    which returns an iterator over `(Vec3<i32>, &Self::Vox)`.
  Those traits will usually be implemented by references to volume
  types (i.e. `impl IntoVolIterator<'a> for &'a T` where `T` is some
  type which usually implements several volume traits, such as `Chunk`).
  * _Position_ iterators iterate over the positions valid for that
    volume.
  * _Volume_ iterators do the same but return not only the position
    but also the voxel at that position, in each iteration.
* Introduce trait `RectSizedVol` for the use case which we have with
  `Chonk`: A `Chonk` is sized only in x and y direction.
* Introduce traits `RasterableVol`, `RectRasterableVol`
  * `RasterableVol` represents a volume that is compile-time sized and has
    its lower bound at `(0, 0, 0)`. The name `RasterableVol` was chosen
    because such a volume can be used with `VolGrid3d`.
  * `RectRasterableVol` represents a volume that is compile-time sized at
    least in x and y direction and has its lower bound at `(0, 0, z)`.
    There's no requirement on he lower bound or size in z direction.
    The name `RectRasterableVol` was chosen because such a volume can be
    used with `VolGrid2d`.
2019-09-06 15:43:31 +02:00
Cody
6b09fd7c53 Pedantic comment and language fixes.
Former-commit-id: eb49765c911aaa97a9c8ed351216a7a6f8411213
2019-05-17 18:32:07 -04:00
Joshua Barretto
91184356e7 Added chonks
Former-commit-id: a62fb321dbfb7541feaa9de4e641db9887b061fd
2019-05-17 18:44:30 +01:00
Joshua Barretto
0b1ea359fa Adjustments to VolMap
Former-commit-id: 53ba7185102e7ff17825891d02bd0e26e5fe1076
2019-05-13 11:06:59 +01:00
Joshua Barretto
edfd2290eb Massively sped up VolMap offset calculations
Former-commit-id: 8f3cdf57a77691ca60c0921bc86a79c8cfe36539
2019-05-13 11:06:58 +01:00
sxv20_
f600eca072 start fixing chunk rendering, noticed stack overflow crash
Former-commit-id: 334904276580cd78f5d5e3bf010a86fcd822cfdf
2019-05-13 11:03:47 +01:00
sxv20_
e20c2a1e00 Move VolMap to HashMap<_, Arc<Chunk>>
Former-commit-id: e209891596acbb1705876a1cb7ccce3ac2fe2d45
2019-05-13 11:03:47 +01:00
sxv20_
a23f9d90ea cache a chunk while cloning to increase performance (?)
Former-commit-id: 69c1fa67b13a8de49f2c73e9526f548779e988c1
2019-05-13 11:03:47 +01:00
Forest Anderson
993388e56a Ran fmt on codebase
Former-commit-id: 7fecffa1dc66fffba4f07d45fb80960dc5178f4f
2019-04-29 20:37:19 +00:00
Joshua Barretto
f9f434a1c2 Started work on worldgen
Former-commit-id: 277a4b2a0a5a393c590a710aebaf62e5cce2ad1d
2019-04-25 17:52:11 +01:00
Joshua Barretto
3112486005 Added partial chunk loading, package section to workspace Cargo.toml
Former-commit-id: 4164daf4ccbe6695f664a44d0fce0ee10df39b8d
2019-04-14 14:23:43 +01:00
Joshua Barretto
507c47e771 Rewrote netcode, added basic chunk synching
Former-commit-id: e9f76f7fa9dbe0c81cd4c998bf0f0b3eec9235cb
2019-04-14 14:23:43 +01:00
Joshua Barretto
f27b5fa975 Added server-side chunk generation
Former-commit-id: 72e02f8ec711ec4fac3111b591c4b08086dee4e3
2019-04-14 14:23:43 +01:00
Joshua Barretto
3d9f8105e6 Started work on server-side chunks
Former-commit-id: 84a6bd7358f67a77043c4b11c787538f073c8d28
2019-04-14 14:23:43 +01:00
Joshua Barretto
8a37662cf0 Cleaned up codebase, added cursor grab toggle 2019-01-23 22:21:47 +00:00
Joshua Barretto
248577bdef Added test terrain loading and meshing 2019-01-23 20:01:58 +00:00
Joshua Barretto
41b6672743 Added Terrain type to scene 2019-01-15 15:13:11 +00:00
Joshua Barretto
ae4f1ae2ea Added vox trait 2019-01-14 18:49:53 +00:00
Joshua Barretto
523db9f054 Started work on adding terrain 2019-01-02 19:22:01 +00:00