DESKTOP-5RP3AKU\Jisol ca5fa0cc92 更新无限地图
2023-11-03 02:57:38 +08:00

64 lines
1.6 KiB
TypeScript

import { _decorator, Component, instantiate, Node, Prefab } from 'cc';
import { JNFrameInfo, JNSyncFrameEvent } from '../../extensions/ngame/assets/ngame/sync/frame/JNSyncFrame';
import { app } from './App';
import { JNSyncAction } from '../../extensions/ngame/assets/ngame/sync/JNSyncAction';
import { Camera } from 'cc';
import GBaseMode from './battle/GBaseMode';
const { ccclass, property } = _decorator;
@ccclass('WorldCanvas')
export class WorldCanvas extends Component {
@property(Node)
root:Node = null;
@property(Camera)
camera:Camera = null;
@property([Prefab])
prefabs:Prefab[] = [];
index:number = 0;
async onLoad(){
//重置相机位置
this.camera.node.setWorldPosition(0,0,1000);
//监听帧同步
app.event.on(JNSyncFrameEvent.CLEAR,this.clear,this);
app.event.on(JNSyncFrameEvent.CREATE,this.create,this);
//监听帧回调
app.socket.on(JNSyncAction.NSyncFrameBack,this.onFrameBack,this,"JNFrameInfo");
app.sync.onReset();
app.sync.onStart();
}
//清除世界
clear(){
this.root.removeAllChildren();
}
//创建世界
create(){
let world = instantiate(this.prefabs[this.index]);
world.getComponent(GBaseMode).camera = this.camera;
this.root.addChild(world)
this.scheduleOnce(() => {
app.sync.onStart();
});
}
update(deltaTime: number) {
app.sync.update(deltaTime);
}
onFrameBack(info:JNFrameInfo){
app.sync.addFrame(info,true);
}
}