import { DataModel } from "./core/DataModel.js"; import * as THREE from "three"; import { NetworkService } from "./instances/NetworkService.js"; import { ReplicatorService } from "./instances/ReplicatorService.js"; import { RenderService } from "./instances/RenderService.js"; import { Workspace } from "./instances/Workspace.js"; import { DebugTextService } from "./instances/DebugTextService.js"; // Client-only debug overlay manager import { Players } from "./instances/Players.js"; const dm = new DataModel(); dm.SetParent(null); // root // Create workspace const ws = new Workspace(); ws.SetParent(dm); const net = new NetworkService(); net.SetParent(dm); net.isServer = false; // client mode // Create a players container (client-side crippled version) const players = new Players(net, true); players.SetParent(dm); await net.connect("ws://localhost:8080"); // connect to server const render = new RenderService(dm); render.SetParent(dm); render.start(); // Start replicator const replication = new ReplicatorService(dm, net); // Automatically parents to dm // Create DebugTextService const debugText = new DebugTextService(); debugText.SetParent(dm); setTimeout(() => { console.log("Prompting for token..."); let sessionToken = prompt("Enter your session token: (any string will do for this test except 'fake')"); console.log("Got token:", sessionToken); if (sessionToken) { const encoder = new TextEncoder(); const payload = encoder.encode(sessionToken); net.send(0x01, 0x03, payload); } else { console.warn("No token entered — not sending packet."); } }, 3000);