// 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));
  }
}
