32 lines
No EOL
822 B
C++
32 lines
No EOL
822 B
C++
#pragma once
|
|
|
|
#include "datatypes/base.h"
|
|
#include <variant>
|
|
|
|
class Instance;
|
|
|
|
|
|
typedef int PropertyFlags;
|
|
const PropertyFlags PROP_HIDDEN = 1 << 0; // Hidden from the editor
|
|
const PropertyFlags PROP_NOSAVE = 1 << 1; // Do not serialize
|
|
const PropertyFlags PROP_UNIT_FLOAT = 1 << 2; // Float between 0 and 1
|
|
const PropertyFlags PROP_READONLY = 1 << 3; // Read only property, do not write
|
|
|
|
enum PropertyCategory {
|
|
PROP_CATEGORY_APPEARENCE,
|
|
PROP_CATEGORY_DATA,
|
|
PROP_CATEGORY_BEHAVIOR,
|
|
PROP_CATEGORY_PART,
|
|
PROP_CATEGORY_SURFACE,
|
|
PROP_CATEGORY_SURFACE_INPUT,
|
|
};
|
|
|
|
const int PROPERTY_CATEGORY_MAX = PROP_CATEGORY_SURFACE_INPUT;
|
|
|
|
struct PropertyMeta {
|
|
const TypeInfo* type;
|
|
PropertyFlags flags;
|
|
PropertyCategory category = PROP_CATEGORY_DATA;
|
|
};
|
|
|
|
typedef std::variant<PropertyMeta> MemberMeta; |