# automatically generated by the FlatBuffers compiler, do not modify

# namespace: a

import flatbuffers
from flatbuffers.compat import import_numpy
np = import_numpy()

class Vec3(object):
    __slots__ = ['_tab']

    @classmethod
    def SizeOf(cls):
        return 12

    # Vec3
    def Init(self, buf, pos):
        self._tab = flatbuffers.table.Table(buf, pos)

    # Vec3
    def V(self, j = None):
        if j is None:
            return [self._tab.Get(flatbuffers.number_types.Float32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0 + i * 4)) for i in range(self.VLength())]
        elif j >= 0 and j < self.VLength():
            return self._tab.Get(flatbuffers.number_types.Float32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0 + j * 4))
        else:
            return None

    # Vec3
    def VAsNumpy(self):
        return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Float32Flags, self._tab.Pos + 0, self.VLength())

    # Vec3
    def VLength(self):
        return 3

    # Vec3
    def VIsNone(self):
        return False


def CreateVec3(builder, v):
    builder.Prep(4, 12)
    for _idx0 in range(3 , 0, -1):
        builder.PrependFloat32(v[_idx0-1])
    return builder.Offset()

try:
    from typing import List
except:
    pass

class Vec3T(object):

    # Vec3T
    def __init__(self):
        self.v = None  # type: List[float]

    @classmethod
    def InitFromBuf(cls, buf, pos):
        vec3 = Vec3()
        vec3.Init(buf, pos)
        return cls.InitFromObj(vec3)

    @classmethod
    def InitFromPackedBuf(cls, buf, pos=0):
        n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, pos)
        return cls.InitFromBuf(buf, pos+n)

    @classmethod
    def InitFromObj(cls, vec3):
        x = Vec3T()
        x._UnPack(vec3)
        return x

    # Vec3T
    def _UnPack(self, vec3):
        if vec3 is None:
            return
        if not vec3.VIsNone():
            if np is None:
                self.v = []
                for i in range(vec3.VLength()):
                    self.v.append(vec3.V(i))
            else:
                self.v = vec3.VAsNumpy()

    # Vec3T
    def Pack(self, builder):
        return CreateVec3(builder, self.v)
