Example #1
0
        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);
        }
Example #2
0
		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;
		}