// automatically generated by the FlatBuffers compiler, do not modify

package MyGame.Example

import java.nio.*
import kotlin.math.sign
import com.google.flatbuffers.*

@Suppress("unused")
@ExperimentalUnsignedTypes
class StructOfStructs : Struct() {

    fun __init(_i: Int, _bb: ByteBuffer)  {
        __reset(_i, _bb)
    }
    fun __assign(_i: Int, _bb: ByteBuffer) : StructOfStructs {
        __init(_i, _bb)
        return this
    }
    val a : MyGame.Example.Ability? get() = a(MyGame.Example.Ability())
    fun a(obj: MyGame.Example.Ability) : MyGame.Example.Ability? = obj.__assign(bb_pos + 0, bb)
    val b : MyGame.Example.Test? get() = b(MyGame.Example.Test())
    fun b(obj: MyGame.Example.Test) : MyGame.Example.Test? = obj.__assign(bb_pos + 8, bb)
    val c : MyGame.Example.Ability? get() = c(MyGame.Example.Ability())
    fun c(obj: MyGame.Example.Ability) : MyGame.Example.Ability? = obj.__assign(bb_pos + 12, bb)
    companion object {
        fun createStructOfStructs(builder: FlatBufferBuilder, a_id: UInt, a_distance: UInt, b_a: Short, b_b: Byte, c_id: UInt, c_distance: UInt) : Int {
            builder.prep(4, 20)
            builder.prep(4, 8)
            builder.putInt(c_distance.toInt())
            builder.putInt(c_id.toInt())
            builder.prep(2, 4)
            builder.pad(1)
            builder.putByte(b_b)
            builder.putShort(b_a)
            builder.prep(4, 8)
            builder.putInt(a_distance.toInt())
            builder.putInt(a_id.toInt())
            return builder.offset()
        }
    }
}
