public IModel MousePick(int x, int y) { DxVBLibA.D3DVECTOR dxo = new DxVBLibA.D3DVECTOR(); DxVBLibA.D3DVECTOR dxd = new DxVBLibA.D3DVECTOR(); Engine.Gl.MousePickVector(x, y, ref dxo, ref dxd); TV_COLLISIONRESULT cr = new TV_COLLISIONRESULT(); if (Engine.TV3DScene.AdvancedCollision(ref dxo, ref dxd, ref cr, 0, CONST_TV_TESTTYPE.TV_TESTTYPE_ACCURATETESTING, true)) { // TODO: don't loop through, a userdata field? foreach (IModel m in Models.Values) { if ( (cr.collidedobjecttype == 1 && (m is IActor) && m.ID == cr.entityid) || (cr.collidedobjecttype != 1 && !(m is IActor) && m.ID == cr.MeshID) ) { return(m); } } } return(null); }
public IModel MousePick( int x, int y ) { DxVBLibA.D3DVECTOR dxo = new DxVBLibA.D3DVECTOR(); DxVBLibA.D3DVECTOR dxd = new DxVBLibA.D3DVECTOR(); Engine.Gl.MousePickVector( x, y, ref dxo, ref dxd ); TV_COLLISIONRESULT cr = new TV_COLLISIONRESULT(); if ( Engine.TV3DScene.AdvancedCollision( ref dxo, ref dxd, ref cr, 0, CONST_TV_TESTTYPE.TV_TESTTYPE_ACCURATETESTING, true) ) { // TODO: don't loop through, a userdata field? foreach ( IModel m in Models.Values ) { if ( (cr.collidedobjecttype == 1 && (m is IActor) && m.ID == cr.entityid) || (cr.collidedobjecttype != 1 && !(m is IActor) && m.ID == cr.MeshID) ) { return m; } } } return null; }