Connectivity optimization

This commit is contained in:
2023-11-01 19:46:59 +01:00
parent 6dc6bc5db8
commit 8b55039972
22 changed files with 255 additions and 108 deletions

View File

@@ -0,0 +1,6 @@
import { levelState } from "../levelState"
export class levelEnter{
previousRoom : levelState
targetRoom : levelState
}

View File

@@ -0,0 +1,5 @@
import { playerData } from "../playerData";
export class levelUpdateClient{
player : playerData
}

View File

@@ -0,0 +1,7 @@
import { levelState } from "../levelState";
import { playerData } from "../playerData";
export class levelUpdateHost{
player : playerData
room : levelState
}

View File

@@ -0,0 +1,5 @@
import { playerData } from "../playerData";
export class lobbyJoin{
player : playerData
}

View File

@@ -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
}
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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
View 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
}
}

View File

@@ -1,6 +0,0 @@
import { levelState } from "./levelState"
export class roomChangeData{
previousRoom : string
targetRoom : levelState
}