C Wrapper for the Jolt Physics engine.
#c #physics #3d #gamedev #simulation #collision #library #wrapper #cpp

Lucien Greathouse 98af8dc307 Reorganize JoltC.cpp slightly 1 год назад
.github 2265632ee5 Get outta here, ubuntu-latestl+Release 1 год назад
HelloWorld 45b0f815ca First pass at DebugRenderer, critical for integrating 1 год назад
JoltC 98af8dc307 Reorganize JoltC.cpp slightly 1 год назад
JoltPhysics @ f2d1175432 39b33067d3 Initial commit 1 год назад
generate 7fa82725f6 Prototype of generating code automatically, kinda scuffed 1 год назад
.gitignore 02f105558f Remove root Cargo.toml for packaging reasons 1 год назад
.gitmodules 39b33067d3 Initial commit 1 год назад
CMakeLists.txt 725adf3114 Clean up configuration related to Windows CRT 1 год назад
LICENSE-APACHE 7907eaa304 Update license and README 1 год назад
LICENSE-MIT 7907eaa304 Update license and README 1 год назад
README.md 5f12b44dd3 Update README 1 год назад
test-all-flags.sh cdcf8ecba2 Set up GitHub Actions correctly on my first try 1 год назад

README.md

JoltC

C wrapper for Jolt Physics 5.0.0.

Currently a work in progress. Bindings contain functions that we've needed as part of our game or the Rust bindings we're working on in jolt-rust.

Goals

  1. Sound C wrapper around current version of Jolt Physics
  2. Headers suitable for usage in automatic binding generation tools (i.e. Rust bindgen, LuaJIT FFI)

Building

Use CMake:

cmake -B build
cmake --build build

Hello, world!

A port of Jolt's "HelloWorld" example is provided in HelloWorld/main.cpp.

Other C Wrappers

Other C wrappers for Jolt Physics include:

  • "JoltC", part of the zphysics Zig library started by Michal Ziulek
    • Note: This library has several sources of unsoundness and UB and has fallen out of date.
  • "JoltC", part of the jolt-rs Rust library started by cohaereo and a fork of the zphysics C wrapper
  • "joltc", part of the JoltPhysicsSharp C# library started by Amer Koleci

The goal of this project is to be the first C wrapper around Jolt Physics that is not part of a larger binding project and to eliminate sources of unsoundness and undefined behavior. It's intended to be useful for any other language-specific bindings and to reduce the need to duplicate work.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.