Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<>
- struct ClassMetadata<::Visual::SpriteComponent> : public IClassMetadata
- {
- std::type_index GetTypeIndex() const override
- {
- return typeid(Visual::SpriteComponent);
- }
- // Список на базовые метаданные. Нужен для вызова сгенерированных методов для базовых классов
- const std::vector<const Visual::IClassMetadata*>& GetBaseMetas() const override
- {
- static std::vector<const Visual::IClassMetadata*> classes = {
- Visual::MaterialComponent::GetMetaStatic(),
- };
- return classes;
- }
- // Загрузка
- void Load(BaseInputArchive& archive, Serializable& obj) const override
- {
- auto&& value = static_cast<::Visual::SpriteComponent&>(obj);
- // Вызов базовых методов загрузки
- IClassMetadata::Load(archive, value);
- Visual::Ser::Load(archive, value._color, VSO_ARCHIVE_KEY("color", 62411));
- ManagedSpriteOrTexture ___spriteOrTexture;
- if (Visual::Ser::Load(archive, ___spriteOrTexture, VSO_ARCHIVE_KEY("spriteOrTexture", 41639))) {
- value.SetSpriteOrTexture(___spriteOrTexture);
- }
- }
- // Сохранение доступно только для редакторов
- #if VSO_EDITOR_ENABLED
- void Save(BaseOutputArchive& archive, const Serializable& obj) const override
- {
- auto&& value = static_cast<const ::Visual::SpriteComponent&>(obj);
- using namespace Visual;
- // Вызов базовых методов сохранения
- IClassMetadata::Save(archive, value);
- // Не пишем дефолтные значения, если не требуется
- if (archive.IsWriteDefaults() || value._color != Color::WHITE) {
- Visual::Ser::Save(archive, value._color, VSO_ARCHIVE_KEY("color", 62411));
- }
- if (archive.IsWriteDefaults() || !Visual::IsDefault(value._spriteOrTexture)) {
- Visual::Ser::Save(archive, value._spriteOrTexture, VSO_ARCHIVE_KEY("spriteOrTexture", 41639));
- }
- }
- #endif
-
- BaseCloneable* MakeClone(const BaseCloneable& obj) const override
- {
- auto&& value = boost::polymorphic_downcast<const ::Visual::SpriteComponent*>(&obj);
- return new Visual::SpriteComponent(*value);
- }
-
- void TryRegisterEvents(Entity* entity, NodeSubscription& subscriptions, bool addEventCallbackToEnd) const override
- {
- auto value = boost::polymorphic_downcast<Visual::SpriteComponent*>(entity);
- NodeSubscription::TryRegisterEvents(value, subscriptions, addEventCallbackToEnd);
- }
- // Биндинг свойств для системы анимаций
- void Build(const PropertiesBinder& binder) const override
- {
- IClassMetadata::Build(binder);
- binder.AddProperty("color", std::make_unique<MethodProperty<Color, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetColor, &::Visual::SpriteComponent::SetColor));
- binder.AddProperty("alpha", std::make_unique<MethodProperty<float, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetAlpha, &::Visual::SpriteComponent::SetAlpha));
- binder.AddProperty("id", std::make_unique<MethodProperty<std::string, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetId, &::Visual::SpriteComponent::SetId));
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement