Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/manevillef/bevy_verlet

Verlet physics plugin for bevy.
https://github.com/manevillef/bevy_verlet

bevy-plugin gamedev physics physics-2d physics-3d rust verlet

Last synced: 14 days ago
JSON representation

Verlet physics plugin for bevy.

Awesome Lists containing this project

README

        

# Verlet Integration for Bevy

[![workflow](https://github.com/ManevilleF/bevy_verlet/actions/workflows/rust.yml/badge.svg)](https://github.com/ManevilleF/bevy_verlet/actions/workflows/rust.yml)

[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
[![Crates.io](https://img.shields.io/crates/v/bevy_verlet.svg)](https://crates.io/crates/bevy_verlet)
[![Docs.rs](https://docs.rs/bevy_verlet/badge.svg)](https://docs.rs/bevy_verlet)
[![dependency status](https://deps.rs/crate/bevy_verlet/0.9.0/status.svg)](https://deps.rs/crate/bevy_verlet)

Simple Verlet points and sticks implementation for bevy.

If you are looking for cloth physics, please check
[`bevy_silk`](https://github.com/ManevilleF/bevy_silk) instead

## Bevy versions

| `bevy_verlet` | `bevy` |
|---------------|-----------|
| 0.1.x | 0.5.x |
| 0.2.x | 0.6.x |
| 0.3.x | 0.7.x |
| 0.4.x | 0.8.x |
| 0.5.x | 0.9.x |
| 0.6.x | 0.11.x |
| 0.7.x | 0.12.x |
| 0.8.x | 0.13.x |
| 0.9.x | 0.14.x |

## Features

You can simply add a `VerletPoint` component on any entity with a
`Transform` and the verlet physics will apply.

Connect points using `VerletStick` to constrain movement (see
[examples](./examples)).

Lock some points by adding the `VerletLocked` component on a `VerletPoint`
entity.

Customize *friction* and *gravity* with the `VerletConfig` resource.

> Works in 2D and 3D.

## Cargo features

1. `debug`

This feature will add a *system* drawing debug lines for every stick using
bevy gizmos

## Examples

### 2D

1. 2D Line

`cargo run --example 2d_line --features "debug"`

![Alt](./docs/demo_line.gif "demo gif")

2. 2D cloth

`cargo run --example 2d_cloth --features "debug"`

![Alt](./docs/demo_cloth.gif "demo gif")

3. 2D cloth cutting

`cargo run --example 2d_cloth_cutter --features "debug"

![Alt](./docs/demo_cloth_cutting.gif "demo gif")

### 3D

* `cargo run --example 3d_line --features "debug"`
* `cargo run --example 3d_cloth --features "debug"`

## Credits

Inspired by:

* This [Sebastian Lague video](https://www.youtube.com/watch?v=PGk0rnyTa1U)
* This [Coding Math course](https://www.youtube.com/watch?v=3HjO_RGIjCU)