sprites.monkey2 2.1 KB

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