sprites.monkey2 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. Namespace myapp
  2. #Import "<std>"
  3. #Import "<mojo>"
  4. #Import "<mojo3d>"
  5. #Import "assets/miramar-skybox.jpg"
  6. #Import "assets/Acadia-Tree-Sprite.png"
  7. Using std..
  8. Using mojo..
  9. Using mojo3d..
  10. Function Main()
  11. New AppInstance
  12. New MyWindow
  13. App.Run()
  14. End
  15. Class MyWindow Extends Window
  16. Field _scene:Scene
  17. Field _camera:Camera
  18. Field _light:Light
  19. Field _ground:Model
  20. Field _sprites:=New Stack<Sprite>
  21. Method New( title:String="Simple mojo app",width:Int=640,height:Int=480,flags:WindowFlags=WindowFlags.Resizable )
  22. Super.New( title,width,height,flags )
  23. _scene=New Scene
  24. _scene.SkyTexture=_scene.LoadTexture( "asset::miramar-skybox.jpg",TextureFlags.FilterMipmap|TextureFlags.Cubemap )
  25. _scene.FogColor=Color.Sky
  26. _scene.FogNear=10
  27. _scene.FogFar=30
  28. 'create camera
  29. '
  30. _camera=New Camera( Self )
  31. _camera.Near=.1
  32. _camera.Far=100
  33. _camera.Move( 0,10,-10 )
  34. New FlyBehaviour( _camera )
  35. 'create light
  36. '
  37. _light=New Light
  38. _light.Rotate( 60,45,0 )
  39. 'create ground
  40. '
  41. _ground=Model.CreateBox( New Boxf( -50,-1,-50,50,0,50 ),1,1,1,New PbrMaterial( Color.Green ) )
  42. 'create sprites
  43. '
  44. Local material:=SpriteMaterial.Load( "asset::Acadia-Tree-Sprite.png" )
  45. ' material.AlphaDiscard=1.0/255.0
  46. For Local i:=0 Until 1000
  47. Local sprite:=New Sprite( material )
  48. sprite.Move( Rnd(-50,50),0,Rnd(-50,50) )
  49. sprite.Scale=New Vec3f( Rnd( 1,2 ),Rnd( 2,3 ),1 )
  50. sprite.Handle=New Vec2f( .5,0 )
  51. sprite.Mode=SpriteMode.Upright
  52. _sprites.Push( sprite )
  53. Next
  54. For Local i:=0 Until 100
  55. Local sx:=Rnd( 1,2 )
  56. Local box:=Model.CreateBox( New Boxf( -sx,0,-sx,sx,Rnd( 2,10 ),sx ),1,1,1,New PbrMaterial( New Color( Rnd(),Rnd(),Rnd() ) ) )
  57. box.Move( Rnd(-50,50),0,Rnd(-50,50) )
  58. next
  59. End
  60. Method OnRender( canvas:Canvas ) Override
  61. RequestRender()
  62. _scene.Update()
  63. _scene.Render( canvas )
  64. canvas.DrawText( "Width="+Width+", Height="+Height+", FPS="+App.FPS,0,0 )
  65. End
  66. End