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 );
	}
}
Beispiel #2
0
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);
    }
}
Beispiel #3
0
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);
}
Beispiel #4
0
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);
}
Beispiel #5
0
/*
	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();
}