├── README.md ├── kbengine.js └── kbengine_ts ├── kbengine.bat ├── kbengine ├── kbengine.d.ts ├── kbengine.js └── kbengine.min.js ├── package.json ├── src └── KBEngine.ts └── tsconfig.json /README.md: -------------------------------------------------------------------------------- 1 | kbengine_js_plugins 2 | ======================== 3 | 4 | 5 | 6 | Usage 7 | --------------------- 8 | 9 | 1: Create KBEngine 10 | // Initialization 11 | var args = new KBEngine.KBEngineArgs(); 12 | 13 | args.ip = "127.0.0.1"; 14 | args.port = 20013; 15 | KBEngine.create(args); 16 | 17 | 2: Implment the KBE defined entity (including the client part) 18 | See: kbengine\kbengine_demos_assets\scripts\entities.xml(hasClient="true") need to implment 19 | 20 | 21 | 22 | 23 | 24 | KBEngine.Account = KBEngine.Entity.extend( 25 | { 26 | // entity initialization 27 | __init__ : function() 28 | { 29 | this._super(); 30 | } 31 | } 32 | 33 | Call entity server method 34 | entity.baseCall("base_func", 1, "arg2", "argN") 35 | entity.cellCall("cell_func", 1, "arg2", "argN") 36 | 37 | 3: Monitor KBE-plugins event 38 | For example: 39 | var StartSceneLayer = Class.extend({ 40 | { 41 | installEvents : function() 42 | { 43 | KBEngine.Event.register("onConnectionState", this, "onConnectionState"); 44 | } 45 | 46 | onConnectionState : function(success) 47 | { 48 | // KBE-plugins event fired 49 | } 50 | } 51 | 52 | 4: Fire events to the KBE-plugins 53 | For example: 54 | KBEngine.Event.fire("login", this.usernamebox.getString(), this.passwordbox.getString(), "kbengine_cocos2d_js_demo"); 55 | 56 | 57 | 58 | KBE-Plugin fire-out events(KBE => Unity): 59 | --------------------- 60 | 61 | Entity events: 62 | onEnterWorld 63 | Description: 64 | Entity enter the client-world. 65 | 66 | Event-datas: 67 | Enity 68 | 69 | 70 | onLeaveWorld 71 | Description: 72 | Entity leave the client-world. 73 | 74 | Event-datas: 75 | Enity 76 | 77 | onEnterSpace 78 | Description: 79 | Player enter the new space. 80 | 81 | Event-datas: 82 | Enity 83 | 84 | onLeaveSpace 85 | Description: 86 | Player enter the space. 87 | 88 | Event-datas: 89 | Enity 90 | 91 | onCreateAccountResult 92 | Description: 93 | Create account feedback results. 94 | 95 | Event-datas: 96 | uint16: retcode 97 | http://kbengine.org/docs/configuration/server_errors.html 98 | 99 | bytes: datas 100 | If you use third-party account system, the system may fill some of the third-party additional datas. 101 | 102 | onControlled 103 | Description: 104 | Triggered when the entity is controlled or out of control. 105 | 106 | Event-datas: 107 | Enity 108 | bool: isControlled 109 | 110 | onLoseControlledEntity 111 | Description: 112 | Lose controlled entity. 113 | 114 | Event-datas: 115 | Enity 116 | 117 | set_position 118 | Description: 119 | Sets the current position of the entity. 120 | 121 | Event-datas: 122 | Enity 123 | 124 | set_direction 125 | Description: 126 | Sets the current direction of the entity. 127 | 128 | Event-datas: 129 | Enity 130 | 131 | updatePosition 132 | Description: 133 | The entity position is updated, you can smooth the moving entity to new location. 134 | 135 | Event-datas: 136 | Enity 137 | 138 | Protocol events: 139 | onVersionNotMatch 140 | Description: 141 | Engine version mismatch. 142 | 143 | Event-datas: 144 | string: clientVersion 145 | string: serverVersion 146 | 147 | onScriptVersionNotMatch 148 | Description: 149 | script version mismatch. 150 | 151 | Event-datas: 152 | string: clientScriptVersion 153 | string: serverScriptVersion 154 | 155 | Loginapp_importClientMessages 156 | Description: 157 | Importing the message protocol for loginapp and client. 158 | 159 | Event-datas: 160 | No datas. 161 | 162 | Baseapp_importClientMessages 163 | Description: 164 | Importing the message protocol for baseapp and client. 165 | 166 | Event-datas: 167 | No datas. 168 | 169 | Baseapp_importClientEntityDef 170 | Description: 171 | Protocol description for importing entities. 172 | 173 | Event-datas: 174 | No datas. 175 | 176 | Login and Logout status: 177 | onLoginBaseapp 178 | Description: 179 | Login to baseapp. 180 | 181 | Event-datas: 182 | No datas. 183 | 184 | onReloginBaseapp 185 | Description: 186 | Relogin to baseapp. 187 | 188 | Event-datas: 189 | No datas. 190 | 191 | onKicked 192 | Description: 193 | Kicked of the current server. 194 | 195 | Event-datas: 196 | uint16: retcode 197 | http://kbengine.org/docs/configuration/server_errors.html 198 | 199 | onLoginFailed 200 | Description: 201 | Login failed. 202 | 203 | Event-datas: 204 | uint16: retcode 205 | bytes: serverdatas 206 | http://kbengine.org/docs/configuration/server_errors.html 207 | 208 | onLoginBaseappFailed 209 | Description: 210 | Login baseapp failed. 211 | 212 | Event-datas: 213 | uint16: retcode 214 | http://kbengine.org/docs/configuration/server_errors.html 215 | 216 | onReloginBaseappFailed 217 | Description: 218 | Relogin baseapp failed. 219 | 220 | Event-datas: 221 | uint16: retcode 222 | http://kbengine.org/docs/configuration/server_errors.html 223 | 224 | onReloginBaseappSuccessfully 225 | Description: 226 | Relogin baseapp success. 227 | 228 | Event-datas: 229 | No datas. 230 | 231 | Space events: 232 | addSpaceGeometryMapping 233 | Description: 234 | The current space is specified by the geometry mapping. 235 | Popular said is to load the specified Map Resources. 236 | 237 | Event-datas: 238 | string: resPath 239 | 240 | onSetSpaceData 241 | Description: 242 | Server spaceData set data. 243 | 244 | Event-datas: 245 | int32: spaceID 246 | string: key 247 | string value 248 | 249 | onDelSpaceData 250 | Description: 251 | Server spaceData delete data. 252 | 253 | Event-datas: 254 | int32: spaceID 255 | string: key 256 | 257 | Network events: 258 | onConnectionState 259 | Description: 260 | Status of connection server. 261 | 262 | Event-datas: 263 | bool: success or fail 264 | 265 | onDisconnected 266 | Description: 267 | Status of connection server. 268 | 269 | Event-datas: 270 | No datas. 271 | 272 | Download events: 273 | onStreamDataStarted 274 | Description: 275 | Start downloading data. 276 | 277 | Event-datas: 278 | uint16: resouce id 279 | uint32: data size 280 | string: description 281 | 282 | onStreamDataRecv 283 | Description: 284 | Receive data. 285 | 286 | Event-datas: 287 | uint16: resouce id 288 | bytes: datas 289 | 290 | onStreamDataCompleted 291 | Description: 292 | The downloaded data is completed. 293 | 294 | Event-datas: 295 | uint16: resouce id 296 | 297 | 298 | 299 | KBE-Plugin fire-in events(Unity => KBE): 300 | --------------------- 301 | 302 | createAccount 303 | Description: 304 | Create new account. 305 | 306 | Event-datas: 307 | string: accountName 308 | string: password 309 | bytes: datas 310 | Datas by user defined. 311 | Data will be recorded into the KBE account database, you can access the datas through the script layer. 312 | If you use third-party account system, datas will be submitted to the third-party system. 313 | 314 | 315 | login 316 | Description: 317 | Login to server. 318 | 319 | Event-datas: 320 | string: accountName 321 | string: password 322 | bytes: datas 323 | Datas by user defined. 324 | Data will be recorded into the KBE account database, you can access the datas through the script layer. 325 | If you use third-party account system, datas will be submitted to the third-party system. 326 | 327 | reloginBaseapp 328 | Description: 329 | Relogin to baseapp. 330 | 331 | Event-datas: 332 | No datas. 333 | 334 | resetPassword 335 | Description: 336 | Reset password. 337 | 338 | Event-datas: 339 | string: accountName 340 | 341 | newPassword 342 | Description: 343 | Request to set up a new password for the account. 344 | Note: account must be online 345 | 346 | Event-datas: 347 | string: old_password 348 | string: new_password 349 | 350 | bindAccountEmail 351 | Description: 352 | Request server binding account Email. 353 | Note: account must be online 354 | 355 | Event-datas: 356 | string: emailAddress 357 | 358 | 359 | 360 | -------------------------------------------------------------------------------- /kbengine_ts/kbengine.bat: -------------------------------------------------------------------------------- 1 | REM 将这个脚本放于项目之中,项目框架更新后双击执行即可 2 | REM 首次使用会问是文件或文件夹,一律选文件 3 | REM 如果不是cocos creator,需要改下路径 4 | 5 | REM 这里需要设置kbengine_ts路径 6 | set kbengine=%cd%\..\..\kbengine_js_plugins\kbengine_ts 7 | 8 | set libs=%cd%\assets\Libs 9 | if not exist %libs% ( 10 | mkdir %libs% 11 | ) 12 | 13 | xcopy /y /c /h /r %kbengine%\bin\kbengine.d.ts %cd%\kbengine.d.ts 14 | 15 | xcopy /y /c /h /r %kbengine%\bin\kbengine.js %libs%\kbengine.js 16 | -------------------------------------------------------------------------------- /kbengine_ts/kbengine/kbengine.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * KBEngine的html5客户端扩展ts版 2.x版本 3 | * cocos creator 环境下使用方法 4 | * 5 | * 注:(下面的是重点) 6 | * 1、实体声明的命名空间为KBEngine.Entities,与官方的KBEngine不同 7 | * 2、 @KBEngine.registerEntity() /// TODO: <---组件使用@KBEngine.registerComponent() 8 | export default class Account extends KBEngine.Entity { /// TODO: 组件继承自KBEngine.EntityComponent,类名等于服务器(实体/组件)名 9 | __comps__ = {组件名:组件类型} ///TODO: 因为组件类型不会从服务器同步,只能获取到EntityComponent,无法获取具体类型,所以需要在实体里进行手动设置,需要代码提示可以手动声明一下 10 | __init__() { 11 | console.log('创建account') 12 | } 13 | } 14 | //这里加入声明用于vscode代码提示 15 | declare global { 16 | namespace KBEngine { 17 | interface IEntities{ 18 | Account:new ()=>Account 19 | } 20 | } 21 | } 22 | 23 | * 3、cocos creator编辑器下会出现KBEngine未找到的问题,不影响运行,如果想去掉,将允许编辑器加载勾选 24 | 4、因为下班了,组件的basecall和cellcall还未测试,改天再继续 25 | */ 26 | declare namespace KBEngine { 27 | const CLIENT_VERSION = "2.5.0"; 28 | const CLIENT_SCRIPT_VERSION = "0.1.0"; 29 | const PACKET_MAX_SIZE = 1500; 30 | const PACKET_MAX_SIZE_TCP = 1460; 31 | const PACKET_MAX_SIZE_UDP = 1472; 32 | const MESSAGE_ID_LENGTH = 2; 33 | const MESSAGE_LENGTH_LENGTH = 2; 34 | const MESSAGE_LENGTH1_LENGTH = 4; 35 | const MESSAGE_MAX_SIZE = 65535; 36 | const CLIENT_NO_FLOAT = 0; 37 | const KBE_FLT_MAX = 3.402823466e+38; 38 | } 39 | declare namespace KBEngine { 40 | class INT64 { 41 | constructor(lo: any, hi: any); 42 | lo: number; 43 | hi: number; 44 | sign: number; 45 | toString(): string; 46 | } 47 | class UINT64 { 48 | constructor(lo: any, hi: any); 49 | lo: number; 50 | hi: number; 51 | toString(): string; 52 | } 53 | } 54 | declare namespace KBEngine { 55 | function getQualifiedClassName(value: any): any; 56 | } 57 | declare namespace KBEngine { 58 | /** todo 调试输出模块,这里需要根据使用的引擎不同在这里加入判断条件 */ 59 | function INFO_MSG(...args: any[]): void; 60 | function DEBUG_MSG(...args: any[]): void; 61 | function ERROR_MSG(...args: any[]): void; 62 | function WARNING_MSG(...args: any[]): void; 63 | } 64 | declare namespace KBEngine { 65 | function utf8ArrayToString(array: Array): any; 66 | function stringToUTF8Bytes(str: string): any[]; 67 | } 68 | declare namespace KBEngine { 69 | class EventInfo { 70 | classinst: any; 71 | callbackfn: any; 72 | constructor(classinst: any, callbackfn: any); 73 | } 74 | class FiredEvent { 75 | evtName: any; 76 | evtInfo: any; 77 | ars: any; 78 | constructor(evtName: any, evtInfo: any, ars: any); 79 | } 80 | interface IEvents { 81 | [evtName: string]: EventInfo[]; 82 | } 83 | class Events { 84 | constructor(); 85 | _events: IEvents; 86 | _isPause: boolean; 87 | _firedEvents: FiredEvent[]; 88 | register(evtName: string, classinst: any, strCallback: string): void; 89 | deregisterAll(classinst: any): void; 90 | deregister(evtName: string, classinst: any): void; 91 | removeAllFiredEvent(classinst: any): void; 92 | removeFiredEvent(evtName: string, classinst: any): void; 93 | fire(evtName: string, ...args: any[]): void; 94 | pasue(): void; 95 | resume(): void; 96 | clear(): void; 97 | } 98 | const Event: Events; 99 | } 100 | declare namespace KBEngine { 101 | class PackFloatXType { 102 | _unionData: ArrayBuffer; 103 | fv: Float32Array; 104 | uv: Uint32Array; 105 | iv: Int32Array; 106 | } 107 | const _xPackData: PackFloatXType; 108 | const _yPackData: PackFloatXType; 109 | const _zPackData: PackFloatXType; 110 | class MemoryStream { 111 | constructor(size_or_buffer: number | ArrayBuffer); 112 | buffer: ArrayBuffer; 113 | rpos: number; 114 | wpos: number; 115 | readInt8(): number; 116 | readInt16(): number; 117 | readInt32(): number; 118 | readInt64(): INT64; 119 | readUint8(): number; 120 | readUint16(): number; 121 | readUint32(): number; 122 | readUint64(): UINT64; 123 | readFloat(): any; 124 | readDouble(): any; 125 | readString(): string; 126 | readBlob(): Uint8Array; 127 | readStream(): MemoryStream; 128 | readPackXZ(): any[]; 129 | readPackY(): number; 130 | writeInt8(v: any): void; 131 | writeInt16(v: any): void; 132 | writeInt32(v: any): void; 133 | writeInt64(v: any): void; 134 | writeUint8(v: any): void; 135 | writeUint16(v: any): void; 136 | writeUint32(v: any): void; 137 | writeUint64(v: UINT64): void; 138 | writeFloat(v: any): void; 139 | writeDouble(v: any): void; 140 | writeBlob(v: any): void; 141 | writeString(v: any): void; 142 | append(stream: MemoryStream, offset: number, size: number): void; 143 | readSkip(v: any): void; 144 | space(): number; 145 | length(): number; 146 | readEOF(): boolean; 147 | done(): void; 148 | getbuffer(): ArrayBuffer; 149 | setbuffer(buffer: ArrayBuffer): void; 150 | size(): number; 151 | clear(): void; 152 | reclaimObject(): void; 153 | } 154 | module MemoryStream { 155 | const _objects: MemoryStream[]; 156 | function createObject(): MemoryStream; 157 | } 158 | } 159 | declare namespace KBEngine { 160 | class Bundle { 161 | static _objects: Bundle[]; 162 | static createObject(): Bundle; 163 | constructor(); 164 | memorystreams: Array; 165 | stream: MemoryStream; 166 | numMessage: number; 167 | messageLengthBuffer: Uint8Array; 168 | msgtype: any; 169 | messageLength: number; 170 | newMessage(msgtype: any): void; 171 | writeMsgLength(v: any): void; 172 | fini(issend: any): void; 173 | send(network: any): void; 174 | checkStream(v: any): void; 175 | writeInt8(v: any): void; 176 | writeInt16(v: any): void; 177 | writeInt32(v: any): void; 178 | writeInt64(v: any): void; 179 | writeUint8(v: any): void; 180 | writeUint16(v: any): void; 181 | writeUint32(v: any): void; 182 | writeUint64(v: any): void; 183 | writeFloat(v: any): void; 184 | writeDouble(v: any): void; 185 | writeString(v: any): void; 186 | writeBlob(v: any): void; 187 | clear(): void; 188 | reclaimObject(): void; 189 | } 190 | const reader: MemoryStream; 191 | interface IDataType2Id { 192 | [type: string]: number; 193 | } 194 | let datatype2id: IDataType2Id; 195 | function mappingDataType(): void; 196 | function bindWriter(writer: any, argType: number): any; 197 | function bindReader(argType: number): () => any; 198 | class Message { 199 | id: any; 200 | name: any; 201 | length: any; 202 | argsType: any; 203 | args: any; 204 | handler: any; 205 | constructor(id: any, name: any, length: any, argsType: any, args: any, handler: any); 206 | createFromStream(msgstream: any): any; 207 | handleMessage(msgstream: any): void; 208 | } 209 | module messages { 210 | const loginapp: {}; 211 | const baseapp: {}; 212 | const Loginapp_importClientMessages: Message; 213 | const Baseapp_importClientMessages: Message; 214 | const Baseapp_importClientEntityDef: Message; 215 | const onImportClientMessages: Message; 216 | } 217 | let clientmessages: {}; 218 | let bufferedCreateEntityMessages: {}; 219 | } 220 | declare namespace KBEngine { 221 | class Vector2 { 222 | x: number; 223 | y: number; 224 | constructor(x: number, y: number); 225 | distance(pos: Vector2): number; 226 | add(vec2: Vector2): this; 227 | sub(vec2: Vector2): this; 228 | mul(num: number): this; 229 | div(num: number): this; 230 | neg(): this; 231 | } 232 | class Vector3 { 233 | x: number; 234 | y: number; 235 | z: number; 236 | constructor(x: number, y: number, z: number); 237 | distance(pos: Vector3): number; 238 | add(vec3: Vector3): this; 239 | sub(vec3: Vector3): this; 240 | mul(num: number): this; 241 | div(num: number): this; 242 | neg(): this; 243 | } 244 | class Vector4 { 245 | x: number; 246 | y: number; 247 | z: number; 248 | w: number; 249 | constructor(x: number, y: number, z: number, w: number); 250 | distance(pos: Vector4): number; 251 | add(vec4: Vector4): this; 252 | sub(vec4: Vector4): this; 253 | mul(num: number): this; 254 | div(num: number): this; 255 | neg(): this; 256 | } 257 | function clampf(value: any, min_inclusive: any, max_inclusive: any): any; 258 | function int82angle(angle: number, half: boolean): number; 259 | function angle2int8(v: number, half: boolean): number; 260 | } 261 | declare namespace KBEngine { 262 | interface IEntities { 263 | } 264 | const Entities: IEntities; 265 | class Entity { 266 | constructor(); 267 | protected __comps__: { 268 | [compName: string]: new () => EntityComponent; 269 | }; 270 | id: number; 271 | className: string; 272 | position: Vector3; 273 | direction: Vector3; 274 | velocity: number; 275 | cell: any; 276 | base: any; 277 | inWorld: boolean; 278 | inited: boolean; 279 | isControlled: boolean; 280 | entityLastLocalPos: Vector3; 281 | entityLastLocalDir: Vector3; 282 | isOnGround: boolean; 283 | __init__(): void; 284 | attachComponents(): void; 285 | getComponents(compName: string, all?: boolean): any; 286 | detachComponents(): void; 287 | callPropertysSetMethods(): void; 288 | onDestroy(): void; 289 | onControlled(bIsControlled: any): void; 290 | isPlayer(): boolean; 291 | baseCall(type: string, ...params: any[]): void; 292 | cellCall(type: string, ...params: any[]): void; 293 | enterWorld(): void; 294 | onComponentsEnterworld(): void; 295 | onComponentsLeaveworld(): void; 296 | onEnterWorld(): void; 297 | leaveWorld(): void; 298 | onLeaveWorld(): void; 299 | enterSpace(): void; 300 | onEnterSpace(): void; 301 | leaveSpace(): void; 302 | onLeaveSpace(): void; 303 | set_position(): void; 304 | onUpdateVolatileData(): void; 305 | onUpdatePropertys(stream: MemoryStream): void; 306 | set_direction(old: any): void; 307 | onRemoteMethodCall(stream: MemoryStream): void; 308 | } 309 | function registerEntity(): (ctor: new () => Entity) => void; 310 | } 311 | declare namespace KBEngine { 312 | class EntityComponent { 313 | id: number; 314 | entityComponentPropertyID: number; 315 | componentType: number; 316 | ownerID: number; 317 | owner: Entity; 318 | className: string; 319 | base: EntityComponentCall; 320 | cell: EntityComponentCall; 321 | protected onAttached(owner: Entity): void; 322 | protected onDetached(owner: Entity): void; 323 | protected onEnterWorld(): void; 324 | protected onLeaveWorld(): void; 325 | baseCall(type: string, ...params: any[]): void; 326 | cellCall(type: string, ...params: any[]): void; 327 | onUpdatePropertys(propUtype: number, stream: MemoryStream, maxCount: number): void; 328 | onRemoteMethodCall(propUtype: number, stream: MemoryStream): void; 329 | createFromStream(stream: MemoryStream, ecpId: number): void; 330 | } 331 | function registerComponent(): (ctor: new () => EntityComponent) => void; 332 | } 333 | declare namespace KBEngine { 334 | const ENTITYCALL_TYPE_CELL = 0; 335 | const ENTITYCALL_TYPE_BASE = 1; 336 | class EntityCall { 337 | constructor(); 338 | id: number; 339 | className: string; 340 | type: number; 341 | networkInterface: KBEngineApp; 342 | bundle: any; 343 | isBase(): boolean; 344 | isCell(): boolean; 345 | newCall(): any; 346 | sendCall(bundle?: Bundle): void; 347 | } 348 | class EntityComponentCall extends EntityCall { 349 | entityComponentPropertyID: number; 350 | constructor(ecpId: number, eid: number, className: string); 351 | } 352 | class DATATYPE_UINT8 { 353 | bind(): void; 354 | createFromStream(stream: any): any; 355 | addToStream(stream: any, v: any): void; 356 | parseDefaultValStr(v: any): number; 357 | isSameType(v: any): boolean; 358 | } 359 | class DATATYPE_UINT16 { 360 | bind(): void; 361 | createFromStream(stream: any): any; 362 | addToStream(stream: any, v: any): void; 363 | parseDefaultValStr(v: any): number; 364 | isSameType(v: any): boolean; 365 | } 366 | class DATATYPE_UINT32 { 367 | bind(): void; 368 | createFromStream(stream: any): any; 369 | addToStream(stream: any, v: any): void; 370 | parseDefaultValStr(v: any): number; 371 | isSameType(v: any): boolean; 372 | } 373 | class DATATYPE_UINT64 { 374 | bind(): void; 375 | createFromStream(stream: any): any; 376 | addToStream(stream: any, v: any): void; 377 | parseDefaultValStr(v: any): number; 378 | isSameType(v: any): boolean; 379 | } 380 | class DATATYPE_INT8 { 381 | bind(): void; 382 | createFromStream(stream: any): any; 383 | addToStream(stream: any, v: any): void; 384 | parseDefaultValStr(v: any): number; 385 | isSameType(v: any): boolean; 386 | } 387 | class DATATYPE_INT16 { 388 | bind(): void; 389 | createFromStream(stream: any): any; 390 | addToStream(stream: any, v: any): void; 391 | parseDefaultValStr(v: any): number; 392 | isSameType(v: any): boolean; 393 | } 394 | class DATATYPE_INT32 { 395 | bind(): void; 396 | createFromStream(stream: any): any; 397 | addToStream(stream: any, v: any): void; 398 | parseDefaultValStr(v: any): number; 399 | isSameType(v: any): boolean; 400 | } 401 | class DATATYPE_INT64 { 402 | bind(): void; 403 | createFromStream(stream: any): any; 404 | addToStream(stream: any, v: any): void; 405 | parseDefaultValStr(v: any): number; 406 | isSameType(v: any): boolean; 407 | } 408 | class DATATYPE_FLOAT { 409 | bind(): void; 410 | createFromStream(stream: any): any; 411 | addToStream(stream: any, v: any): void; 412 | parseDefaultValStr(v: any): number; 413 | isSameType(v: any): boolean; 414 | } 415 | class DATATYPE_DOUBLE extends DATATYPE_FLOAT { 416 | createFromStream(stream: any): any; 417 | addToStream(stream: any, v: any): void; 418 | } 419 | class DATATYPE_STRING { 420 | bind(): void; 421 | createFromStream(stream: any): any; 422 | addToStream(stream: any, v: any): void; 423 | parseDefaultValStr(v: any): string; 424 | isSameType(v: any): boolean; 425 | } 426 | class DATATYPE_VECTOR2 { 427 | bind(): void; 428 | createFromStream(stream: any): Vector2; 429 | addToStream(stream: any, v: any): void; 430 | parseDefaultValStr(v: any): Vector2; 431 | isSameType(v: any): boolean; 432 | } 433 | class DATATYPE_VECTOR3 { 434 | bind(): void; 435 | createFromStream(stream: any): Vector3; 436 | addToStream(stream: any, v: any): void; 437 | parseDefaultValStr(v: any): Vector3; 438 | isSameType(v: any): boolean; 439 | } 440 | class DATATYPE_VECTOR4 { 441 | bind(): void; 442 | createFromStream(stream: any): Vector4; 443 | addToStream(stream: any, v: any): void; 444 | parseDefaultValStr(v: any): Vector4; 445 | isSameType(v: any): boolean; 446 | } 447 | class DATATYPE_PYTHON { 448 | bind(): void; 449 | createFromStream(stream: any): any; 450 | addToStream(stream: any, v: any): void; 451 | parseDefaultValStr(v: any): Uint8Array; 452 | isSameType(v: any): boolean; 453 | } 454 | class DATATYPE_UNICODE { 455 | bind(): void; 456 | createFromStream(stream: any): any; 457 | addToStream(stream: any, v: any): void; 458 | parseDefaultValStr(v: any): string; 459 | isSameType(v: any): boolean; 460 | } 461 | class DATATYPE_ENTITYCALL { 462 | bind(): void; 463 | createFromStream(stream: any): void; 464 | addToStream(stream: any, v: any): void; 465 | parseDefaultValStr(v: any): Uint8Array; 466 | isSameType(v: any): boolean; 467 | } 468 | class DATATYPE_BLOB { 469 | bind(): void; 470 | createFromStream(stream: any): Uint8Array; 471 | addToStream(stream: any, v: any): void; 472 | parseDefaultValStr(v: any): Uint8Array; 473 | isSameType(v: any): boolean; 474 | } 475 | class DATATYPE_ARRAY { 476 | type: any; 477 | bind(): void; 478 | createFromStream(stream: any): any[]; 479 | addToStream(stream: any, v: any): void; 480 | parseDefaultValStr(v: any): any[]; 481 | isSameType(v: any): boolean; 482 | } 483 | class DATATYPE_FIXED_DICT { 484 | dicttype: {}; 485 | implementedBy: any; 486 | bind(): void; 487 | createFromStream(stream: any): {}; 488 | addToStream(stream: any, v: any): void; 489 | parseDefaultValStr(v: any): {}; 490 | isSameType(v: any): boolean; 491 | } 492 | module datatypes { 493 | const UINT8: DATATYPE_UINT8; 494 | const UINT16: DATATYPE_UINT16; 495 | const UINT32: DATATYPE_UINT32; 496 | const UINT64: DATATYPE_UINT64; 497 | const INT8: DATATYPE_INT8; 498 | const INT16: DATATYPE_INT16; 499 | const INT32: DATATYPE_INT32; 500 | const INT64: DATATYPE_INT64; 501 | const FLOAT: DATATYPE_FLOAT; 502 | const DOUBLE: DATATYPE_DOUBLE; 503 | const STRING: DATATYPE_STRING; 504 | const VECTOR2: DATATYPE_VECTOR2; 505 | const VECTOR3: DATATYPE_VECTOR3; 506 | const VECTOR4: DATATYPE_VECTOR4; 507 | const PYTHON: DATATYPE_PYTHON; 508 | const UNICODE: DATATYPE_UNICODE; 509 | const ENTITYCALL: DATATYPE_ENTITYCALL; 510 | const BLOB: DATATYPE_BLOB; 511 | } 512 | } 513 | declare namespace KBEngine { 514 | class KBEngineArgs { 515 | ip: string; 516 | port: number; 517 | updateHZ: number; 518 | serverHeartbeatTick: number; 519 | isWss: boolean; 520 | readonly protocol: string; 521 | forceBasePort: number; 522 | clientType: number; 523 | isOnInitCallPropertysSetMethods: boolean; 524 | } 525 | const EventTypes: { 526 | createAccount: string; 527 | login: string; 528 | logout: string; 529 | reloginBaseapp: string; 530 | bindAccountEmail: string; 531 | newPassword: string; 532 | onKicked: string; 533 | onDisconnected: string; 534 | onConnectionState: string; 535 | onCreateAccountResult: string; 536 | onVersionNotMatch: string; 537 | onScriptVersionNotMatch: string; 538 | onLoginFailed: string; 539 | onLoginBaseapp: string; 540 | onLoginBaseappFailed: string; 541 | onReloginBaseapp: string; 542 | onReloginBaseappSuccessfully: string; 543 | onReloginBaseappFailed: string; 544 | onEnterWorld: string; 545 | onLeaveWorld: string; 546 | onEnterSpace: string; 547 | onLeaveSpace: string; 548 | set_position: string; 549 | set_direction: string; 550 | updatePosition: string; 551 | addSpaceGeometryMapping: string; 552 | onSetSpaceData: string; 553 | onDelSpaceData: string; 554 | onControlled: string; 555 | onLoseControlledEntity: string; 556 | onStreamDataStarted: string; 557 | onStreamDataRecv: string; 558 | onStreamDataCompleted: string; 559 | }; 560 | } 561 | declare namespace KBEngine { 562 | const moduledefs: {}; 563 | class KBEngineApp { 564 | args: KBEngineArgs; 565 | constructor(args: KBEngineArgs); 566 | baseappIp: string; 567 | username: string; 568 | password: string; 569 | clientdatas: string; 570 | encryptedKey: string; 571 | loginappMessageImported: boolean; 572 | baseappMessageImported: boolean; 573 | serverErrorsDescrImported: boolean; 574 | entitydefImported: boolean; 575 | useAliasEntityID: boolean; 576 | serverErrs: { 577 | [err: string]: ServerErr; 578 | }; 579 | baseappIP: string; 580 | baseappPort: number; 581 | baseappUdpPort: number; 582 | currMsgID: number; 583 | currMsgCount: number; 584 | currMsgLen: number; 585 | fragmentStream: any; 586 | fragmentDatasFlag: number; 587 | fragmentDatasRemain: number; 588 | socket: any; 589 | currserver: string; 590 | currstate: string; 591 | currconnect: string; 592 | serverdatas: string; 593 | serverVersion: string; 594 | serverScriptVersion: string; 595 | serverProtocolMD5: string; 596 | serverEntityDefMD5: string; 597 | clientVersion: string; 598 | clientScriptVersion: string; 599 | entity_uuid: any; 600 | entity_id: number; 601 | entity_type: string; 602 | entityServerPos: Vector3; 603 | entities: {}; 604 | entityIDAliasIDList: any[]; 605 | controlledEntities: any[]; 606 | spacedata: {}; 607 | spaceID: number; 608 | spaceResPath: string; 609 | isLoadedGeometry: boolean; 610 | lastTickTime: number; 611 | lastTickCBTime: number; 612 | component: any; 613 | msgStream: MemoryStream; 614 | resetSocket(): void; 615 | reset(): void; 616 | installEvents(): void; 617 | uninstallEvents(): void; 618 | hello(): void; 619 | player(): any; 620 | findEntity(entityID: any): any; 621 | connect(host: any, port: any): void; 622 | disconnect(): void; 623 | onopen(): void; 624 | onerror_before_onopen(evt: any): void; 625 | onerror_after_onopen(evt: any): void; 626 | onmessage(msg: any): void; 627 | writeFragmentMessage(FragmentDataType: any, stream: MemoryStream, datasize: any): void; 628 | mergeFragmentMessage(stream: MemoryStream): boolean | 0; 629 | onclose(): void; 630 | send(msg: any): void; 631 | close(): void; 632 | update(): void; 633 | Client_onAppActiveTickCB(): void; 634 | serverErr(id: any): string; 635 | Client_onImportServerErrorsDescr(stream: any): void; 636 | Client_onImportClientSdk(stream: MemoryStream): void; 637 | onOpenLoginapp_login(): void; 638 | onOpenLoginapp_createAccount(): void; 639 | onImportClientMessagesCompleted(): void; 640 | createDataTypeFromStreams(stream: any, canprint: any): void; 641 | createDataTypeFromStream(stream: any, canprint: any): void; 642 | Client_onImportClientEntityDef(stream: any): void; 643 | Client_onVersionNotMatch(stream: any): void; 644 | Client_onScriptVersionNotMatch(stream: any): void; 645 | onImportEntityDefCompleted(): void; 646 | importClientMessages(stream: any): void; 647 | Client_onImportClientMessages(msg: any): void; 648 | createAccount(username: any, password: any, datas: any): void; 649 | createAccount_loginapp(noconnect: any): void; 650 | bindAccountEmail(emailAddress: any): void; 651 | newPassword(old_password: any, new_password: any): void; 652 | logout(): void; 653 | login(username: any, password: any, datas: any): void; 654 | login_loginapp(noconnect: any): void; 655 | onOpenLoginapp_resetpassword(): void; 656 | reset_password(username: any): void; 657 | resetpassword_loginapp(noconnect: any): void; 658 | onOpenBaseapp(): void; 659 | login_baseapp(noconnect: any): void; 660 | reloginBaseapp(): void; 661 | onReOpenBaseapp(): void; 662 | Client_onHelloCB(args: any): void; 663 | Client_onLoginFailed(args: any): void; 664 | Client_onLoginSuccessfully(args: any): void; 665 | Client_onLoginBaseappFailed(failedcode: any): void; 666 | Client_onReloginBaseappFailed(failedcode: any): void; 667 | Client_onReloginBaseappSuccessfully(stream: any): void; 668 | entityclass: {}; 669 | getentityclass(entityType: any): any; 670 | Client_onCreatedProxies(rndUUID: any, eid: any, entityType: any): void; 671 | getViewEntityIDFromStream(stream: any): number; 672 | onUpdatePropertys_(eid: any, stream: any): void; 673 | Client_onUpdatePropertysOptimized(stream: any): void; 674 | Client_onUpdatePropertys(stream: any): void; 675 | onRemoteMethodCall_(eid: any, stream: any): void; 676 | Client_onRemoteMethodCallOptimized(stream: any): void; 677 | Client_onRemoteMethodCall(stream: any): void; 678 | Client_onEntityEnterWorld(stream: any): void; 679 | Client_onEntityLeaveWorldOptimized(stream: any): void; 680 | Client_onEntityLeaveWorld(eid: any): void; 681 | Client_onEntityDestroyed(eid: any): void; 682 | Client_onEntityEnterSpace(stream: any): void; 683 | Client_onEntityLeaveSpace(eid: any): void; 684 | Client_onKicked(failedcode: any): void; 685 | Client_onCreateAccountResult(stream: any): void; 686 | Client_onControlEntity(eid: any, isControlled: any): void; 687 | updatePlayerToServer(): void; 688 | addSpaceGeometryMapping(spaceID: any, respath: any): void; 689 | clearSpace(isAll: any): void; 690 | clearEntities(isAll: any): void; 691 | Client_initSpaceData(stream: any): void; 692 | Client_setSpaceData(spaceID: any, key: any, value: any): void; 693 | Client_delSpaceData(spaceID: any, key: any): void; 694 | Client_getSpaceData(spaceID: any, key: any): any; 695 | Client_onUpdateBasePos(x: any, y: any, z: any): void; 696 | Client_onUpdateBasePosXZ(x: any, z: any): void; 697 | Client_onUpdateData(stream: any): void; 698 | Client_onSetEntityPosAndDir(stream: any): void; 699 | Client_onUpdateData_ypr(stream: any): void; 700 | Client_onUpdateData_yp(stream: any): void; 701 | Client_onUpdateData_yr(stream: any): void; 702 | Client_onUpdateData_pr(stream: any): void; 703 | Client_onUpdateData_y(stream: any): void; 704 | Client_onUpdateData_p(stream: any): void; 705 | Client_onUpdateData_r(stream: any): void; 706 | Client_onUpdateData_xz(stream: any): void; 707 | Client_onUpdateData_xz_ypr(stream: any): void; 708 | Client_onUpdateData_xz_yp(stream: any): void; 709 | Client_onUpdateData_xz_yr(stream: any): void; 710 | Client_onUpdateData_xz_pr(stream: any): void; 711 | Client_onUpdateData_xz_y(stream: any): void; 712 | Client_onUpdateData_xz_p(stream: any): void; 713 | Client_onUpdateData_xz_r(stream: any): void; 714 | Client_onUpdateData_xyz(stream: any): void; 715 | Client_onUpdateData_xyz_ypr(stream: any): void; 716 | Client_onUpdateData_xyz_yp(stream: any): void; 717 | Client_onUpdateData_xyz_yr(stream: any): void; 718 | Client_onUpdateData_xyz_pr(stream: any): void; 719 | Client_onUpdateData_xyz_y(stream: any): void; 720 | Client_onUpdateData_xyz_p(stream: any): void; 721 | Client_onUpdateData_xyz_r(stream: any): void; 722 | Client_onUpdateData_ypr_optimized(stream: any): void; 723 | Client_onUpdateData_yp_optimized(stream: any): void; 724 | Client_onUpdateData_yr_optimized(stream: any): void; 725 | Client_onUpdateData_pr_optimized(stream: any): void; 726 | Client_onUpdateData_y_optimized(stream: any): void; 727 | Client_onUpdateData_p_optimized(stream: any): void; 728 | Client_onUpdateData_r_optimized(stream: any): void; 729 | Client_onUpdateData_xz_optimized(stream: any): void; 730 | Client_onUpdateData_xz_ypr_optimized(stream: any): void; 731 | Client_onUpdateData_xz_yp_optimized(stream: any): void; 732 | Client_onUpdateData_xz_yr_optimized(stream: any): void; 733 | Client_onUpdateData_xz_pr_optimized(stream: any): void; 734 | Client_onUpdateData_xz_y_optimized(stream: any): void; 735 | Client_onUpdateData_xz_p_optimized(stream: any): void; 736 | Client_onUpdateData_xz_r_optimized(stream: any): void; 737 | Client_onUpdateData_xyz_optimized(stream: any): void; 738 | Client_onUpdateData_xyz_ypr_optimized(stream: any): void; 739 | Client_onUpdateData_xyz_yp_optimized(stream: any): void; 740 | Client_onUpdateData_xyz_yr_optimized(stream: any): void; 741 | Client_onUpdateData_xyz_pr_optimized(stream: any): void; 742 | Client_onUpdateData_xyz_y_optimized(stream: any): void; 743 | Client_onUpdateData_xyz_p_optimized(stream: any): void; 744 | Client_onUpdateData_xyz_r_optimized(stream: any): void; 745 | _updateVolatileData(entityID: any, x: any, y: any, z: any, yaw: any, pitch: any, roll: any, isOnGround: any, isOptimized?: boolean): void; 746 | Client_onStreamDataStarted(id: any, datasize: any, descr: any): void; 747 | Client_onStreamDataRecv(stream: any): void; 748 | Client_onStreamDataCompleted(id: any): void; 749 | Client_onReqAccountResetPasswordCB(failedcode: any): void; 750 | Client_onReqAccountBindEmailCB(failedcode: any): void; 751 | Client_onReqAccountNewPasswordCB(failedcode: any): void; 752 | } 753 | class ServerErr { 754 | name: string; 755 | descr: string; 756 | id: number; 757 | } 758 | const FragmentDataTypes: { 759 | FRAGMENT_DATA_UNKNOW: number; 760 | FRAGMENT_DATA_MESSAGE_ID: number; 761 | FRAGMENT_DATA_MESSAGE_LENGTH: number; 762 | FRAGMENT_DATA_MESSAGE_LENGTH1: number; 763 | FRAGMENT_DATA_MESSAGE_BODY: number; 764 | }; 765 | let app: KBEngineApp; 766 | function create(args: KBEngineArgs): void; 767 | function destroy(): void; 768 | } 769 | -------------------------------------------------------------------------------- /kbengine_ts/kbengine/kbengine.min.js: -------------------------------------------------------------------------------- 1 | var __reflect=this&&this.__reflect||function(t,e,n){t.__class__=e,n?n.push(e):n=[e],t.__types__=t.__types__?n.concat(t.__types__):n},__extends=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);n.prototype=e.prototype,t.prototype=new n},KBEngine;!function(t){t.CLIENT_VERSION="2.5.0",t.CLIENT_SCRIPT_VERSION="0.1.0",t.PACKET_MAX_SIZE=1500,t.PACKET_MAX_SIZE_TCP=1460,t.PACKET_MAX_SIZE_UDP=1472,t.MESSAGE_ID_LENGTH=2,t.MESSAGE_LENGTH_LENGTH=2,t.MESSAGE_LENGTH1_LENGTH=4,t.MESSAGE_MAX_SIZE=65535,t.CLIENT_NO_FLOAT=0,t.KBE_FLT_MAX=3.402823466e38}(KBEngine||(KBEngine={})),window.KBEngine=KBEngine,ArrayBuffer.transfer||(ArrayBuffer.transfer=function(t,e){var n=new ArrayBuffer(e);if(!(t instanceof ArrayBuffer&&n instanceof ArrayBuffer))throw new TypeError("ArrayBuffer.transfer, error: Source and destination must be ArrayBuffer instances");if(!(n.byteLength>=t.byteLength))throw new RangeError("ArrayBuffer.transfer, error: destination has not enough space");var r=new Uint8Array(n);return r.set(new Uint8Array(t),0),n}),function(t){var e=function(){function t(t,e){this.sign=1,this.lo=t,this.hi=e,e>=2147483648&&(this.sign=-1,this.lo>0?(this.lo=4294967296-this.lo&4294967295,this.hi=4294967295-this.hi):(this.lo=4294967296-this.lo&4294967295,this.hi=4294967296-this.hi))}return t.prototype.toString=function(){var t="";this.sign<0&&(t+="-");var e=this.lo.toString(16),n=this.hi.toString(16);if(this.hi>0){t+=n;for(var r=8-e.length;r>0;--r)t+="0"}return t+=e},t}();t.INT64=e,__reflect(e.prototype,"KBEngine.INT64");var n=function(){function t(t,e){this.lo=t,this.hi=e}return t.prototype.toString=function(){var t=this.lo.toString(16),e=this.hi.toString(16),n="";if(this.hi>0){n+=e;for(var r=8-t.length;r>0;--r)n+="0"}return n+=t},t}();t.UINT64=n,__reflect(n.prototype,"KBEngine.UINT64")}(KBEngine||(KBEngine={})),function(t){function e(t){var e=typeof t;if(!t||"object"!=e&&!t.prototype)return e;var n=t.prototype?t.prototype:Object.getPrototypeOf(t);if(n.hasOwnProperty("__class__"))return n.__class__;var r=n.constructor.toString().trim(),a=r.indexOf("("),i=r.substring(9,a),o=i.split(".");return Object.defineProperty(n,"__class__",{value:o[o.length-1],enumerable:!1,writable:!0}),o[o.length-1]}t.getQualifiedClassName=e}(KBEngine||(KBEngine={})),function(t){function e(){for(var t=[],e=0;en;)switch(a=t[n++],a>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=String.fromCharCode(a);break;case 12:case 13:i=t[n++],e+=String.fromCharCode((31&a)<<6|63&i);break;case 14:i=t[n++],o=t[n++],e+=String.fromCharCode((15&a)<<12|(63&i)<<6|(63&o)<<0)}return e}function n(t){for(var e=[],n=0;nr?e.push(r):2048>r?e.push(192|r>>6,128|63&r):55296>r||r>=57344?e.push(224|r>>12,128|r>>6&63,128|63&r):(n++,r=65536+((1023&r)<<10|1023&t.charCodeAt(n)),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|63&r))}return e}t.utf8ArrayToString=e,t.stringToUTF8Bytes=n}(KBEngine||(KBEngine={})),function(t){var e=function(){function t(t,e){this.classinst=t,this.callbackfn=e}return t}();t.EventInfo=e,__reflect(e.prototype,"KBEngine.EventInfo");var n=function(){function t(t,e,n){this.evtName=t,this.evtInfo=e,this.ars=n}return t}();t.FiredEvent=n,__reflect(n.prototype,"KBEngine.FiredEvent");var r=function(){function r(){this._events={},this._isPause=!1,this._firedEvents=[]}return r.prototype.register=function(n,r,a){var i=r[a];if(void 0==i)return void t.ERROR_MSG("export class Event::fire: not found strCallback("+r+")!"+a);var o=this._events[n];void 0==o&&(o=[],this._events[n]=o);var p=new e(r,i);o.push(p)},r.prototype.deregisterAll=function(t){for(var e in this._events)this.deregister(e,t)},r.prototype.deregister=function(t,e){var n=this._events[t];if(n)for(var r=n.length-1;r>=0;r--){var a=n[r];a.classinst==e&&n.splice(r,1)}},r.prototype.removeAllFiredEvent=function(t){this.removeFiredEvent("",t)},r.prototype.removeFiredEvent=function(t,e){for(var n=this._firedEvents,r=n.length-1;r>=0;r--){var a=n[r];""!=t&&a.evtName!=t||a.evtInfo.classinst!=e||n.splice(r,1)}},r.prototype.fire=function(e){for(var r=[],a=1;a0;){var e=t.shift(),n=e.evtInfo,r=e.ars;r.length<1?n.callbackfn.apply(n.classinst):n.callbackfn.apply(n.classinst,r)}},r.prototype.clear=function(){this._events={},this._firedEvents.splice(0,this._firedEvents.length)},r}();t.Events=r,__reflect(r.prototype,"KBEngine.Events"),t.Event=new r}(KBEngine||(KBEngine={})),function(t){var e=function(){function t(){this._unionData=new ArrayBuffer(4),this.fv=new Float32Array(this._unionData,0,1),this.uv=new Uint32Array(this._unionData,0,1),this.iv=new Int32Array(this._unionData,0,1)}return t}();t.PackFloatXType=e,__reflect(e.prototype,"KBEngine.PackFloatXType"),t._xPackData=new e,t._yPackData=new e,t._zPackData=new e;var n=function(){function e(t){this.rpos=0,this.wpos=0,t instanceof ArrayBuffer?this.buffer=t:this.buffer=new ArrayBuffer(t),this.rpos=0,this.wpos=0}return e.prototype.readInt8=function(){var t=new Int8Array(this.buffer,this.rpos,1);return this.rpos+=1,t[0]},e.prototype.readInt16=function(){var t=this.readUint16();return t>=32768&&(t-=65536),t},e.prototype.readInt32=function(){var t=this.readUint32();return t>=2147483648&&(t-=4294967296),t},e.prototype.readInt64=function(){var e=this.readUint32(),n=this.readUint32();return new t.INT64(e,n)},e.prototype.readUint8=function(){var t=new Uint8Array(this.buffer,this.rpos,1);return this.rpos+=1,t[0]},e.prototype.readUint16=function(){var t=new Uint8Array(this.buffer,this.rpos);return this.rpos+=2,((255&t[1])<<8)+(255&t[0])},e.prototype.readUint32=function(){var t=new Uint8Array(this.buffer,this.rpos);return this.rpos+=4,(t[3]<<24)+(t[2]<<16)+(t[1]<<8)+t[0]},e.prototype.readUint64=function(){var e=this.readUint32(),n=this.readUint32();return new t.UINT64(e,n)},e.prototype.readFloat=function(){var t;try{t=new Float32Array(this.buffer,this.rpos,1)}catch(e){t=new Float32Array(this.buffer.slice(this.rpos,this.rpos+4))}return this.rpos+=4,t[0]},e.prototype.readDouble=function(){var t;try{t=new Float64Array(this.buffer,this.rpos,1)}catch(e){t=new Float64Array(this.buffer.slice(this.rpos,this.rpos+8),0,1)}return this.rpos+=8,t[0]},e.prototype.readString=function(){for(var t=new Uint8Array(this.buffer,this.rpos),e=0,n="";;){if(0==t[e]){e++;break}if(n+=String.fromCharCode(t[e]),e++,this.rpos+e>=this.buffer.byteLength)throw new Error("export class MemoryStream::readString: rpos("+(this.rpos+e)+")>="+this.buffer.byteLength+" overflow!")}return this.rpos+=e,n},e.prototype.readBlob=function(){var t=this.readUint32(),e=new Uint8Array(this.buffer,this.rpos,t);return this.rpos+=t,e},e.prototype.readStream=function(){var t=new Uint8Array(this.buffer,this.rpos,this.buffer.byteLength-this.rpos);return this.rpos=this.buffer.byteLength,new e(t)},e.prototype.readPackXZ=function(){var e=t._xPackData,n=t._zPackData;e.fv[0]=0,n.fv[0]=0,e.uv[0]=1073741824,n.uv[0]=1073741824;var r=this.readUint8(),a=this.readUint8(),i=this.readUint8(),o=0;o|=r<<16,o|=a<<8,o|=i,e.uv[0]|=(8384512&o)<<3,n.uv[0]|=(2047&o)<<15,e.fv[0]-=2,n.fv[0]-=2,e.uv[0]|=(8388608&o)<<8,n.uv[0]|=(2048&o)<<20;var p=new Array(2);return p[0]=e.fv[0],p[1]=n.fv[0],p},e.prototype.readPackY=function(){var e=this.readUint16(),n=t._yPackData;return n.uv[0]=1073741824,n.uv[0]|=(32767&e)<<12,n.fv[0]-=2,n.uv[0]|=(32768&e)<<16,n.fv[0]},e.prototype.writeInt8=function(t){var e=new Int8Array(this.buffer,this.wpos,1);e[0]=t,this.wpos+=1},e.prototype.writeInt16=function(t){this.writeInt8(255&t),this.writeInt8(t>>8&255)},e.prototype.writeInt32=function(t){for(var e=0;4>e;e++)this.writeInt8(t>>8*e&255)},e.prototype.writeInt64=function(t){this.writeInt32(t.lo),this.writeInt32(t.hi)},e.prototype.writeUint8=function(t){var e=new Uint8Array(this.buffer,this.wpos,1);e[0]=t,this.wpos+=1},e.prototype.writeUint16=function(t){this.writeUint8(255&t),this.writeUint8(t>>8&255)},e.prototype.writeUint32=function(t){for(var e=0;4>e;e++)this.writeUint8(t>>8*e&255)},e.prototype.writeUint64=function(t){this.writeUint32(t.lo),this.writeUint32(t.hi)},e.prototype.writeFloat=function(t){try{var e=new Float32Array(this.buffer,this.wpos,1);e[0]=t}catch(n){var e=new Float32Array(1);e[0]=t;var r=new Uint8Array(this.buffer),a=new Uint8Array(e.buffer);r.set(a,this.wpos)}this.wpos+=4},e.prototype.writeDouble=function(t){try{var e=new Float64Array(this.buffer,this.wpos,1);e[0]=t}catch(n){var e=new Float64Array(1);e[0]=t;var r=new Uint8Array(this.buffer),a=new Uint8Array(e.buffer);r.set(a,this.wpos)}this.wpos+=8},e.prototype.writeBlob=function(e){var n=e.length;if(n+4>this.space())return void t.ERROR_MSG("memorystream::writeBlob: no free!");this.writeUint32(n);var r=new Uint8Array(this.buffer,this.wpos,n);if("string"==typeof e)for(var a=0;n>a;a++)r[a]=e.charCodeAt(a);else for(var a=0;n>a;a++)r[a]=e[a];this.wpos+=n},e.prototype.writeString=function(e){if(e.length>this.space())return void t.ERROR_MSG("memorystream::writeString: no free!");for(var n=new Uint8Array(this.buffer,this.wpos),r=0,a=0;athis.space()&&(this.buffer=ArrayBuffer.transfer(this.buffer,this.buffer.byteLength+2*n));var r=new Uint8Array(this.buffer,this.wpos,n);r.set(new Uint8Array(t.buffer,e,n),0),this.wpos+=n},e.prototype.readSkip=function(t){this.rpos+=t},e.prototype.space=function(){return this.buffer.byteLength-this.wpos},e.prototype.length=function(){return this.wpos-this.rpos},e.prototype.readEOF=function(){return this.buffer.byteLength-this.rpos<=0},e.prototype.done=function(){this.rpos=this.wpos},e.prototype.getbuffer=function(){return this.buffer.slice(this.rpos,this.wpos)},e.prototype.setbuffer=function(t){this.clear(),this.buffer=t},e.prototype.size=function(){return this.buffer.byteLength},e.prototype.clear=function(){this.rpos=this.wpos=0,this.buffer.byteLength>t.PACKET_MAX_SIZE&&(this.buffer=new ArrayBuffer(t.PACKET_MAX_SIZE))},e.prototype.reclaimObject=function(){this.clear(),void 0!=e._objects&&e._objects.push(this)},e}();t.MemoryStream=n,__reflect(n.prototype,"KBEngine.MemoryStream"),function(e){function n(){return e._objects.length>0?e._objects.pop():new e(t.PACKET_MAX_SIZE_TCP)}e._objects=[],e.createObject=n}(n=t.MemoryStream||(t.MemoryStream={}))}(KBEngine||(KBEngine={})),function(t){function e(){t.datatype2id={},t.datatype2id.STRING=1,t.datatype2id["STD::STRING"]=1,t.datatype2id.UINT8=2,t.datatype2id.BOOL=2,t.datatype2id.DATATYPE=2,t.datatype2id.CHAR=2,t.datatype2id.DETAIL_TYPE=2,t.datatype2id.ENTITYCALL_CALL_TYPE=2,t.datatype2id.UINT16=3,t.datatype2id["UNSIGNED SHORT"]=3,t.datatype2id.SERVER_ERROR_CODE=3,t.datatype2id.ENTITY_TYPE=3,t.datatype2id.ENTITY_PROPERTY_UID=3,t.datatype2id.ENTITY_METHOD_UID=3,t.datatype2id.ENTITY_SCRIPT_UID=3,t.datatype2id.DATATYPE_UID=3,t.datatype2id.UINT32=4,t.datatype2id.UINT=4,t.datatype2id["UNSIGNED INT"]=4,t.datatype2id.ARRAYSIZE=4,t.datatype2id.SPACE_ID=4,t.datatype2id.GAME_TIME=4,t.datatype2id.TIMER_ID=4,t.datatype2id.UINT64=5,t.datatype2id.DBID=5,t.datatype2id.COMPONENT_ID=5,t.datatype2id.INT8=6,t.datatype2id.COMPONENT_ORDER=6,t.datatype2id.INT16=7,t.datatype2id.SHORT=7,t.datatype2id.INT32=8,t.datatype2id.INT=8,t.datatype2id.ENTITY_ID=8,t.datatype2id.CALLBACK_ID=8,t.datatype2id.COMPONENT_TYPE=8,t.datatype2id.INT64=9,t.datatype2id.PYTHON=10,t.datatype2id.PY_DICT=10,t.datatype2id.PY_TUPLE=10,t.datatype2id.PY_LIST=10,t.datatype2id.ENTITYCALL=10,t.datatype2id.BLOB=11,t.datatype2id.UNICODE=12,t.datatype2id.FLOAT=13,t.datatype2id.DOUBLE=14,t.datatype2id.VECTOR2=15,t.datatype2id.VECTOR3=16,t.datatype2id.VECTOR4=17,t.datatype2id.FIXED_DICT=18,t.datatype2id.ARRAY=19,t.datatype2id.ENTITYCALL=20}function n(e,n){switch(n){case t.datatype2id.UINT8:return e.writeUint8;case t.datatype2id.UINT16:return e.writeUint16;case t.datatype2id.UINT32:return e.writeUint32;case t.datatype2id.UINT64:return e.writeUint64;case t.datatype2id.INT8:return e.writeInt8;case t.datatype2id.INT16:return e.writeInt16;case t.datatype2id.INT32:return e.writeInt32;case t.datatype2id.INT64:return e.writeInt64;case t.datatype2id.FLOAT:return e.writeFloat;case t.datatype2id.DOUBLE:return e.writeDouble;case t.datatype2id.STRING:return e.writeString;case t.datatype2id.FIXED_DICT:return e.writeStream;case t.datatype2id.ARRAY:return e.writeStream;default:return e.writeStream}}function r(e){switch(e){case t.datatype2id.UINT8:return t.reader.readUint8;case t.datatype2id.UINT16:return t.reader.readUint16;case t.datatype2id.UINT32:return t.reader.readUint32;case t.datatype2id.UINT64:return t.reader.readUint64;case t.datatype2id.INT8:return t.reader.readInt8;case t.datatype2id.INT16:return t.reader.readInt16;case t.datatype2id.INT32:return t.reader.readInt32;case t.datatype2id.INT64:return t.reader.readInt64;case t.datatype2id.FLOAT:return t.reader.readFloat;case t.datatype2id.DOUBLE:return t.reader.readDouble;case t.datatype2id.STRING:return t.reader.readString;case t.datatype2id.FIXED_DICT:return t.reader.readStream;case t.datatype2id.ARRAY:return t.reader.readStream;default:return t.reader.readStream}}var a=function(){function e(){this.memorystreams=new Array,this.numMessage=0,this.messageLengthBuffer=null,this.msgtype=null,this.messageLength=0,this.stream=t.MemoryStream.createObject()}return e.createObject=function(){return e._objects.length>0?e._objects.pop():new e},e.prototype.newMessage=function(e){this.fini(!1),this.msgtype=e,this.numMessage+=1,-1==this.msgtype.length&&(this.messageLengthBuffer=new Uint8Array(this.stream.buffer,this.stream.wpos+t.MESSAGE_ID_LENGTH,2)),this.writeUint16(e.id),this.messageLengthBuffer&&(this.writeUint16(0),this.messageLengthBuffer[0]=0,this.messageLengthBuffer[1]=0,this.messageLength=0)},e.prototype.writeMsgLength=function(t){this.messageLengthBuffer&&(this.messageLengthBuffer[0]=255&t,this.messageLengthBuffer[1]=t>>8&255)},e.prototype.fini=function(e){this.numMessage>0&&(this.writeMsgLength(this.messageLength),this.stream&&this.memorystreams.push(this.stream),this.stream=t.MemoryStream.createObject()),e&&(this.messageLengthBuffer=null,this.numMessage=0,this.msgtype=null)},e.prototype.send=function(t){this.fini(!0);for(var e=0;ethis.stream.space()&&(this.memorystreams.push(this.stream),this.stream=t.MemoryStream.createObject()),this.messageLength+=e},e.prototype.writeInt8=function(t){this.checkStream(1),this.stream.writeInt8(t)},e.prototype.writeInt16=function(t){this.checkStream(2),this.stream.writeInt16(t)},e.prototype.writeInt32=function(t){this.checkStream(4),this.stream.writeInt32(t)},e.prototype.writeInt64=function(t){this.checkStream(8),this.stream.writeInt64(t)},e.prototype.writeUint8=function(t){this.checkStream(1),this.stream.writeUint8(t)},e.prototype.writeUint16=function(t){this.checkStream(2),this.stream.writeUint16(t)},e.prototype.writeUint32=function(t){this.checkStream(4),this.stream.writeUint32(t)},e.prototype.writeUint64=function(t){this.checkStream(8),this.stream.writeUint64(t)},e.prototype.writeFloat=function(t){this.checkStream(4),this.stream.writeFloat(t)},e.prototype.writeDouble=function(t){this.checkStream(8),this.stream.writeDouble(t)},e.prototype.writeString=function(t){this.checkStream(t.length+1),this.stream.writeString(t)},e.prototype.writeBlob=function(t){this.checkStream(t.length+4),this.stream.writeBlob(t)},e.prototype.clear=function(){for(var e=0;en){var r=e;e=n,n=r}return e>t?e:n>t?t:n}function n(t,e){return t*(Math.PI/(e?254:128))}function r(t,n){var r=0;return r=n?e(Math.floor(254*t/Math.PI+.5),-128,127):Math.floor(128*t/Math.PI+.5)}var a=function(){function t(t,e){this.x=t,this.y=e}return t.prototype.distance=function(t){var e=t.x-this.x,n=t.y-this.y;return Math.sqrt(e*e+n*n)},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.mul=function(t){return this.x*=t,this.y*=t,this},t.prototype.div=function(t){return this.x/=t,this.y/=t,this},t.prototype.neg=function(){return this.x=-this.x,this.y=-this.y,this},t}();t.Vector2=a,__reflect(a.prototype,"KBEngine.Vector2");var i=function(){function t(t,e,n){this.x=t,this.y=e,this.z=n,this.x=t,this.y=e,this.z=n}return t.prototype.distance=function(t){var e=t.x-this.x,n=t.y-this.y,r=t.z-this.z;return Math.sqrt(e*e+n*n+r*r)},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},t.prototype.mul=function(t){return this.x*=t,this.y*=t,this.z*=t,this},t.prototype.div=function(t){return this.x/=t,this.y/=t,this.z/=t,this},t.prototype.neg=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},t}();t.Vector3=i,__reflect(i.prototype,"KBEngine.Vector3");var o=function(){function t(t,e,n,r){this.x=t,this.y=e,this.z=n,this.w=r,this.x=t,this.y=e,this.z=n,this.w=r}return t.prototype.distance=function(t){var e=t.x-this.x,n=t.y-this.y,r=t.z-this.z,a=t.w-this.w;return Math.sqrt(e*e+n*n+r*r+a*a)},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this},t.prototype.mul=function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},t.prototype.div=function(t){return this.x/=t,this.y/=t,this.z/=t,this.w/=t,this},t.prototype.neg=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},t}();t.Vector4=o,__reflect(o.prototype,"KBEngine.Vector4"),t.clampf=e,t.int82angle=n,t.angle2int8=r}(KBEngine||(KBEngine={})),function(t){function e(){return function(e){var n=t.getQualifiedClassName(e);t.Entities[n]=e}}t.Entities={};var n=function(){function e(){this.__comps__={},this.id=0,this.className="",this.position=new t.Vector3(0,0,0),this.direction=new t.Vector3(0,0,0),this.velocity=0,this.cell=null,this.base=null,this.inWorld=!1,this.inited=!1,this.isControlled=!1,this.entityLastLocalPos=new t.Vector3(0,0,0),this.entityLastLocalDir=new t.Vector3(0,0,0),this.isOnGround=!1;for(var e in this.__comps__)this[e]=new this.__comps__[e]}return e.prototype.__init__=function(){},e.prototype.attachComponents=function(){for(var t in this.__comps__)this[t].onAttached(this)},e.prototype.getComponents=function(e,n){void 0===n&&(n=!1);var r=[];for(var a in this.__comps__)if(t.getQualifiedClassName(this.__comps__[a])===e){if(!n)return this[a];r.push(this[a])}return r},e.prototype.detachComponents=function(){for(var t in this.__comps__)this[t].onDetached(this)},e.prototype.callPropertysSetMethods=function(){var e=t.moduledefs[this.className];for(var n in e.propertys){var r=e.propertys[n];r[0];n=r[2];var a=r[5],i=r[6],o=this[n];if(null!=a)if(32==i||64==i)this.inited&&!this.inWorld&&a.call(this,o);else if(this.inWorld){if((8==i||16==i)&&!this.isPlayer())continue;a.call(this,o)}}},e.prototype.onDestroy=function(){this.detachComponents()},e.prototype.onControlled=function(t){},e.prototype.isPlayer=function(){return this.id==t.app.entity_id},e.prototype.baseCall=function(e){for(var n=[],r=1;r0;){var a=0,i=0;if(n.usePropertyDescrAlias?(i=e.readUint8(),a=e.readUint8()):(i=e.readUint16(),a=e.readUint16()),0===i){var o=r[a],p=o[5],s=o[6];if(o[4]){var l=o[4].createFromStream(e),c=this[o[2]];t.INFO_MSG("KBEngineApp::Client_onUpdatePropertys: "+this.className+"(id="+this.id+" "+o[2]+", val="+l+")!"),this[o[2]]=l,null!=p&&(32==s||64==s?this.inited&&p.call(this,c):this.inWorld&&p.call(this,c))}else this[o[2]]&&"function"==typeof this[o[2]].createFromStream&&this[o[2]].createFromStream(e,o[0])}else{var d=r[i];this[d[2]]&&this[d[2]].onUpdatePropertys(a,e,-1)}}},e.prototype.set_direction=function(e){t.DEBUG_MSG(this.className+"::set_direction: "+this.direction),t.Event.fire("set_direction",this)},e.prototype.onRemoteMethodCall=function(e){var n=t.moduledefs[this.className],r=n.usePropertyDescrAlias?e.readUint8():e.readUint16(),a=n.useMethodDescrAlias?e.readUint8():e.readUint16();if(0!==r){var i=this[n.propertys[r][2]];return void(i&&i.onRemoteMethodCall(a,e))}for(var o=t.moduledefs[this.className].methods[a],p=[],s=o[3],l=0;l0&&0!=r--;){var p=e,s=0;0===p&&(i.usePropertyDescrAlias?(s=n.readUint8(),p=n.readUint8()):(s=n.readUint16(),p=n.readUint16()));var l=o[p],c=l[5],d=l[6],u=l[4].createFromStream(n),y=this[l[2]];t.INFO_MSG("KBEngineApp::Client_onUpdatePropertys: "+a+"(id="+this.id+" "+l[2]+", val="+u+")!"),this[l[2]]=u,null!=c&&(32==d||64==d?this.owner.inited&&c.call(this,y):this.owner.inWorld&&c.call(this,y))}},e.prototype.onRemoteMethodCall=function(e,n){for(var r=t.moduledefs[this.className].methods[e],a=[],i=r[3],o=0;o0&&this.onUpdatePropertys(0,e,r),this.className=t.getQualifiedClassName(this),this.base=new t.EntityComponentCall(this.entityComponentPropertyID,this.ownerID,this.className),this.base.type=t.ENTITYCALL_TYPE_BASE,this.cell=new t.EntityComponentCall(this.entityComponentPropertyID,this.ownerID,this.className),this.cell.type=t.ENTITYCALL_TYPE_CELL},e}();t.EntityComponent=n,__reflect(n.prototype,"KBEngine.EntityComponent"),t.registerComponent=e}(KBEngine||(KBEngine={})),function(t){t.ENTITYCALL_TYPE_CELL=0,t.ENTITYCALL_TYPE_BASE=1;var e=function(){function e(){this.id=0,this.className="",this.type=t.ENTITYCALL_TYPE_CELL,this.networkInterface=t.app,this.bundle=null}return e.prototype.isBase=function(){return this.type==t.ENTITYCALL_TYPE_BASE},e.prototype.isCell=function(){return this.type==t.ENTITYCALL_TYPE_CELL},e.prototype.newCall=function(){return null==this.bundle&&(this.bundle=t.Bundle.createObject()),this.type==t.ENTITYCALL_TYPE_CELL?this.bundle.newMessage(t.messages.Baseapp_onRemoteCallCellMethodFromClient):this.bundle.newMessage(t.messages.Entity_onRemoteMethodCall),this.bundle.writeInt32(this.id),this.bundle},e.prototype.sendCall=function(t){void 0==t&&(t=this.bundle),t.send(this.networkInterface),this.bundle==t&&(this.bundle=null)},e}();t.EntityCall=e,__reflect(e.prototype,"KBEngine.EntityCall");var n=function(t){function e(e,n,r){var a=t.call(this)||this;return a.entityComponentPropertyID=0,a.entityComponentPropertyID=e,a.id=n,a.className=r,a}return __extends(e,t),e}(e);t.EntityComponentCall=n,__reflect(n.prototype,"KBEngine.EntityComponentCall");var r=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readUint8.call(e)},e.prototype.addToStream=function(t,e){t.writeUint8(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:0>t||t>255?!1:!0},e}();t.DATATYPE_UINT8=r,__reflect(r.prototype,"KBEngine.DATATYPE_UINT8");var a=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readUint16.call(e)},e.prototype.addToStream=function(t,e){t.writeUint16(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:0>t||t>65535?!1:!0},e}();t.DATATYPE_UINT16=a,__reflect(a.prototype,"KBEngine.DATATYPE_UINT16");var i=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readUint32.call(e) 2 | },e.prototype.addToStream=function(t,e){t.writeUint32(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:0>t||t>4294967295?!1:!0},e}();t.DATATYPE_UINT32=i,__reflect(i.prototype,"KBEngine.DATATYPE_UINT32");var o=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readUint64.call(e)},e.prototype.addToStream=function(t,e){t.writeUint64(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(e){return e instanceof t.UINT64},e}();t.DATATYPE_UINT64=o,__reflect(o.prototype,"KBEngine.DATATYPE_UINT64");var p=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readInt8.call(e)},e.prototype.addToStream=function(t,e){t.writeInt8(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:-128>t||t>127?!1:!0},e}();t.DATATYPE_INT8=p,__reflect(p.prototype,"KBEngine.DATATYPE_INT8");var s=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readInt16.call(e)},e.prototype.addToStream=function(t,e){t.writeInt16(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:-32768>t||t>32767?!1:!0},e}();t.DATATYPE_INT16=s,__reflect(s.prototype,"KBEngine.DATATYPE_INT16");var l=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readInt32.call(e)},e.prototype.addToStream=function(t,e){t.writeInt32(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(t){return"number"!=typeof t?!1:-2147483648>t||t>2147483647?!1:!0},e}();t.DATATYPE_INT32=l,__reflect(l.prototype,"KBEngine.DATATYPE_INT32");var c=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readInt64.call(e)},e.prototype.addToStream=function(t,e){t.writeInt64(e)},e.prototype.parseDefaultValStr=function(t){return parseInt(t)},e.prototype.isSameType=function(e){return e instanceof t.INT64},e}();t.DATATYPE_INT64=c,__reflect(c.prototype,"KBEngine.DATATYPE_INT64");var d=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readFloat.call(e)},e.prototype.addToStream=function(t,e){t.writeFloat(e)},e.prototype.parseDefaultValStr=function(t){return parseFloat(t)},e.prototype.isSameType=function(t){return"number"==typeof t},e}();t.DATATYPE_FLOAT=d,__reflect(d.prototype,"KBEngine.DATATYPE_FLOAT");var u=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return __extends(n,e),n.prototype.createFromStream=function(e){return t.reader.readDouble.call(e)},n.prototype.addToStream=function(t,e){t.writeDouble(e)},n}(d);t.DATATYPE_DOUBLE=u,__reflect(u.prototype,"KBEngine.DATATYPE_DOUBLE");var y=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.reader.readString.call(e)},e.prototype.addToStream=function(t,e){t.writeString(e)},e.prototype.parseDefaultValStr=function(t){return"string"==typeof t?t:""},e.prototype.isSameType=function(t){return"string"==typeof t},e}();t.DATATYPE_STRING=y,__reflect(y.prototype,"KBEngine.DATATYPE_STRING");var _=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){if(t.CLIENT_NO_FLOAT){var n=t.reader.readInt32.call(e),r=t.reader.readInt32.call(e);return new t.Vector2(n,r)}var n=t.reader.readFloat.call(e),r=t.reader.readFloat.call(e);return new t.Vector2(n,r)},e.prototype.addToStream=function(e,n){t.CLIENT_NO_FLOAT?(e.writeInt32(n.x),e.writeInt32(n.y)):(e.writeFloat(n.x),e.writeFloat(n.y))},e.prototype.parseDefaultValStr=function(e){return new t.Vector2(0,0)},e.prototype.isSameType=function(e){return e instanceof t.Vector2?!0:!1},e}();t.DATATYPE_VECTOR2=_,__reflect(_.prototype,"KBEngine.DATATYPE_VECTOR2");var f=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.CLIENT_NO_FLOAT?new t.Vector3(t.reader.readInt32.call(e),t.reader.readInt32.call(e),t.reader.readInt32.call(e)):new t.Vector3(t.reader.readFloat.call(e),t.reader.readFloat.call(e),t.reader.readFloat.call(e))},e.prototype.addToStream=function(e,n){t.CLIENT_NO_FLOAT?(e.writeInt32(n.x),e.writeInt32(n.y),e.writeInt32(n.z)):(e.writeFloat(n.x),e.writeFloat(n.y),e.writeFloat(n.z))},e.prototype.parseDefaultValStr=function(e){return new t.Vector3(0,0,0)},e.prototype.isSameType=function(e){return e instanceof t.Vector3?!0:!1},e}();t.DATATYPE_VECTOR3=f,__reflect(f.prototype,"KBEngine.DATATYPE_VECTOR3");var h=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.CLIENT_NO_FLOAT?new t.Vector4(t.reader.readInt32.call(e),t.reader.readInt32.call(e),t.reader.readInt32.call(e),t.reader.readInt32.call(e)):new t.Vector4(t.reader.readFloat.call(e),t.reader.readFloat.call(e),t.reader.readFloat.call(e),t.reader.readFloat.call(e))},e.prototype.addToStream=function(e,n){t.CLIENT_NO_FLOAT?(e.writeInt32(n.x),e.writeInt32(n.y),e.writeInt32(n.z),e.writeInt32(n.w)):(e.writeFloat(n.x),e.writeFloat(n.y),e.writeFloat(n.z),e.writeFloat(n.w))},e.prototype.parseDefaultValStr=function(e){return new t.Vector4(0,0,0,0)},e.prototype.isSameType=function(e){return e instanceof t.Vector4?!0:!1},e}();t.DATATYPE_VECTOR4=h,__reflect(h.prototype,"KBEngine.DATATYPE_VECTOR4");var E=function(){function t(){}return t.prototype.bind=function(){},t.prototype.createFromStream=function(t){return t.readBlob()},t.prototype.addToStream=function(t,e){t.writeBlob(e)},t.prototype.parseDefaultValStr=function(t){return new Uint8Array(0)},t.prototype.isSameType=function(t){return!1},t}();t.DATATYPE_PYTHON=E,__reflect(E.prototype,"KBEngine.DATATYPE_PYTHON");var g=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){return t.utf8ArrayToString(t.reader.readBlob.call(e))},e.prototype.addToStream=function(e,n){e.writeBlob(t.stringToUTF8Bytes(n))},e.prototype.parseDefaultValStr=function(t){return"string"==typeof t?t:""},e.prototype.isSameType=function(t){return"string"==typeof t},e}();t.DATATYPE_UNICODE=g,__reflect(g.prototype,"KBEngine.DATATYPE_UNICODE");var m=function(){function t(){}return t.prototype.bind=function(){},t.prototype.createFromStream=function(t){},t.prototype.addToStream=function(t,e){},t.prototype.parseDefaultValStr=function(t){return new Uint8Array(0)},t.prototype.isSameType=function(t){return!1},t}();t.DATATYPE_ENTITYCALL=m,__reflect(m.prototype,"KBEngine.DATATYPE_ENTITYCALL");var v=function(){function e(){}return e.prototype.bind=function(){},e.prototype.createFromStream=function(e){var n=t.reader.readUint32.call(e),r=new Uint8Array(e.buffer,e.rpos,n);return e.rpos+=n,r},e.prototype.addToStream=function(t,e){t.writeBlob(e)},e.prototype.parseDefaultValStr=function(t){return new Uint8Array(0)},e.prototype.isSameType=function(t){return!0},e}();t.DATATYPE_BLOB=v,__reflect(v.prototype,"KBEngine.DATATYPE_BLOB");var T=function(){function t(){this.type=null}return t.prototype.bind=function(){"number"==typeof this.type&&(this.type=A[this.type])},t.prototype.createFromStream=function(t){for(var e=t.readUint32(),n=[];e>0;)e--,n.push(this.type.createFromStream(t));return n},t.prototype.addToStream=function(t,e){t.writeUint32(e.length);for(var n=0;n0||null!=t.app.fragmentStream;)if(t.app.fragmentDatasFlag==t.FragmentDataTypes.FRAGMENT_DATA_UNKNOW){if(0==t.app.currMsgID){if(t.MESSAGE_ID_LENGTH>1&&n.length()=t.app.currMsgLen)r.handleMessage(t.app.fragmentStream),t.app.fragmentStream=null;else{if(n.length()0){t.app.writeFragmentMessage(t.FragmentDataTypes.FRAGMENT_DATA_MESSAGE_BODY,n,t.app.currMsgLen);break}var i=n.wpos,o=n.rpos+a;n.wpos=o,r.handleMessage(n),n.wpos=i,n.rpos=o}t.app.currMsgID=0,t.app.currMsgLen=0,t.app.fragmentStream=null}else if(t.app.mergeFragmentMessage(n))break},e.prototype.writeFragmentMessage=function(e,n,r){var a=n.length();t.app.fragmentDatasRemain=r-a,t.app.fragmentDatasFlag=e,t.app.fragmentStream=n},e.prototype.mergeFragmentMessage=function(e){var n=e.length();if(0==n)return 0;var r=t.app.fragmentStream;if(n>=t.app.fragmentDatasRemain){switch(r.append(e,e.rpos,t.app.fragmentDatasRemain),t.app.fragmentDatasFlag){case t.FragmentDataTypes.FRAGMENT_DATA_MESSAGE_ID:t.app.currMsgID=r.readUint16(),t.app.fragmentStream=null;break;case t.FragmentDataTypes.FRAGMENT_DATA_MESSAGE_LENGTH:t.app.currMsgLen=r.readUint16(),t.app.fragmentStream=null;break;case t.FragmentDataTypes.FRAGMENT_DATA_MESSAGE_LENGTH1:t.app.currMsgLen=r.readUint32(),t.app.fragmentStream=null;break;case t.FragmentDataTypes.FRAGMENT_DATA_MESSAGE_BODY:}return e.rpos+=t.app.fragmentDatasRemain,t.app.fragmentDatasFlag=t.FragmentDataTypes.FRAGMENT_DATA_UNKNOW,t.app.fragmentDatasRemain=0,!1}return r.append(e,e.rpos,n),t.app.fragmentDatasRemain-=n,e.done(),!0},e.prototype.onclose=function(){t.INFO_MSG("connect close:"+t.app.currserver),t.app.currconnect==t.app.currstate&&(t.app.resetSocket(),t.Event.fire(t.EventTypes.onDisconnected))},e.prototype.send=function(e){t.app.socket.send(e)},e.prototype.close=function(){t.INFO_MSG("KBEngine::close()"),t.app.socket.close(),t.app.reset()},e.prototype.update=function(){if(null!=t.app.socket){var e=new Date;if((e.getTime()-t.app.lastTickTime)/1e3>t.app.args.serverHeartbeatTick/2){if(t.app.lastTickCBTime0;){n-=1;var r=new a;r.id=e.readUint16(),r.name=t.utf8ArrayToString(e.readBlob()),r.descr=t.utf8ArrayToString(e.readBlob()),t.app.serverErrs[r.id]=r,t.INFO_MSG("Client_onImportServerErrorsDescr: id="+r.id+", name="+r.name+", descr="+r.descr)}},e.prototype.Client_onImportClientSdk=function(e){var n=e.readInt32(),r=e.readString(),a=e.readInt32(),i=e.readBlob();t.Event.fire("onImportClientSDK",n,r,a,i)},e.prototype.onOpenLoginapp_login=function(){if(t.INFO_MSG("KBEngineApp::onOpenLoginapp_login: successfully!"),t.Event.fire(t.EventTypes.onConnectionState,!0),t.app.currserver="loginapp",t.app.currstate="login",t.app.loginappMessageImported)t.app.onImportClientMessagesCompleted();else{var e=t.Bundle.createObject();e.newMessage(t.messages.Loginapp_importClientMessages),e.send(t.app),t.app.socket.onmessage=t.app.Client_onImportClientMessages,t.INFO_MSG("KBEngineApp::onOpenLoginapp_login: start importClientMessages ..."),t.Event.fire("Loginapp_importClientMessages")}},e.prototype.onOpenLoginapp_createAccount=function(){if(t.Event.fire("onConnectionState",!0),t.INFO_MSG("KBEngineApp::onOpenLoginapp_createAccount: successfully!"),t.app.currserver="loginapp",t.app.currstate="createAccount",t.app.loginappMessageImported)t.app.onImportClientMessagesCompleted();else{var e=t.Bundle.createObject();e.newMessage(t.messages.Loginapp_importClientMessages),e.send(t.app),t.app.socket.onmessage=t.app.Client_onImportClientMessages,t.INFO_MSG("KBEngineApp::onOpenLoginapp_createAccount: start importClientMessages ..."),t.Event.fire("Loginapp_importClientMessages")}},e.prototype.onImportClientMessagesCompleted=function(){if(t.INFO_MSG("KBEngineApp::onImportClientMessagesCompleted: successfully!"),t.app.socket.onmessage=t.app.onmessage,t.app.hello(),"loginapp"==t.app.currserver){if(!t.app.serverErrorsDescrImported){t.INFO_MSG("KBEngine::onImportClientMessagesCompleted(): send importServerErrorsDescr!"),t.app.serverErrorsDescrImported=!0;var e=t.Bundle.createObject();e.newMessage(t.messages.Loginapp_importServerErrorsDescr),e.send(t.app)}"login"==t.app.currstate?t.app.login_loginapp(!1):"resetpassword"==t.app.currstate?t.app.resetpassword_loginapp(!1):t.app.createAccount_loginapp(!1),t.app.loginappMessageImported=!0}else if(t.app.baseappMessageImported=!0,t.app.entitydefImported)t.app.onImportEntityDefCompleted();else{t.INFO_MSG("KBEngineApp::onImportClientMessagesCompleted: start importEntityDef ...");var e=t.Bundle.createObject();e.newMessage(t.messages.Baseapp_importClientEntityDef),e.send(t.app),t.Event.fire("Baseapp_importClientEntityDef")}},e.prototype.createDataTypeFromStreams=function(e,n){var r=e.readUint16();for(t.INFO_MSG("KBEngineApp::createDataTypeFromStreams: importAlias(size="+r+")!");r>0;)r--,t.app.createDataTypeFromStream(e,n);for(var a in t.datatypes)void 0!=t.datatypes[a]&&t.datatypes[a].bind()},e.prototype.createDataTypeFromStream=function(e,n){var r,a=e.readUint16(),i=e.readString(),o=e.readString();if(0==o.length&&(r="Null_"+a),n&&t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: importAlias("+i+":"+o+")!"),"FIXED_DICT"==i){var p=new t.DATATYPE_FIXED_DICT,s=e.readUint8();for(p.implementedBy=e.readString();s>0;){s--;var l=e.readString(),c=e.readUint16();p.dicttype[l]=c}t.datatypes[o]=p}else if("ARRAY"==i){var d=e.readUint16(),p=new t.DATATYPE_ARRAY;p.type=d,t.datatypes[o]=p}else t.datatypes[o]=t.datatypes[i];t.datatypes[a]=t.datatypes[o],t.datatype2id[o]=a},e.prototype.Client_onImportClientEntityDef=function(e){for(t.app.createDataTypeFromStreams(e,!0);e.length()>0;){var n=e.readString(),r=e.readUint16(),a=e.readUint16(),i=e.readUint16(),o=e.readUint16(),p=e.readUint16();t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: import("+n+"), propertys("+a+"), clientMethods("+i+"), baseMethods("+o+"), cellMethods("+p+")!"),t.moduledefs[n]={};var s=t.moduledefs[n];s.name=n,s.propertys={},s.methods={},s.base_methods={},s.cell_methods={},t.moduledefs[r]=s;for(var l=s.propertys,c=s.methods,d=s.base_methods,u=s.cell_methods,y=t.Entities[n];a>0;){a--;var _=e.readUint16(),f=e.readUint32(),h=e.readInt16(),E=e.readString(),g=e.readString(),m=t.datatypes[e.readUint16()],v=null;void 0!=y&&(v=y.prototype["set_"+E],void 0==v&&(v=null));var T=[_,h,E,g,m,v,f];l[E]=T,-1!=h?(l[h]=T,s.usePropertyDescrAlias=!0):(l[_]=T,s.usePropertyDescrAlias=!1),t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: add("+n+"), property("+E+"/"+_+").")}for(;i>0;){i--;for(var S=e.readUint16(),h=e.readInt16(),A=e.readString(),I=e.readUint8(),D=[];I>0;)I--,D.push(t.datatypes[e.readUint16()]);var T=[S,h,A,D];c[A]=T,-1!=h?(c[h]=T,s.useMethodDescrAlias=!0):(c[S]=T,s.useMethodDescrAlias=!1),t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: add("+n+"), method("+A+").")}for(;o>0;){o--;for(var S=e.readUint16(),h=e.readInt16(),M=e.readString(),I=e.readUint8(),D=[];I>0;)I--,D.push(t.datatypes[e.readUint16()]);d[M]=[S,h,M,D],t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: add("+n+"), base_method("+M+").")}for(;p>0;){p--;for(var S=e.readUint16(),h=e.readInt16(),w=e.readString(),I=e.readUint8(),D=[];I>0;)I--,D.push(t.datatypes[e.readUint16()]);u[w]=[S,h,w,D],t.INFO_MSG("KBEngineApp::Client_onImportClientEntityDef: add("+n+"), cell_method("+w+").")}var F=void 0;try{F=t.Entities[n]}catch(C){t.ERROR_MSG("KBEngineApp::Client_onImportClientEntityDef: module("+n+") not found!"),F=void 0}for(var B in s.propertys){var L=s.propertys[B],_=L[0],h=L[1],R=L[2],g=L[3],m=L[4];void 0!=F&&m&&(F.prototype[R]=m.parseDefaultValStr(g))}for(var b in s.methods){var L=s.methods[b],_=L[0],h=L[1],R=L[2],D=L[3];void 0!=F&&void 0==F.prototype[R]&&t.WARNING_MSG(n+":: method("+R+") no implement!")}}t.app.onImportEntityDefCompleted()},e.prototype.Client_onVersionNotMatch=function(e){t.app.serverVersion=e.readString(),t.ERROR_MSG("Client_onVersionNotMatch: verInfo="+t.app.clientVersion+" not match(server: "+t.app.serverVersion+")"),t.Event.fire(t.EventTypes.onVersionNotMatch,t.app.clientVersion,t.app.serverVersion)},e.prototype.Client_onScriptVersionNotMatch=function(e){t.app.serverScriptVersion=e.readString(),t.ERROR_MSG("Client_onScriptVersionNotMatch: verInfo="+t.app.clientScriptVersion+" not match(server: "+t.app.serverScriptVersion+")"),t.Event.fire(t.EventTypes.onScriptVersionNotMatch,t.app.clientScriptVersion,t.app.serverScriptVersion)},e.prototype.onImportEntityDefCompleted=function(){t.INFO_MSG("KBEngineApp::onImportEntityDefCompleted: successfully!"),t.app.entitydefImported=!0,t.app.login_baseapp(!1)},e.prototype.importClientMessages=function(e){for(;t.app.currMsgCount>0;){t.app.currMsgCount--;for(var n=e.readUint16(),r=e.readInt16(),a=e.readString(),i=e.readInt8(),o=e.readUint8(),p=new Array(o),s=0;o>s;s++)p[s]=e.readUint8();var l=null,c=a.indexOf("Client_")>=0;c&&(l=t.app[a],null==l||void 0==l?(t.WARNING_MSG("KBEngineApp::onImportClientMessages["+t.app.currserver+"]: interface("+a+"/"+n+") no implement!"),l=null):t.INFO_MSG("KBEngineApp::onImportClientMessages: import("+a+") successfully!")),a.length>0?(t.messages[a]=new t.Message(n,a,r,i,p,l),c?t.clientmessages[n]=t.messages[a]:t.messages[t.app.currserver][n]=t.messages[a]):t.messages[t.app.currserver][n]=new t.Message(n,a,r,i,p,l)}t.app.onImportClientMessagesCompleted(),t.app.currMsgID=0,t.app.currMsgLen=0,t.app.currMsgCount=0,t.app.fragmentStream=null},e.prototype.Client_onImportClientMessages=function(e){var n=new t.MemoryStream(e.data);n.wpos=e.data.byteLength,0==t.app.currMsgID&&(t.app.currMsgID=n.readUint16()),t.app.currMsgID==t.messages.onImportClientMessages.id?(0==t.app.currMsgLen&&(t.app.currMsgLen=n.readUint16(),t.app.currMsgCount=n.readUint16()),n.length()+2=t.app.currMsgLen&&t.app.importClientMessages(t.app.fragmentStream)):t.app.importClientMessages(n)):t.ERROR_MSG("KBEngineApp::onmessage: not found msg("+t.app.currMsgID+")!")},e.prototype.createAccount=function(e,n,r){t.app.reset(),t.app.username=e,t.app.password=n,t.app.clientdatas=r,t.app.createAccount_loginapp(!0)},e.prototype.createAccount_loginapp=function(e){if(e)t.INFO_MSG("KBEngineApp::createAccount_loginapp: start connect to ws://"+t.app.args.ip+":"+t.app.args.port+"!"),t.app.currconnect="loginapp",t.app.connect(t.app.args.ip,t.app.args.port),t.app.socket.onopen=t.app.onOpenLoginapp_createAccount;else{var n=t.Bundle.createObject();n.newMessage(t.messages.Loginapp_reqCreateAccount),n.writeString(t.app.username),n.writeString(t.app.password),n.writeBlob(t.app.clientdatas),n.send(t.app)}},e.prototype.bindAccountEmail=function(e){var n=t.Bundle.createObject();n.newMessage(t.messages.Baseapp_reqAccountBindEmail),n.writeInt32(t.app.entity_id),n.writeString(t.app.password),n.writeString(e),n.send(t.app)},e.prototype.newPassword=function(e,n){var r=t.Bundle.createObject();r.newMessage(t.messages.Baseapp_reqAccountNewPassword),r.writeInt32(t.app.entity_id),r.writeString(e),r.writeString(n),r.send(t.app)},e.prototype.logout=function(){var e=new t.Bundle;e.newMessage(t.messages.Baseapp_logoutBaseapp),e.writeUint64(t.app.entity_uuid),e.writeInt32(t.app.entity_id),e.send(t.app)},e.prototype.login=function(e,n,r){t.app.reset(),t.app.username=e,t.app.password=n,t.app.clientdatas=r,t.app.login_loginapp(!0)},e.prototype.login_loginapp=function(e){if(e)t.INFO_MSG("KBEngineApp::login_loginapp: start connect to ws://"+t.app.args.ip+":"+t.app.args.port+"!"),t.app.currconnect="loginapp",t.app.connect(t.app.args.ip,t.app.args.port),t.app.socket.onopen=t.app.onOpenLoginapp_login;else{var n=t.Bundle.createObject();n.newMessage(t.messages.Loginapp_login),n.writeInt8(t.app.args.clientType),n.writeBlob(t.app.clientdatas),n.writeString(t.app.username),n.writeString(t.app.password),n.send(t.app)}},e.prototype.onOpenLoginapp_resetpassword=function(){if(t.INFO_MSG("KBEngineApp::onOpenLoginapp_resetpassword: successfully!"),t.app.currserver="loginapp",t.app.currstate="resetpassword",t.app.loginappMessageImported)t.app.onImportClientMessagesCompleted();else{var e=t.Bundle.createObject();e.newMessage(t.messages.Loginapp_importClientMessages),e.send(t.app),t.app.socket.onmessage=t.app.Client_onImportClientMessages,t.INFO_MSG("KBEngineApp::onOpenLoginapp_resetpassword: start importClientMessages ...")}},e.prototype.reset_password=function(e){t.app.reset(),t.app.username=e,t.app.resetpassword_loginapp(!0)},e.prototype.resetpassword_loginapp=function(e){if(e)t.INFO_MSG("KBEngineApp::createAccount_loginapp: start connect to ws://"+t.app.args.ip+":"+t.app.args.port+"!"),t.app.currconnect="loginapp",t.app.connect(t.app.args.ip,t.app.args.port),t.app.socket.onopen=t.app.onOpenLoginapp_resetpassword;else{var n=t.Bundle.createObject();n.newMessage(t.messages.Loginapp_reqAccountResetPassword),n.writeString(t.app.username),n.send(t.app)}},e.prototype.onOpenBaseapp=function(){if(t.INFO_MSG("KBEngineApp::onOpenBaseapp: successfully!"),t.app.currserver="baseapp",t.app.baseappMessageImported)t.app.onImportClientMessagesCompleted();else{var e=t.Bundle.createObject();e.newMessage(t.messages.Baseapp_importClientMessages),e.send(t.app),t.app.socket.onmessage=t.app.Client_onImportClientMessages,t.Event.fire("Baseapp_importClientMessages")}},e.prototype.login_baseapp=function(e){if(e)t.Event.fire("onLoginBaseapp"),t.INFO_MSG("KBEngineApp::login_baseapp: start connect to ws://"+t.app.baseappIp+":"+t.app.baseappPort+"!"),t.app.currconnect="baseapp",t.app.connect(t.app.baseappIp,t.app.baseappPort),void 0!=t.app.socket&&null!=t.app.socket&&(t.app.socket.onopen=t.app.onOpenBaseapp);else{var n=t.Bundle.createObject();n.newMessage(t.messages.Baseapp_loginBaseapp),n.writeString(t.app.username),n.writeString(t.app.password),n.send(t.app)}},e.prototype.reloginBaseapp=function(){t.app.lastTickCBTime=t.app.lastTickTime=Date.now(),(void 0==t.app.socket||null==t.app.socket)&&(t.app.resetSocket(),t.Event.fire(t.EventTypes.onReloginBaseapp),t.INFO_MSG("KBEngineApp::reloginBaseapp: start connect to ws://"+t.app.baseappIp+":"+t.app.baseappPort+"!"),t.app.currconnect="baseapp",t.app.connect(t.app.baseappIp,t.app.baseappPort),void 0!=t.app.socket&&null!=t.app.socket&&(t.app.socket.onopen=t.app.onReOpenBaseapp))},e.prototype.onReOpenBaseapp=function(){t.INFO_MSG("KBEngineApp::onReOpenBaseapp: successfully!"),t.app.currserver="baseapp";var e=t.Bundle.createObject();e.newMessage(t.messages.Baseapp_reloginBaseapp),e.writeString(t.app.username),e.writeString(t.app.password),e.writeUint64(t.app.entity_uuid),e.writeInt32(t.app.entity_id),e.send(t.app);var n=new Date;t.app.lastTickCBTime=n.getTime()},e.prototype.Client_onHelloCB=function(e){t.app.serverVersion=e.readString(),t.app.serverScriptVersion=e.readString(),t.app.serverProtocolMD5=e.readString(),t.app.serverEntityDefMD5=e.readString();var n=e.readInt32();t.INFO_MSG("KBEngineApp::Client_onHelloCB: verInfo("+t.app.serverVersion+"), scriptVerInfo("+t.app.serverScriptVersion+"), serverProtocolMD5("+t.app.serverProtocolMD5+"), serverEntityDefMD5("+t.app.serverEntityDefMD5+"), ctype("+n+")!");var r=new Date;t.app.lastTickCBTime=r.getTime()},e.prototype.Client_onLoginFailed=function(e){var n=e.readUint16(); 3 | t.app.serverdatas=e.readBlob(),t.ERROR_MSG("KBEngineApp::Client_onLoginFailed: failedcode("+t.app.serverErrs[n].name+"), datas("+t.app.serverdatas.length+")!"),t.Event.fire("onLoginFailed",n)},e.prototype.Client_onLoginSuccessfully=function(e){var n=e.readString();t.app.username=n,t.app.baseappIp=e.readString(),t.app.baseappPort=e.readUint16(),t.app.baseappUdpPort=e.readUint16(),t.app.serverdatas=e.readBlob(),t.INFO_MSG("KBEngineApp::Client_onLoginSuccessfully: accountName("+n+"), addr("+t.app.baseappIp+":"+t.app.baseappPort+"), datas("+t.app.serverdatas.length+")!"),t.app.disconnect(),t.app.login_baseapp(!0)},e.prototype.Client_onLoginBaseappFailed=function(e){t.ERROR_MSG("KBEngineApp::Client_onLoginBaseappFailed: failedcode("+t.app.serverErrs[e].name+")!"),t.Event.fire(t.EventTypes.onLoginBaseappFailed,e)},e.prototype.Client_onReloginBaseappFailed=function(e){t.ERROR_MSG("KBEngineApp::Client_onReloginBaseappFailed: failedcode("+t.app.serverErrs[e].name+")!"),t.Event.fire(t.EventTypes.onReloginBaseappFailed,e)},e.prototype.Client_onReloginBaseappSuccessfully=function(e){t.app.entity_uuid=e.readUint64(),t.DEBUG_MSG("KBEngineApp::Client_onReloginBaseappSuccessfully: "+t.app.username),t.Event.fire(t.EventTypes.onReloginBaseappSuccessfully)},e.prototype.getentityclass=function(e){var n=t.Entities[e];return void 0==n?(t.ERROR_MSG("KBEngineApp::getentityclass: entityType("+e+") is error!"),n):n},e.prototype.Client_onCreatedProxies=function(e,n,r){t.INFO_MSG("KBEngineApp::Client_onCreatedProxies: eid("+n+"), entityType("+r+")!");var a=t.app.entities[n];if(t.app.entity_uuid=e,t.app.entity_id=n,void 0==a){var i=t.app.getentityclass(r);if(void 0==i)return;var o=new i;o.id=n,o.className=r,o.base=new t.EntityCall,o.base.id=n,o.base.className=r,o.base.type=t.ENTITYCALL_TYPE_BASE,t.app.entities[n]=o;var p=t.bufferedCreateEntityMessages[n];void 0!=p&&(t.app.Client_onUpdatePropertys(p),delete t.bufferedCreateEntityMessages[n]),o.__init__(),o.attachComponents(),o.inited=!0,t.app.args.isOnInitCallPropertysSetMethods&&o.callPropertysSetMethods()}else{var p=t.bufferedCreateEntityMessages[n];void 0!=p&&(t.app.Client_onUpdatePropertys(p),delete t.bufferedCreateEntityMessages[n])}},e.prototype.getViewEntityIDFromStream=function(e){var n=0;if(t.app.entityIDAliasIDList.length>255)n=e.readInt32();else{var r=e.readUint8();if(t.app.entityIDAliasIDList.length<=r)return 0;n=t.app.entityIDAliasIDList[r]}return n},e.prototype.onUpdatePropertys_=function(e,n){var r=t.app.entities[e];if(void 0==r){var a=t.bufferedCreateEntityMessages[e];if(void 0!=a)return void t.ERROR_MSG("KBEngineApp::Client_onUpdEntityComponentatePropertys: entity("+e+") not found!");var i=new t.MemoryStream(n.buffer);return i.wpos=n.wpos,i.rpos=n.rpos-4,void(t.bufferedCreateEntityMessages[e]=i)}r.onUpdatePropertys(n)},e.prototype.Client_onUpdatePropertysOptimized=function(e){var n=t.app.getViewEntityIDFromStream(e);t.app.onUpdatePropertys_(n,e)},e.prototype.Client_onUpdatePropertys=function(e){var n=e.readInt32();t.app.onUpdatePropertys_(n,e)},e.prototype.onRemoteMethodCall_=function(e,n){var r=t.app.entities[e];return void 0==r?void t.ERROR_MSG("KBEngineApp::Client_onRemoteMethodCall: entity("+e+") not found!"):void r.onRemoteMethodCall(n)},e.prototype.Client_onRemoteMethodCallOptimized=function(e){var n=t.app.getViewEntityIDFromStream(e);t.app.onRemoteMethodCall_(n,e)},e.prototype.Client_onRemoteMethodCall=function(e){var n=e.readInt32();t.app.onRemoteMethodCall_(n,e)},e.prototype.Client_onEntityEnterWorld=function(e){var n=e.readInt32();t.app.entity_id>0&&n!=t.app.entity_id&&t.app.entityIDAliasIDList.push(n);var r;r=t.moduledefs.Length>255?e.readUint16():e.readUint8();var a=!0;e.length()>0&&(a=e.readInt8()),r=t.moduledefs[r].name,t.INFO_MSG("KBEngineApp::Client_onEntityEnterWorld: "+r+"("+n+"), spaceID("+t.app.spaceID+"), isOnGround("+a+")!");var i=t.app.entities[n];if(void 0==i){var o=t.bufferedCreateEntityMessages[n];if(void 0==o)return void t.ERROR_MSG("KBEngineApp::Client_onEntityEnterWorld: entity("+n+") not found!");var p=t.app.getentityclass(r);if(void 0==p)return;var s=new p;s.id=n,s.className=r,s.cell=new t.EntityCall,s.cell.id=n,s.cell.className=r,s.cell.type=t.ENTITYCALL_TYPE_CELL,t.app.entities[n]=s,t.app.Client_onUpdatePropertys(o),delete t.bufferedCreateEntityMessages[n],s.isOnGround=a,s.__init__(),s.attachComponents(),s.inited=!0,s.inWorld=!0,s.enterWorld(),t.app.args.isOnInitCallPropertysSetMethods&&s.callPropertysSetMethods(),s.set_direction(s.direction),s.set_position(s.position)}else i.inWorld||(i.cell=new t.EntityCall,i.cell.id=n,i.cell.className=r,i.cell.type=t.ENTITYCALL_TYPE_CELL,t.app.entityIDAliasIDList=[],t.app.entities={},t.app.entities[i.id]=i,i.set_direction(i.direction),i.set_position(i.position),t.app.entityServerPos.x=i.position.x,t.app.entityServerPos.y=i.position.y,t.app.entityServerPos.z=i.position.z,i.isOnGround=a,i.inWorld=!0,i.enterWorld(),t.app.args.isOnInitCallPropertysSetMethods&&i.callPropertysSetMethods())},e.prototype.Client_onEntityLeaveWorldOptimized=function(e){var n=t.app.getViewEntityIDFromStream(e);t.app.Client_onEntityLeaveWorld(n)},e.prototype.Client_onEntityLeaveWorld=function(e){var n=t.app.entities[e];if(void 0==n)return void t.ERROR_MSG("KBEngineApp::Client_onEntityLeaveWorld: entity("+e+") not found!");if(n.inWorld&&n.leaveWorld(),t.app.entity_id>0&&e!=t.app.entity_id){for(var r=[],a=0;a0&&(r=e.readInt8());var a=t.app.entities[n];return void 0==a?void t.ERROR_MSG("KBEngineApp::Client_onEntityEnterSpace: entity("+n+") not found!"):(a.isOnGround=r,t.app.entityServerPos.x=a.position.x,t.app.entityServerPos.y=a.position.y,t.app.entityServerPos.z=a.position.z,void a.enterSpace())},e.prototype.Client_onEntityLeaveSpace=function(e){var n=t.app.entities[e];return void 0==n?void t.ERROR_MSG("KBEngineApp::Client_onEntityLeaveSpace: entity("+e+") not found!"):(t.app.clearSpace(!1),void n.leaveSpace())},e.prototype.Client_onKicked=function(e){t.ERROR_MSG("KBEngineApp::Client_onKicked: failedcode("+t.app.serverErrs[e].name+")!"),t.Event.fire(t.EventTypes.onKicked,e)},e.prototype.Client_onCreateAccountResult=function(e){var n=e.readUint16(),r=e.readBlob();return t.Event.fire("onCreateAccountResult",n,r),0!=n?void t.ERROR_MSG("KBEngineApp::Client_onCreateAccountResult: "+t.app.username+" create is failed! code="+t.app.serverErrs[n].name+"!"):void t.INFO_MSG("KBEngineApp::Client_onCreateAccountResult: "+t.app.username+" create is successfully!")},e.prototype.Client_onControlEntity=function(e,n){var r=t.app.entities[e];if(void 0==r)return void t.ERROR_MSG("KBEngineApp::Client_onControlEntity: entity("+e+") not found!");var a=0!=n;if(a)t.app.player().id!=r.id&&t.app.controlledEntities.push(r);else{for(var i=[],o=0;o.001||e.entityLastLocalDir.distance(e.direction)>.001){e.entityLastLocalPos.x=e.position.x,e.entityLastLocalPos.y=e.position.y,e.entityLastLocalPos.z=e.position.z,e.entityLastLocalDir.x=e.direction.x,e.entityLastLocalDir.y=e.direction.y,e.entityLastLocalDir.z=e.direction.z;var n=t.Bundle.createObject();n.newMessage(t.messages.Baseapp_onUpdateDataFromClient),n.writeFloat(e.position.x),n.writeFloat(e.position.y),n.writeFloat(e.position.z),n.writeFloat(e.direction.x),n.writeFloat(e.direction.y),n.writeFloat(e.direction.z),n.writeUint8(e.isOnGround),n.writeUint32(t.app.spaceID),n.send(t.app)}for(var r in t.app.controlledEntities){var a=t.app.controlledEntities[r],i=a.position,o=a.direction,p=a.entityLastLocalPos.distance(i)>.001,s=a.entityLastLocalDir.distance(o)>.001;if(p||s){a.entityLastLocalPos=i,a.entityLastLocalDir=o;var n=t.Bundle.createObject();n.newMessage(t.messages.Baseapp_onUpdateDataFromClientForControlledEntity),n.writeInt32(a.id),n.writeFloat(i.x),n.writeFloat(i.y),n.writeFloat(i.z),n.writeFloat(o.x),n.writeFloat(o.y),n.writeFloat(o.z),n.writeUint8(a.isOnGround),n.writeUint32(t.app.spaceID),n.send(t.app)}}}},e.prototype.addSpaceGeometryMapping=function(e,n){t.INFO_MSG("KBEngineApp::addSpaceGeometryMapping: spaceID("+e+"), respath("+n+")!"),t.app.spaceID=e,t.app.spaceResPath=n,t.Event.fire(t.EventTypes.addSpaceGeometryMapping,n)},e.prototype.clearSpace=function(e){t.app.entityIDAliasIDList=[],t.app.spacedata={},t.app.clearEntities(e),t.app.isLoadedGeometry=!1,t.app.spaceID=0},e.prototype.clearEntities=function(e){if(t.app.controlledEntities=[],e){for(var n in t.app.entities)t.app.entities[n].inWorld&&t.app.entities[n].leaveWorld(),t.app.entities[n].onDestroy();t.app.entities={}}else{var r=t.app.player();for(var n in t.app.entities)n!=r.id&&(t.app.entities[n].inWorld&&t.app.entities[n].leaveWorld(),t.app.entities[n].onDestroy());t.app.entities={},t.app.entities[r.id]=r}},e.prototype.Client_initSpaceData=function(e){for(t.app.clearSpace(!1),t.app.spaceID=e.readInt32();e.length()>0;){var n=e.readString(),r=e.readString();t.app.Client_setSpaceData(t.app.spaceID,n,r)}t.INFO_MSG("KBEngineApp::Client_initSpaceData: spaceID("+t.app.spaceID+"), datas("+t.app.spacedata+")!")},e.prototype.Client_setSpaceData=function(e,n,r){t.INFO_MSG("KBEngineApp::Client_setSpaceData: spaceID("+e+"), key("+n+"), value("+r+")!"),t.app.spacedata[n]=r,"_mapping"==n&&t.app.addSpaceGeometryMapping(e,r),t.Event.fire("onSetSpaceData",e,n,r)},e.prototype.Client_delSpaceData=function(e,n){t.INFO_MSG("KBEngineApp::Client_delSpaceData: spaceID("+e+"), key("+n+")!"),delete t.app.spacedata[n],t.Event.fire("onDelSpaceData",e,n)},e.prototype.Client_getSpaceData=function(e,n){return t.app.spacedata[n]},e.prototype.Client_onUpdateBasePos=function(e,n,r){t.app.entityServerPos.x=e,t.app.entityServerPos.y=n,t.app.entityServerPos.z=r},e.prototype.Client_onUpdateBasePosXZ=function(e,n){t.app.entityServerPos.x=e,t.app.entityServerPos.z=n},e.prototype.Client_onUpdateData=function(e){var n=t.app.getViewEntityIDFromStream(e),r=t.app.entities[n];return void 0==r?void t.ERROR_MSG("KBEngineApp::Client_onUpdateData: entity("+n+") not found!"):void 0},e.prototype.Client_onSetEntityPosAndDir=function(e){var n=e.readInt32(),r=t.app.entities[n];return void 0==r?void t.ERROR_MSG("KBEngineApp::Client_onSetEntityPosAndDir: entity("+n+") not found!"):(r.position.x=e.readFloat(),r.position.y=e.readFloat(),r.position.z=e.readFloat(),r.direction.x=e.readFloat(),r.direction.y=e.readFloat(),r.direction.z=e.readFloat(),r.entityLastLocalPos.x=r.position.x,r.entityLastLocalPos.y=r.position.y,r.entityLastLocalPos.z=r.position.z,r.entityLastLocalDir.x=r.direction.x,r.entityLastLocalDir.y=r.direction.y,r.entityLastLocalDir.z=r.direction.z,r.set_direction(r.direction),void r.set_position(r.position))},e.prototype.Client_onUpdateData_ypr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,i,-1)},e.prototype.Client_onUpdateData_yp=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,t.KBE_FLT_MAX,-1)},e.prototype.Client_onUpdateData_yr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,a,-1)},e.prototype.Client_onUpdateData_pr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,-1)},e.prototype.Client_onUpdateData_y=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,t.KBE_FLT_MAX,-1)},e.prototype.Client_onUpdateData_p=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,-1)},e.prototype.Client_onUpdateData_r=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,-1)},e.prototype.Client_onUpdateData_xz=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,1)},e.prototype.Client_onUpdateData_xz_ypr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat(),p=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,i,o,p,1)},e.prototype.Client_onUpdateData_xz_yp=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,i,o,t.KBE_FLT_MAX,1)},e.prototype.Client_onUpdateData_xz_yr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,i,t.KBE_FLT_MAX,o,1)},e.prototype.Client_onUpdateData_xz_pr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,t.KBE_FLT_MAX,i,o,1)},e.prototype.Client_onUpdateData_xz_y=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,i,t.KBE_FLT_MAX,t.KBE_FLT_MAX,1)},e.prototype.Client_onUpdateData_xz_p=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readInt8();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,t.KBE_FLT_MAX,i,t.KBE_FLT_MAX,1)},e.prototype.Client_onUpdateData_xz_r=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readInt8();t.app._updateVolatileData(n,r,t.KBE_FLT_MAX,a,t.KBE_FLT_MAX,t.KBE_FLT_MAX,i,1)},e.prototype.Client_onUpdateData_xyz=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat();t.app._updateVolatileData(n,r,a,i,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0)},e.prototype.Client_onUpdateData_xyz_ypr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat(),p=e.readFloat(),s=e.readFloat();t.app._updateVolatileData(n,r,a,i,o,p,s,0)},e.prototype.Client_onUpdateData_xyz_yp=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat(),p=e.readFloat();t.app._updateVolatileData(n,r,i,a,o,p,t.KBE_FLT_MAX,0)},e.prototype.Client_onUpdateData_xyz_yr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat(),p=e.readFloat();t.app._updateVolatileData(n,r,i,a,o,t.KBE_FLT_MAX,p,0)},e.prototype.Client_onUpdateData_xyz_pr=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat(),p=e.readFloat();t.app._updateVolatileData(n,r,i,a,t.KBE_FLT_MAX,o,p,0)},e.prototype.Client_onUpdateData_xyz_y=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,i,a,o,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0)},e.prototype.Client_onUpdateData_xyz_p=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,i,a,t.KBE_FLT_MAX,o,t.KBE_FLT_MAX,0)},e.prototype.Client_onUpdateData_xyz_r=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readFloat(),a=e.readFloat(),i=e.readFloat(),o=e.readFloat();t.app._updateVolatileData(n,r,i,a,o,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0)},e.prototype.Client_onUpdateData_ypr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8(),a=e.readInt8(),i=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,i,-1,!0)},e.prototype.Client_onUpdateData_yp_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8(),a=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,t.KBE_FLT_MAX,-1,!0)},e.prototype.Client_onUpdateData_yr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8(),a=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,a,-1,!0)},e.prototype.Client_onUpdateData_pr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8(),a=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,a,-1,!0)},e.prototype.Client_onUpdateData_y_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,t.KBE_FLT_MAX,-1,!0)},e.prototype.Client_onUpdateData_p_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,t.KBE_FLT_MAX,-1,!0)},e.prototype.Client_onUpdateData_r_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readInt8();t.app._updateVolatileData(n,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,r,-1,!0)},e.prototype.Client_onUpdateData_xz_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,1,!0)},e.prototype.Client_onUpdateData_xz_ypr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8(),i=e.readInt8(),o=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],a,i,o,1,!0)},e.prototype.Client_onUpdateData_xz_yp_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8(),i=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],a,i,t.KBE_FLT_MAX,1,!0)},e.prototype.Client_onUpdateData_xz_yr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8(),i=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],a,t.KBE_FLT_MAX,i,1,!0)},e.prototype.Client_onUpdateData_xz_pr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8(),i=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],t.KBE_FLT_MAX,a,i,1,!0)},e.prototype.Client_onUpdateData_xz_y_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],a,t.KBE_FLT_MAX,t.KBE_FLT_MAX,1,!0)},e.prototype.Client_onUpdateData_xz_p_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],t.KBE_FLT_MAX,a,t.KBE_FLT_MAX,1,!0)},e.prototype.Client_onUpdateData_xz_r_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readInt8();t.app._updateVolatileData(n,r[0],t.KBE_FLT_MAX,r[1],t.KBE_FLT_MAX,t.KBE_FLT_MAX,a,1,!0)},e.prototype.Client_onUpdateData_xyz_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY();t.app._updateVolatileData(n,r[0],a,r[1],t.KBE_FLT_MAX,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0,!0)},e.prototype.Client_onUpdateData_xyz_ypr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8(),o=e.readInt8(),p=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],i,o,p,0,!0)},e.prototype.Client_onUpdateData_xyz_yp_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8(),o=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],i,o,t.KBE_FLT_MAX,0,!0)},e.prototype.Client_onUpdateData_xyz_yr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8(),o=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],i,t.KBE_FLT_MAX,o,0,!0)},e.prototype.Client_onUpdateData_xyz_pr_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8(),o=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],t.KBE_FLT_MAX,i,o,0,!0)},e.prototype.Client_onUpdateData_xyz_y_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],i,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0,!0)},e.prototype.Client_onUpdateData_xyz_p_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],t.KBE_FLT_MAX,i,t.KBE_FLT_MAX,0,!0)},e.prototype.Client_onUpdateData_xyz_r_optimized=function(e){var n=t.app.getViewEntityIDFromStream(e),r=e.readPackXZ(),a=e.readPackY(),i=e.readInt8();t.app._updateVolatileData(n,r[0],a,r[1],i,t.KBE_FLT_MAX,t.KBE_FLT_MAX,0,!0)},e.prototype._updateVolatileData=function(e,n,r,a,i,o,p,s,l){void 0===l&&(l=!1);var c=t.app.entities[e];if(void 0==c)return void t.ERROR_MSG("KBEngineApp::_updateVolatileData: entity("+e+") not found!");s>=0&&(c.isOnGround=s>0);var d=!1;p!=t.KBE_FLT_MAX&&(d=!0,c.direction.x=t.int82angle(p,!1)),o!=t.KBE_FLT_MAX&&(d=!0,c.direction.y=t.int82angle(o,!1)),i!=t.KBE_FLT_MAX&&(d=!0,c.direction.z=t.int82angle(i,!1));var u=!1;1==d&&(t.Event.fire("set_direction",c),u=!0);var y=!1;(n!=t.KBE_FLT_MAX||r!=t.KBE_FLT_MAX||a!=t.KBE_FLT_MAX)&&(y=!0),n==t.KBE_FLT_MAX&&(n=0),r==t.KBE_FLT_MAX&&(r=0),a==t.KBE_FLT_MAX&&(a=0),y&&(l?(c.position.x=n+t.app.entityServerPos.x,c.position.y=r+t.app.entityServerPos.y,c.position.z=a+t.app.entityServerPos.z):(c.position.x=n,c.position.y=r,c.position.z=a),u=!0,t.Event.fire("updatePosition",c)),u&&c.onUpdateVolatileData()},e.prototype.Client_onStreamDataStarted=function(e,n,r){t.Event.fire(t.EventTypes.onStreamDataStarted,e,n,r)},e.prototype.Client_onStreamDataRecv=function(e){var n=e.readUint16(),r=e.readBlob();t.Event.fire(t.EventTypes.onStreamDataRecv,n,r)},e.prototype.Client_onStreamDataCompleted=function(e){t.Event.fire(t.EventTypes.onStreamDataCompleted,e)},e.prototype.Client_onReqAccountResetPasswordCB=function(e){return 0!=e?void t.ERROR_MSG("KBEngineApp::Client_onReqAccountResetPasswordCB: "+t.app.username+" is failed! code="+t.app.serverErrs[e].name+"!"):void t.INFO_MSG("KBEngineApp::Client_onReqAccountResetPasswordCB: "+t.app.username+" is successfully!")},e.prototype.Client_onReqAccountBindEmailCB=function(e){return 0!=e?void t.ERROR_MSG("KBEngineApp::Client_onReqAccountBindEmailCB: "+t.app.username+" is failed! code="+t.app.serverErrs[e].name+"!"):void t.INFO_MSG("KBEngineApp::Client_onReqAccountBindEmailCB: "+t.app.username+" is successfully!")},e.prototype.Client_onReqAccountNewPasswordCB=function(e){return 0!=e?void t.ERROR_MSG("KBEngineApp::Client_onReqAccountNewPasswordCB: "+t.app.username+" is failed! code="+t.app.serverErrs[e].name+"!"):void t.INFO_MSG("KBEngineApp::Client_onReqAccountNewPasswordCB: "+t.app.username+" is successfully!")},e}();t.KBEngineApp=r,__reflect(r.prototype,"KBEngine.KBEngineApp");var a=function(){function t(){this.name="",this.descr="",this.id=0}return t}();t.ServerErr=a,__reflect(a.prototype,"KBEngine.ServerErr"),t.FragmentDataTypes={FRAGMENT_DATA_UNKNOW:0,FRAGMENT_DATA_MESSAGE_ID:1,FRAGMENT_DATA_MESSAGE_LENGTH:2,FRAGMENT_DATA_MESSAGE_LENGTH1:3,FRAGMENT_DATA_MESSAGE_BODY:4};var i;t.create=e,t.destroy=n}(KBEngine||(KBEngine={})); -------------------------------------------------------------------------------- /kbengine_ts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kbengine_ts", 3 | "compilerVersion": "5.2.18" 4 | } -------------------------------------------------------------------------------- /kbengine_ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "noImplicitAny": false, 5 | "sourceMap": false, 6 | "declaration": true, 7 | "experimentalDecorators": true, 8 | "outFile": "kbengine/kbengine.js" 9 | }, 10 | "include": [ 11 | "libs", 12 | "src" 13 | ], 14 | "exclude": [ 15 | "kbengine" 16 | ] 17 | } --------------------------------------------------------------------------------