{"id":25803568,"url":"https://github.com/xenon615/bevy_trebuchet","last_synced_at":"2026-06-11T19:31:41.626Z","repository":{"id":277814337,"uuid":"933566102","full_name":"xenon615/bevy_trebuchet","owner":"xenon615","description":"Crate for making trebuchet ","archived":false,"fork":false,"pushed_at":"2025-07-14T13:50:51.000Z","size":7157,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-21T19:02:30.522Z","etag":null,"topics":["avian3d","bevy-engine","crate","physics","plugin"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xenon615.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-16T09:24:38.000Z","updated_at":"2025-07-14T13:50:54.000Z","dependencies_parsed_at":"2025-02-16T10:29:16.402Z","dependency_job_id":"2a78312f-0a5b-4a30-bc44-d00a13589ef3","html_url":"https://github.com/xenon615/bevy_trebuchet","commit_stats":null,"previous_names":["xenon615/bevy_trebuchet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xenon615/bevy_trebuchet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xenon615%2Fbevy_trebuchet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xenon615%2Fbevy_trebuchet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xenon615%2Fbevy_trebuchet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xenon615%2Fbevy_trebuchet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xenon615","download_url":"https://codeload.github.com/xenon615/bevy_trebuchet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xenon615%2Fbevy_trebuchet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34215253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avian3d","bevy-engine","crate","physics","plugin"],"created_at":"2025-02-27T17:56:31.169Z","updated_at":"2026-06-11T19:31:41.578Z","avatar_url":"https://github.com/xenon615.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bevy_trebuchet\n### Bevy crate for creation  of an ancient siege weapon known as a trebuchet.\nAvian3D is used as a physics engine. (Pure physics, no animation used)\n\n## Why ?\nI decided to make a trebuchet from the [Project Siege](https://github.com/xenon615/siege) as a crate.  \nWhy ? May be for convenience, may be for learning how to make crates, IDK :) .  \n\n![Trebuchet](img/image1.png)\n## Video \n[![Watch the video](https://img.youtube.com/vi/K_OJGsxl0fk/maxresdefault.jpg)](https://youtu.be/K_OJGsxl0fk)\n\n## Disclaimer\nActually its my first crate made for Bevy or Rust. So  maybe I didn't do it the way it should be or the way it's usually done.\nKeep this in mind if you plan to use it. However, you free to copy, clone and correct it at your own discretion.\nAlso, I would be glad to receive any advice. ([xenon615 on Discord](https://discordapp/users/xenon615))\n\n## Usage\nAdd to your dependencies\n```\navian3d = \"0.3.1\"\nbevy_trebuchet = {git = \"https://github.com/xenon615/bevy_trebuchet\"}\n```\n\n```rust\nuse bevy_trebuchet::{NewTrebuchets, TrebuchetPlugin};\n\n```\n\n```rust\n\n.add_plugins(TrebuchetPlugin::default())\n\n```\nIn addition to the default settings, there are the following settings:\n```rust\n\npub struct TrebuchetPlugin {\n    /// the density of the counterweight material, well you get the idea, \n    /// the heavier it is, the further the projectile will be thrown, but it can fall apart, 9.5 by default\n    pub counterweight_density: f32,\n    /// layer mask of ball collider, 666 by default\n    pub ball_layer_mask: u32, \n    /// dot product between direction from trebuchet center to ball  and Y axis. Working values \n    /// are approximately between 0.7 and 0.99.lower value means steeper trajectory\n    pub unhooking_dot: f32,\n    /// again, nothing incomprehensible, the denser the harder it will hit, if it can take off, of course, 14.5 by default\n    pub ball_density: f32\n}\n```\n\nIn order for the trebuchet(s) to appear, you need to do the following:\n\n```rust\n    cmd.trigger(NewTrebuchets(vec![\n        Transform::from_xyz(0., 0., 0.),\n        Transform::from_xyz(15., 0., 0.),\n    ]));\n\n```\n\n\n\nPlease refer to /examples/basic.rs for example. \n\nAlso you can run for demo.\n\n```\ncargo run  --example basic\n\n```\n\n## To-Do\nAll we can do now is place the trebuchet in a certain position.\nTherefore, the immediate plans are to allow it to be installed at any angle relative to the Y axis\n(currently, an attempt to install it not strictly north causes its destruction) (IDK at the moment, why?)  \nNext, at the moment trebuchet starts working automatically after creation  after which it starts working automatically.\nSo need add some control ( start / stop at least)  \nWell, I'll add something else.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxenon615%2Fbevy_trebuchet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxenon615%2Fbevy_trebuchet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxenon615%2Fbevy_trebuchet/lists"}