فهرست منبع

Added 2 lighting bananas.

Mark Sibly 9 سال پیش
والد
کامیت
1fff4fa29b

BIN
bananas/lightsparks/Monkey2-logo-48.png


BIN
bananas/lightsparks/Slate Tiles II_D.png


BIN
bananas/lightsparks/Slate Tiles II_N.png


BIN
bananas/lightsparks/Slate Tiles II_S.png


+ 123 - 0
bananas/lightsparks/lightsparks.monkey2

@@ -0,0 +1,123 @@
+
+Namespace myapp
+
+#Import "<std>"
+#Import "<mojo>"
+
+#Import "Slate Tiles II_D.png"
+#Import "Slate Tiles II_N.png"
+#Import "Slate Tiles II_S.png"
+#Import "pointlight_light.png"
+
+Using std..
+Using mojo..
+
+Class Spark
+
+	Field x:Float
+	Field y:Float
+	Field vx:Float
+	Field vy:Float
+	Field light:Image
+	Field color:Color
+
+	Method New( x:Float,y:Float,light:Image )
+		Self.x=x
+		Self.y=y
+		Self.light=light
+		Self.color=New Color( Rnd(),Rnd()/2,Rnd()/4,1 )
+		Local an:=Rnd() * TwoPi
+		Local r:=Rnd( 1,5 )
+		Self.vx=Cos( an ) * r
+		Self.vy=Sin( an ) * r
+	End
+	
+	Method Render( canvas:Canvas )
+		vy+=.1
+		x+=vx
+		y+=vy
+		canvas.Color=color
+		canvas.AddLight( light,x,y )
+	End
+End
+
+Class MyWindow Extends Window
+
+	Field _floor:Image
+	
+	Field _light:Image
+	
+	Field _spark:Image
+	
+	Field _sparks:=New Stack<Spark>
+	
+	Method New()
+	
+		ClearColor=Color.Black
+	
+		_floor=Image.LoadBump( "asset::Slate Tiles II_D.png","asset::Slate Tiles II_N.png","asset::Slate Tiles II_S.png",.5 )
+		
+		_light=Image.LoadLight( "asset::pointlight_light.png" )
+		
+		_light.Handle=New Vec2f( .5,.5 )
+	
+		_light.Scale=New Vec2f( 3,3 )
+		
+		_spark=New Image( _light )
+		
+		_spark.Scale=New Vec2f( .5,.5 )
+		
+	End
+	
+	Method OnRender( canvas:Canvas ) Override
+	
+		App.RequestRender()
+		
+		canvas.BeginLighting()
+	
+		If Mouse.ButtonDown( MouseButton.Left ) 
+'			For Local i:=0 Until 50
+				_sparks.Push( New Spark( Mouse.X,Mouse.Y,_spark ) )
+'			Next
+		Endif
+		
+		Local put:=0
+		For Local spark:=Eachin _sparks
+			spark.Render( canvas )
+			If spark.y>Height+_spark.Radius Continue
+			_sparks[put]=spark
+			put+=1
+		Next
+		_sparks.Resize( put )
+		
+		canvas.Color=Color.White
+		
+		canvas.AddLight( _light,Mouse.X,Mouse.Y )
+		
+		For Local x:=0 Until Width Step _floor.Width
+
+			For Local y:=0 Until Height Step _floor.Height
+
+				canvas.DrawImage( _floor,x,y )
+
+			Next
+
+		Next
+		
+		canvas.EndLighting()
+		
+		canvas.DrawText( Round( App.FPS ),Width/2,0,.5,0 )
+		
+		GCCollect()
+	End
+	
+End
+
+Function Main()
+
+	New AppInstance
+	
+	New MyWindow
+	
+	App.Run()
+End

BIN
bananas/lightsparks/pointlight_light.png


BIN
bananas/simplelight/Monkey2-logo-48.png


BIN
bananas/simplelight/Slate Tiles II_D.png


BIN
bananas/simplelight/Slate Tiles II_N.png


BIN
bananas/simplelight/Slate Tiles II_S.png


BIN
bananas/simplelight/pointlight_light.png


+ 84 - 0
bananas/simplelight/simplelight.monkey2

@@ -0,0 +1,84 @@
+
+Namespace myapp
+
+#Import "<std>"
+#Import "<mojo>"
+
+#Import "Slate Tiles II_D.png"
+#Import "Slate Tiles II_N.png"
+#Import "Slate Tiles II_S.png"
+#Import "pointlight_light.png"
+#Import "Monkey2-logo-48.png"
+
+Using std..
+Using mojo..
+
+Class MyWindow Extends Window
+
+	Field _floor:Image
+	
+	Field _light:Image
+	
+	Field _logo:Image
+	
+	Method New()
+	
+		ClearColor=Color.Black
+	
+		_floor=Image.LoadBump( "asset::Slate Tiles II_D.png","asset::Slate Tiles II_N.png","asset::Slate Tiles II_S.png",.5,True )
+		
+		_light=Image.LoadLight( "asset::pointlight_light.png" )
+		
+		_light.Handle=New Vec2f( .5 )
+	
+		_light.Scale=New Vec2f( 3 )
+		
+		_logo=Image.Load( "asset::Monkey2-logo-48.png" )
+		
+		_logo.Handle=New Vec2f( .5 )
+		
+		_logo.ShadowCaster=New ShadowCaster( _logo.Width/2,20 )
+		
+	End
+	
+	Method OnRender( canvas:Canvas ) Override
+	
+		App.RequestRender()
+		
+		canvas.AmbientLight=Color.DarkGrey
+		
+		canvas.BeginLighting()
+		
+		canvas.AddLight( _light,Mouse.X,Mouse.Y )
+		
+		For Local x:=0 Until Width Step _floor.Width
+
+			For Local y:=0 Until Height Step _floor.Height
+
+				canvas.DrawImage( _floor,x,y )
+
+			Next
+
+		Next
+		
+		For Local an:=0.0 Until TwoPi Step TwoPi/8.0
+		
+			canvas.DrawImage( _logo,Width/2+Cos( an ) * Width/4,Height/2 + Sin( an ) * Height/4 )
+		
+		Next
+		
+		canvas.EndLighting()
+		
+		canvas.DrawText( App.FPS,Width/2,0,.5,0 )
+	End
+	
+End
+
+Function Main()
+
+	New AppInstance
+	
+	New MyWindow
+	
+	App.Run()
+End