render optimization
This commit is contained in:
@@ -55,6 +55,9 @@ export class ActorManager extends EntityManager implements IActor {
|
||||
weapon.setParent(this.node)
|
||||
this.weapon = weapon.addComponent(WeaponManager)
|
||||
this.weapon.init(data)
|
||||
|
||||
this.targetPos = undefined
|
||||
this.node.active = false
|
||||
}
|
||||
|
||||
tick(dt: number) {
|
||||
@@ -88,33 +91,32 @@ export class ActorManager extends EntityManager implements IActor {
|
||||
}
|
||||
|
||||
renderPosition(data: IActor) {
|
||||
// this.node.setPosition(data.position.x, data.position.y)
|
||||
|
||||
const newPos = new Vec3(data.position.x, data.position.y)
|
||||
if (!this.targetPos) {
|
||||
this.node.active = true
|
||||
this.node.setPosition(newPos)
|
||||
this.targetPos = new Vec3()
|
||||
this.targetPos.set(newPos)
|
||||
this.targetPos = new Vec3(newPos)
|
||||
} else if (!this.targetPos.equals(newPos)) {
|
||||
this.tw?.stop()
|
||||
this.node.setPosition(this.targetPos)
|
||||
this.targetPos.set(newPos)
|
||||
this.state = EntityStateEnum.Run
|
||||
this.tw = tween(this.node).to(0.1, {
|
||||
position: this.targetPos
|
||||
}).call(() => {
|
||||
this.state = EntityStateEnum.Idle
|
||||
}).start()
|
||||
}
|
||||
|
||||
// this.node.setPosition(data.position.x, data.position.y)
|
||||
}
|
||||
|
||||
renderDirection(data: IActor) {
|
||||
if (data.direction.x === 0 && data.direction.y === 0) {
|
||||
this.state = EntityStateEnum.Idle
|
||||
return
|
||||
}
|
||||
this.state = EntityStateEnum.Run
|
||||
const { x, y } = data.direction
|
||||
if (x !== 0) {
|
||||
this.node.setScale(x > 0 ? 1 : -1, 1)
|
||||
this.label.node.setScale(x > 0 ? 1 : -1, 1)
|
||||
this.hpBar.node.setScale(x > 0 ? 1 : -1, 1)
|
||||
}
|
||||
const side = Math.sqrt(x * x + y * y)
|
||||
const angle = rad2Angle(Math.asin(y / side))
|
||||
|
@@ -23,7 +23,7 @@ export class BulletManager extends EntityManager implements IBullet {
|
||||
|
||||
private angle: number
|
||||
private tw: Tween<any>
|
||||
private targetPos: Vec3 = new Vec3
|
||||
private targetPos: Vec3
|
||||
|
||||
init({ id, owner, type }: IBullet) {
|
||||
this.id = id
|
||||
@@ -34,6 +34,7 @@ export class BulletManager extends EntityManager implements IBullet {
|
||||
this.fsm.init(type)
|
||||
this.state = EntityStateEnum.Idle
|
||||
this.node.active = false
|
||||
this.targetPos = undefined
|
||||
|
||||
EventManager.Instance.on(EventEnum.ExplosionBorn, this.handleExplosion, this)
|
||||
}
|
||||
@@ -62,10 +63,10 @@ export class BulletManager extends EntityManager implements IBullet {
|
||||
|
||||
renderPosition(data: IBullet) {
|
||||
const newPos = new Vec3(data.position.x, data.position.y)
|
||||
if (!this.node.active) {
|
||||
if (!this.targetPos) {
|
||||
this.node.active = true
|
||||
this.node.setPosition(newPos)
|
||||
this.targetPos.set(newPos)
|
||||
this.targetPos = new Vec3(newPos)
|
||||
} else if (!this.targetPos.equals(newPos)) {
|
||||
this.tw?.stop()
|
||||
this.node.setPosition(this.targetPos)
|
||||
|
Reference in New Issue
Block a user