tangled
alpha
login
or
join now
cass.cityboundforest.com
/
triangular-viking
0
fork
atom
A Quadrilateral Cowboy clone intended to help me learn Game Dev
0
fork
atom
overview
issues
pulls
pipelines
The terminal now renders, yay
cass.cityboundforest.com
2 weeks ago
f3c21c91
17272747
+47
-11
5 changed files
expand all
collapse all
unified
split
Cargo.lock
Cargo.toml
src
game.rs
level.rs
main.rs
+3
Cargo.lock
···
563
563
"bevy_asset",
564
564
"bevy_asset_loader_derive",
565
565
"bevy_ecs",
566
566
+
"bevy_image",
566
567
"bevy_log",
568
568
+
"bevy_pbr",
567
569
"bevy_platform",
568
570
"bevy_reflect",
571
571
+
"bevy_render",
569
572
"bevy_state",
570
573
"bevy_utils",
571
574
"path-slash",
+1
-1
Cargo.toml
···
6
6
[dependencies]
7
7
bevy = "0.18.0"
8
8
bevy-inspector-egui = "0.36.0"
9
9
-
bevy_asset_loader = "0.25.0"
9
9
+
bevy_asset_loader = { version = "0.25.0", features = ["3d"] }
10
10
bevy_flycam = "0.18.0"
+5
-5
src/game.rs
···
1
1
use bevy::prelude::*;
2
2
-
use bevy_asset_loader::prelude::*;
3
2
4
3
#[derive(States, Debug, Clone, PartialEq, Eq, Hash, Default)]
5
4
pub enum GameState {
6
5
#[default]
6
6
+
TestLoading,
7
7
+
Test,
7
8
Loading,
8
9
Main,
9
10
LoadingLevel(String),
10
11
Level(String)
11
12
}
12
13
13
13
-
#[derive(AssetCollection, Resource)]
14
14
-
pub struct TerminalAssets {
15
15
-
#[asset(path="models/terminal.glb")]
16
16
-
mesh: Handle<Mesh>
14
14
+
#[derive(Resource)]
15
15
+
pub struct GameAssets {
16
16
+
pub terminal: Handle<Scene>
17
17
}
+38
-3
src/level.rs
···
1
1
use bevy::prelude::*;
2
2
3
3
+
use crate::game::{GameAssets, GameState};
4
4
+
3
5
pub fn plugin(app: &mut App) {
4
4
-
app.add_systems(OnEnter(crate::game::GameState::Loading), check_levels);
6
6
+
app.add_systems(OnEnter(GameState::Loading), check_levels)
7
7
+
.add_systems(OnEnter(GameState::Test), run_test)
8
8
+
.add_systems(OnEnter(GameState::TestLoading), load_resources);
5
9
}
6
10
7
11
#[derive(Resource, Default)]
···
9
13
pub levels: Vec<(String, String)>
10
14
}
11
15
12
12
-
fn check_levels(mut manifest: ResMut<LevelManifest>, mut next_state: ResMut<NextState<crate::game::GameState>>) {
16
16
+
fn check_levels(mut manifest: ResMut<LevelManifest>, mut next_state: ResMut<NextState<GameState>>) {
13
17
let path = "assets/levels";
14
18
15
19
if let Ok(entries) = std::fs::read_dir(path) {
···
31
35
}
32
36
}
33
37
34
34
-
next_state.set(crate::game::GameState::Main);
38
38
+
next_state.set(GameState::Main);
39
39
+
}
40
40
+
41
41
+
fn load_resources(mut commands: Commands, asset_server: Res<AssetServer>, mut next_state: ResMut<NextState<GameState>>) {
42
42
+
let assets = GameAssets{
43
43
+
terminal: asset_server.load("models/terminal.glb#Scene0")
44
44
+
};
45
45
+
commands.insert_resource(assets);
46
46
+
next_state.set(GameState::Test);
47
47
+
}
48
48
+
49
49
+
fn run_test(mut commands: Commands, game_assets: Res<GameAssets>) {
50
50
+
println!("in run_test");
51
51
+
// terminal mesh
52
52
+
commands.spawn((
53
53
+
SceneRoot(game_assets.terminal.clone()),
54
54
+
Transform::from_translation(Vec3::ZERO).with_rotation(Quat::from_rotation_y(-std::f32::consts::FRAC_PI_2))
55
55
+
));
56
56
+
// light
57
57
+
commands.spawn((
58
58
+
PointLight{
59
59
+
shadows_enabled: true,
60
60
+
..default()
61
61
+
},
62
62
+
Transform::from_xyz(4.0, 8.0, 4.0).looking_at(Vec3::ZERO, Vec3::Y)
63
63
+
));
64
64
+
// camera
65
65
+
commands.spawn((
66
66
+
Camera3d::default(),
67
67
+
Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y),
68
68
+
AmbientLight::default()
69
69
+
));
35
70
}
-2
src/main.rs
···
1
1
use bevy::prelude::*;
2
2
use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::WorldInspectorPlugin};
3
3
-
use bevy_flycam::prelude::*;
4
3
5
4
mod game;
6
5
mod level;
···
8
7
fn main() {
9
8
App::new()
10
9
.add_plugins(DefaultPlugins)
11
11
-
.add_plugins(PlayerPlugin)
12
10
.add_plugins(EguiPlugin::default())
13
11
.add_plugins(WorldInspectorPlugin::new())
14
12
.init_state::<game::GameState>()