@@ 97,7 97,8 @@ fn spawn_planets(mut commands: Commands) {
.insert(AdditionalMassProperties::Mass(EARTH_MASS))
.insert(ReadMassProperties::default())
.with_children(|children| {
- children.spawn(Collider::ball((EARTH_SIZE + 3.) / SCALE))
+ children
+ .spawn(Collider::ball((EARTH_SIZE + 3.) / SCALE))
.insert(ActiveEvents::COLLISION_EVENTS)
.insert(Sensor);
})
@@ 112,7 113,8 @@ fn spawn_planets(mut commands: Commands) {
.insert(AdditionalMassProperties::Mass(MOON_MASS))
.insert(ReadMassProperties::default())
.with_children(|children| {
- children.spawn(Collider::ball((MOON_SIZE + 3.) / SCALE))
+ children
+ .spawn(Collider::ball((MOON_SIZE + 3.) / SCALE))
.insert(ActiveEvents::COLLISION_EVENTS)
.insert(Sensor);
})
@@ 137,12 139,12 @@ fn module_spawn(
);
transform.rotate_z(angle);
if part_query.iter().count() < FREE_MODULE_CAP {
- let mut entity = commands
- .spawn(PartBundle {
- part_type: PartType::Cargo,
- transform: TransformBundle::from(transform),
- });
- entity.insert(RigidBody::Dynamic)
+ let mut entity = commands.spawn(PartBundle {
+ part_type: PartType::Cargo,
+ transform: TransformBundle::from(transform),
+ });
+ entity
+ .insert(RigidBody::Dynamic)
.with_children(|children| {
children
.spawn(Collider::cuboid(18.75 / SCALE, 23.4375 / SCALE))
@@ 162,7 164,7 @@ fn module_spawn(
part: Part {
part_type: PartType::Cargo,
transform: proto_transform!(transform),
- }
+ },
};
let buf = serde_json::to_vec(&packet).unwrap();
@@ 558,10 560,8 @@ fn on_message(
}
}
}
- let mut module =
- attached_query.get_mut(select).unwrap();
- module.2.translation =
- vec3(x / SCALE, y / SCALE, 0.);
+ let mut module = attached_query.get_mut(select).unwrap();
+ module.2.translation = vec3(x / SCALE, y / SCALE, 0.);
} else {
for (i, child) in attach.children.clone().iter().enumerate()
{
@@ 823,7 823,9 @@ fn convert_modules(
mut packet_send: EventWriter<ServerEvent>,
) {
for (_planet_entity, planet_type, children) in &planet_query {
- for (entity1, entity2, intersecting) in rapier_context.intersections_with(*children.first().unwrap()) {
+ for (entity1, entity2, intersecting) in
+ rapier_context.intersections_with(*children.first().unwrap())
+ {
if intersecting {
let other = if *children.first().unwrap() == entity1 {
entity2
@@ 833,10 835,23 @@ fn convert_modules(
let player_entity = if player_query.contains(other) {
other
} else if attached_query.contains(other) {
- attached_query.get(other).unwrap().1.associated_player.unwrap()
- } else { continue };
+ attached_query
+ .get(other)
+ .unwrap()
+ .1
+ .associated_player
+ .unwrap()
+ } else {
+ continue;
+ };
let player_attach = player_query.get(player_entity).unwrap();
- convert_modules_recursive(*planet_type, player_attach.clone(), &mut attached_query, &mut collider_query, &mut packet_send);
+ convert_modules_recursive(
+ *planet_type,
+ player_attach.clone(),
+ &mut attached_query,
+ &mut collider_query,
+ &mut packet_send,
+ );
}
}
}
@@ 857,12 872,12 @@ fn convert_modules_recursive(
match planet_type {
PlanetType::Moon => {
*part_type = PartType::Hub;
- let (mut collider, mut transform) = collider_query.get_mut(*children.first().unwrap()).unwrap();
- *collider = Collider::cuboid(PART_HALF_SIZE / SCALE, PART_HALF_SIZE / SCALE);
+ let (mut collider, mut transform) =
+ collider_query.get_mut(*children.first().unwrap()).unwrap();
+ *collider =
+ Collider::cuboid(PART_HALF_SIZE / SCALE, PART_HALF_SIZE / SCALE);
*transform = Transform::from_xyz(0., 0., 0.);
- let packet = Packet::DespawnPart {
- id: child.index(),
- };
+ let packet = Packet::DespawnPart { id: child.index() };
let buf = serde_json::to_vec(&packet).unwrap();
packet_send.send(ServerEvent::Broadcast(MessageType::Text, buf.clone()));
@@ 871,7 886,7 @@ fn convert_modules_recursive(
part: Part {
part_type: PartType::Hub,
transform: proto_transform!(transform),
- }
+ },
};
let buf = serde_json::to_vec(&packet).unwrap();
@@ 880,7 895,13 @@ fn convert_modules_recursive(
_ => {}
}
}
- convert_modules_recursive(planet_type, attach.clone(), attached_query, collider_query, packet_send);
+ convert_modules_recursive(
+ planet_type,
+ attach.clone(),
+ attached_query,
+ collider_query,
+ packet_send,
+ );
}
}
}
@@ 898,7 919,13 @@ fn on_close(
if let ServerEvent::Close(addr) = packet {
for (entity, player, attach) in &player_query {
if player.addr == *addr {
- despawn_module_tree(&mut commands, attach, &attached_query, &part_query, &mut packets);
+ despawn_module_tree(
+ &mut commands,
+ attach,
+ &attached_query,
+ &part_query,
+ &mut packets,
+ );
commands.entity(entity).despawn_recursive();
let packet = Packet::PlayerLeave { id: entity.index() };
@@ 931,9 958,7 @@ fn despawn_module_tree(
for child in attach.children {
if let Some(child) = child {
commands.entity(child).despawn_recursive();
- let packet = Packet::DespawnPart {
- id: child.index(),
- };
+ let packet = Packet::DespawnPart { id: child.index() };
let buf = serde_json::to_vec(&packet).unwrap();
packets.push(ServerEvent::Broadcast(MessageType::Text, buf.clone()));
@@ 1,6 1,6 @@
import createDebug from "debug";
import type {
- DespawnPartPacket,
+ DespawnPartPacket,
MessagePacket,
Packet,
PartPositionsPacket,
@@ 16,7 16,7 @@ import { global } from "./globals.ts";
import { startRender } from "./rendering.ts";
import { ButtonType } from "./protocol.ts";
import type Chatbox from "./components/Chatbox.svelte";
-import {part_texture_url} from "./textures.js";
+import { part_texture_url } from "./textures.js";
import * as PIXI from "pixi.js";
const logger = createDebug("hub");
@@ 201,7 201,7 @@ export async function hub_connect(
let id = p.parts[i][0];
let new_part = p.parts[i][1];
- /*if (global.parts_map.has(id)) {
+ if (global.parts_map.has(id)) {
let old_part = global.parts_map.get(id)!;
let dx = new_part.transform.x - old_part.transform.x;
let dy = new_part.transform.y - old_part.transform.y;
@@ 211,7 211,8 @@ export async function hub_connect(
if (dx < CUTOFF_XY && dy < CUTOFF_XY && drot < CUTOFF_ROT) {
continue; // this packet is under the cutoff, we don't care about it
}
- }*/
+ }
+
global.parts_map.set(id, new_part);
if (id === global.me?.part_id) {
document.getElementById("pos-val-x")!.innerText = Math.round(
@@ 235,11 236,11 @@ export async function hub_connect(
} else if (packet.t == PacketType.DespawnPart) {
let p = <DespawnPartPacket>packet.c;
let id = p.id;
- let part_sprite = global.rendering!.part_sprite_map.get(id);
- logger(`despawned part`);
- global.parts_map.delete(id);
- global.rendering!.part_sprite_map.delete(id);
+ let part_sprite = global.rendering!.part_sprite_map.get(id)!;
+
global.rendering!.app.stage.removeChild(part_sprite);
+ global.rendering!.part_sprite_map.delete(id);
+ global.parts_map.delete(id);
} else if (packet.t == PacketType.PlayerLeave) {
let p = <PlayerLeavePacket>packet.c;
let username = global.players_map.get(p.id)!;