Axiom.Graphics.RSQuadOperation.Execute C# (CSharp) Method

Execute() public method

public Execute ( SceneManager sm, Axiom.Graphics.RenderSystem rs ) : void
sm Axiom.Core.SceneManager
rs Axiom.Graphics.RenderSystem
return void
		public override void Execute( SceneManager sm, RenderSystem rs )
		{
			// Fire listener
			Instance.OnMaterialRender( new CompositorInstanceMaterialEventArgs( this.PassId, Material ) );

			Viewport vp = rs.Viewport;
			Rectangle2D rect = (Rectangle2D)CompositorManager.Instance.TexturedRectangle2D;
			if ( QuadCornerModified )
			{
				// ensure positions are using peculiar render system offsets
				float hOffset = rs.HorizontalTexelOffset / ( 0.5f * vp.ActualWidth );
				float vOffset = rs.VerticalTexelOffset / ( 0.5f * vp.ActualHeight );
				rect.SetCorners( QuadLeft + hOffset, QuadTop - vOffset, QuadRight + hOffset, QuadBottom - vOffset );
			}

			if ( QuadFarCorners )
			{
				Axiom.Math.Vector3[] corners = vp.Camera.WorldSpaceCorners;
				if ( QuadFarCornersViewSpace )
				{
					Axiom.Math.Matrix4 viewMat = vp.Camera.FrustumViewMatrix;
					rect.SetNormals( viewMat * corners[ 5 ], viewMat * corners[ 6 ], viewMat * corners[ 4 ], viewMat * corners[ 7 ] );
				}
				else
				{
					rect.SetNormals( corners[ 5 ], corners[ 6 ], corners[ 4 ], corners[ 7 ] );
				}
			}
			// Queue passes from mat
			for ( int i = 0; i < Technique.PassCount; i++ )
			{
				Pass pass = Technique.GetPass( i );
				sm.InjectRenderWithPass( pass, CompositorManager.Instance.TexturedRectangle2D, false /*don't allow replacement of shadow passes*/ );
			}
		}
	}