water.monkey2 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Namespace myapp
  2. #Import "<std>"
  3. #Import "<mojo>"
  4. #Import "<mojo3d>"
  5. #Import "assets/miramar-skybox.jpg"
  6. #Import "assets/water_normal0.png"
  7. #Import "assets/water_normal1.png"
  8. Using std..
  9. Using mojo..
  10. Using mojo3d..
  11. Class MyWindow Extends Window
  12. Field _scene:Scene
  13. Field _camera:Camera
  14. Field _light:Light
  15. Field _water:Model
  16. Method New( title:String="Simple mojo app",width:Int=640,height:Int=480,flags:WindowFlags=WindowFlags.Resizable )
  17. Super.New( title,width,height,flags )
  18. _scene=New Scene
  19. _scene.SkyTexture=Texture.Load( "asset::miramar-skybox.jpg",TextureFlags.FilterMipmap|TextureFlags.Cubemap|TextureFlags.Envmap )
  20. 'create camera
  21. '
  22. _camera=New Camera( self )
  23. _camera.Move( 0,10,-10 )
  24. _camera.AddComponent<FlyBehaviour>()
  25. 'create light
  26. '
  27. _light=New Light
  28. _light.Rotate( 54,144,0 ) 'calibrated so specular highlight matches sun on sky texture!
  29. 'create water material
  30. '
  31. Local waterMaterial:=New WaterMaterial
  32. waterMaterial.ScaleTextureMatrix( 10,10 )
  33. waterMaterial.ColorFactor=Color.SeaGreen
  34. waterMaterial.NormalTextures=New Texture[](
  35. Texture.Load( "asset::water_normal0.png",TextureFlags.WrapST|TextureFlags.FilterMipmap ),
  36. Texture.Load( "asset::water_normal1.png",TextureFlags.WrapST|TextureFlags.FilterMipmap ) )
  37. waterMaterial.Velocities=New Vec2f[](
  38. New Vec2f( .01,.03 ),
  39. New Vec2f( .02,.05 ) )
  40. 'create water
  41. '
  42. _water=Model.CreateBox( New Boxf( -50,-1,-50,50,0,50 ),1,1,1,waterMaterial )
  43. End
  44. Method OnRender( canvas:Canvas ) Override
  45. RequestRender()
  46. _scene.Update()
  47. _scene.Render( canvas )
  48. End
  49. End
  50. Function Main()
  51. New AppInstance
  52. New MyWindow
  53. App.Run()
  54. End