| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #include "BsSpriteTexture.h"
- #include "BsSpriteTextureRTTI.h"
- #include "BsTexture.h"
- #include "BsResources.h"
- namespace BansheeEngine
- {
- SpriteTexture::SpriteTexture(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
- :Resource(false), mUVOffset(uvOffset), mUVScale(uvScale), mAtlasTexture(texture)
- {
- }
- const HTexture& SpriteTexture::getTexture() const
- {
- return mAtlasTexture;
- }
- void SpriteTexture::setTexture(const HTexture& texture)
- {
- mAtlasTexture = texture;
- markDependenciesDirty();
- }
- Vector2 SpriteTexture::transformUV(const Vector2& uv) const
- {
- return mUVOffset + uv * mUVScale;
- }
- const HSpriteTexture& SpriteTexture::dummy()
- {
- static HSpriteTexture dummyTex = create(Texture::dummy());
- return dummyTex;
- }
- bool SpriteTexture::checkIsLoaded(const HSpriteTexture& tex)
- {
- return tex != nullptr && tex.isLoaded() && tex->getTexture() != nullptr && tex.isLoaded();
- }
- UINT32 SpriteTexture::getWidth() const
- {
- return Math::roundToInt(mAtlasTexture->getProperties().getWidth() * mUVScale.x);
- }
- UINT32 SpriteTexture::getHeight() const
- {
- return Math::roundToInt(mAtlasTexture->getProperties().getHeight() * mUVScale.y);
- }
- void SpriteTexture::getResourceDependencies(FrameVector<HResource>& dependencies) const
- {
- if (mAtlasTexture != nullptr)
- dependencies.push_back(mAtlasTexture);
- }
- void SpriteTexture::getCoreDependencies(Vector<CoreObject*>& dependencies)
- {
- if (mAtlasTexture.isLoaded())
- dependencies.push_back(mAtlasTexture.get());
- }
- HSpriteTexture SpriteTexture::create(const HTexture& texture)
- {
- SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture>
- (new (bs_alloc<SpriteTexture>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), texture));
- texturePtr->_setThisPtr(texturePtr);
- texturePtr->initialize();
- return static_resource_cast<SpriteTexture>(gResources()._createResourceHandle(texturePtr));
- }
- HSpriteTexture SpriteTexture::create(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
- {
- SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture>
- (new (bs_alloc<SpriteTexture>()) SpriteTexture(uvOffset, uvScale, texture));
- texturePtr->_setThisPtr(texturePtr);
- texturePtr->initialize();
- return static_resource_cast<SpriteTexture>(gResources()._createResourceHandle(texturePtr));
- }
- SpriteTexturePtr SpriteTexture::createEmpty()
- {
- SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture>
- (new (bs_alloc<SpriteTexture>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), Texture::dummy()));
- texturePtr->_setThisPtr(texturePtr);
- texturePtr->initialize();
- return texturePtr;
- }
- RTTITypeBase* SpriteTexture::getRTTIStatic()
- {
- return SpriteTextureRTTI::instance();
- }
- RTTITypeBase* SpriteTexture::getRTTI() const
- {
- return SpriteTexture::getRTTIStatic();
- }
- }
|