simplelight.monkey2 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. Namespace myapp
  2. #Import "<std>"
  3. #Import "<mojo>"
  4. #Import "Slate Tiles II_D.png"
  5. #Import "Slate Tiles II_N.png"
  6. #Import "Slate Tiles II_S.png"
  7. #Import "cone_orange.png"
  8. #Import "Monkey2-logo-48.png"
  9. Using std..
  10. Using mojo..
  11. Class MyWindow Extends Window
  12. Field _floor:Image
  13. Field _light:Image
  14. Field _logo:Image
  15. Method New()
  16. ClearColor=Color.Black
  17. _floor=Image.LoadBump( "asset::Slate Tiles II_D.png","asset::Slate Tiles II_N.png","asset::Slate Tiles II_S.png",.75,True )
  18. _light=Image.LoadLight( "asset::cone_orange.png" )
  19. _light.Handle=New Vec2f( .5,0 )
  20. _light.Scale=New Vec2f( .5,.5 )
  21. _logo=Image.Load( "asset::Monkey2-logo-48.png" )
  22. _logo.Handle=New Vec2f( .5 )
  23. _logo.ShadowCaster=New ShadowCaster( _logo.Width/2,20 )
  24. End
  25. Method OnRender( canvas:Canvas ) Override
  26. Global viewRot:=0.0
  27. viewRot+=.001
  28. canvas.Translate( Width/2,Height/2 )
  29. canvas.Scale( Sin( viewRot*3 )*.25+1.25,Cos( viewRot*5 )*.25+1.25 )
  30. canvas.Rotate( viewRot )
  31. canvas.Translate( -Width/2,-Height/2 )
  32. Local rmouse:=-canvas.Matrix * Mouse.Location
  33. Global lightRot:=0.0
  34. lightRot+=.02
  35. App.RequestRender()
  36. canvas.AmbientLight=Color.DarkGrey
  37. canvas.BeginLighting()
  38. canvas.AddLight( _light,rmouse.X,rmouse.Y,lightRot )
  39. canvas.AddLight( _light,rmouse.X,rmouse.Y,lightRot+Pi )
  40. canvas.AddLight( _light,rmouse.X,rmouse.Y,lightRot+Pi/2 )
  41. canvas.AddLight( _light,rmouse.X,rmouse.Y,lightRot+Pi+Pi/2 )
  42. For Local x:=0 Until Width Step _floor.Width
  43. For Local y:=0 Until Height Step _floor.Height
  44. canvas.DrawImage( _floor,x,y )
  45. Next
  46. Next
  47. For Local an:=0.0 Until TwoPi Step TwoPi/8.0
  48. canvas.DrawImage( _logo,Width/2+Cos( an ) * Width/4,Height/2 + Sin( an ) * Height/4 )
  49. Next
  50. canvas.EndLighting()
  51. canvas.DrawText( Floor( App.FPS+.5 ),Width/2,0,.5,0 )
  52. End
  53. End
  54. Function Main()
  55. New AppInstance
  56. New MyWindow
  57. App.Run()
  58. End