From 42a4358df1ab962d144344e5357ed408c4c98472 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Tue, 12 Apr 2022 18:24:05 +0300 Subject: [PATCH] changes --- src/client/game.ts | 8 +++--- src/client/object/{other => model}/eyes.ts | 2 +- src/client/object/{ => model}/pony.ts | 15 ++++++----- src/client/object/player-entity.ts | 2 +- src/client/object/player.ts | 2 +- .../object/{other => resource}/cubemap.ts | 0 .../object/{ => resource}/pony-loader.ts | 8 +++--- .../object/{other => resource}/texture.ts | 0 src/client/object/world/ClientWorldMesher.ts | 2 -- src/server/{object => }/game.ts | 26 +++++++++++-------- src/server/index.ts | 2 +- 11 files changed, 35 insertions(+), 32 deletions(-) rename src/client/object/{other => model}/eyes.ts (98%) rename src/client/object/{ => model}/pony.ts (90%) rename src/client/object/{other => resource}/cubemap.ts (100%) rename src/client/object/{ => resource}/pony-loader.ts (91%) rename src/client/object/{other => resource}/texture.ts (100%) rename src/server/{object => }/game.ts (84%) diff --git a/src/client/game.ts b/src/client/game.ts index a901a90..587d171 100644 --- a/src/client/game.ts +++ b/src/client/game.ts @@ -6,12 +6,12 @@ import { IcyNetUser } from '../common/types/user'; import { ThirdPersonCamera } from './object/camera'; import { Chat } from './object/chat'; import { Joystick } from './object/joystick'; -import { CubeMap } from './object/other/cubemap'; -import { PonyEyes } from './object/other/eyes'; +import { PonyModelLoader } from './object/resource/pony-loader'; +import { PonyEyes } from './object/model/eyes'; +import { CubeMap } from './object/resource/cubemap'; import { VideoPlayer } from './object/other/video-player'; import { Player } from './object/player'; import { PlayerEntity } from './object/player-entity'; -import { PonyModel } from './object/pony-loader'; import { ClientWorld } from './object/world/ClientWorld'; import { ClientWorldLoader } from './object/world/ClientWorldLoader'; import { ClientWorldManifest } from './object/world/ClientWorldManifest'; @@ -40,7 +40,7 @@ export class Game { const cube = await CubeMap.load('/assets/skybox/default'); - await PonyModel.getInstance().loadPonyModel(); + await PonyModelLoader.getInstance().loadPonyModel(); await PonyEyes.getInstance().initialize(); await this.world.initialize(); diff --git a/src/client/object/other/eyes.ts b/src/client/object/model/eyes.ts similarity index 98% rename from src/client/object/other/eyes.ts rename to src/client/object/model/eyes.ts index 18780d4..42ecd74 100644 --- a/src/client/object/other/eyes.ts +++ b/src/client/object/model/eyes.ts @@ -1,5 +1,5 @@ import { Color, ShaderMaterial, UniformsLib, UniformsUtils } from 'three'; -import { BaseTexture } from './texture'; +import { BaseTexture } from '../resource/texture'; export const vertex = /* glsl */ ` varying vec3 vViewPosition; diff --git a/src/client/object/pony.ts b/src/client/object/model/pony.ts similarity index 90% rename from src/client/object/pony.ts rename to src/client/object/model/pony.ts index 22ad287..63df93b 100644 --- a/src/client/object/pony.ts +++ b/src/client/object/model/pony.ts @@ -1,7 +1,5 @@ import * as SkeletonUtils from 'three/examples/jsm/utils/SkeletonUtils'; -import { CharacterPacket, FullStatePacket } from '../../common/types/packet'; -import { NameTag } from './nametag'; -import { CanvasUtils } from './canvas-utils'; + import { Mesh, MeshStandardMaterial, @@ -12,9 +10,12 @@ import { Vector3, ShaderMaterial, } from 'three'; -import { ClientWorld } from './world/ClientWorld'; -import { PonyEyes } from './other/eyes'; -import { PonyModel } from './pony-loader'; +import { FullStatePacket, CharacterPacket } from '../../../common/types/packet'; +import { CanvasUtils } from '../canvas-utils'; +import { NameTag } from '../nametag'; +import { PonyModelLoader } from '../resource/pony-loader'; +import { ClientWorld } from '../world/ClientWorld'; +import { PonyEyes } from './eyes'; const nameTagBuilder = new CanvasUtils({ fill: false, @@ -39,7 +40,7 @@ export class PonyEntity { public heightSource?: ClientWorld; initialize() { - const loader = PonyModel.getInstance(); + const loader = PonyModelLoader.getInstance(); this.model = (SkeletonUtils as any).clone(loader.ponyModel); this.material = ( (this.model.children[0].children[1] as Mesh) diff --git a/src/client/object/player-entity.ts b/src/client/object/player-entity.ts index 1b9c7bf..9d18ae8 100644 --- a/src/client/object/player-entity.ts +++ b/src/client/object/player-entity.ts @@ -1,5 +1,5 @@ import { IcyNetUser } from '../../common/types/user'; -import { PonyEntity } from './pony'; +import { PonyEntity } from './model/pony'; import { FullStatePacket, PositionUpdatePacket, diff --git a/src/client/object/player.ts b/src/client/object/player.ts index 9b04bb4..20e8982 100644 --- a/src/client/object/player.ts +++ b/src/client/object/player.ts @@ -1,6 +1,6 @@ import { IcyNetUser } from '../../common/types/user'; import { Socket } from 'socket.io-client'; -import { PonyEntity } from './pony'; +import { PonyEntity } from './model/pony'; import { Scene, Vector2, Vector3 } from 'three'; export class Player extends PonyEntity { diff --git a/src/client/object/other/cubemap.ts b/src/client/object/resource/cubemap.ts similarity index 100% rename from src/client/object/other/cubemap.ts rename to src/client/object/resource/cubemap.ts diff --git a/src/client/object/pony-loader.ts b/src/client/object/resource/pony-loader.ts similarity index 91% rename from src/client/object/pony-loader.ts rename to src/client/object/resource/pony-loader.ts index f3c0a64..170f97b 100644 --- a/src/client/object/pony-loader.ts +++ b/src/client/object/resource/pony-loader.ts @@ -9,9 +9,9 @@ const dracoLoader = new DRACOLoader(); dracoLoader.setDecoderPath('/examples/js/libs/draco/'); loader.setDRACOLoader(dracoLoader); -let instance: PonyModel; +let instance: PonyModelLoader; -export class PonyModel { +export class PonyModelLoader { public ponyModel!: THREE.Group; public animations!: THREE.AnimationClip[]; @@ -49,9 +49,9 @@ export class PonyModel { }); } - public static getInstance(): PonyModel { + public static getInstance(): PonyModelLoader { if (!instance) { - instance = new PonyModel(); + instance = new PonyModelLoader(); } return instance; } diff --git a/src/client/object/other/texture.ts b/src/client/object/resource/texture.ts similarity index 100% rename from src/client/object/other/texture.ts rename to src/client/object/resource/texture.ts diff --git a/src/client/object/world/ClientWorldMesher.ts b/src/client/object/world/ClientWorldMesher.ts index d3195c3..0bdd55b 100644 --- a/src/client/object/world/ClientWorldMesher.ts +++ b/src/client/object/world/ClientWorldMesher.ts @@ -3,10 +3,8 @@ import { Float32BufferAttribute, Material, Mesh, - MeshLambertMaterial, Vector3, } from 'three'; -import { to2D } from '../../../common/convert'; import { WorldChunk } from '../../../common/world/WorldChunk'; export class ClientWorldMesher { diff --git a/src/server/object/game.ts b/src/server/game.ts similarity index 84% rename from src/server/object/game.ts rename to src/server/game.ts index 5e324c8..1bda4f0 100644 --- a/src/server/object/game.ts +++ b/src/server/game.ts @@ -1,15 +1,12 @@ import { Server, Socket } from 'socket.io'; import { RequestHandler } from 'express'; -import { IcyNetUser } from '../../common/types/user'; -import { - CharacterPacket, - PositionUpdatePacket, -} from '../../common/types/packet'; +import { IcyNetUser } from '../common/types/user'; +import { CharacterPacket, PositionUpdatePacket } from '../common/types/packet'; const PLACEHOLDER_USER = (socket: Socket): IcyNetUser => { const randomName = `player-${socket.id.substring(0, 8)}`; return { - id: Math.random() * 1000 + 1000, + id: Math.floor(Math.random() * 1000 + 1000), username: randomName, display_name: randomName, uuid: socket.id, @@ -44,6 +41,14 @@ export class Game { : (session?.passport?.user as IcyNetUser); const publicUserInfo = user ? this.mapPlayer(user) : null; + if ( + user && + this._connections.find((entry) => entry.data.user.id === user.id) + ) { + socket.emit('error.duplicate'); + return; + } + this._connections.push(socket); socket.emit('me', publicUserInfo); @@ -77,9 +82,9 @@ export class Game { ...packet, }; - if (!this._changedPlayers.includes(socket.data.user.id)) { - this._changedPlayers.push(socket.data.user.id); - } + // if (!this._changedPlayers.includes(socket.data.user.id)) { + // this._changedPlayers.push(socket.data.user.id); + // } }); socket.on('character', (info: CharacterPacket) => { @@ -113,8 +118,7 @@ export class Game { const playerInfo: PositionUpdatePacket[] = []; this._connections .filter( - (conn) => - conn.data.user && this._changedPlayers.includes(conn.data.user.id), + (conn) => conn.data.user, // && this._changedPlayers.includes(conn.data.user.id), ) .forEach((conn) => playerInfo.push({ diff --git a/src/server/index.ts b/src/server/index.ts index b8ac78d..20cb90f 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -11,7 +11,7 @@ import { Server } from 'socket.io'; import { IcyNetUser } from '../common/types/user'; import { config } from './config'; -import { Game } from './object/game'; +import { Game } from './game'; const RedisStore = connectRedis(session); const redisClient = config.redis?.enabled ? redis.createClient() : undefined;