simplelight.monkey2 1.9 KB

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