void INodeLight::Render(Video::IRenderDriver *driver, IFrustum *frustum, int flags) { if (!m_bShow || !IsSelected()) return; float cubeSize=0.1; //Draw Cube driver->UseMaterial(m_pEmissiveVertex); driver->_SetColor(IColor(1.0,1.0,1.0,1.0)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,cubeSize,cubeSize),GetPosition()+IVector3D(cubeSize,cubeSize,cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,-cubeSize,cubeSize),GetPosition()+IVector3D(cubeSize,-cubeSize,cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,cubeSize,-cubeSize),GetPosition()+IVector3D(cubeSize,cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,-cubeSize,-cubeSize),GetPosition()+IVector3D(cubeSize,-cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,cubeSize,cubeSize),GetPosition()+IVector3D(-cubeSize,-cubeSize,cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(cubeSize,cubeSize,cubeSize),GetPosition()+IVector3D(cubeSize,-cubeSize,cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,cubeSize,-cubeSize),GetPosition()+IVector3D(-cubeSize,-cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(cubeSize,cubeSize,-cubeSize),GetPosition()+IVector3D(cubeSize,-cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,cubeSize,cubeSize),GetPosition()+IVector3D(-cubeSize,cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(cubeSize,-cubeSize,cubeSize),GetPosition()+IVector3D(cubeSize,-cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(-cubeSize,-cubeSize,cubeSize),GetPosition()+IVector3D(-cubeSize,-cubeSize,-cubeSize)); driver->_DrawLine(GetPosition()+IVector3D(cubeSize,cubeSize,cubeSize),GetPosition()+IVector3D(cubeSize,cubeSize,-cubeSize)); IVector3D pos = GetPosition(); //Draw Radius for (float i=0;i<=RADIUS_QUALITY;i++) { driver->_DrawLine(IVector3D(pos.GetX()+m_fRadius*cos(i/RADIUS_QUALITY*2*I_PIE),pos.GetY()+m_fRadius*sin(i/RADIUS_QUALITY*2*I_PIE),pos.GetZ()), IVector3D(pos.GetX()+m_fRadius*cos((i+1)/RADIUS_QUALITY*2*I_PIE),pos.GetY()+m_fRadius*sin((i+1)/RADIUS_QUALITY*2*I_PIE),pos.GetZ())); driver->_DrawLine(IVector3D(pos.GetX()+m_fRadius*cos(i/RADIUS_QUALITY*2*I_PIE),pos.GetY(),pos.GetZ()+m_fRadius*sin(i/RADIUS_QUALITY*2*I_PIE)), IVector3D(pos.GetX()+m_fRadius*cos((i+1)/RADIUS_QUALITY*2*I_PIE),pos.GetY(),pos.GetZ()+m_fRadius*sin((i+1)/RADIUS_QUALITY*2*I_PIE))); driver->_DrawLine(IVector3D(pos.GetX(),pos.GetY()+m_fRadius*sin(i/RADIUS_QUALITY*2*I_PIE),pos.GetZ()+m_fRadius*cos(i/RADIUS_QUALITY*2*I_PIE)), IVector3D(pos.GetX(),pos.GetY()+m_fRadius*sin((i+1)/RADIUS_QUALITY*2*I_PIE),pos.GetZ()+m_fRadius*cos((i+1)/RADIUS_QUALITY*2*I_PIE))); } //RenderFrustum /*IFrustum frustum2; for (int i=0;i<6;i++) { frustum2.SetFrustumFromMatrix(GetProjectionMatrix(i)); frustum2.CalcVertice(); frustum2.DrawFrustum(driver); }*/ BaseClass::Render(driver,frustum,flags); }
IVector3D Random::randomIVector(IVector3D min, IVector3D max) { return IVector3D(uniformInt(min.x, max.x), uniformInt(min.y, max.y), uniformInt(min.z, max.z)); }