Advertisement
Guest User

Generated code example

a guest
Aug 22nd, 2019
1,649
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. template<>
  2. struct ClassMetadata<::Visual::SpriteComponent> : public IClassMetadata
  3. {
  4.     std::type_index GetTypeIndex() const override
  5.     {
  6.         return typeid(Visual::SpriteComponent);
  7.     }
  8.     // Список на базовые метаданные. Нужен для вызова сгенерированных методов для базовых классов
  9.     const std::vector<const Visual::IClassMetadata*>& GetBaseMetas() const override
  10.     {
  11.         static std::vector<const Visual::IClassMetadata*> classes = {
  12.             Visual::MaterialComponent::GetMetaStatic(),
  13.         };
  14.         return classes;
  15.     }
  16.     // Загрузка
  17.     void Load(BaseInputArchive& archive, Serializable& obj) const override
  18.     {
  19.         auto&& value = static_cast<::Visual::SpriteComponent&>(obj);
  20.         // Вызов базовых методов загрузки
  21.         IClassMetadata::Load(archive, value);
  22.        
  23.         Visual::Ser::Load(archive, value._color, VSO_ARCHIVE_KEY("color", 62411));
  24.        
  25.         ManagedSpriteOrTexture ___spriteOrTexture;
  26.         if (Visual::Ser::Load(archive, ___spriteOrTexture, VSO_ARCHIVE_KEY("spriteOrTexture", 41639))) {
  27.             value.SetSpriteOrTexture(___spriteOrTexture);
  28.         }
  29.     }
  30.    
  31.     // Сохранение доступно только для редакторов
  32. #if VSO_EDITOR_ENABLED
  33.     void Save(BaseOutputArchive& archive, const Serializable& obj) const override
  34.     {
  35.         auto&& value = static_cast<const ::Visual::SpriteComponent&>(obj);
  36.         using namespace Visual;
  37.    
  38.         // Вызов базовых методов сохранения
  39.         IClassMetadata::Save(archive, value);
  40.         // Не пишем дефолтные значения, если не требуется
  41.         if (archive.IsWriteDefaults() || value._color != Color::WHITE) {
  42.             Visual::Ser::Save(archive, value._color, VSO_ARCHIVE_KEY("color", 62411));
  43.         }
  44.        
  45.         if (archive.IsWriteDefaults() || !Visual::IsDefault(value._spriteOrTexture)) {
  46.             Visual::Ser::Save(archive, value._spriteOrTexture, VSO_ARCHIVE_KEY("spriteOrTexture", 41639));
  47.         }
  48.     }
  49. #endif
  50.     BaseCloneable* MakeClone(const BaseCloneable& obj) const override
  51.     {
  52.         auto&& value = boost::polymorphic_downcast<const ::Visual::SpriteComponent*>(&obj);
  53.         return new Visual::SpriteComponent(*value);
  54.     }
  55.     void TryRegisterEvents(Entity* entity, NodeSubscription& subscriptions, bool addEventCallbackToEnd) const override
  56.     {
  57.         auto value = boost::polymorphic_downcast<Visual::SpriteComponent*>(entity);
  58.         NodeSubscription::TryRegisterEvents(value, subscriptions, addEventCallbackToEnd);
  59.     }
  60.     // Биндинг свойств для системы анимаций
  61.     void Build(const PropertiesBinder& binder) const override
  62.     {
  63.         IClassMetadata::Build(binder);
  64.         binder.AddProperty("color", std::make_unique<MethodProperty<Color, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetColor, &::Visual::SpriteComponent::SetColor));
  65.         binder.AddProperty("alpha", std::make_unique<MethodProperty<float, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetAlpha, &::Visual::SpriteComponent::SetAlpha));
  66.         binder.AddProperty("id", std::make_unique<MethodProperty<std::string, Visual::SpriteComponent>>(&::Visual::SpriteComponent::GetId, &::Visual::SpriteComponent::SetId));
  67.     }
  68. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement