This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/core/data/model_attachment.hpp

61 lines
1.7 KiB
C++
Raw Normal View History

#pragma once
#include "natives.hpp"
namespace big
{
struct model_attachment
{
Hash model_hash;
Vector3 position;
Vector3 rotation;
bool has_collision;
bool is_visible;
bool is_invincible;
};
static void to_json(nlohmann::json& j, const model_attachment& attachment)
{
j = nlohmann::json{ {"model_hash", attachment.model_hash},
{"position_x", attachment.position.x}, {"position_y", attachment.position.y}, {"position_z", attachment.position.z},
{"rotation_x", attachment.rotation.x}, {"rotation_y", attachment.rotation.y}, {"rotation_z", attachment.rotation.z},
{"has_collision", attachment.has_collision},
{"is_visible", attachment.is_visible},
{"is_invincible", attachment.is_invincible}
};
};
template <typename ValueType>
static void set_from_key_or_default(const nlohmann::json& j, const char* key, ValueType& value, ValueType default_value = {})
{
if (j.contains(key))
{
j.at(key).get_to(value);
}
else
{
value = default_value;
}
}
static void from_json(const nlohmann::json& j, model_attachment& attachment)
{
set_from_key_or_default(j, "model_hash", attachment.model_hash);
set_from_key_or_default(j, "position_x", attachment.position.x);
set_from_key_or_default(j, "position_y", attachment.position.y);
set_from_key_or_default(j, "position_z", attachment.position.z);
set_from_key_or_default(j, "rotation_x", attachment.rotation.x);
set_from_key_or_default(j, "rotation_y", attachment.rotation.y);
set_from_key_or_default(j, "rotation_z", attachment.rotation.z);
set_from_key_or_default(j, "has_collision", attachment.has_collision);
set_from_key_or_default(j, "is_visible", attachment.is_visible, true);
set_from_key_or_default(j, "is_invincible", attachment.is_invincible);
}
};