\hypertarget{class_ogre_1_1_scene_manager_1_1_listener}{}\section{Ogre\+:\+:Scene\+Manager\+:\+:Listener Class Reference}
\label{class_ogre_1_1_scene_manager_1_1_listener}\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}


Class that allows listening in on the various stages of \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} processing, so that custom behaviour can be implemented from outside.  




{\ttfamily \#include $<$Ogre\+Scene\+Manager.\+h$>$}



Inheritance diagram for Ogre\+:\+:Scene\+Manager\+:\+:Listener\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=290pt]{class_ogre_1_1_scene_manager_1_1_listener__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a05a9a139f53f89d5595c4f3101ea53d3}{Listener} ()
\item 
virtual \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a084b73ccf5c6677ab2c22c3a912fbae1}{$\sim$\+Listener} ()
\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_ab57b560ea987d8dae9901908d0ab6f28}{post\+Find\+Visible\+Objects} (\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$source, \hyperlink{class_ogre_1_1_scene_manager_a51db39cc4fa15b28086a1793d42fc827}{Illumination\+Render\+Stage} irs, \hyperlink{class_ogre_1_1_viewport}{Viewport} $\ast$v)
\begin{DoxyCompactList}\small\item\em Called after searching for visible objects in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_ad8f0c1e1efaccade0663e416d76b960c}{post\+Update\+Scene\+Graph} (\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$source, \hyperlink{class_ogre_1_1_camera}{Camera} $\ast$camera)
\begin{DoxyCompactList}\small\item\em Called after updating the scene graph in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a2c0007528c775ca51c95fd5e7f7aa4db}{pre\+Find\+Visible\+Objects} (\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$source, \hyperlink{class_ogre_1_1_scene_manager_a51db39cc4fa15b28086a1793d42fc827}{Illumination\+Render\+Stage} irs, \hyperlink{class_ogre_1_1_viewport}{Viewport} $\ast$v)
\begin{DoxyCompactList}\small\item\em Called prior to searching for visible objects in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_aaafbc877eaf190b86163c1e171a4400e}{pre\+Update\+Scene\+Graph} (\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$source, \hyperlink{class_ogre_1_1_camera}{Camera} $\ast$camera)
\begin{DoxyCompactList}\small\item\em Called prior to updating the scene graph in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a9d5463252458a8852b0011935e6f5bb5}{scene\+Manager\+Destroyed} (\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$source)
\begin{DoxyCompactList}\small\item\em Event notifying the listener of the \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}\textquotesingle{}s destruction. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a012a1c3dcf2efbd8245fd125e7fc1b64}{shadow\+Texture\+Caster\+Pre\+View\+Proj} (\hyperlink{class_ogre_1_1_light}{Light} $\ast$light, \hyperlink{class_ogre_1_1_camera}{Camera} $\ast$camera, size\+\_\+t iteration)
\begin{DoxyCompactList}\small\item\em This event occurs just before the view \& projection matrices are set for rendering into a shadow texture. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_aa05def0ab89195c585b5467059245641}{shadow\+Texture\+Receiver\+Pre\+View\+Proj} (\hyperlink{class_ogre_1_1_light}{Light} $\ast$light, \hyperlink{class_ogre_1_1_frustum}{Frustum} $\ast$frustum)
\begin{DoxyCompactList}\small\item\em This event occurs just before the view \& projection matrices are set for re-\/rendering a shadow receiver. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_aa2c3ceb367f47c3721e9d1843288d341}{shadow\+Textures\+Updated} (size\+\_\+t number\+Of\+Shadow\+Textures)
\begin{DoxyCompactList}\small\item\em Event raised after all shadow textures have been rendered into for all queues / targets but before any other geometry has been rendered (including main scene geometry and any additional shadow receiver passes). \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_scene_manager_1_1_listener_a5ef1be858fe331867653fbb8aa819494}{sort\+Lights\+Affecting\+Frustum} (\hyperlink{group___general_gaab30ef14aae93306a6044cb38d835f0c}{Light\+List} \&light\+List)
\begin{DoxyCompactList}\small\item\em Hook to allow the listener to override the ordering of lights for the entire frustum. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Class that allows listening in on the various stages of \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} processing, so that custom behaviour can be implemented from outside. 

\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a05a9a139f53f89d5595c4f3101ea53d3}\label{class_ogre_1_1_scene_manager_1_1_listener_a05a9a139f53f89d5595c4f3101ea53d3}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!Listener@{Listener}}
\index{Listener@{Listener}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{Listener()}{Listener()}}
{\footnotesize\ttfamily Ogre\+::\+Scene\+Manager\+::\+Listener\+::\+Listener (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a084b73ccf5c6677ab2c22c3a912fbae1}\label{class_ogre_1_1_scene_manager_1_1_listener_a084b73ccf5c6677ab2c22c3a912fbae1}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!````~Listener@{$\sim$\+Listener}}
\index{````~Listener@{$\sim$\+Listener}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{$\sim$\+Listener()}{~Listener()}}
{\footnotesize\ttfamily virtual Ogre\+::\+Scene\+Manager\+::\+Listener\+::$\sim$\+Listener (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_aaafbc877eaf190b86163c1e171a4400e}\label{class_ogre_1_1_scene_manager_1_1_listener_aaafbc877eaf190b86163c1e171a4400e}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!pre\+Update\+Scene\+Graph@{pre\+Update\+Scene\+Graph}}
\index{pre\+Update\+Scene\+Graph@{pre\+Update\+Scene\+Graph}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{pre\+Update\+Scene\+Graph()}{preUpdateSceneGraph()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::pre\+Update\+Scene\+Graph (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$}]{source,  }\item[{\hyperlink{class_ogre_1_1_camera}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Called prior to updating the scene graph in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. 

\begin{DoxyRemark}{Remarks}
This is called before updating the scene graph for a camera. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em source} & The \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} instance raising this event. \\
\hline
{\em camera} & The camera being updated. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_ad8f0c1e1efaccade0663e416d76b960c}\label{class_ogre_1_1_scene_manager_1_1_listener_ad8f0c1e1efaccade0663e416d76b960c}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!post\+Update\+Scene\+Graph@{post\+Update\+Scene\+Graph}}
\index{post\+Update\+Scene\+Graph@{post\+Update\+Scene\+Graph}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{post\+Update\+Scene\+Graph()}{postUpdateSceneGraph()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::post\+Update\+Scene\+Graph (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$}]{source,  }\item[{\hyperlink{class_ogre_1_1_camera}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Called after updating the scene graph in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. 

\begin{DoxyRemark}{Remarks}
This is called after updating the scene graph for a camera. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em source} & The \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} instance raising this event. \\
\hline
{\em camera} & The camera being updated. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a2c0007528c775ca51c95fd5e7f7aa4db}\label{class_ogre_1_1_scene_manager_1_1_listener_a2c0007528c775ca51c95fd5e7f7aa4db}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!pre\+Find\+Visible\+Objects@{pre\+Find\+Visible\+Objects}}
\index{pre\+Find\+Visible\+Objects@{pre\+Find\+Visible\+Objects}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{pre\+Find\+Visible\+Objects()}{preFindVisibleObjects()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::pre\+Find\+Visible\+Objects (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$}]{source,  }\item[{\hyperlink{class_ogre_1_1_scene_manager_a51db39cc4fa15b28086a1793d42fc827}{Illumination\+Render\+Stage}}]{irs,  }\item[{\hyperlink{class_ogre_1_1_viewport}{Viewport} $\ast$}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Called prior to searching for visible objects in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. 

\begin{DoxyRemark}{Remarks}
Note that the render queue at this stage will be full of the last render\textquotesingle{}s contents and will be cleared after this method is called. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em source} & The \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} instance raising this event. \\
\hline
{\em irs} & The stage of illumination being dealt with. I\+R\+S\+\_\+\+N\+O\+NE for a regular render, I\+R\+S\+\_\+\+R\+E\+N\+D\+E\+R\+\_\+\+T\+O\+\_\+\+T\+E\+X\+T\+U\+RE for a shadow caster render. \\
\hline
{\em v} & The viewport being updated. You can get the camera from here. \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{class_ogre_1_1_terrain_ad9bd9a0fbdb32cb5571cca586f21e811}{Ogre\+::\+Terrain}, and \hyperlink{group___hlms_gad35063f89d8ad5ec6792f931f43b9bad}{Ogre\+::\+Hlms\+Manager}.

\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_ab57b560ea987d8dae9901908d0ab6f28}\label{class_ogre_1_1_scene_manager_1_1_listener_ab57b560ea987d8dae9901908d0ab6f28}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!post\+Find\+Visible\+Objects@{post\+Find\+Visible\+Objects}}
\index{post\+Find\+Visible\+Objects@{post\+Find\+Visible\+Objects}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{post\+Find\+Visible\+Objects()}{postFindVisibleObjects()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::post\+Find\+Visible\+Objects (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$}]{source,  }\item[{\hyperlink{class_ogre_1_1_scene_manager_a51db39cc4fa15b28086a1793d42fc827}{Illumination\+Render\+Stage}}]{irs,  }\item[{\hyperlink{class_ogre_1_1_viewport}{Viewport} $\ast$}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Called after searching for visible objects in this \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}. 

\begin{DoxyRemark}{Remarks}
Note that the render queue at this stage will be full of the current scenes contents, ready for rendering. You may manually add renderables to this queue if you wish. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em source} & The \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} instance raising this event. \\
\hline
{\em irs} & The stage of illumination being dealt with. I\+R\+S\+\_\+\+N\+O\+NE for a regular render, I\+R\+S\+\_\+\+R\+E\+N\+D\+E\+R\+\_\+\+T\+O\+\_\+\+T\+E\+X\+T\+U\+RE for a shadow caster render. \\
\hline
{\em v} & The viewport being updated. You can get the camera from here. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_aa2c3ceb367f47c3721e9d1843288d341}\label{class_ogre_1_1_scene_manager_1_1_listener_aa2c3ceb367f47c3721e9d1843288d341}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!shadow\+Textures\+Updated@{shadow\+Textures\+Updated}}
\index{shadow\+Textures\+Updated@{shadow\+Textures\+Updated}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{shadow\+Textures\+Updated()}{shadowTexturesUpdated()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::shadow\+Textures\+Updated (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{number\+Of\+Shadow\+Textures }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Event raised after all shadow textures have been rendered into for all queues / targets but before any other geometry has been rendered (including main scene geometry and any additional shadow receiver passes). 

\begin{DoxyRemark}{Remarks}
This callback is useful for those that wish to perform some additional processing on shadow textures before they are used to render shadows. For example you could perform some filtering by rendering the existing shadow textures into another alternative shadow texture with a shader.\mbox{]} 
\end{DoxyRemark}
\begin{DoxyNote}{Note}
This event will only be fired when texture shadows are in use. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em number\+Of\+Shadow\+Textures} & The number of shadow textures in use \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a012a1c3dcf2efbd8245fd125e7fc1b64}\label{class_ogre_1_1_scene_manager_1_1_listener_a012a1c3dcf2efbd8245fd125e7fc1b64}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!shadow\+Texture\+Caster\+Pre\+View\+Proj@{shadow\+Texture\+Caster\+Pre\+View\+Proj}}
\index{shadow\+Texture\+Caster\+Pre\+View\+Proj@{shadow\+Texture\+Caster\+Pre\+View\+Proj}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{shadow\+Texture\+Caster\+Pre\+View\+Proj()}{shadowTextureCasterPreViewProj()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::shadow\+Texture\+Caster\+Pre\+View\+Proj (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_light}{Light} $\ast$}]{light,  }\item[{\hyperlink{class_ogre_1_1_camera}{Camera} $\ast$}]{camera,  }\item[{size\+\_\+t}]{iteration }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



This event occurs just before the view \& projection matrices are set for rendering into a shadow texture. 

\begin{DoxyRemark}{Remarks}
You can use this event hook to perform some custom processing, such as altering the camera being used for rendering the light\textquotesingle{}s view, including setting custom view \& projection matrices if you want to perform an advanced shadow technique. 
\end{DoxyRemark}
\begin{DoxyNote}{Note}
This event will only be fired when texture shadows are in use. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em light} & Pointer to the light for which shadows are being rendered \\
\hline
{\em camera} & Pointer to the camera being used to render \\
\hline
{\em iteration} & For lights that use multiple shadow textures, the iteration number \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_aa05def0ab89195c585b5467059245641}\label{class_ogre_1_1_scene_manager_1_1_listener_aa05def0ab89195c585b5467059245641}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!shadow\+Texture\+Receiver\+Pre\+View\+Proj@{shadow\+Texture\+Receiver\+Pre\+View\+Proj}}
\index{shadow\+Texture\+Receiver\+Pre\+View\+Proj@{shadow\+Texture\+Receiver\+Pre\+View\+Proj}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{shadow\+Texture\+Receiver\+Pre\+View\+Proj()}{shadowTextureReceiverPreViewProj()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::shadow\+Texture\+Receiver\+Pre\+View\+Proj (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_light}{Light} $\ast$}]{light,  }\item[{\hyperlink{class_ogre_1_1_frustum}{Frustum} $\ast$}]{frustum }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



This event occurs just before the view \& projection matrices are set for re-\/rendering a shadow receiver. 

\begin{DoxyRemark}{Remarks}
You can use this event hook to perform some custom processing, such as altering the projection frustum being used for rendering the shadow onto the receiver to perform an advanced shadow technique. 
\end{DoxyRemark}
\begin{DoxyNote}{Note}
This event will only be fired when texture shadows are in use. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em light} & Pointer to the light for which shadows are being rendered \\
\hline
{\em frustum} & Pointer to the projection frustum being used to project the shadow texture \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a5ef1be858fe331867653fbb8aa819494}\label{class_ogre_1_1_scene_manager_1_1_listener_a5ef1be858fe331867653fbb8aa819494}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!sort\+Lights\+Affecting\+Frustum@{sort\+Lights\+Affecting\+Frustum}}
\index{sort\+Lights\+Affecting\+Frustum@{sort\+Lights\+Affecting\+Frustum}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{sort\+Lights\+Affecting\+Frustum()}{sortLightsAffectingFrustum()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Scene\+Manager\+::\+Listener\+::sort\+Lights\+Affecting\+Frustum (\begin{DoxyParamCaption}\item[{\hyperlink{group___general_gaab30ef14aae93306a6044cb38d835f0c}{Light\+List} \&}]{light\+List }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Hook to allow the listener to override the ordering of lights for the entire frustum. 

\begin{DoxyRemark}{Remarks}
Whilst ordinarily lights are sorted per rendered object (
\end{DoxyRemark}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_movable_object_a4fbc0296b902a113376688aff724d02d}{Movable\+Object\+::query\+Lights}), texture shadows adds another issue in that, given there is a finite number of shadow textures, we must choose which lights to render texture shadows from based on the entire frustum. These lights should always be listed first in every objects own \hyperlink{struct_ogre_1_1list}{list}, followed by any other lights which will not cast texture shadows (either because they have shadow casting off, or there aren\textquotesingle{}t enough shadow textures to service them). 
\end{DoxySeeAlso}
\begin{DoxyParagraph}{}
This hook allows you to override the detailed ordering of the lights per frustum. The default ordering is shadow casters first (which you must also respect if you override this method), and ordered by distance from the camera within those 2 groups. Obviously the closest lights with shadow casting enabled will be listed first. Only lights within the range of the frustum will be in the list. 
\end{DoxyParagraph}

\begin{DoxyParams}{Parameters}
{\em light\+List} & The list of lights within range of the frustum which you may sort. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if you sorted the list, false otherwise. 
\end{DoxyReturn}
\mbox{\Hypertarget{class_ogre_1_1_scene_manager_1_1_listener_a9d5463252458a8852b0011935e6f5bb5}\label{class_ogre_1_1_scene_manager_1_1_listener_a9d5463252458a8852b0011935e6f5bb5}} 
\index{Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}!scene\+Manager\+Destroyed@{scene\+Manager\+Destroyed}}
\index{scene\+Manager\+Destroyed@{scene\+Manager\+Destroyed}!Ogre\+::\+Scene\+Manager\+::\+Listener@{Ogre\+::\+Scene\+Manager\+::\+Listener}}
\subsubsection{\texorpdfstring{scene\+Manager\+Destroyed()}{sceneManagerDestroyed()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+Scene\+Manager\+::\+Listener\+::scene\+Manager\+Destroyed (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager} $\ast$}]{source }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Event notifying the listener of the \hyperlink{class_ogre_1_1_scene_manager}{Scene\+Manager}\textquotesingle{}s destruction. 



Reimplemented in \hyperlink{class_ogre_1_1_terrain_a09baa91af04f211ee9e8e8f60d9e6c39}{Ogre\+::\+Terrain}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{_ogre_scene_manager_8h}{Ogre\+Scene\+Manager.\+h}\end{DoxyCompactItemize}
