summaryrefslogtreecommitdiff
path: root/game/geoData.cpp
Commit message (Collapse)AuthorAge
* Add GeoData face property for surface typeDan Goodliffe2024-04-08
| | | | Arbitrary int type for now.
* Fix creating a flat terrain of exactly the requested sizeDan Goodliffe2024-04-07
| | | | Which must be a size of multiples of GRID_SIZE, 10m
* Don't garbage collect the terrain meshDan Goodliffe2024-04-04
| | | | Use skipping iterators instead, GC would be implicit during save/load
* Update normals only as requiredDan Goodliffe2024-04-04
|
* Boundary edge and one time split with repeated 4-way split of large facesDan Goodliffe2024-04-01
|
* Replace face 4-way splitDan Goodliffe2024-04-01
| | | | Fixes integer rounding issue and returns the new face handles
* Factor out some helper lambdas into membersDan Goodliffe2024-03-31
|
* Split long boundary edgesDan Goodliffe2024-03-31
|
* Split faces with two large boundary sidesDan Goodliffe2024-03-31
|
* Don't save original face handlesDan Goodliffe2024-03-31
| | | | Not required, likely to change anyway.
* Handle almost straight edges with a simple bisectDan Goodliffe2024-03-30
|
* Dedupe addition of extrusionsDan Goodliffe2024-03-23
|
* Handle and test concave surface boundariesDan Goodliffe2024-03-23
|
* Create extents purely from corner arcsDan Goodliffe2024-03-23
|
* Remove boundary collectionDan Goodliffe2024-03-23
| | | | We can simply walk the boundary as required
* Extract vector_normal helper into libDan Goodliffe2024-03-23
|
* Add helper constructors to ArcDan Goodliffe2024-03-21
| | | | | | * Two angles, wraps logic ensuring b after a * Two vector directions * Centre and two endpoints, in at least 2 dimensions, uses .xy()
* Simplify creation of planesDan Goodliffe2024-03-18
| | | | Uses limit directions instead of fake triangles
* maybe_unused return from cut point searchDan Goodliffe2024-03-18
| | | | Only asserted
* Switch to using planes instead of triangles for deformaton cutDan Goodliffe2024-03-18
| | | | | Removes the hacky need for going a bit too far to account for rounding errors... which didn't really work anyway.
* Fix generation of halfedge extrusion extentsDan Goodliffe2024-03-14
|
* Simplify cut loop and termination case searchDan Goodliffe2024-03-14
| | | | Looks for a halfedge from current vertex to end vertex.
* Rewrite most of setHeightsDan Goodliffe2024-03-08
| | | | | Accounts for sensible corners and fixes quite a few bugs and edge cases... introduces a few more, is still a bit glitchy in places
* Bail out early if the input does not define an areaDan Goodliffe2024-03-08
|
* Remove the nosplit listDan Goodliffe2024-02-24
| | | | Not required now we don't randomly wonder into the new edges range
* Psycho-rebased branch deform-terrain on top of mainDan Goodliffe2024-02-24
|\
| * First cut of terrain deformationDan Goodliffe2024-02-22
| | | | | | | | | | | | | | | | | | | | This "works" for some definition of works... But it's flawed in many ways, not least the following: * It's glitchy for no obvious reason * It's unreliable; fails if you tweak the parameters * The sides of the modified area are triangulated in the dumbest possible fashion, which results in ill-formed polygons * Probably other things, but... It works, remember...
| * Include face handle in intersectRay resultDan Goodliffe2024-02-13
| |
| * Add helpers for testing for triangle overlap/containednessDan Goodliffe2024-02-12
| |
| * Create flat GeoData as 10m squares instead of one big squareDan Goodliffe2024-02-12
| |
* | Simplify vector addition/subtraction with differnt typesDan Goodliffe2024-02-24
|/ | | | | Automatically applies correct rounding with float to int operations, adjusts test expectations accordingly.
* Template Ray on position typeDan Goodliffe2024-01-07
|
* Unified crossProductDan Goodliffe2024-01-07
|
* Use new calc types in geoDataDan Goodliffe2023-12-17
|
* Handle the case where the ray never enters the mapDan Goodliffe2023-12-02
|
* Extend ray for intersect walk to cover the extents of the mapDan Goodliffe2023-12-02
|
* Replace positionAt with pure integer versionDan Goodliffe2023-12-02
|
* Calculate vertex normals onlyDan Goodliffe2023-11-26
| | | | | | Doesn't require half edge normals or face normals, which uses Newell's method, which results in integer overflow... Not to mention we don't need all the other normals.
* Merge branch 'ints' into terrainDan Goodliffe2023-11-26
|\ | | | | | | | | | | Conflicts fix, compiles, some test failures remain. Trees not added, possibility of OM invalid handle assertion failures, normals broken due to integer overflow in Newell's method.
| * Model positions as integersDan Goodliffe2023-11-25
| | | | | | | | | | Introduces test failure in arcs due to rounding, but I don't want to create a complicated fix as link positions are still floats and hopefully that'll go away... somehow
| * Switch to millimeters for spatial unitsDan Goodliffe2023-11-15
| | | | | | | | | | | | Mostly a case of changing far too many magic numbers, something else to fix I guess. I probably missed something. Also there's some hackery when loading 3D models, which are still assumed to be in metres.
| * Reformat with new clang-formatDan Goodliffe2023-11-07
| |
* | Fix todo for handling a terrain walk from outside the meshDan Goodliffe2023-11-05
| |
* | Fix calculating extentsDan Goodliffe2023-11-05
| |
* | Fix and split linesCrossDan Goodliffe2023-11-05
| | | | | | | | | | Previous tested they crossed in a specific direction, which is wrong but useful. Adds linesCrossLtR for this use case.
* | Add methods to walk the boundary of the terrain meshDan Goodliffe2023-11-05
| |
* | Refactor to further simplify line/point operationsDan Goodliffe2023-11-04
| | | | | | | | Adds another perf test
* | Simplify some logic with the triangle constructDan Goodliffe2023-11-04
| |
* | Rename TerrainMesh to GeoData to drop inplaceDan Goodliffe2023-11-04
|/
* Drop .hpp for header only thingsDan Goodliffe2023-04-29
| | | | Half of them acquired a .cpp part anyway