// automatically generated by the FlatBuffers compiler, do not modify
import { Color } from '../../my-game/example/color.js';
import { Test } from '../../my-game/example/test.js';
export class Vec3 {
    constructor() {
        this.bb = null;
        this.bb_pos = 0;
    }
    __init(i, bb) {
        this.bb_pos = i;
        this.bb = bb;
        return this;
    }
    x() {
        return this.bb.readFloat32(this.bb_pos);
    }
    mutate_x(value) {
        this.bb.writeFloat32(this.bb_pos + 0, value);
        return true;
    }
    y() {
        return this.bb.readFloat32(this.bb_pos + 4);
    }
    mutate_y(value) {
        this.bb.writeFloat32(this.bb_pos + 4, value);
        return true;
    }
    z() {
        return this.bb.readFloat32(this.bb_pos + 8);
    }
    mutate_z(value) {
        this.bb.writeFloat32(this.bb_pos + 8, value);
        return true;
    }
    test1() {
        return this.bb.readFloat64(this.bb_pos + 16);
    }
    mutate_test1(value) {
        this.bb.writeFloat64(this.bb_pos + 16, value);
        return true;
    }
    test2() {
        return this.bb.readUint8(this.bb_pos + 24);
    }
    mutate_test2(value) {
        this.bb.writeUint8(this.bb_pos + 24, value);
        return true;
    }
    test3(obj) {
        return (obj || new Test()).__init(this.bb_pos + 26, this.bb);
    }
    static getFullyQualifiedName() {
        return 'MyGame.Example.Vec3';
    }
    static sizeOf() {
        return 32;
    }
    static createVec3(builder, x, y, z, test1, test2, test3_a, test3_b) {
        builder.prep(8, 32);
        builder.pad(2);
        builder.prep(2, 4);
        builder.pad(1);
        builder.writeInt8(test3_b);
        builder.writeInt16(test3_a);
        builder.pad(1);
        builder.writeInt8(test2);
        builder.writeFloat64(test1);
        builder.pad(4);
        builder.writeFloat32(z);
        builder.writeFloat32(y);
        builder.writeFloat32(x);
        return builder.offset();
    }
    unpack() {
        return new Vec3T(this.x(), this.y(), this.z(), this.test1(), this.test2(), (this.test3() !== null ? this.test3().unpack() : null));
    }
    unpackTo(_o) {
        _o.x = this.x();
        _o.y = this.y();
        _o.z = this.z();
        _o.test1 = this.test1();
        _o.test2 = this.test2();
        _o.test3 = (this.test3() !== null ? this.test3().unpack() : null);
    }
}
export class Vec3T {
    constructor(x = 0.0, y = 0.0, z = 0.0, test1 = 0.0, test2 = Color.Red, test3 = null) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.test1 = test1;
        this.test2 = test2;
        this.test3 = test3;
    }
    pack(builder) {
        return Vec3.createVec3(builder, this.x, this.y, this.z, this.test1, this.test2, (this.test3?.a ?? 0), (this.test3?.b ?? 0));
    }
}
