Mouse CollisionDownload Example

// Class Main.as
package  
{
	import flare.basic.*
	import flare.collisions.*
	import flare.core.*
	import flare.system.*
	import flare.utils.*
	import flash.display.*
	import flash.events.*
	
	public class Main extends Sprite
	{
		private var scene:Scene3D
		private var collisions:Pivot3D
		private var vector:Pivot3D
		private var mouse:MouseCollision
		
		public function Main() 
		{
			stage.quality = "medium"
			
			// creates the scene.
			scene = new Viewer3D( this )
			
			// define complete event.
			scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent )			
			
			addChild( info_txt )
			
			// load 3d objects.
			collisions = scene.addChildFromFile( "collisions.f3d" )			
			vector = scene.addChildFromFile( "vector.f3d" )
		}
		
		private function completeEvent(e:Event):void 
		{
			// create the mouse collision.
			mouse = new MouseCollision()
			
			// test collisions with collisions objects.
			mouse.addCollisionWith( collisions )
			
			// set more priority to see over the scene.
			vector.setPriority( 1000 )
			
			// we only need to test in render event, but we can test also in update event.
			scene.addEventListener( Scene3D.RENDER_EVENT, renderEvent )
		}
		
		private function renderEvent(e:Event):void 
		{
			// remove tooltip.
			info_txt.visible = false
			vector.visible = false
			
			// get mouse collision.
			if ( mouse.test( Input3D.mouseX, Input3D.mouseY ) )
			{	
				// get collision data.
				var info:CollisionInfo = mouse.data[ 0 ]
				
				// show 3d vector.
				vector.setPosition( info.point.x, info.point.y, info.point.z )
				vector.setNormalOrientation( info.normal )
				vector.visible = true
				
				// show tooltip.
				info_txt.visible = true
				info_txt.x = Input3D.mouseX + 10
				info_txt.y = Input3D.mouseY + 10
				info_txt.text = info.mesh.name
				info_txt.width = info_txt.textWidth + 5
			}
		}
	}
}