summaryrefslogtreecommitdiff
path: root/game
Commit message (Collapse)AuthorAge
* Standard interface for creating link definitionsDan Goodliffe35 hours
| | | | | 2 positions and, 0, 1 or 2 angles; always returns a GenLinksDef collection.
* Rename terrainSplitAt to connectAtDan Goodliffe35 hours
| | | | It doesn't split, it connects a duplicated pair of link definitions.
* Remove all the old network link creation codeDan Goodliffe43 hours
|
* Add network helpers for easily adding a chain of linksDan Goodliffe43 hours
|
* Split link generation definitions according to terrainDan Goodliffe47 hours
| | | | Copies the same imperfect logic from old link addition functions.
* Split definition creation from link creationDan Goodliffe2 days
|
* Link helper to get an End pointer based on positionDan Goodliffe3 days
|
* Fix conditional render of rail linksDan Goodliffe3 days
| | | | | Tests for vertices, not links in network. Fixes case where links are present but not in network, e.g. currently being built.
* Set terrain height and surface when adding linkDan Goodliffe3 days
|
* Add new network building interfaceDan Goodliffe3 days
| | | | Imperfect, matches some legacy interface in places, has some TODO notes.
* New genCurveDef for 2 directionsDan Goodliffe3 days
| | | | | | | | Based on formula/code from https://www.ryanjuckett.com/biarc-interpolation/ Produces smoother curves instead of equal curves. Removes need for that awful formula for finding the radius of said curves which has a tendency to blow up to infinity, and if not that then crazy rounding/accuracy errors.
* Simplified genCurveDef for 1 directionDan Goodliffe3 days
| | | | | Uses new find_arc_centre for 1 direction which doesn't break for 180 degree solutions.
* Avoid out parameters with Ray::intersectSphereDan Goodliffe2025-04-24
|
* Avoid out parameters with Ray::intersectTriangleDan Goodliffe2025-04-24
|
* Fix all warnings game/network/*Dan Goodliffe2025-04-23
| | | | Mostly naming of variables.
* Add Asset interface to create an arbitrarily placed instanceDan Goodliffe2025-04-07
| | | | | InstanceProxy is returned out via a std::any containing a std::shared_ptr because any can only contain copyable things.
* Replace call to calc_vertex_normal_correctDan Goodliffe2025-04-05
| | | | | Same code copied inline, but adjusted to avoid normalising using Scalar which is an integral type.
* Add Renderable typed collection to GameState worldObjectsDan Goodliffe2025-03-23
|
* Make Collections::objects protected, extend interfaceDan Goodliffe2025-03-22
| | | | | Keeps all required features accessible, but through a controlled interface.
* Invert how shared/unique is specified for CollectionDan Goodliffe2025-03-22
| | | | Template param is a pointer now, typedefs added for ease.
* Add ManyPtr which tracks specified subclassesDan Goodliffe2025-03-22
| | | | | | This removes the need to repeated dynamic_cast the pointer. Provides interface which enforces the fastest option for the required types.
* Split Terrain::generateMeshes into smaller functionsDan Goodliffe2025-03-12
| | | | | | Also removes incorrect optimisation that a tile's AABB could be assumed from tile base position; in fact some faces cross the boundaries and the AABB needs to account for this.
* Cull terrain meshes from render that don't cast a shadow into the frustumDan Goodliffe2025-03-11
|
* Pass a Frustum to shadow renderersDan Goodliffe2025-03-11
| | | | The frustum might not be correct at this stage.
* Template AxisAlignedBoundingBox on unit typeDan Goodliffe2025-03-11
|
* Current tile in frustum as we loopDan Goodliffe2025-03-11
| | | | Chunk by surface only, render if visible in frustum
* Construct terrain tile AxisAlignedBoundingBox during mesh generationDan Goodliffe2025-03-11
| | | | | No surface is simply the tile bounds, but with a surface, it's constrained to just the bounds of the surface itself.
* Only render terrain tiles which are visible in the frustumDan Goodliffe2025-03-11
|
* Create AxisAlignedBoundingBoxDan Goodliffe2025-03-11
| | | | Used to define the extents of GeoData mesh
* Pass frustum into render functionsDan Goodliffe2025-03-07
| | | | Support for culling objects outside the view frustum
* Work around clang thinking this is unused in lambdasDan Goodliffe2025-03-01
|
* Split meshes by surface and tileDan Goodliffe2025-02-26
| | | | | Tile is derived per face based on the first vertices point rounded to roughly 1km.
* Improve Terrain::generateMeshes performanceDan Goodliffe2025-02-25
| | | | | Creates mesh per surface based on a single buffer of all vertices and a collection of per surfuce indices. Makes ColourBias a uniform instead of a vertex attribute.
* Don't rely on triangle centroid not already having a surfaceDan Goodliffe2025-02-24
|
* Improve number of segments in LinkCurve basesDan Goodliffe2025-02-23
|
* Process set height as required in chunks of target vertexDan Goodliffe2025-02-23
|
* Less allocy/work set based surface/recursive height settingDan Goodliffe2025-02-23
|
* Add adjusted boundary vertices to new/changes/boundary listsDan Goodliffe2025-02-23
|
* Expand new verts collection onceDan Goodliffe2025-02-18
| | | | Before doing vertex normal recalc only, not on every insert
* Only build/run GeoDataMesh::sanityCheck for debugDan Goodliffe2025-02-17
|
* Refactor GeoData::setHeights until a struct made of a logical breakdown of ↵Dan Goodliffe2025-02-17
| | | | the process
* Fixes and tests to new range helpersDan Goodliffe2025-02-15
|
* Range adaptor to make triangle strip triplesDan Goodliffe2025-02-15
|
* Use new helpers to simplify close entity search in GeoData::setPointDan Goodliffe2025-02-14
|
* Move basic setHeights lambdas into proper helper functionsDan Goodliffe2025-02-13
|
* Replace mesh generation counter with afterChange eventDan Goodliffe2025-02-10
|
* Combine GeoData and Terrain class hierarchiesDan Goodliffe2025-02-09
|
* Split GeoData mesh basics into a subclassDan Goodliffe2025-02-09
| | | | Declutters the class for terrain related things
* Move lots of geoData helpers into libDan Goodliffe2025-02-09
|
* Initial commit setting terrain during network constructionDan Goodliffe2025-02-09
| | | | This is all in the wrong place, it shouldn't be part of the network interface.