BsSpriteTexture.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "BsSpriteTexture.h"
  2. #include "BsSpriteTextureRTTI.h"
  3. #include "CmTexture.h"
  4. #include "CmResources.h"
  5. using namespace CamelotFramework;
  6. namespace BansheeEngine
  7. {
  8. SpriteTexture::SpriteTexture(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
  9. :Resource(false), mUVOffset(uvOffset), mUVScale(uvScale), mAtlasTexture(texture)
  10. {
  11. }
  12. const HTexture& SpriteTexture::getTexture() const
  13. {
  14. return mAtlasTexture;
  15. }
  16. Vector2 SpriteTexture::transformUV(const Vector2& uv) const
  17. {
  18. return mUVOffset + uv * mUVScale;
  19. }
  20. const HSpriteTexture& SpriteTexture::dummy()
  21. {
  22. static HSpriteTexture dummyTex = create(Texture::dummy());
  23. return dummyTex;
  24. }
  25. HSpriteTexture SpriteTexture::create(const HTexture& texture)
  26. {
  27. SpriteTexturePtr texturePtr = cm_core_ptr<SpriteTexture, PoolAlloc>
  28. (new (cm_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), texture));
  29. return static_resource_cast<SpriteTexture>(gResources().createResourceHandle(texturePtr));
  30. }
  31. HSpriteTexture SpriteTexture::create(const Vector2& uvOffset, const Vector2& uvScale, const HTexture& texture)
  32. {
  33. SpriteTexturePtr texturePtr = cm_core_ptr<SpriteTexture, PoolAlloc>
  34. (new (cm_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(uvOffset, uvScale, texture));
  35. return static_resource_cast<SpriteTexture>(gResources().createResourceHandle(texturePtr));
  36. }
  37. SpriteTexturePtr SpriteTexture::createEmpty()
  38. {
  39. SpriteTexturePtr texturePtr = cm_core_ptr<SpriteTexture, PoolAlloc>
  40. (new (cm_alloc<SpriteTexture, PoolAlloc>()) SpriteTexture(Vector2(0.0f, 0.0f), Vector2(1.0f, 1.0f), Texture::dummy()));
  41. return texturePtr;
  42. }
  43. RTTITypeBase* SpriteTexture::getRTTIStatic()
  44. {
  45. return SpriteTextureRTTI::instance();
  46. }
  47. RTTITypeBase* SpriteTexture::getRTTI() const
  48. {
  49. return SpriteTexture::getRTTIStatic();
  50. }
  51. }