Update savegame schema

This commit is contained in:
Sezz 2022-08-14 18:15:57 +10:00
parent d4cde2886f
commit aa0e51ae71
3 changed files with 156 additions and 174 deletions

View file

@ -614,7 +614,6 @@ bool SaveGame::Save(int slot)
}
Save::ItemBuilder serializedItem{ fbb };
serializedItem.add_next_item(itemToSerialize.NextItem);
serializedItem.add_next_item_active(itemToSerialize.NextActive);
serializedItem.add_anim_number(itemToSerialize.Animation.AnimNumber - obj->animIndex);
@ -622,7 +621,6 @@ bool SaveGame::Save(int slot)
serializedItem.add_box_number(itemToSerialize.BoxNumber);
serializedItem.add_carried_item(itemToSerialize.CarriedItem);
serializedItem.add_active_state(itemToSerialize.Animation.ActiveState);
serializedItem.add_vertical_velocity(itemToSerialize.Animation.Velocity.y);
serializedItem.add_flags(itemToSerialize.Flags);
serializedItem.add_floor(itemToSerialize.Floor);
serializedItem.add_frame_number(itemToSerialize.Animation.FrameNumber);
@ -634,7 +632,7 @@ bool SaveGame::Save(int slot)
serializedItem.add_pose(&FromPHD(itemToSerialize.Pose));
serializedItem.add_required_state(itemToSerialize.Animation.RequiredState);
serializedItem.add_room_number(itemToSerialize.RoomNumber);
serializedItem.add_velocity(itemToSerialize.Animation.Velocity.z);
serializedItem.add_velocity(&FromVector3(itemToSerialize.Animation.Velocity));
serializedItem.add_timer(itemToSerialize.Timer);
serializedItem.add_color(&FromVector4(itemToSerialize.Color));
serializedItem.add_touch_bits(itemToSerialize.TouchBits);
@ -1331,8 +1329,7 @@ bool SaveGame::Load(int slot)
item->Pose = ToPHD(savedItem->pose());
item->RoomNumber = savedItem->room_number();
item->Animation.Velocity.z = savedItem->velocity();
item->Animation.Velocity.y = savedItem->vertical_velocity();
item->Animation.Velocity = ToVector3(savedItem->velocity());
if (item->ObjectNumber == ID_LARA && !dynamicItem)
{

View file

@ -381,18 +381,18 @@ struct KeyValPair::Traits {
struct ItemT : public flatbuffers::NativeTable {
typedef Item TableType;
int32_t active_state = 0;
int32_t anim_number = 0;
int32_t frame_number = 0;
bool is_airborne = false;
int32_t required_state = 0;
int32_t target_state = 0;
std::unique_ptr<TEN::Save::Vector3> velocity{};
int32_t floor = 0;
int32_t touch_bits = 0;
int32_t mesh_bits = 0;
int32_t object_id = 0;
int32_t active_state = 0;
int32_t target_state = 0;
int32_t required_state = 0;
int32_t anim_number = 0;
int32_t frame_number = 0;
int32_t room_number = 0;
int32_t velocity = 0;
int32_t vertical_velocity = 0;
int32_t hit_points = 0;
int32_t box_number = 0;
int32_t timer = 0;
@ -408,7 +408,6 @@ struct ItemT : public flatbuffers::NativeTable {
bool triggered = false;
bool active = false;
int32_t status = 0;
bool is_airborne = false;
bool hit_stauts = false;
bool collidable = false;
bool looked_at = false;
@ -427,18 +426,18 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef ItemBuilder Builder;
struct Traits;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_FLOOR = 4,
VT_TOUCH_BITS = 6,
VT_MESH_BITS = 8,
VT_OBJECT_ID = 10,
VT_ACTIVE_STATE = 12,
VT_ACTIVE_STATE = 4,
VT_ANIM_NUMBER = 6,
VT_FRAME_NUMBER = 8,
VT_IS_AIRBORNE = 10,
VT_REQUIRED_STATE = 12,
VT_TARGET_STATE = 14,
VT_REQUIRED_STATE = 16,
VT_ANIM_NUMBER = 18,
VT_FRAME_NUMBER = 20,
VT_ROOM_NUMBER = 22,
VT_VELOCITY = 24,
VT_VERTICAL_VELOCITY = 26,
VT_VELOCITY = 16,
VT_FLOOR = 18,
VT_TOUCH_BITS = 20,
VT_MESH_BITS = 22,
VT_OBJECT_ID = 24,
VT_ROOM_NUMBER = 26,
VT_HIT_POINTS = 28,
VT_BOX_NUMBER = 30,
VT_TIMER = 32,
@ -454,20 +453,40 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_TRIGGERED = 52,
VT_ACTIVE = 54,
VT_STATUS = 56,
VT_IS_AIRBORNE = 58,
VT_HIT_STAUTS = 60,
VT_COLLIDABLE = 62,
VT_LOOKED_AT = 64,
VT_AI_BITS = 66,
VT_SWAP_MESH_FLAGS = 68,
VT_DATA_TYPE = 70,
VT_DATA = 72,
VT_LUA_NAME = 74,
VT_LUA_ON_KILLED_NAME = 76,
VT_LUA_ON_HIT_NAME = 78,
VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME = 80,
VT_LUA_ON_COLLIDED_WITH_ROOM_NAME = 82
VT_HIT_STAUTS = 58,
VT_COLLIDABLE = 60,
VT_LOOKED_AT = 62,
VT_AI_BITS = 64,
VT_SWAP_MESH_FLAGS = 66,
VT_DATA_TYPE = 68,
VT_DATA = 70,
VT_LUA_NAME = 72,
VT_LUA_ON_KILLED_NAME = 74,
VT_LUA_ON_HIT_NAME = 76,
VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME = 78,
VT_LUA_ON_COLLIDED_WITH_ROOM_NAME = 80
};
int32_t active_state() const {
return GetField<int32_t>(VT_ACTIVE_STATE, 0);
}
int32_t anim_number() const {
return GetField<int32_t>(VT_ANIM_NUMBER, 0);
}
int32_t frame_number() const {
return GetField<int32_t>(VT_FRAME_NUMBER, 0);
}
bool is_airborne() const {
return GetField<uint8_t>(VT_IS_AIRBORNE, 0) != 0;
}
int32_t required_state() const {
return GetField<int32_t>(VT_REQUIRED_STATE, 0);
}
int32_t target_state() const {
return GetField<int32_t>(VT_TARGET_STATE, 0);
}
const TEN::Save::Vector3 *velocity() const {
return GetStruct<const TEN::Save::Vector3 *>(VT_VELOCITY);
}
int32_t floor() const {
return GetField<int32_t>(VT_FLOOR, 0);
}
@ -480,30 +499,9 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
int32_t object_id() const {
return GetField<int32_t>(VT_OBJECT_ID, 0);
}
int32_t active_state() const {
return GetField<int32_t>(VT_ACTIVE_STATE, 0);
}
int32_t target_state() const {
return GetField<int32_t>(VT_TARGET_STATE, 0);
}
int32_t required_state() const {
return GetField<int32_t>(VT_REQUIRED_STATE, 0);
}
int32_t anim_number() const {
return GetField<int32_t>(VT_ANIM_NUMBER, 0);
}
int32_t frame_number() const {
return GetField<int32_t>(VT_FRAME_NUMBER, 0);
}
int32_t room_number() const {
return GetField<int32_t>(VT_ROOM_NUMBER, 0);
}
int32_t velocity() const {
return GetField<int32_t>(VT_VELOCITY, 0);
}
int32_t vertical_velocity() const {
return GetField<int32_t>(VT_VERTICAL_VELOCITY, 0);
}
int32_t hit_points() const {
return GetField<int32_t>(VT_HIT_POINTS, 0);
}
@ -549,9 +547,6 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
int32_t status() const {
return GetField<int32_t>(VT_STATUS, 0);
}
bool is_airborne() const {
return GetField<uint8_t>(VT_IS_AIRBORNE, 0) != 0;
}
bool hit_stauts() const {
return GetField<uint8_t>(VT_HIT_STAUTS, 0) != 0;
}
@ -657,18 +652,18 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<int32_t>(verifier, VT_ACTIVE_STATE) &&
VerifyField<int32_t>(verifier, VT_ANIM_NUMBER) &&
VerifyField<int32_t>(verifier, VT_FRAME_NUMBER) &&
VerifyField<uint8_t>(verifier, VT_IS_AIRBORNE) &&
VerifyField<int32_t>(verifier, VT_REQUIRED_STATE) &&
VerifyField<int32_t>(verifier, VT_TARGET_STATE) &&
VerifyField<TEN::Save::Vector3>(verifier, VT_VELOCITY) &&
VerifyField<int32_t>(verifier, VT_FLOOR) &&
VerifyField<int32_t>(verifier, VT_TOUCH_BITS) &&
VerifyField<int32_t>(verifier, VT_MESH_BITS) &&
VerifyField<int32_t>(verifier, VT_OBJECT_ID) &&
VerifyField<int32_t>(verifier, VT_ACTIVE_STATE) &&
VerifyField<int32_t>(verifier, VT_TARGET_STATE) &&
VerifyField<int32_t>(verifier, VT_REQUIRED_STATE) &&
VerifyField<int32_t>(verifier, VT_ANIM_NUMBER) &&
VerifyField<int32_t>(verifier, VT_FRAME_NUMBER) &&
VerifyField<int32_t>(verifier, VT_ROOM_NUMBER) &&
VerifyField<int32_t>(verifier, VT_VELOCITY) &&
VerifyField<int32_t>(verifier, VT_VERTICAL_VELOCITY) &&
VerifyField<int32_t>(verifier, VT_HIT_POINTS) &&
VerifyField<int32_t>(verifier, VT_BOX_NUMBER) &&
VerifyField<int32_t>(verifier, VT_TIMER) &&
@ -685,7 +680,6 @@ struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VerifyField<uint8_t>(verifier, VT_TRIGGERED) &&
VerifyField<uint8_t>(verifier, VT_ACTIVE) &&
VerifyField<int32_t>(verifier, VT_STATUS) &&
VerifyField<uint8_t>(verifier, VT_IS_AIRBORNE) &&
VerifyField<uint8_t>(verifier, VT_HIT_STAUTS) &&
VerifyField<uint8_t>(verifier, VT_COLLIDABLE) &&
VerifyField<uint8_t>(verifier, VT_LOOKED_AT) &&
@ -803,6 +797,27 @@ struct ItemBuilder {
typedef Item Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_active_state(int32_t active_state) {
fbb_.AddElement<int32_t>(Item::VT_ACTIVE_STATE, active_state, 0);
}
void add_anim_number(int32_t anim_number) {
fbb_.AddElement<int32_t>(Item::VT_ANIM_NUMBER, anim_number, 0);
}
void add_frame_number(int32_t frame_number) {
fbb_.AddElement<int32_t>(Item::VT_FRAME_NUMBER, frame_number, 0);
}
void add_is_airborne(bool is_airborne) {
fbb_.AddElement<uint8_t>(Item::VT_IS_AIRBORNE, static_cast<uint8_t>(is_airborne), 0);
}
void add_required_state(int32_t required_state) {
fbb_.AddElement<int32_t>(Item::VT_REQUIRED_STATE, required_state, 0);
}
void add_target_state(int32_t target_state) {
fbb_.AddElement<int32_t>(Item::VT_TARGET_STATE, target_state, 0);
}
void add_velocity(const TEN::Save::Vector3 *velocity) {
fbb_.AddStruct(Item::VT_VELOCITY, velocity);
}
void add_floor(int32_t floor) {
fbb_.AddElement<int32_t>(Item::VT_FLOOR, floor, 0);
}
@ -815,30 +830,9 @@ struct ItemBuilder {
void add_object_id(int32_t object_id) {
fbb_.AddElement<int32_t>(Item::VT_OBJECT_ID, object_id, 0);
}
void add_active_state(int32_t active_state) {
fbb_.AddElement<int32_t>(Item::VT_ACTIVE_STATE, active_state, 0);
}
void add_target_state(int32_t target_state) {
fbb_.AddElement<int32_t>(Item::VT_TARGET_STATE, target_state, 0);
}
void add_required_state(int32_t required_state) {
fbb_.AddElement<int32_t>(Item::VT_REQUIRED_STATE, required_state, 0);
}
void add_anim_number(int32_t anim_number) {
fbb_.AddElement<int32_t>(Item::VT_ANIM_NUMBER, anim_number, 0);
}
void add_frame_number(int32_t frame_number) {
fbb_.AddElement<int32_t>(Item::VT_FRAME_NUMBER, frame_number, 0);
}
void add_room_number(int32_t room_number) {
fbb_.AddElement<int32_t>(Item::VT_ROOM_NUMBER, room_number, 0);
}
void add_velocity(int32_t velocity) {
fbb_.AddElement<int32_t>(Item::VT_VELOCITY, velocity, 0);
}
void add_vertical_velocity(int32_t vertical_velocity) {
fbb_.AddElement<int32_t>(Item::VT_VERTICAL_VELOCITY, vertical_velocity, 0);
}
void add_hit_points(int32_t hit_points) {
fbb_.AddElement<int32_t>(Item::VT_HIT_POINTS, hit_points, 0);
}
@ -884,9 +878,6 @@ struct ItemBuilder {
void add_status(int32_t status) {
fbb_.AddElement<int32_t>(Item::VT_STATUS, status, 0);
}
void add_is_airborne(bool is_airborne) {
fbb_.AddElement<uint8_t>(Item::VT_IS_AIRBORNE, static_cast<uint8_t>(is_airborne), 0);
}
void add_hit_stauts(bool hit_stauts) {
fbb_.AddElement<uint8_t>(Item::VT_HIT_STAUTS, static_cast<uint8_t>(hit_stauts), 0);
}
@ -936,18 +927,18 @@ struct ItemBuilder {
inline flatbuffers::Offset<Item> CreateItem(
flatbuffers::FlatBufferBuilder &_fbb,
int32_t active_state = 0,
int32_t anim_number = 0,
int32_t frame_number = 0,
bool is_airborne = false,
int32_t required_state = 0,
int32_t target_state = 0,
const TEN::Save::Vector3 *velocity = 0,
int32_t floor = 0,
int32_t touch_bits = 0,
int32_t mesh_bits = 0,
int32_t object_id = 0,
int32_t active_state = 0,
int32_t target_state = 0,
int32_t required_state = 0,
int32_t anim_number = 0,
int32_t frame_number = 0,
int32_t room_number = 0,
int32_t velocity = 0,
int32_t vertical_velocity = 0,
int32_t hit_points = 0,
int32_t box_number = 0,
int32_t timer = 0,
@ -963,7 +954,6 @@ inline flatbuffers::Offset<Item> CreateItem(
bool triggered = false,
bool active = false,
int32_t status = 0,
bool is_airborne = false,
bool hit_stauts = false,
bool collidable = false,
bool looked_at = false,
@ -998,25 +988,24 @@ inline flatbuffers::Offset<Item> CreateItem(
builder_.add_timer(timer);
builder_.add_box_number(box_number);
builder_.add_hit_points(hit_points);
builder_.add_vertical_velocity(vertical_velocity);
builder_.add_velocity(velocity);
builder_.add_room_number(room_number);
builder_.add_frame_number(frame_number);
builder_.add_anim_number(anim_number);
builder_.add_required_state(required_state);
builder_.add_target_state(target_state);
builder_.add_active_state(active_state);
builder_.add_object_id(object_id);
builder_.add_mesh_bits(mesh_bits);
builder_.add_touch_bits(touch_bits);
builder_.add_floor(floor);
builder_.add_velocity(velocity);
builder_.add_target_state(target_state);
builder_.add_required_state(required_state);
builder_.add_frame_number(frame_number);
builder_.add_anim_number(anim_number);
builder_.add_active_state(active_state);
builder_.add_data_type(data_type);
builder_.add_looked_at(looked_at);
builder_.add_collidable(collidable);
builder_.add_hit_stauts(hit_stauts);
builder_.add_is_airborne(is_airborne);
builder_.add_active(active);
builder_.add_triggered(triggered);
builder_.add_is_airborne(is_airborne);
return builder_.Finish();
}
@ -1027,18 +1016,18 @@ struct Item::Traits {
inline flatbuffers::Offset<Item> CreateItemDirect(
flatbuffers::FlatBufferBuilder &_fbb,
int32_t active_state = 0,
int32_t anim_number = 0,
int32_t frame_number = 0,
bool is_airborne = false,
int32_t required_state = 0,
int32_t target_state = 0,
const TEN::Save::Vector3 *velocity = 0,
int32_t floor = 0,
int32_t touch_bits = 0,
int32_t mesh_bits = 0,
int32_t object_id = 0,
int32_t active_state = 0,
int32_t target_state = 0,
int32_t required_state = 0,
int32_t anim_number = 0,
int32_t frame_number = 0,
int32_t room_number = 0,
int32_t velocity = 0,
int32_t vertical_velocity = 0,
int32_t hit_points = 0,
int32_t box_number = 0,
int32_t timer = 0,
@ -1054,7 +1043,6 @@ inline flatbuffers::Offset<Item> CreateItemDirect(
bool triggered = false,
bool active = false,
int32_t status = 0,
bool is_airborne = false,
bool hit_stauts = false,
bool collidable = false,
bool looked_at = false,
@ -1075,18 +1063,18 @@ inline flatbuffers::Offset<Item> CreateItemDirect(
auto lua_on_collided_with_room_name__ = lua_on_collided_with_room_name ? _fbb.CreateString(lua_on_collided_with_room_name) : 0;
return TEN::Save::CreateItem(
_fbb,
active_state,
anim_number,
frame_number,
is_airborne,
required_state,
target_state,
velocity,
floor,
touch_bits,
mesh_bits,
object_id,
active_state,
target_state,
required_state,
anim_number,
frame_number,
room_number,
velocity,
vertical_velocity,
hit_points,
box_number,
timer,
@ -1102,7 +1090,6 @@ inline flatbuffers::Offset<Item> CreateItemDirect(
triggered,
active,
status,
is_airborne,
hit_stauts,
collidable,
looked_at,
@ -6413,18 +6400,18 @@ inline ItemT *Item::UnPack(const flatbuffers::resolver_function_t *_resolver) co
inline void Item::UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = active_state(); _o->active_state = _e; }
{ auto _e = anim_number(); _o->anim_number = _e; }
{ auto _e = frame_number(); _o->frame_number = _e; }
{ auto _e = is_airborne(); _o->is_airborne = _e; }
{ auto _e = required_state(); _o->required_state = _e; }
{ auto _e = target_state(); _o->target_state = _e; }
{ auto _e = velocity(); if (_e) _o->velocity = std::unique_ptr<TEN::Save::Vector3>(new TEN::Save::Vector3(*_e)); }
{ auto _e = floor(); _o->floor = _e; }
{ auto _e = touch_bits(); _o->touch_bits = _e; }
{ auto _e = mesh_bits(); _o->mesh_bits = _e; }
{ auto _e = object_id(); _o->object_id = _e; }
{ auto _e = active_state(); _o->active_state = _e; }
{ auto _e = target_state(); _o->target_state = _e; }
{ auto _e = required_state(); _o->required_state = _e; }
{ auto _e = anim_number(); _o->anim_number = _e; }
{ auto _e = frame_number(); _o->frame_number = _e; }
{ auto _e = room_number(); _o->room_number = _e; }
{ auto _e = velocity(); _o->velocity = _e; }
{ auto _e = vertical_velocity(); _o->vertical_velocity = _e; }
{ auto _e = hit_points(); _o->hit_points = _e; }
{ auto _e = box_number(); _o->box_number = _e; }
{ auto _e = timer(); _o->timer = _e; }
@ -6440,7 +6427,6 @@ inline void Item::UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_r
{ auto _e = triggered(); _o->triggered = _e; }
{ auto _e = active(); _o->active = _e; }
{ auto _e = status(); _o->status = _e; }
{ auto _e = is_airborne(); _o->is_airborne = _e; }
{ auto _e = hit_stauts(); _o->hit_stauts = _e; }
{ auto _e = collidable(); _o->collidable = _e; }
{ auto _e = looked_at(); _o->looked_at = _e; }
@ -6463,18 +6449,18 @@ inline flatbuffers::Offset<Item> CreateItem(flatbuffers::FlatBufferBuilder &_fbb
(void)_rehasher;
(void)_o;
struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ItemT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _active_state = _o->active_state;
auto _anim_number = _o->anim_number;
auto _frame_number = _o->frame_number;
auto _is_airborne = _o->is_airborne;
auto _required_state = _o->required_state;
auto _target_state = _o->target_state;
auto _velocity = _o->velocity ? _o->velocity.get() : 0;
auto _floor = _o->floor;
auto _touch_bits = _o->touch_bits;
auto _mesh_bits = _o->mesh_bits;
auto _object_id = _o->object_id;
auto _active_state = _o->active_state;
auto _target_state = _o->target_state;
auto _required_state = _o->required_state;
auto _anim_number = _o->anim_number;
auto _frame_number = _o->frame_number;
auto _room_number = _o->room_number;
auto _velocity = _o->velocity;
auto _vertical_velocity = _o->vertical_velocity;
auto _hit_points = _o->hit_points;
auto _box_number = _o->box_number;
auto _timer = _o->timer;
@ -6490,7 +6476,6 @@ inline flatbuffers::Offset<Item> CreateItem(flatbuffers::FlatBufferBuilder &_fbb
auto _triggered = _o->triggered;
auto _active = _o->active;
auto _status = _o->status;
auto _is_airborne = _o->is_airborne;
auto _hit_stauts = _o->hit_stauts;
auto _collidable = _o->collidable;
auto _looked_at = _o->looked_at;
@ -6505,18 +6490,18 @@ inline flatbuffers::Offset<Item> CreateItem(flatbuffers::FlatBufferBuilder &_fbb
auto _lua_on_collided_with_room_name = _o->lua_on_collided_with_room_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_collided_with_room_name);
return TEN::Save::CreateItem(
_fbb,
_active_state,
_anim_number,
_frame_number,
_is_airborne,
_required_state,
_target_state,
_velocity,
_floor,
_touch_bits,
_mesh_bits,
_object_id,
_active_state,
_target_state,
_required_state,
_anim_number,
_frame_number,
_room_number,
_velocity,
_vertical_velocity,
_hit_points,
_box_number,
_timer,
@ -6532,7 +6517,6 @@ inline flatbuffers::Offset<Item> CreateItem(flatbuffers::FlatBufferBuilder &_fbb
_triggered,
_active,
_status,
_is_airborne,
_hit_stauts,
_collidable,
_looked_at,

View file

@ -1,45 +1,46 @@
include "ten_itemdata.fbs";
namespace TEN.Save;
struct RoomVector {
room: uint32;
y_location: uint32;
room: uint32;
y_location: uint32;
}
table Item {
floor: int;
touch_bits: int32;
mesh_bits: int32;
object_id: int32;
active_state: int32;
target_state: int32;
required_state: int32;
anim_number: int32;
frame_number: int32;
room_number: int32;
velocity: int32;
vertical_velocity: int32;
hit_points: int32;
box_number: int32;
timer: int32;
active_state: int32;
anim_number: int32;
frame_number: int32;
is_airborne: bool;
required_state: int32;
target_state: int32;
velocity: Vector3;
floor: int;
touch_bits: int32;
mesh_bits: int32;
object_id: int32;
room_number: int32;
hit_points: int32;
box_number: int32;
timer: int32;
color: Vector4;
flags: int32;
trigger_flags: int32;
carried_item: int32;
after_death: int32;
item_flags: [int32];
flags: int32;
trigger_flags: int32;
carried_item: int32;
after_death: int32;
item_flags: [int32];
pose: Position;
next_item: int32;
next_item_active: int32;
triggered: bool;
active: bool;
status: int32;
is_airborne: bool;
hit_stauts: bool;
collidable: bool;
looked_at: bool;
ai_bits: int32;
swap_mesh_flags: int32;
data: TEN.Save.ItemData;
data: TEN.Save.ItemData;
lua_name: string;
lua_on_killed_name: string;
lua_on_hit_name: string;