From 1406dc7c210a641420ad9a644999c9c19a2a4a53 Mon Sep 17 00:00:00 2001 From: artem Date: Fri, 26 Jan 2024 07:34:23 +0300 Subject: [PATCH] auto-build map --- data/scene.rgs | Bin 125981 -> 15113 bytes editor/src/main.rs | 2 +- game/src/map.rs | 210 ++++++++++-- settings.ron | 792 ++++++++++++++++++++++----------------------- 4 files changed, 576 insertions(+), 428 deletions(-) diff --git a/data/scene.rgs b/data/scene.rgs index 5278aae1dbd83cd559dbbd8be0b0ddf0a0b27867..c26651618930d378e756440d9844c2b117ae9bba 100644 GIT binary patch delta 891 zcmah{Ur19?7{A}0`(vBS*@oICsImT2nnQyAm?+WEYB_CEf?d6L?#{W{cFm$ht%Q0? zJkW`-haQX~sFl#2SSmeO_Fxedy#z`<41#bEy+}mgF|$!Z2R^>P=bYd7`@UNr^jFWs z6S|C>sh;7{r@AVBFK~U6T-qsW?x|>O%Gu9Cs3(|jK-&|E$%-5a8y8>99Jml#*mqy2 zkUg1RtrnA7I{pk|YI7}=^XqvGxJCWo;^w~L295)C^(d9mR&u++MoS)m)sTUK8aXTy zPjjBS!voF?HTVuL@w9guaW2NCv|NF1suRM1#w5$cMf)AnQcyg>F z-%%Cm3M*QMoe3*&D^f=ZYAmSSo@=!-3x#1gD1<^SLTfuIHLW9`hw{j&vEt*)G{jH; z!hvO+2Bk(i$1*yUS}EM71hi%}86VYxBAA&Y%6@-WOsbd8DqYbfOsv`)5JV}O-eO71 zrk+(=bfjEjuDa2^HL-T8@cQ&rKIIARq1=y)!^LV5oNB!Ak?qx3-%rcVTOaXcG(4xiza04Kdx`Qy_G~rV|9C@Vs zkR-PS6vioMTnYMQ5xJnRf-qr9r;f(kVI(U((m)s5!Agfa!ANK4z@UzVU<>?vX=M|Z zC-DD8bag^E(6=AKuHH?6m#6s(lu`RQ*s13p7-&2R8&pgao;thXGWix<;zIS!!#q#M e^iEP(XQs%9om{KiMh1rrqr1-sc>4Ma9Qg@t$o6ai literal 125981 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 diff --git a/editor/src/main.rs b/editor/src/main.rs index d8b8a38..726641f 100644 --- a/editor/src/main.rs +++ b/editor/src/main.rs @@ -9,7 +9,7 @@ fn main() { &event_loop, Some(StartupData { working_directory: Default::default(), - scene: "data/scene.rgs".into(), + scenes: vec!["data/scene.rgs".into()], }), ); editor.add_game_plugin(GameConstructor); diff --git a/game/src/map.rs b/game/src/map.rs index 235a0f4..a9d37e7 100644 --- a/game/src/map.rs +++ b/game/src/map.rs @@ -1,7 +1,7 @@ use fyrox::{ asset::manager::ResourceManager, core::sstorage::ImmutableString, - core::{algebra::Vector3, math::Rect}, + core::{algebra::Vector2, algebra::Vector3, math::Rect}, material::shader::SamplerFallback, material::{Material, MaterialResource, PropertyValue}, resource::texture::Texture, @@ -34,39 +34,187 @@ fn build_ground_material(resource_manager: &ResourceManager) -> MaterialResource return MaterialResource::new_ok(Default::default(), material); } -fn build_ground_block(graph: &mut Graph, resource_manager: &ResourceManager, x: f32, y : f32) { - let rb_transform = TransformBuilder::new() - .with_local_position(Vector3::new(x, y, 0.0)) - .build(); - - RigidBodyBuilder::new( - BaseBuilder::new() - .with_children(&[ - // Collider to prevent player from moving past boundary - RectangleBuilder::new(BaseBuilder::new()) - .with_material(build_ground_material(resource_manager)) - // Sprite is located in top left corner of sprite sheet - .with_uv_rect(Rect::new(0.0, 0.0, 1.0, 1.0)) - .build(graph), - ColliderBuilder::new(BaseBuilder::new()) - .with_shape(ColliderShape::Cuboid(CuboidShape::default())) - .build(graph), - ]) - // Optional, set name of tile - .with_name(format!("Boundary ({x}, {y})",)) - // Set position of tile - .with_local_transform(rb_transform), +fn build_tree_material(resource_manager: &ResourceManager) -> MaterialResource { + let mut material = Material::standard_2d(); + material + .set_property( + &ImmutableString::new("diffuseTexture"), + PropertyValue::Sampler { + value: Some(resource_manager.request::("assets/data/objects/Tree_2.png")), + fallback: SamplerFallback::Normal, + }, ) - // Turn off gravity for tile - .with_gravity_scale(0.) - // Set tile to be static and not rotate - .with_rotation_locked(true) - .with_body_type(RigidBodyType::Static) - .build(graph); + .unwrap(); + return MaterialResource::new_ok(Default::default(), material); +} + +fn build_stone_material(resource_manager: &ResourceManager) -> MaterialResource { + let mut material = Material::standard_2d(); + material + .set_property( + &ImmutableString::new("diffuseTexture"), + PropertyValue::Sampler { + value: Some(resource_manager.request::("assets/data/objects/Stone.png")), + fallback: SamplerFallback::Normal, + }, + ) + .unwrap(); + return MaterialResource::new_ok(Default::default(), material); +} + +fn build_box_material(resource_manager: &ResourceManager) -> MaterialResource { + let mut material = Material::standard_2d(); + material + .set_property( + &ImmutableString::new("diffuseTexture"), + PropertyValue::Sampler { + value: Some(resource_manager.request::("assets/data/objects/Crate.png")), + fallback: SamplerFallback::Normal, + }, + ) + .unwrap(); + return MaterialResource::new_ok(Default::default(), material); +} + +fn build_dynamic_block( + graph: &mut Graph, + x: f32, + y: f32, + scale: f32, + material: MaterialResource, + shape: ColliderShape, + mass: f32 +) { + let rb_transform = TransformBuilder::new() + .with_local_position(Vector3::new(x, y, 0.0)) + .with_local_scale(Vector3::new(scale, scale, 1.0)) + .build(); + + RigidBodyBuilder::new( + BaseBuilder::new() + .with_children(&[ + // Collider to prevent player from moving past boundary + RectangleBuilder::new(BaseBuilder::new()) + .with_material(material) + // Sprite is located in top left corner of sprite sheet + .with_uv_rect(Rect::new(0.0, 0.0, 1.0, 1.0)) + .build(graph), + ColliderBuilder::new(BaseBuilder::new()) + .with_shape(shape) + .build(graph), + ]) + // Optional, set name of tile + .with_name(format!("Boundary ({x}, {y})",)) + // Set position of tile + .with_local_transform(rb_transform), + ) + .with_mass(mass) + // Turn off gravity for tile + .with_gravity_scale(1.) + .with_lin_damping(1.0) + // Set tile to be static and not rotate + .with_rotation_locked(false) + .with_body_type(RigidBodyType::Dynamic) + .build(graph); +} + + +fn build_block( + graph: &mut Graph, + x: f32, + y: f32, + scale: f32, + material: MaterialResource, + shape: ColliderShape, +) { + let rb_transform = TransformBuilder::new() + .with_local_position(Vector3::new(x, y, 0.0)) + .with_local_scale(Vector3::new(scale, scale, 1.0)) + .build(); + + RigidBodyBuilder::new( + BaseBuilder::new() + .with_children(&[ + // Collider to prevent player from moving past boundary + RectangleBuilder::new(BaseBuilder::new()) + .with_material(material) + // Sprite is located in top left corner of sprite sheet + .with_uv_rect(Rect::new(0.0, 0.0, 1.0, 1.0)) + .build(graph), + ColliderBuilder::new(BaseBuilder::new()) + .with_shape(shape) + .build(graph), + ]) + // Optional, set name of tile + .with_name(format!("Boundary ({x}, {y})",)) + // Set position of tile + .with_local_transform(rb_transform), + ) + // Turn off gravity for tile + .with_gravity_scale(0.) + // Set tile to be static and not rotate + .with_rotation_locked(true) + .with_body_type(RigidBodyType::Static) + .build(graph); } pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager) { - for x in -100..100 { - build_ground_block(graph, resource_manager, x as f32, -5.0); + let bottom_y: f32 = -5.0; + let left_x: i32 = -50; + let right_x: i32 = 50; + let box_shape = ColliderShape::Cuboid(CuboidShape::default()); + let tree_shape = ColliderShape::Cuboid(CuboidShape { + half_extents: Vector2::new(0.5, 1.0), + }); + for x in left_x..right_x { + build_block( + graph, + x as f32, + bottom_y, + 1.0, + build_ground_material(resource_manager), + box_shape.clone(), + ); } + build_block( + graph, + 30.0, + bottom_y + 1.5, + 2.0, + build_tree_material(resource_manager), + tree_shape.clone(), + ); + build_block( + graph, + 25.0, + bottom_y + 1.0, + 1.0, + build_stone_material(resource_manager), + box_shape.clone(), + ); + build_block( + graph, + -25.0, + bottom_y + 1.0, + 1.0, + build_stone_material(resource_manager), + box_shape.clone(), + ); + build_block( + graph, + -30.0, + bottom_y + 1.5, + 2.0, + build_tree_material(resource_manager), + tree_shape.clone(), + ); + build_dynamic_block( + graph, + 10.0, + bottom_y + 1.0, + 1.0, + build_box_material(resource_manager), + box_shape.clone(), + 3.0 + ); } diff --git a/settings.ron b/settings.ron index 729ec23..6930542 100644 --- a/settings.ron +++ b/settings.ron @@ -316,133 +316,19 @@ scene_settings: { "data/scene.rgs": ( camera_settings: ( - position: (2.6864347, -1.3119695, -3.0), - yaw: -4.1247883, - pitch: 0.8356419, + position: (6.305661, 0.0, -3.0), + yaw: -6.4613833, + pitch: 0.14342158, ), node_infos: { ( - index: 15, + index: 74, generation: 1, ): ( is_expanded: true, ), ( - index: 45, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 86, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 12, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 33, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 63, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 24, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 81, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 9, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 66, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 23, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 18, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 28, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 84, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 44, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 22, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 47, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 5, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 48, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 6, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 80, + index: 94, generation: 1, ): ( is_expanded: true, @@ -450,281 +336,17 @@ ( index: 2, generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 83, - generation: 1, ): ( is_expanded: true, ), - ( - index: 72, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 32, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 89, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 50, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 77, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 62, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 41, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 21, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 31, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 34, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 19, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 7, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 75, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 4, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 56, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 95, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 93, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 49, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 54, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 51, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 37, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 43, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 65, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 3, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 91, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 25, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 13, - generation: 1, - ): ( - is_expanded: true, - ), - ( - index: 27, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 30, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 20, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 17, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 90, - generation: 1, - ): ( - is_expanded: false, - ), ( index: 10, generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 42, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 8, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 36, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 39, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 35, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 52, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 38, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 74, - generation: 1, ): ( is_expanded: true, ), ( - index: 57, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 11, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 69, - generation: 1, - ): ( - is_expanded: false, - ), - ( - index: 59, + index: 47, generation: 1, ): ( is_expanded: true, @@ -736,25 +358,103 @@ is_expanded: false, ), ( - index: 40, + index: 8, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 52, generation: 1, ): ( is_expanded: true, ), ( - index: 55, + index: 39, generation: 1, ): ( is_expanded: false, ), ( - index: 1, + index: 22, generation: 1, ): ( is_expanded: false, ), ( - index: 78, + index: 42, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 5, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 77, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 15, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 18, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 33, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 13, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 80, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 59, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 83, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 4, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 9, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 75, generation: 1, ): ( is_expanded: false, @@ -762,23 +462,107 @@ ( index: 29, generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 7, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 38, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 35, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 95, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 16, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 21, + generation: 1, ): ( is_expanded: false, ), ( - index: 82, + index: 12, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 6, generation: 1, ): ( is_expanded: true, ), ( - index: 0, + index: 36, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 62, generation: 1, ): ( is_expanded: true, ), ( - index: 26, + index: 25, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 93, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 41, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 23, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 84, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 37, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 45, generation: 1, ): ( is_expanded: false, @@ -790,7 +574,19 @@ is_expanded: true, ), ( - index: 14, + index: 90, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 0, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 17, generation: 1, ): ( is_expanded: false, @@ -802,11 +598,125 @@ is_expanded: false, ), ( - index: 16, + index: 54, generation: 1, ): ( is_expanded: true, ), + ( + index: 27, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 26, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 44, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 50, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 49, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 82, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 81, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 56, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 28, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 30, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 53, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 57, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 40, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 66, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 20, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 71, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 48, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 1, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 69, + generation: 1, + ): ( + is_expanded: false, + ), ( index: 46, generation: 1, @@ -814,13 +724,37 @@ is_expanded: false, ), ( - index: 53, + index: 51, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 89, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 65, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 43, generation: 1, ): ( is_expanded: false, ), ( - index: 94, + index: 24, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 14, generation: 1, ): ( is_expanded: true, @@ -832,7 +766,73 @@ is_expanded: true, ), ( - index: 71, + index: 55, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 86, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 78, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 11, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 91, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 19, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 3, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 34, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 31, + generation: 1, + ): ( + is_expanded: true, + ), + ( + index: 72, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 63, + generation: 1, + ): ( + is_expanded: false, + ), + ( + index: 32, generation: 1, ): ( is_expanded: true,