Skip to content

Commit 1ffe13f

Browse files
committed
trying to update material. failing.
1 parent 82ccc0c commit 1ffe13f

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

spectator_client/src/map_visualization/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use shared::{
77
};
88
use visualize_colliders::{visualize_colliders, MyColliderGizmos};
99
use visualize_markers::{draw_markers, MyMarkerGizmos};
10+
use visualize_players::update_tank_color;
1011
use visualize_positions::{visualize_cells, MyPositionGizmos};
1112
use visulize_turret_ranges::{draw_turret_ranges, MyTurretRangeGizmos};
1213

@@ -39,7 +40,8 @@ impl Plugin for MyMapVisualizationPlugin {
3940
.run_if(resource_exists::<GameStarts>),)
4041
.run_if(in_state(MyMainState::Ready)),
4142
)
42-
.add_observer(add_observers_to_client);
43+
.add_observer(add_observers_to_client)
44+
.add_observer(update_tank_color);
4345
}
4446
}
4547

spectator_client/src/map_visualization/visualize_players.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use bevy::{
22
color::palettes::css::{GREEN, WHITE},
3+
gltf::GltfMaterialName,
34
prelude::*,
45
};
56
use bevy_mod_billboard::BillboardText;
@@ -9,7 +10,10 @@ use shared::{
910
collision_handling::components::WantedTransform,
1011
player_handling::{Health, TankBodyMarker, TankTurretMarker},
1112
},
12-
networking::{lobby_management::InTeam, messages::message_container::GameStartsTrigger},
13+
networking::{
14+
lobby_management::InTeam,
15+
messages::{message_container::GameStartsTrigger, message_data::game_starts::GameStarts},
16+
},
1317
};
1418

1519
use crate::game_handling::entity_mapping::MyEntityMapping;
@@ -123,3 +127,41 @@ pub fn create_player_visualisation(
123127
);
124128
}
125129
}
130+
131+
pub fn update_tank_color(
132+
trigger: Trigger<OnAdd, GltfMaterialName>,
133+
mut materials: ResMut<Assets<StandardMaterial>>,
134+
tank: Query<&InTeam, With<TankBodyMarker>>,
135+
parent_query: Query<&Parent>,
136+
mat_query: Query<(&Name, &MeshMaterial3d<StandardMaterial>, &GltfMaterialName)>,
137+
game_start: Res<GameStarts>,
138+
) {
139+
let added_material_name_entity = trigger.entity();
140+
let (name, mat_handle, material_name) = mat_query
141+
.get(added_material_name_entity)
142+
.expect("Failed to get material name");
143+
144+
if material_name.0 != "TeamColor" {
145+
return;
146+
}
147+
148+
// I do not understand.
149+
println!("Name: {:?}, material name: {:?}", name, material_name.0);
150+
let root = parent_query.root_ancestor(added_material_name_entity);
151+
println!("Root: {:?}", root);
152+
153+
if let Ok(in_team) = tank.get(root) {
154+
println!("Found tank with team: {:?}", in_team.0);
155+
let team_color = game_start
156+
.team_configs
157+
.get(&in_team.0)
158+
.map(|config| Color::from(config.color.clone()))
159+
.unwrap_or(WHITE.into());
160+
161+
if let Some(material) = materials.get_mut(mat_handle.id()) {
162+
material.base_color = team_color;
163+
}
164+
} else {
165+
println!("Failed to get tank");
166+
}
167+
}

0 commit comments

Comments
 (0)