void Console::draw( sf::RenderTarget& target, sf::RenderStates states ) const { if ( !m_active ) return; // Background sf::RectangleShape bg( sf::Vector2f( (float) SCREEN_WIDTH, (float) SCREEN_HEIGHT ) ); bg.setFillColor( sf::Color( 150, 150, 150, 150 ) ); target.draw( bg ); sf::Text text( "", *m_font, FONT_SIZE ); int height = text.getFont()->getLineSpacing( FONT_SIZE ); float yPos = SCREEN_HEIGHT - CONSOLE_OFFSET - height; // Current input { // Before index text.setString( ">" + std::string( m_input.begin(), m_input.begin() + m_index ) ); text.setPosition( 0.0f, yPos ); text.setColor( hexToColor( DEFAULT_COLOR ) ); target.draw( text ); if ( m_index < (int) m_input.size() ) { float xPos = text.findCharacterPos( m_index + 1 ).x; // Index char text.setString( m_input.at( m_index ) ); text.setPosition( xPos, yPos ); text.setStyle( sf::Text::Underlined ); target.draw( text ); // After index xPos += text.getLocalBounds().width; text.setString( std::string( m_input.begin() + m_index + 1, m_input.end() ) ); text.setPosition( xPos, yPos ); text.setStyle( sf::Text::Regular ); target.draw( text ); } else { text.setPosition( text.findCharacterPos( m_index + 1 ).x, yPos ); text.setString( " " ); text.setStyle( sf::Text::Underlined ); target.draw( text ); // Reset style text.setStyle( sf::Text::Regular ); } } // History for ( auto it = m_history.rbegin() + m_bufferOffset; it != m_history.rend() && yPos >= 0.0f; ++it ) { text.setPosition( 0.0f, yPos -= height ); text.setString( it->first ); text.setColor( hexToColor( it->second ) ); target.draw( text ); } }
void genGradient(color c[], int *numColors, const int start, const int end) { *numColors = 256; color cs = hexToColor(start); color ce = hexToColor(end); float rd = 1.0 * (ce.r - cs.r) / *numColors; float gd = 1.0 * (ce.g - cs.g) / *numColors; float bd = 1.0 * (ce.b - cs.b) / *numColors; for (int i=0; i<*numColors; i++) { c[i].r = cs.r + (rd * i); c[i].g = cs.g + (gd * i); c[i].b = cs.b + (bd * i); } }
void myApp::init_graphics() { m_d3ddev = m_pD3D->getDevice(); m_d3ddev->SetRenderState(D3DRS_LIGHTING, false); m_d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); // creating cameras isWASDCameraActive = true; wasdCamera = new WASDCamera(); camera = new Camera(); float initPos = 500.0f; wasdCamera->setPosition({ initPos, -initPos, initPos }); wasdCamera->setUpDirection({ 0.0f, 1.0f, 0.0f }); wasdCamera->setLookAt(worldCenter); m_d3ddev->SetTransform(D3DTS_VIEW, wasdCamera->getViewMatrix()); // set the view transform to matView D3DXMatrixPerspectiveFovLH(&m_matProj, D3DXToRadian(45), // the horizontal field of view (FLOAT)SCREEN_WIDTH / (FLOAT)SCREEN_HEIGHT, // aspect ratio 1.0f, // the near view-plane 20000.0f); // the far view-plane m_d3ddev->SetTransform(D3DTS_PROJECTION, &m_matProj); // set the projection ZeroMemory(&globalMaterial, sizeof(D3DMATERIAL9)); // clear out the struct for use globalMaterial.Diffuse = hexToColor(0xffffff); globalMaterial.Ambient = hexToColor(0xffffff); globalMaterial.Emissive = hexToColor(0x000010); globalMaterial.Specular = hexToColor(0); m_nClearColor = 0xFF111111; SkyBox *box = new SkyBox(m_d3ddev); box->scale(10000.0f, 10000.0f, 10000.0f); objects.push_back(box); aroundCubeObjects.push_back(box); reflectingCube = new ReflectingCube(m_d3ddev); objects.push_back(reflectingCube); reflectingCube->scale(200.0f, 200.0f, 200.0f); }
void myApp::init_graphics() { m_d3ddev = m_pD3D->getDevice(); m_d3ddev->SetRenderState(D3DRS_ZENABLE, true); m_d3ddev->SetRenderState(D3DRS_LIGHTING, true); m_d3ddev->SetRenderState(D3DRS_SPECULARENABLE, true); m_d3ddev->SetRenderState(D3DRS_NORMALIZENORMALS, true); m_d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); m_d3ddev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); isWASDCameraActive = true; float initPos = 150.0f; wasdCamera.setPosition({ initPos, initPos, initPos }); wasdCamera.setUpDirection({ 0.0f, 1.0f, 0.0f }); wasdCamera.setLookAt(worldCenter); m_d3ddev->SetTransform(D3DTS_VIEW, wasdCamera.getViewMatrix()); // set the view transform to matView D3DXMatrixPerspectiveFovLH(&m_matProj, D3DXToRadian(45), // the horizontal field of view (FLOAT)SCREEN_WIDTH / (FLOAT)SCREEN_HEIGHT, // aspect ratio 10.0f, // the near view-plane 1000.0f); // the far view-plane m_d3ddev->SetTransform(D3DTS_PROJECTION, &m_matProj); // set the projection // one directed light and point light lights.push_back(new DirectedLight( D3DXVECTOR3(-1.0f, -1.0f, -1.0f), hexToColor(0), hexToColor(0x333300), hexToColor(0))); lights.push_back(new PointLight( D3DXVECTOR3(60.0f, 30.0f, -70.0f), 100.0f, 1.0f, 0.000f, 0.050f, 0.001f, hexToColor(0xffffff), hexToColor(0xffffff), hexToColor(0xffffff) )); // headlights: A lot of magic numbers ;) D3DXCOLOR headlightColor = hexToColor(0xFFFF55); float headlightX = -12.5f; float headlightZ = -5.5f; float headlightY = -9.35f; lights.push_back(new SpotLight( D3DXVECTOR3(headlightX, headlightY, headlightZ), D3DXVECTOR3(-1.6f, 1.0f, 0.0f), D3DXToRadian(20.0f), D3DXToRadian(30.0f), 70.0f, 1.0f, 0.0f, 0.08f, 0.0f, headlightColor, headlightColor, hexToColor(0) )); lights.push_back(new SpotLight( D3DXVECTOR3(headlightX, headlightY, headlightZ + 12.5f), D3DXVECTOR3(-1.6f, 1.0f, 0.0f), D3DXToRadian(20.0f), D3DXToRadian(30.0f), 70.0f, 1.0f, 0.0f, 0.08f, 0.0f, headlightColor, headlightColor, hexToColor(0) )); car.setDevice(m_d3ddev); float carScaleFactor = 3; float radius = 25; car.loadModelFromFile("car00.x"); car.translate(0, 0, radius); circleIterator = new CircleIterator(radius, 0.0f, 0.025f); car.addLight(lights[lights.size() - 1]); car.addLight(lights[lights.size() - 2]); car.rotateX(-D3DX_PI); car.rotateY(-D3DX_PI); car.scale(carScaleFactor, carScaleFactor, carScaleFactor); car.translate(0, 2.39f, 0); for (unsigned int i = 0; i < lights.size(); ++i) { lights[i]->create(m_d3ddev, i); lights[i]->switchOn(); } ZeroMemory(&globalMaterial, sizeof(D3DMATERIAL9)); // clear out the struct for use globalMaterial.Diffuse = hexToColor(0); globalMaterial.Ambient = hexToColor(0xffffff); globalMaterial.Emissive = hexToColor(0x000010); globalMaterial.Specular = hexToColor(0); m_nClearColor = 0xFF111111; globalCoordSystem.scale(220.0f, 220.0f, 220.0f); globalCoordSystem.translate(-0.5, 0, -0.5); globalCoordSystem.create(m_d3ddev); plane.create(m_d3ddev); }
/* Imports an avy:// url, breaks it up, configures the current settings to match, and then stores the original to be replaced later when saved back to Avatar Favorites */ void AvatarCreator::ImportUrl(string url) { url = url.substr(6); //cut off avy:// vString v; explode(&v, &url, "."); if (v.size() < 7) //Invalid Url, TODO: Some error message return; mBase = v.at(0); mHeadFile = mBase + ".head." + v.at(1) + ".png"; mBodyFile = mBase + ".body." + v.at(3) + ".png"; mHairFile = mBase + ".hair." + v.at(5) + ".png"; mHeadColor = hexToColor(v.at(2)); mBodyColor = hexToColor(v.at(4)); mHairColor = hexToColor(v.at(6)); resman->Unload(mHead); mHead = resman->LoadImg(DIR_AVA + mHeadFile); if (!mHead) SetError("Could not load " + mHeadFile); resman->Unload(mBody); mBody = resman->LoadImg(DIR_AVA + mBodyFile); if (!mBody) SetError("Could not load " + mBodyFile); resman->Unload(mHair); mHair = resman->LoadImg(DIR_AVA + mHairFile); if (!mHair) SetError("Could not load " + mHairFile); // A little more gross here, have to adjust each scrollbar to match each color :( Scrollbar* s; s = (Scrollbar*)mHeadFrame->Get("r"); s->SetValue(mHeadColor.r); s = (Scrollbar*)mHeadFrame->Get("g"); s->SetValue(mHeadColor.g); s = (Scrollbar*)mHeadFrame->Get("b"); s->SetValue(mHeadColor.b); s = (Scrollbar*)mBodyFrame->Get("r"); s->SetValue(mBodyColor.r); s = (Scrollbar*)mBodyFrame->Get("g"); s->SetValue(mBodyColor.g); resman->Unload(mHead); mHead = resman->LoadImg(DIR_AVA + mHeadFile); if (!mHead) SetError("Could not load " + mHeadFile); resman->Unload(mBody); mBody = resman->LoadImg(DIR_AVA + mBodyFile); if (!mBody) SetError("Could not load " + mBodyFile); resman->Unload(mHair); mHair = resman->LoadImg(DIR_AVA + mHairFile); if (!mHair) SetError("Could not load " + mHairFile); s = (Scrollbar*)mBodyFrame->Get("b"); s->SetValue(mBodyColor.b); s = (Scrollbar*)mHairFrame->Get("r"); s->SetValue(mHairColor.r); s = (Scrollbar*)mHairFrame->Get("g"); s->SetValue(mHairColor.g); s = (Scrollbar*)mHairFrame->Get("b"); s->SetValue(mHairColor.b); // Finally, queue an update for the composite image. Update(); }