Bevy Forge 0.1.0: visual scene editor for Bevy 0.20 BSN

This commit is contained in:
Emil Shanaty
2026-10-27 18:52:10 +03:00
commit 13bf16d510
79 changed files with 44353 additions and 0 deletions
@@ -0,0 +1,437 @@
(
format_version: 1,
name: "Garden Demo",
entities: {
1: (
id: 1,
name: "Camera",
parent: None,
children: [],
transform: (
translation: (
x: 7.5,
y: 5.0,
z: 12.0,
),
rotation: (
x: -16.0,
y: 30.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: camera3d,
),
],
locked: false,
),
2: (
id: 2,
name: "Sun",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
rotation: (
x: -55.0,
y: -25.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: directional_light,
data: (
color: (
r: 1.0,
g: 0.95,
b: 0.85,
a: 1.0,
),
illuminance: 11000.0,
shadows: true,
),
),
],
locked: false,
),
3: (
id: 3,
name: "Ground",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: plane(
size: (
x: 26.0,
y: 26.0,
),
),
),
material: (
base_color: (
r: 0.31,
g: 0.48,
b: 0.23,
a: 1.0,
),
metallic: 0.0,
perceptual_roughness: 0.92,
unlit: false,
),
),
),
],
locked: false,
),
4: (
id: 4,
name: "Shrub",
parent: None,
children: [],
transform: (
translation: (
x: -3.4,
y: 1.0,
z: 1.8,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.25,
y: 0.9,
z: 1.25,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: sphere(
radius: 1.0,
),
),
material: (
base_color: (
r: 0.24,
g: 0.45,
b: 0.22,
a: 1.0,
),
metallic: 0.0,
perceptual_roughness: 0.85,
unlit: false,
),
),
),
],
locked: false,
),
5: (
id: 5,
name: "Flower Stem",
parent: None,
children: [
6,
],
transform: (
translation: (
x: 2.6,
y: 0.75,
z: 1.4,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: cylinder(
radius: 0.09,
height: 1.5,
),
),
material: (
base_color: (
r: 0.35,
g: 0.55,
b: 0.27,
a: 1.0,
),
metallic: 0.0,
perceptual_roughness: 0.8,
unlit: false,
),
),
),
],
locked: false,
),
6: (
id: 6,
name: "Flower Bloom",
parent: Some(5),
children: [],
transform: (
translation: (
x: 0.0,
y: 1.0,
z: 0.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 0.75,
z: 1.0,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: sphere(
radius: 0.42,
),
),
material: (
base_color: (
r: 0.91,
g: 0.42,
b: 0.65,
a: 1.0,
),
metallic: 0.0,
perceptual_roughness: 0.4,
unlit: false,
),
),
),
],
locked: false,
),
7: (
id: 7,
name: "Orbit Crystal",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 2.0,
z: 0.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: sphere(
radius: 0.8,
),
),
material: (
base_color: (
r: 0.27,
g: 0.76,
b: 0.69,
a: 1.0,
),
metallic: 0.15,
perceptual_roughness: 0.2,
unlit: false,
),
),
),
(
type: custom,
data: (
type_path: "forge_demo::Orbit",
fields: [
(
name: "radius",
expr: "2.4",
),
(
name: "speed",
expr: "0.45",
),
],
),
),
],
locked: false,
),
8: (
id: 8,
name: "Lantern Post",
parent: None,
children: [
9,
],
transform: (
translation: (
x: 3.8,
y: 1.2,
z: -1.2,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: mesh3d,
data: (
mesh: (
source: primitive,
value: cylinder(
radius: 0.12,
height: 2.4,
),
),
material: (
base_color: (
r: 0.18,
g: 0.2,
b: 0.25,
a: 1.0,
),
metallic: 0.6,
perceptual_roughness: 0.35,
unlit: false,
),
),
),
],
locked: false,
),
9: (
id: 9,
name: "Lantern Glow",
parent: Some(8),
children: [],
transform: (
translation: (
x: 0.0,
y: 1.25,
z: 0.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: point_light,
data: (
color: (
r: 1.0,
g: 0.82,
b: 0.55,
a: 1.0,
),
intensity: 600.0,
range: 12.0,
shadows: true,
),
),
],
locked: false,
),
},
roots: [
1,
2,
3,
4,
5,
7,
8,
],
next_id: 10,
)
@@ -0,0 +1,975 @@
(
format_version: 1,
name: "Platformer Demo",
entities: {
1: (
id: 1,
name: "Backdrop",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 0.0,
z: -30.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/background.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 960.0,
y: 540.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
2: (
id: 2,
name: "Camera",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 0.0,
z: 10.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: camera2d,
),
],
locked: false,
),
3: (
id: 3,
name: "Title",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 214.0,
z: 5.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: text2d,
data: (
text: "Bevy Forge Platformer",
font_size: 44.0,
color: (
r: 0.96,
g: 0.94,
b: 0.88,
a: 1.0,
),
),
),
],
locked: false,
),
4: (
id: 4,
name: "Hint",
parent: None,
children: [],
transform: (
translation: (
x: 0.0,
y: 176.0,
z: 5.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: text2d,
data: (
text: "Collect the coins!",
font_size: 20.0,
color: (
r: 0.95,
g: 0.67,
b: 0.25,
a: 1.0,
),
),
),
],
locked: false,
),
5: (
id: 5,
name: "Ground 1",
parent: None,
children: [],
transform: (
translation: (
x: -336.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
6: (
id: 6,
name: "Ground 2",
parent: None,
children: [],
transform: (
translation: (
x: -240.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
7: (
id: 7,
name: "Ground 3",
parent: None,
children: [],
transform: (
translation: (
x: -144.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
8: (
id: 8,
name: "Ground 4",
parent: None,
children: [],
transform: (
translation: (
x: -48.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
9: (
id: 9,
name: "Ground 5",
parent: None,
children: [],
transform: (
translation: (
x: 48.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
10: (
id: 10,
name: "Ground 6",
parent: None,
children: [],
transform: (
translation: (
x: 144.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
11: (
id: 11,
name: "Ground 7",
parent: None,
children: [],
transform: (
translation: (
x: 240.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
12: (
id: 12,
name: "Ground 8",
parent: None,
children: [],
transform: (
translation: (
x: 336.0,
y: -224.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
13: (
id: 13,
name: "Ledge 1",
parent: None,
children: [],
transform: (
translation: (
x: -48.0,
y: -64.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
14: (
id: 14,
name: "Ledge 2",
parent: None,
children: [],
transform: (
translation: (
x: 48.0,
y: -64.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
15: (
id: 15,
name: "Ledge 3",
parent: None,
children: [],
transform: (
translation: (
x: 144.0,
y: -64.0,
z: -2.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/tile.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 96.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
16: (
id: 16,
name: "Player",
parent: None,
children: [
17,
],
transform: (
translation: (
x: -192.0,
y: -128.0,
z: 0.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/player.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 64.0,
y: 96.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
17: (
id: 17,
name: "Hat",
parent: Some(16),
children: [],
transform: (
translation: (
x: 0.0,
y: 42.0,
z: 1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/hat.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 56.0,
y: 28.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
18: (
id: 18,
name: "Coin 1",
parent: None,
children: [],
transform: (
translation: (
x: -288.0,
y: -104.0,
z: 1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/coin.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 48.0,
y: 48.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
19: (
id: 19,
name: "Coin 2",
parent: None,
children: [],
transform: (
translation: (
x: 48.0,
y: 28.0,
z: 1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/coin.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 48.0,
y: 48.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
20: (
id: 20,
name: "Coin 3",
parent: None,
children: [],
transform: (
translation: (
x: 240.0,
y: -96.0,
z: 1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/coin.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 48.0,
y: 48.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
21: (
id: 21,
name: "Crate",
parent: None,
children: [],
transform: (
translation: (
x: 352.0,
y: -144.0,
z: -1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/crate.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 64.0,
y: 64.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
22: (
id: 22,
name: "Crate 2",
parent: None,
children: [],
transform: (
translation: (
x: 352.0,
y: -80.0,
z: -1.0,
),
rotation: (
x: 0.0,
y: 0.0,
z: 0.0,
),
scale: (
x: 1.0,
y: 1.0,
z: 1.0,
),
),
components: [
(
type: sprite,
data: (
image: Some("textures/crate.png"),
color: (
r: 1.0,
g: 1.0,
b: 1.0,
a: 1.0,
),
custom_size: Some((
x: 64.0,
y: 64.0,
)),
flip_x: false,
flip_y: false,
),
),
],
locked: false,
),
},
roots: [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
18,
19,
20,
21,
22,
],
next_id: 23,
)