cleanup (remove unnecessary scope block, unindenting by 1)
(I had this scope block before in order to release ownership of some variable so that it can be used again after the scope block, but seems like this is not necessary anymore by now)
This commit is contained in:
parent
eb094945f2
commit
4f787c33e8
410
src/cmd.rs
410
src/cmd.rs
|
@ -840,223 +840,221 @@ fn spawn_entities(
|
|||
|
||||
// Spawn the actor
|
||||
let actor_entity;
|
||||
{
|
||||
let mut actor = commands.spawn_empty();
|
||||
actor.insert(actor::Actor {
|
||||
id: state.id.clone(),
|
||||
name: state.name.clone(),
|
||||
camdistance: state.camdistance,
|
||||
let mut actor = commands.spawn_empty();
|
||||
actor.insert(actor::Actor {
|
||||
id: state.id.clone(),
|
||||
name: state.name.clone(),
|
||||
camdistance: state.camdistance,
|
||||
..default()
|
||||
});
|
||||
actor.insert(SleepingDisabled);
|
||||
if orbits_jupiter {
|
||||
actor.insert(actor::OrbitsJupiter);
|
||||
}
|
||||
actor.insert(world::DespawnOnPlayerDeath);
|
||||
actor.insert(actor::HitPoints::default());
|
||||
actor.insert(Position::from(absolute_pos));
|
||||
if state.is_sphere {
|
||||
let sphere_texture_handle = if let Some(model) = &state.model {
|
||||
Some(asset_server.load(format!("textures/{}.jpg", model)))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
rotation = Quat::from_rotation_x(-90f32.to_radians()) * rotation;
|
||||
let sphere_handle = meshes.add(Sphere::new(1.0).mesh().uv(128, 128));
|
||||
let sphere_material_handle = materials.add(StandardMaterial {
|
||||
base_color_texture: sphere_texture_handle,
|
||||
perceptual_roughness: 1.0,
|
||||
metallic: 0.0,
|
||||
..default()
|
||||
});
|
||||
actor.insert(SleepingDisabled);
|
||||
if orbits_jupiter {
|
||||
actor.insert(actor::OrbitsJupiter);
|
||||
}
|
||||
actor.insert(world::DespawnOnPlayerDeath);
|
||||
actor.insert(actor::HitPoints::default());
|
||||
actor.insert(Position::from(absolute_pos));
|
||||
if state.is_sphere {
|
||||
let sphere_texture_handle = if let Some(model) = &state.model {
|
||||
Some(asset_server.load(format!("textures/{}.jpg", model)))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
rotation = Quat::from_rotation_x(-90f32.to_radians()) * rotation;
|
||||
let sphere_handle = meshes.add(Sphere::new(1.0).mesh().uv(128, 128));
|
||||
let sphere_material_handle = materials.add(StandardMaterial {
|
||||
base_color_texture: sphere_texture_handle,
|
||||
perceptual_roughness: 1.0,
|
||||
metallic: 0.0,
|
||||
..default()
|
||||
});
|
||||
actor.insert(PbrBundle {
|
||||
mesh: sphere_handle,
|
||||
material: sphere_material_handle,
|
||||
transform: Transform::from_scale(scale),
|
||||
..default()
|
||||
});
|
||||
} else if let Some(model) = &state.model {
|
||||
actor.insert(SpatialBundle {
|
||||
transform: Transform::from_scale(scale),
|
||||
..default()
|
||||
});
|
||||
load_asset(model.as_str(), &mut actor, &*asset_server);
|
||||
}
|
||||
actor.insert(Rotation::from(rotation));
|
||||
actor.insert(PbrBundle {
|
||||
mesh: sphere_handle,
|
||||
material: sphere_material_handle,
|
||||
transform: Transform::from_scale(scale),
|
||||
..default()
|
||||
});
|
||||
} else if let Some(model) = &state.model {
|
||||
actor.insert(SpatialBundle {
|
||||
transform: Transform::from_scale(scale),
|
||||
..default()
|
||||
});
|
||||
load_asset(model.as_str(), &mut actor, &*asset_server);
|
||||
}
|
||||
actor.insert(Rotation::from(rotation));
|
||||
|
||||
// Physics Parameters
|
||||
if state.has_physics {
|
||||
actor.insert(RigidBody::Dynamic);
|
||||
actor.insert(LinearVelocity(velocity));
|
||||
actor.insert(AngularVelocity(state.angular_momentum));
|
||||
actor.insert(ColliderDensity(state.density));
|
||||
if state.collider_is_mesh {
|
||||
actor.insert(MassPropertiesBundle::new_computed(
|
||||
&Collider::sphere(0.5 * state.model_scale as f64),
|
||||
state.density,
|
||||
));
|
||||
actor.insert(AsyncSceneCollider::new(Some(
|
||||
ComputedCollider::TriMesh, //ComputedCollider::ConvexDecomposition(VHACDParameters::default())
|
||||
)));
|
||||
} else if state.collider_is_one_mesh_of_scene {
|
||||
actor.insert(MassPropertiesBundle::new_computed(
|
||||
&Collider::sphere(0.5 * state.model_scale as f64),
|
||||
state.density,
|
||||
));
|
||||
actor.insert(
|
||||
AsyncSceneCollider::new(None)
|
||||
.with_shape_for_name("Collider", ComputedCollider::TriMesh)
|
||||
.with_layers_for_name("Collider", CollisionLayers::ALL), //.with_density_for_name("Collider", state.density)
|
||||
);
|
||||
actor.insert(NeedsSceneColliderRemoved);
|
||||
} else {
|
||||
actor.insert(state.collider.clone());
|
||||
}
|
||||
}
|
||||
// TODO: angular velocity for objects without collisions, static objects
|
||||
|
||||
// Optional Components
|
||||
if state.is_player {
|
||||
actor.insert(actor::Player);
|
||||
actor.insert(actor::PlayerCamera);
|
||||
actor.insert(hud::AugmentedRealityOverlayBroadcaster);
|
||||
ew_updateavatar.send(hud::UpdateAvatarEvent);
|
||||
}
|
||||
if state.is_sun {
|
||||
let (r, g, b) = nature::star_color_index_to_rgb(0.656);
|
||||
actor.insert(materials.add(StandardMaterial {
|
||||
base_color: Color::srgb(r * 13.0, g * 13.0, b * 13.0),
|
||||
unlit: true,
|
||||
..default()
|
||||
}));
|
||||
actor.insert((NotShadowCaster, NotShadowReceiver));
|
||||
}
|
||||
if state.is_targeted_on_startup {
|
||||
actor.insert(hud::IsTargeted);
|
||||
}
|
||||
if let Some((mindist, id)) = &state.show_only_in_map_at_distance {
|
||||
actor.insert(camera::ShowOnlyInMap {
|
||||
min_distance: *mindist,
|
||||
distance_to_id: id.clone(),
|
||||
});
|
||||
}
|
||||
if state.is_player || state.is_vehicle {
|
||||
// used to apply mouse movement to actor rotation
|
||||
actor.insert(ExternalTorque::ZERO.with_persistence(false));
|
||||
}
|
||||
if state.is_lifeform {
|
||||
actor.insert(actor::LifeForm::default());
|
||||
actor.insert(actor::ExperiencesGForce::default());
|
||||
actor.insert(actor::Suit {
|
||||
oxygen: state.oxygen,
|
||||
oxygen_max: nature::OXY_D,
|
||||
integrity: state.suit_integrity,
|
||||
..default()
|
||||
});
|
||||
actor.insert(actor::Battery::default());
|
||||
}
|
||||
if state.is_clickable {
|
||||
actor.insert(hud::IsClickable {
|
||||
name: state.name.clone(),
|
||||
pronoun: state.pronoun.clone(),
|
||||
..default()
|
||||
});
|
||||
}
|
||||
if let Some(value) = state.wants_maxrotation {
|
||||
actor.insert(actor::WantsMaxRotation(value));
|
||||
}
|
||||
if let Some(value) = state.wants_maxvelocity {
|
||||
actor.insert(actor::WantsMaxVelocity(value));
|
||||
}
|
||||
if let Some(value) = &state.wants_tolookat_id {
|
||||
actor.insert(actor::WantsToLookAt(value.clone()));
|
||||
}
|
||||
if let Some(value) = &state.wants_matchvelocity_id {
|
||||
actor.insert(actor::WantsMatchVelocityWith(value.clone()));
|
||||
}
|
||||
if let Some(color) = state.light_color {
|
||||
actor.insert((
|
||||
PointLight {
|
||||
intensity: state.light_brightness,
|
||||
color,
|
||||
range: 2000.0,
|
||||
shadows_enabled: settings.shadows_pointlights,
|
||||
..default()
|
||||
},
|
||||
bevy::pbr::CubemapVisibleEntities::default(),
|
||||
bevy::render::primitives::CubemapFrusta::default(),
|
||||
// Physics Parameters
|
||||
if state.has_physics {
|
||||
actor.insert(RigidBody::Dynamic);
|
||||
actor.insert(LinearVelocity(velocity));
|
||||
actor.insert(AngularVelocity(state.angular_momentum));
|
||||
actor.insert(ColliderDensity(state.density));
|
||||
if state.collider_is_mesh {
|
||||
actor.insert(MassPropertiesBundle::new_computed(
|
||||
&Collider::sphere(0.5 * state.model_scale as f64),
|
||||
state.density,
|
||||
));
|
||||
actor.insert(AsyncSceneCollider::new(Some(
|
||||
ComputedCollider::TriMesh, //ComputedCollider::ConvexDecomposition(VHACDParameters::default())
|
||||
)));
|
||||
} else if state.collider_is_one_mesh_of_scene {
|
||||
actor.insert(MassPropertiesBundle::new_computed(
|
||||
&Collider::sphere(0.5 * state.model_scale as f64),
|
||||
state.density,
|
||||
));
|
||||
actor.insert(
|
||||
AsyncSceneCollider::new(None)
|
||||
.with_shape_for_name("Collider", ComputedCollider::TriMesh)
|
||||
.with_layers_for_name("Collider", CollisionLayers::ALL), //.with_density_for_name("Collider", state.density)
|
||||
);
|
||||
actor.insert(NeedsSceneColliderRemoved);
|
||||
} else {
|
||||
actor.insert(state.collider.clone());
|
||||
}
|
||||
if !state.id.is_empty() {
|
||||
actor.insert(actor::Identifier(state.id.clone()));
|
||||
id2pos.0.insert(state.id.clone(), absolute_pos);
|
||||
}
|
||||
if !state.chat.is_empty() {
|
||||
actor.insert(chat::Talker {
|
||||
actor_id: state.id.clone(),
|
||||
chat_name: state.chat.clone(),
|
||||
name: state.name.clone(),
|
||||
pronoun: state.pronoun.clone(),
|
||||
talking_speed: 1.0,
|
||||
});
|
||||
if let Some(name) = &state.name {
|
||||
achievement_tracker.all_people.insert(name.clone());
|
||||
}
|
||||
}
|
||||
if state.is_vehicle {
|
||||
actor.insert(actor::Vehicle::default());
|
||||
if let Some(name) = &state.name {
|
||||
achievement_tracker.all_vehicles.insert(name.clone());
|
||||
}
|
||||
}
|
||||
if state.is_vehicle
|
||||
|| state.is_suited
|
||||
|| state.thrust_forward > 0.0
|
||||
|| state.thrust_sideways > 0.0
|
||||
|| state.thrust_back > 0.0
|
||||
|| state.reaction_wheels > 0.0
|
||||
{
|
||||
actor.insert(actor::Engine {
|
||||
thrust_forward: state.thrust_forward,
|
||||
thrust_back: state.thrust_back,
|
||||
thrust_sideways: state.thrust_sideways,
|
||||
reaction_wheels: state.reaction_wheels,
|
||||
warmup_seconds: state.warmup_seconds,
|
||||
engine_type: state.engine_type,
|
||||
}
|
||||
// TODO: angular velocity for objects without collisions, static objects
|
||||
|
||||
// Optional Components
|
||||
if state.is_player {
|
||||
actor.insert(actor::Player);
|
||||
actor.insert(actor::PlayerCamera);
|
||||
actor.insert(hud::AugmentedRealityOverlayBroadcaster);
|
||||
ew_updateavatar.send(hud::UpdateAvatarEvent);
|
||||
}
|
||||
if state.is_sun {
|
||||
let (r, g, b) = nature::star_color_index_to_rgb(0.656);
|
||||
actor.insert(materials.add(StandardMaterial {
|
||||
base_color: Color::srgb(r * 13.0, g * 13.0, b * 13.0),
|
||||
unlit: true,
|
||||
..default()
|
||||
}));
|
||||
actor.insert((NotShadowCaster, NotShadowReceiver));
|
||||
}
|
||||
if state.is_targeted_on_startup {
|
||||
actor.insert(hud::IsTargeted);
|
||||
}
|
||||
if let Some((mindist, id)) = &state.show_only_in_map_at_distance {
|
||||
actor.insert(camera::ShowOnlyInMap {
|
||||
min_distance: *mindist,
|
||||
distance_to_id: id.clone(),
|
||||
});
|
||||
}
|
||||
if state.is_player || state.is_vehicle {
|
||||
// used to apply mouse movement to actor rotation
|
||||
actor.insert(ExternalTorque::ZERO.with_persistence(false));
|
||||
}
|
||||
if state.is_lifeform {
|
||||
actor.insert(actor::LifeForm::default());
|
||||
actor.insert(actor::ExperiencesGForce::default());
|
||||
actor.insert(actor::Suit {
|
||||
oxygen: state.oxygen,
|
||||
oxygen_max: nature::OXY_D,
|
||||
integrity: state.suit_integrity,
|
||||
..default()
|
||||
});
|
||||
actor.insert(actor::Battery::default());
|
||||
}
|
||||
if state.is_clickable {
|
||||
actor.insert(hud::IsClickable {
|
||||
name: state.name.clone(),
|
||||
pronoun: state.pronoun.clone(),
|
||||
..default()
|
||||
});
|
||||
}
|
||||
if let Some(value) = state.wants_maxrotation {
|
||||
actor.insert(actor::WantsMaxRotation(value));
|
||||
}
|
||||
if let Some(value) = state.wants_maxvelocity {
|
||||
actor.insert(actor::WantsMaxVelocity(value));
|
||||
}
|
||||
if let Some(value) = &state.wants_tolookat_id {
|
||||
actor.insert(actor::WantsToLookAt(value.clone()));
|
||||
}
|
||||
if let Some(value) = &state.wants_matchvelocity_id {
|
||||
actor.insert(actor::WantsMatchVelocityWith(value.clone()));
|
||||
}
|
||||
if let Some(color) = state.light_color {
|
||||
actor.insert((
|
||||
PointLight {
|
||||
intensity: state.light_brightness,
|
||||
color,
|
||||
range: 2000.0,
|
||||
shadows_enabled: settings.shadows_pointlights,
|
||||
..default()
|
||||
});
|
||||
},
|
||||
bevy::pbr::CubemapVisibleEntities::default(),
|
||||
bevy::render::primitives::CubemapFrusta::default(),
|
||||
));
|
||||
}
|
||||
if !state.id.is_empty() {
|
||||
actor.insert(actor::Identifier(state.id.clone()));
|
||||
id2pos.0.insert(state.id.clone(), absolute_pos);
|
||||
}
|
||||
if !state.chat.is_empty() {
|
||||
actor.insert(chat::Talker {
|
||||
actor_id: state.id.clone(),
|
||||
chat_name: state.chat.clone(),
|
||||
name: state.name.clone(),
|
||||
pronoun: state.pronoun.clone(),
|
||||
talking_speed: 1.0,
|
||||
});
|
||||
if let Some(name) = &state.name {
|
||||
achievement_tracker.all_people.insert(name.clone());
|
||||
}
|
||||
if let Some(_) = state.ar_model {
|
||||
actor.insert(hud::AugmentedRealityOverlayBroadcaster);
|
||||
}
|
||||
if state.is_vehicle {
|
||||
actor.insert(actor::Vehicle::default());
|
||||
if let Some(name) = &state.name {
|
||||
achievement_tracker.all_vehicles.insert(name.clone());
|
||||
}
|
||||
if state.is_player {
|
||||
actor.with_children(|builder| {
|
||||
builder.spawn((
|
||||
world::DespawnOnPlayerDeath,
|
||||
actor::PlayersFlashLight,
|
||||
SpotLightBundle {
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, 1.0),
|
||||
rotation: Quat::from_rotation_y(180f32.to_radians()),
|
||||
..default()
|
||||
},
|
||||
spot_light: SpotLight {
|
||||
intensity: 40_000_000.0, // lumens
|
||||
color: Color::WHITE,
|
||||
shadows_enabled: true,
|
||||
inner_angle: PI32 / 8.0 * 0.85,
|
||||
outer_angle: PI32 / 4.0,
|
||||
range: 2000.0,
|
||||
..default()
|
||||
},
|
||||
visibility: Visibility::Hidden,
|
||||
}
|
||||
if state.is_vehicle
|
||||
|| state.is_suited
|
||||
|| state.thrust_forward > 0.0
|
||||
|| state.thrust_sideways > 0.0
|
||||
|| state.thrust_back > 0.0
|
||||
|| state.reaction_wheels > 0.0
|
||||
{
|
||||
actor.insert(actor::Engine {
|
||||
thrust_forward: state.thrust_forward,
|
||||
thrust_back: state.thrust_back,
|
||||
thrust_sideways: state.thrust_sideways,
|
||||
reaction_wheels: state.reaction_wheels,
|
||||
warmup_seconds: state.warmup_seconds,
|
||||
engine_type: state.engine_type,
|
||||
..default()
|
||||
});
|
||||
}
|
||||
if let Some(_) = state.ar_model {
|
||||
actor.insert(hud::AugmentedRealityOverlayBroadcaster);
|
||||
}
|
||||
if state.is_player {
|
||||
actor.with_children(|builder| {
|
||||
builder.spawn((
|
||||
world::DespawnOnPlayerDeath,
|
||||
actor::PlayersFlashLight,
|
||||
SpotLightBundle {
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, 1.0),
|
||||
rotation: Quat::from_rotation_y(180f32.to_radians()),
|
||||
..default()
|
||||
},
|
||||
));
|
||||
});
|
||||
}
|
||||
actor_entity = actor.id();
|
||||
spot_light: SpotLight {
|
||||
intensity: 40_000_000.0, // lumens
|
||||
color: Color::WHITE,
|
||||
shadows_enabled: true,
|
||||
inner_angle: PI32 / 8.0 * 0.85,
|
||||
outer_angle: PI32 / 4.0,
|
||||
range: 2000.0,
|
||||
..default()
|
||||
},
|
||||
visibility: Visibility::Hidden,
|
||||
..default()
|
||||
},
|
||||
));
|
||||
});
|
||||
}
|
||||
actor_entity = actor.id();
|
||||
|
||||
if let Some(ar_asset_name) = &state.ar_model {
|
||||
let mut entitycmd = commands.spawn((
|
||||
|
|
Loading…
Reference in a new issue