<?php
// automatically generated by the FlatBuffers compiler, do not modify

use \Google\FlatBuffers\Struct;
use \Google\FlatBuffers\Table;
use \Google\FlatBuffers\ByteBuffer;
use \Google\FlatBuffers\FlatBufferBuilder;

class FallingTub extends Struct
{
    /**
     * @param int $_i offset
     * @param ByteBuffer $_bb
     * @return FallingTub
     **/
    public function init($_i, ByteBuffer $_bb)
    {
        $this->bb_pos = $_i;
        $this->bb = $_bb;
        return $this;
    }

    /**
     * @return int
     */
    public function GetWeight()
    {
        return $this->bb->getInt($this->bb_pos + 0);
    }


    /**
     * @return int offset
     */
    public static function createFallingTub(FlatBufferBuilder $builder, $weight)
    {
        $builder->prep(4, 4);
        $builder->putInt($weight);
        return $builder->offset();
    }
}
