ReadTextureCoordinatesFromNGUI.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using UnityEngine;
  2. using System.Collections;
  3. /// <summary>
  4. /// This component is typically used on planes which are not generated by NGUI. E.g. Sperms.
  5. /// It reads texture coordinates from NGUI and applies them to the material used by the renderer on this gameObject
  6. /// </summary>
  7. public class ReadTextureCoordinatesFromNGUI : MonoBehaviour
  8. {
  9. public UIAtlas atlas;
  10. public string spriteName;
  11. public bool IsOtherAtlas;
  12. const float SPERM_SCALE_FACTOR = .75f;
  13. static float scaleFactor = SPERM_SCALE_FACTOR;
  14. void Start()
  15. {
  16. Init();
  17. }
  18. public void Init()
  19. {
  20. if (IsOtherAtlas)
  21. {
  22. if (ResolutionSwitchController.IsSD)
  23. {
  24. scaleFactor = SPERM_SCALE_FACTOR;
  25. }
  26. else
  27. if (ResolutionSwitchController.IsSHD)
  28. {
  29. scaleFactor = SPERM_SCALE_FACTOR;
  30. }
  31. atlas.coordinates = UIAtlas.Coordinates.TexCoords;
  32. UIAtlas.Sprite sprite = atlas.GetSprite(spriteName);
  33. Material m = GetComponent<Renderer>().material;
  34. m.mainTexture = atlas.texture;
  35. m.mainTextureOffset = new Vector2(sprite.inner.x, sprite.inner.y);
  36. m.mainTextureScale = new Vector2(sprite.inner.width, sprite.inner.height);
  37. atlas.coordinates = UIAtlas.Coordinates.Pixels;
  38. transform.localScale = new Vector3(sprite.inner.width * scaleFactor, sprite.inner.height * scaleFactor);
  39. }
  40. else
  41. {
  42. if (ResolutionSwitchController.IsSD)
  43. {
  44. scaleFactor = SPERM_SCALE_FACTOR * 2;
  45. }
  46. else
  47. if (ResolutionSwitchController.IsSHD)
  48. {
  49. scaleFactor = SPERM_SCALE_FACTOR / 2;
  50. }
  51. atlas.coordinates = UIAtlas.Coordinates.TexCoords;
  52. UIAtlas.Sprite sprite = atlas.GetSprite(spriteName);
  53. Material m = GetComponent<Renderer>().material;
  54. m.mainTexture = atlas.texture;
  55. m.mainTextureOffset = new Vector2(sprite.inner.x, sprite.inner.y);
  56. m.mainTextureScale = new Vector2(sprite.inner.width, sprite.inner.height);
  57. atlas.coordinates = UIAtlas.Coordinates.Pixels;
  58. transform.localScale = new Vector3(sprite.inner.width * scaleFactor, sprite.inner.height * scaleFactor);
  59. }
  60. }
  61. }