sprite.monkey2 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. Namespace mojo3d
  2. #rem monkeydoc SpriteMode enumeration.
  3. | LightType | Description
  4. |:--------------|:-----------
  5. | `Billboard` | Sprite always faces the camera, eg: like a lens flare.
  6. | `Upright` | Sprite faces the camera but remains upright, eg: like a tree.
  7. | `Fixed` | Sprite is not affected by the camera.
  8. #end
  9. Enum SpriteMode
  10. Billboard=0
  11. Upright=1
  12. Fixed=2
  13. End
  14. #rem monkeydoc The Sprite class.
  15. #end
  16. Class Sprite Extends Renderable
  17. #rem monkeydoc Creates a new sprite.
  18. #end
  19. Method New( parent:Entity=Null )
  20. Super.New( parent )
  21. Global _defaultMaterial:=New SpriteMaterial
  22. Name="Sprite"
  23. Material=_defaultMaterial
  24. AddInstance( New Variant[]( parent ) )
  25. Visible=True
  26. End
  27. Method New( material:Material,parent:Entity=Null )
  28. Super.New( parent )
  29. Name="Sprite"
  30. Material=material
  31. AddInstance( New Variant[]( material,parent ) )
  32. Visible=True
  33. End
  34. Method New( sprite:Sprite,parent:Entity )
  35. Super.New( sprite,parent )
  36. _material=sprite._material
  37. _handle=sprite._handle
  38. _mode=sprite._mode
  39. AddInstance( sprite )
  40. End
  41. #rem monkeydoc Copies the sprite.
  42. #end
  43. Method Copy:Sprite( parent:Entity=Null ) Override
  44. Local copy:=New Sprite( Self,parent )
  45. CopyTo( copy )
  46. Return copy
  47. End
  48. #rem monkeydoc Material used to render the sprite.
  49. This must currently be an instance of a SpriteMaterial.
  50. #end
  51. [jsonify=1]
  52. Property Material:Material()
  53. Return _material
  54. Setter( material:Material )
  55. _material=material
  56. End
  57. #rem monkeydoc Rect within texture to draw.
  58. #end
  59. [jsonify=1]
  60. Property TextureRect:Rectf()
  61. Return _textureRect
  62. Setter( textureRect:Rectf )
  63. _textureRect=textureRect
  64. End
  65. #rem monkeydoc Sprite handle.
  66. Defaults to 0.5,0.5.
  67. #end
  68. [jsonify=1]
  69. Property Handle:Vec2f()
  70. Return _handle
  71. Setter( handle:Vec2f )
  72. _handle=handle
  73. End
  74. #rem monkeydoc Sprite mode.
  75. Defaults to SpriteMode.Billboard.
  76. #end
  77. [jsonify=1]
  78. Property Mode:SpriteMode()
  79. Return _mode
  80. Setter( mode:SpriteMode )
  81. _mode=mode
  82. End
  83. Protected
  84. Method OnRender( rq:RenderQueue ) Override
  85. rq.AddSpriteOp( Self )
  86. End
  87. Private
  88. Field _material:Material
  89. Field _textureRect:=New Rectf( 0,0,1,1 )
  90. Field _handle:Vec2f=New Vec2f( .5,.5 )
  91. Field _mode:SpriteMode
  92. End