import * as gt from "guntree";
export class YourWeapon implements gt.Owner {
private player = new gt.Player();
private gunTree = gt.concat(
gt.useMuzzle("centerMuzzle"),
gt.repeat(
{ times: 10, interval: 30 },
gt.fire(gt.bullet())
));
constructor() {
this.player.events.on("fired", (data: gt.FireData, bullet: gt.Bullet) => {
const [location, angleDeg, scale] = gt.decomposeTransform(data.transform);
const elapsedSec = data.elapsedSec;
const speed = data.parameters.get("speed");
const size = state.parameters.get("size");
});
}
getMuzzleTransform(muzzleName: string) {
return gt.composeTransform({ x: 0.25, y: 0.0, rotationDeg: 35 });
}
getEnemyTransform(muzzleName: string) {
return gt.composeTransform({ x: -0.45, y: 0.25, rotationDeg: 0 });
}
startFiring(loop = false): boolean {
return player.start(loop, this, this.gunTree);
}
isFiring(): boolean {
return player.isRunning();
}
stopFiring(): void {
player.requestStop();
}
forceStopFiring(): void {
player.forceStop();
}
fixedFramerateUpdate(): boolean {
return player.tick();
}
dynamicFramerateUpdate(deltaSeconds: number): boolean {
return player.update(deltaSeconds);
}
}