include "../Shared/DevID.fbs";
include "Math/Vec3f.fbs";
include "CollisionShape.fbs";

namespace pkNX.Structures.FlatBuffers.SV;
attribute "fs_serializer";

table GrassCollision {
    OffsetY:float;
    Radius:float;
}

table CGemParam {
    Pos:Vec3f (required);
    Rot:Vec3f (required);
    Scale:Vec3f (required);
}

table PokeParameter {
    ReachDistance:float;
    AcceleStartDistance:float;
    DeceleStartDistance:float;
    MoveAccele:float;
    RotationSpeed:float;
    MinWaterDepthThreshold:float;
    MaxWaterDepthThreshold:float;
    MinAltitudeThreshold:float;
    MaxAltitudeThreshold:float;
}

table NamedFlatBuffer {
    FileName:string (required);
}

table CharaCollision {
    Shape:CollisionShape = NONE;
    Pos:Vec3f (required);
    Radius:float;
}

table BodyCollision {
    Shape:CollisionShape = NONE;
    Pos:Vec3f (required);
    Radius:float;
}

table PokeObj {
    DevId:DevID = DEV_NULL;
    Body:BodyCollision;
    Chara:CharaCollision;
    Grass:GrassCollision;
    FlatBuffer:NamedFlatBuffer;
    GemParam:CGemParam;
    Poke:PokeParameter;
}

table PokeObjArray (fs_serializer) {
    Table:[PokeObj] (required);
}

root_type PokeObjArray;
