You've already forked KF-MMO-Server
Connectivity optimization
This commit is contained in:
6
Classes/Incoming/levelEnter.ts
Normal file
6
Classes/Incoming/levelEnter.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { levelState } from "../levelState"
|
||||
|
||||
export class levelEnter{
|
||||
previousRoom : levelState
|
||||
targetRoom : levelState
|
||||
}
|
||||
5
Classes/Incoming/levelUpdateClient.ts
Normal file
5
Classes/Incoming/levelUpdateClient.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { playerData } from "../playerData";
|
||||
|
||||
export class levelUpdateClient{
|
||||
player : playerData
|
||||
}
|
||||
7
Classes/Incoming/levelUpdateHost.ts
Normal file
7
Classes/Incoming/levelUpdateHost.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { levelState } from "../levelState";
|
||||
import { playerData } from "../playerData";
|
||||
|
||||
export class levelUpdateHost{
|
||||
player : playerData
|
||||
room : levelState
|
||||
}
|
||||
5
Classes/Incoming/lobbyJoin.ts
Normal file
5
Classes/Incoming/lobbyJoin.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { playerData } from "../playerData";
|
||||
|
||||
export class lobbyJoin{
|
||||
player : playerData
|
||||
}
|
||||
@@ -6,4 +6,21 @@ export class enemyData{
|
||||
templateId : number
|
||||
rigidbody : physicsObject
|
||||
stats : Stat[] = []
|
||||
|
||||
static copyStart(e: enemyData): any {
|
||||
let enemy : any = {}
|
||||
enemy.id = e.id
|
||||
enemy.templateId = e.templateId
|
||||
enemy.rigidbody = physicsObject.characterOnly(e.rigidbody)
|
||||
enemy.stats = e.stats
|
||||
return enemy
|
||||
}
|
||||
|
||||
static copyUpdate(e: enemyData): any {
|
||||
let enemy : any = {}
|
||||
enemy.id = e.id
|
||||
enemy.rigidbody = physicsObject.characterOnly(e.rigidbody)
|
||||
enemy.stats = e.stats
|
||||
return enemy
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { enemyData } from "./enemyData";
|
||||
import { physicsObject } from "./physicsObject";
|
||||
import { playerData } from "./playerData";
|
||||
import { propData } from "./propData";
|
||||
|
||||
export class levelState{
|
||||
id : string
|
||||
@@ -9,7 +9,7 @@ export class levelState{
|
||||
completed : boolean = false
|
||||
isDungeon : boolean = false
|
||||
enemies : enemyData[] = []
|
||||
objects : physicsObject[] = []
|
||||
objects : propData[] = []
|
||||
players : playerData[] = []
|
||||
|
||||
getRandomInt(max) {
|
||||
@@ -23,15 +23,37 @@ export class levelState{
|
||||
this.completed = false
|
||||
}
|
||||
|
||||
copyLight() {
|
||||
copyStart(){
|
||||
let level : any = {}
|
||||
level.id = this.id
|
||||
level.seed = this.seed
|
||||
level.hostId = this.hostId
|
||||
level.completed = this.completed
|
||||
level.isDungeon = this.isDungeon
|
||||
if(this.enemies.length > 0) level.enemies = this.enemies.map(e => enemyData.copyStart(e))
|
||||
if(this.objects.length > 0) level.objects = this.objects.map(e => propData.copyPropStart(e))
|
||||
if(this.players.length > 0) level.players = this.players.map(pl=> pl.copyUpdate())
|
||||
return level
|
||||
}
|
||||
|
||||
copyUpdate(){
|
||||
let level : any = {}
|
||||
level.id = this.id
|
||||
level.seed = this.seed
|
||||
level.hostId = this.hostId
|
||||
level.completed = this.completed
|
||||
if(this.enemies.length > 0) level.enemies = this.enemies.map(e => enemyData.copyUpdate(e))
|
||||
if(this.objects.length > 0) level.objects = this.objects.map(e => propData.copyPropUpdate(e))
|
||||
if(this.players.length > 0) level.players = this.players.map(pl=> pl.copyUpdate())
|
||||
return level
|
||||
}
|
||||
|
||||
copyState(){
|
||||
let level : any = {}
|
||||
level.id = this.id
|
||||
level.seed = this.seed
|
||||
level.hostId = this.hostId
|
||||
level.completed = this.completed
|
||||
level.enemies = this.enemies
|
||||
level.objects = this.objects
|
||||
level.players = this.players.map(pl=>pl.copyLight())
|
||||
return level
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ export class lobbyState{
|
||||
lobby.players = []
|
||||
lobby.users = []
|
||||
for (let i = 0; i < this.players.length; i++) {
|
||||
lobby.players.push(this.players[i].copyLight());
|
||||
lobby.players.push(this.players[i].copyUpdate());
|
||||
}
|
||||
lobby.rooms = this.rooms
|
||||
lobby.dungeons = this.dungeons
|
||||
|
||||
@@ -1,16 +1,45 @@
|
||||
export class physicsObject{
|
||||
name : string
|
||||
templateId : number
|
||||
//array of floats [3]
|
||||
kinematic : boolean
|
||||
position : number[] = [0,0,0]
|
||||
rotation : number[] = [0,0,0]
|
||||
velocity : number[] = [0,0,0]
|
||||
angularVelocity : number[] = [0,0,0]
|
||||
|
||||
static copyLight(o: physicsObject) {
|
||||
let pObject = Object.assign({}, o)
|
||||
static isKinematic(o:physicsObject){
|
||||
return !o.hasOwnProperty("velocity")
|
||||
}
|
||||
|
||||
static copyAll(o: physicsObject) {
|
||||
let pObject = Object.assign({}, o)
|
||||
return pObject
|
||||
}
|
||||
|
||||
static characterOnly(o: physicsObject) {
|
||||
let pObject : any = {}
|
||||
pObject.position = o.position
|
||||
pObject.velocity = o.velocity
|
||||
return pObject
|
||||
}
|
||||
|
||||
static copyStart(o: physicsObject) {
|
||||
let pObject : any = {}
|
||||
pObject.position = o.position
|
||||
pObject.rotation = o.rotation
|
||||
if(!this.isKinematic(o)){
|
||||
pObject.velocity = o.velocity
|
||||
pObject.angularVelocity = o.angularVelocity
|
||||
}
|
||||
return pObject
|
||||
}
|
||||
|
||||
static copyUpdate(o: physicsObject) {
|
||||
let pObject : any = {}
|
||||
if(!this.isKinematic(o)){
|
||||
pObject.position = o.position
|
||||
pObject.rotation = o.rotation
|
||||
pObject.velocity = o.velocity
|
||||
pObject.angularVelocity = o.angularVelocity
|
||||
}
|
||||
return pObject
|
||||
}
|
||||
}
|
||||
@@ -11,12 +11,29 @@ export class playerData{
|
||||
rigidbody : physicsObject = new physicsObject()
|
||||
damageInfo : enemyDamageInfo[] = []
|
||||
|
||||
copyLight(){
|
||||
copyStart(){
|
||||
let player : any = {}
|
||||
player.id = this.id
|
||||
//player.room = this.room
|
||||
player.rigidbody = physicsObject.copyLight(this.rigidbody)
|
||||
player.damageInfo = this.damageInfo
|
||||
player.characterId = this.characterId
|
||||
player.rigidbody = physicsObject.characterOnly(this.rigidbody)
|
||||
return player
|
||||
}
|
||||
|
||||
copyUpdate(){
|
||||
let player : any = {}
|
||||
player.id = this.id
|
||||
if(this.rigidbody == null){
|
||||
console.log(this)
|
||||
}
|
||||
player.rigidbody = physicsObject.characterOnly(this.rigidbody)
|
||||
if(this.damageInfo.length > 0) player.damageInfo = this.damageInfo
|
||||
return player
|
||||
}
|
||||
|
||||
copyInventory(){
|
||||
let player : any = {}
|
||||
player.id = this.id
|
||||
player.inventory = this.inventory
|
||||
return player
|
||||
}
|
||||
|
||||
|
||||
22
Classes/propData.ts
Normal file
22
Classes/propData.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { physicsObject } from "./physicsObject"
|
||||
|
||||
export class propData{
|
||||
name : string
|
||||
templateId : number
|
||||
rigidbody : physicsObject
|
||||
|
||||
static copyPropStart(o: propData) {
|
||||
let pObject = Object.assign({}, o)
|
||||
pObject.rigidbody = physicsObject.copyStart(o.rigidbody)
|
||||
return pObject
|
||||
}
|
||||
|
||||
static copyPropUpdate(o: propData) {
|
||||
let pObject : any = {}
|
||||
pObject.name = o.name
|
||||
if(!physicsObject.isKinematic(o.rigidbody)){
|
||||
pObject.rigidbody = physicsObject.copyUpdate(o.rigidbody)
|
||||
}
|
||||
return pObject
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import { levelState } from "./levelState"
|
||||
|
||||
export class roomChangeData{
|
||||
previousRoom : string
|
||||
targetRoom : levelState
|
||||
}
|
||||
Reference in New Issue
Block a user