34 std::type_index ti(
typeid(T));
40 if (std::holds_alternative<HideInInspectorTag>(option)) {
43 else if (std::holds_alternative<EditorIconTag>(option)) {
44 iconPath = std::get<EditorIconTag>(option).Path;
52 [](std::weak_ptr<GameObject> go) ->
Component* {
53 if (std::shared_ptr<GameObject> obj = go.lock()) {
54 return obj->GetComponent<T>();
58 [](std::weak_ptr<GameObject> go) ->
Component* {
59 if (std::shared_ptr<GameObject> obj = go.lock()) {
60 return &obj->AddComponent<T>();
64 [](std::weak_ptr<GameObject> go) ->
void {
65 if (std::shared_ptr<GameObject> obj = go.lock()) {
66 obj->RemoveComponent<T>();
79 for (
auto&& opt : options) {
80 if (std::holds_alternative<FlattenTag>(opt)) {
83 else if (std::holds_alternative<DisplayNameTag>(opt)) {
84 meta.
displayName = std::get<DisplayNameTag>(opt).value;
86 else if (std::holds_alternative<TooltipTag>(opt)) {
87 meta.
tooltip = std::get<TooltipTag>(opt).text;
89 else if (std::holds_alternative<ReadOnlyTag>(opt)) {
92 else if (std::holds_alternative<ColorTag>(opt)) {
104 std::string typeName =
typeid(FieldType).name();
105 size_t offset =
reinterpret_cast<size_t>(&(
reinterpret_cast<Class
const volatile*
>(0)->*member));
108 if (customFields.find(typeName) != customFields.end())
std::variant< HideInInspectorTag, EditorIconTag, FlattenTag, DisplayNameTag, TooltipTag, ReadOnlyTag, ColorTag > FieldOption