Veteran
Posts: 82
Joined: Tue Mar 10, 2009 10:01 am
Possible bug in DefaultRaySceneQuery
- Code:
/// <summary>
/// Default implementation of RaySceneQuery.
/// </summary>
/// <remarks>
/// Note that becuase we have no scene partitioning, we actually
/// perform a complete scene search even if restricted results are
/// requested; smarter scene manager queries can utilise the paritioning
/// of the scene in order to reduce the number of intersection tests
/// required to fulfil the query
/// </remarks>
public class DefaultRaySceneQuery : RaySceneQuery
{
protected internal DefaultRaySceneQuery( SceneManager creator )
: base( creator )
{
// No world geometry results supported
this.AddWorldFragmentType( WorldFragmentType.None );
}
public override void Execute( IRaySceneQueryListener listener )
{
MovableObjectFactoryMap factories = Root.Instance.MovableObjectFactories;
foreach ( KeyValuePair<string, MovableObjectFactory> map in factories )
{
MovableObjectCollection movableObjects = this.creator.GetMovableObjectCollection( map.Value.Type );
foreach ( MovableObject movableObject in movableObjects )
{
// skip group if query type doesn't match
if ( ( this.QueryTypeMask & movableObject.TypeFlags ) != 0 )
{
break;
}
....
The line if ( ( this.QueryTypeMask & movableObject.TypeFlags ) != 0 ) should be == 0 and not != 0 as ogre expression is:
Test it out
