summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix Gruber <felgru@posteo.net>2022-01-03 19:38:24 +0000
committerLeo Famulari <leo@famulari.name>2022-01-03 15:10:03 -0500
commit0aac289d614b3763666c68a51d81540a8a34d234 (patch)
treee7e0f9b754265b44adccdd5c39cf65e292c70126
parent0d15873d7e898110c12fd77d32258ab55e16e7eb (diff)
downloadguix-0aac289d614b3763666c68a51d81540a8a34d234.tar.gz
gnu: Add recastnavigation.
* gnu/packages/game-development.scm (recastnavigation): New variable.

Signed-off-by: Leo Famulari <leo@famulari.name>
-rw-r--r--gnu/packages/game-development.scm51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 305c2c2819..c77c445831 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2837,3 +2837,54 @@ fully dynamic omnidirectional shadows, global illumination, HDR lighting,
 deferred shading, morphological / temporal / multisample anti-aliasing, and
 much more.")
       (license license:zlib))))
+
+(define-public recastnavigation
+  ;; We follow master since there hasn't been a release since 1.5.1 in 2016.
+  (let ((commit "c5cbd53024c8a9d8d097a4371215e3342d2fdc87")
+        (revision "1"))
+    (package
+      (name "recastnavigation")
+      (version (git-version "1.5.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/recastnavigation/recastnavigation")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "034bm47gc3r285w1pnvkhmm74zz99d204b1r865gisaiq4qfbza0"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
+                                 "-DRECASTNAVIGATION_DEMO=OFF"
+                                 "-DRECASTNAVIGATION_TESTS=ON"
+                                 "-DRECASTNAVIGATION_EXAMPLES=OFF")))
+      (synopsis "Navigation system for games")
+      (description "Recast is state of the art navigation mesh
+construction toolset for games.
+
+@itemize
+@item It is automatic, which means that you can throw any level geometry
+      at it and you will get robust mesh out.
+@item It is fast which means swift turnaround times for level designers.
+@item It is open source so it comes with full source and you can
+      customize it to your heart's content.
+@end itemize
+
+The Recast process starts with constructing a voxel mold from a level
+geometry and then casting a navigation mesh over it.  The process
+consists of three steps, building the voxel mold, partitioning the mold
+into simple regions, peeling off the regions as simple polygons.
+
+Recast is accompanied with Detour, path-finding and spatial reasoning
+toolkit.  You can use any navigation mesh with Detour, but of course the
+data generated with Recast fits perfectly.
+
+Detour offers simple static navigation mesh which is suitable for many
+simple cases, as well as tiled navigation mesh which allows you to plug
+in and out pieces of the mesh.  The tiled mesh allows you to create
+systems where you stream new navigation data in and out as the player
+progresses the level, or you may regenerate tiles as the world changes.")
+      (home-page "https://github.com/recastnavigation/recastnavigation")
+      (license license:zlib))))