BsSpriteTexture.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "BsSpriteTexture.h"
  2. #include "BsSpriteTextureRTTI.h"
  3. #include "BsTexture.h"
  4. #include "BsResources.h"
  5. namespace BansheeEngine
  6. {
  7. SpriteTexture::SpriteTexture(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
  8. :Resource(false), mUVOffset(uvOffset), mUVScale(uvScale), mAtlasTexture(texture)
  9. {
  10. }
  11. const HTexture& SpriteTexture::getTexture() const
  12. {
  13. return mAtlasTexture;
  14. }
  15. Vector2 SpriteTexture::transformUV(const Vector2& uv) const
  16. {
  17. return mUVOffset + uv * mUVScale;
  18. }
  19. const HSpriteTexture& SpriteTexture::dummy()
  20. {
  21. static HSpriteTexture dummyTex = create(Texture::dummy());
  22. return dummyTex;
  23. }
  24. bool SpriteTexture::checkIsLoaded(const HSpriteTexture& tex)
  25. {
  26. return tex != nullptr && tex.isLoaded() && tex->getTexture() != nullptr && tex.isLoaded();
  27. }
  28. HSpriteTexture SpriteTexture::create(const HTexture& texture)
  29. {
  30. SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture, PoolAlloc>
  31. (new (bs_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), texture));
  32. texturePtr->_setThisPtr(texturePtr);
  33. texturePtr->initialize();
  34. return static_resource_cast<SpriteTexture>(gResources()._createResourceHandle(texturePtr));
  35. }
  36. HSpriteTexture SpriteTexture::create(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
  37. {
  38. SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture, PoolAlloc>
  39. (new (bs_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(uvOffset, uvScale, texture));
  40. texturePtr->_setThisPtr(texturePtr);
  41. texturePtr->initialize();
  42. return static_resource_cast<SpriteTexture>(gResources()._createResourceHandle(texturePtr));
  43. }
  44. SpriteTexturePtr SpriteTexture::createEmpty()
  45. {
  46. SpriteTexturePtr texturePtr = bs_core_ptr<SpriteTexture, PoolAlloc>
  47. (new (bs_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), Texture::dummy()));
  48. texturePtr->_setThisPtr(texturePtr);
  49. texturePtr->initialize();
  50. return texturePtr;
  51. }
  52. RTTITypeBase* SpriteTexture::getRTTIStatic()
  53. {
  54. return SpriteTextureRTTI::instance();
  55. }
  56. RTTITypeBase* SpriteTexture::getRTTI() const
  57. {
  58. return SpriteTexture::getRTTIStatic();
  59. }
  60. }