| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsPrerequisites.h"
- #include "Reflection/BsRTTIType.h"
- #include "Reflection/BsRTTIPlain.h"
- #include "RTTI/BsUUIDRTTI.h"
- #include "RTTI/BsStringRTTI.h"
- #include "Library/BsProjectResourceMeta.h"
- #include "Resources/BsResourceMetaData.h"
- #include "Importer/BsImportOptions.h"
- #include "Resources/BsResources.h"
- #include "Image/BsTexture.h"
- namespace bs
- {
- /** @cond RTTI */
- /** @addtogroup RTTI-Impl-Editor
- * @{
- */
- class ProjectResourceMetaRTTI : public RTTIType<ProjectResourceMeta, IReflectable, ProjectResourceMetaRTTI>
- {
- private:
- BS_BEGIN_RTTI_MEMBERS
- BS_RTTI_MEMBER_PLAIN(mName, 0)
- BS_RTTI_MEMBER_PLAIN(mUUID, 1)
- BS_RTTI_MEMBER_PLAIN(mTypeId, 2)
- BS_RTTI_MEMBER_REFLPTR(mResourceMeta, 3)
- BS_RTTI_MEMBER_REFLPTR(mUserData, 4)
- BS_END_RTTI_MEMBERS
- // We want to store textures directly in this object rather than referencing them externally, so we need to strip
- // away resource handles before saving them, and restore afterwards
- #define GETTER_SETTER_ICON(icon) \
- SPtr<Texture> get##icon(ProjectResourceMeta* obj) \
- { \
- if(obj->mPreviewIcons.icon.isLoaded(false)) \
- return obj->mPreviewIcons.icon.getInternalPtr(); \
- \
- return nullptr; \
- } \
- \
- void set##icon(ProjectResourceMeta* obj, SPtr<Texture> data) \
- { \
- obj->mPreviewIcons.icon = static_resource_cast<Texture>(gResources()._createResourceHandle(data)); \
- } \
- GETTER_SETTER_ICON(icon16)
- GETTER_SETTER_ICON(icon32)
- GETTER_SETTER_ICON(icon48)
- GETTER_SETTER_ICON(icon64)
- GETTER_SETTER_ICON(icon96)
- GETTER_SETTER_ICON(icon128)
- GETTER_SETTER_ICON(icon192)
- GETTER_SETTER_ICON(icon256)
- public:
- ProjectResourceMetaRTTI()
- {
- addReflectablePtrField("mPreviewIcon16", 5,
- &ProjectResourceMetaRTTI::geticon16, &ProjectResourceMetaRTTI::seticon16,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon32", 6,
- &ProjectResourceMetaRTTI::geticon32, &ProjectResourceMetaRTTI::seticon32,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon48", 7,
- &ProjectResourceMetaRTTI::geticon48, &ProjectResourceMetaRTTI::seticon48,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon64", 8,
- &ProjectResourceMetaRTTI::geticon64, &ProjectResourceMetaRTTI::seticon64,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon96", 9,
- &ProjectResourceMetaRTTI::geticon96, &ProjectResourceMetaRTTI::seticon96,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon128", 10,
- &ProjectResourceMetaRTTI::geticon128, &ProjectResourceMetaRTTI::seticon128,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon192", 11,
- &ProjectResourceMetaRTTI::geticon192, &ProjectResourceMetaRTTI::seticon192,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- addReflectablePtrField("mPreviewIcon256", 12,
- &ProjectResourceMetaRTTI::geticon256, &ProjectResourceMetaRTTI::seticon256,
- RTTIFieldInfo(RTTIFieldFlag::SkipInReferenceSearch));
- }
- const String& getRTTIName() override
- {
- static String name = "ProjectResourceMeta";
- return name;
- }
- UINT32 getRTTIId() override
- {
- return TID_ProjectResourceMeta;
- }
- SPtr<IReflectable> newRTTIObject() override
- {
- return ProjectResourceMeta::createEmpty();
- }
- };
- class ProjectFileMetaRTTI : public RTTIType<ProjectFileMeta, IReflectable, ProjectFileMetaRTTI>
- {
- private:
- BS_BEGIN_RTTI_MEMBERS
- BS_RTTI_MEMBER_REFLPTR(mImportOptions, 1)
- BS_RTTI_MEMBER_PLAIN(mIncludeInBuild, 4)
- BS_RTTI_MEMBER_REFLPTR_ARRAY(mResourceMetaData, 5)
- BS_RTTI_MEMBER_REFLPTR_ARRAY(mInactiveResourceMetaData, 6)
- BS_END_RTTI_MEMBERS
- public:
- const String& getRTTIName() override
- {
- static String name = "ProjectFileMeta";
- return name;
- }
- UINT32 getRTTIId() override
- {
- return TID_ProjectFileMeta;
- }
- SPtr<IReflectable> newRTTIObject() override
- {
- return ProjectFileMeta::createEmpty();
- }
- };
- /** @} */
- /** @endcond */
- }
|