sf::Vector2f SpriteObject::GetInitialInstanceOrigin(gd::InitialInstance & instance, gd::Project & project, gd::Layout & layout) const { const Sprite * associatedSprite = GetInitialInstanceSprite(instance, project, layout); if ( associatedSprite == NULL || !associatedSprite->GetSFMLTexture() ) return sf::Vector2f(0,0); float scaleX = instance.HasCustomSize() ? instance.GetCustomWidth()/associatedSprite->GetSFMLTexture()->texture.getSize().x : 1; float scaleY = instance.HasCustomSize() ? instance.GetCustomHeight()/associatedSprite->GetSFMLTexture()->texture.getSize().y : 1; return sf::Vector2f(((float)associatedSprite->GetOrigin().GetX())*fabs(scaleX), ((float)associatedSprite->GetOrigin().GetY())*fabs(scaleY)); }
void TextObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { sf::Text sfText; sfText.setString(text); sfText.setCharacterSize(characterSize); sfText.setStyle((bold ? sf::Text::Bold : 0) | (IsItalic() ? sf::Text::Italic : 0) | (IsUnderlined() ? sf::Text::Underlined : 0) ); if ( font ) sfText.setFont(*font); else sfText.setFont(*FontManager::Get()->GetFont("")); sfText.setOrigin(sfText.getLocalBounds().width/2, sfText.getLocalBounds().height/2); sfText.setPosition( instance.GetX()+sfText.getOrigin().x, instance.GetY()+sfText.getOrigin().y ); sfText.setRotation( instance.GetAngle() ); sfText.setColor(sf::Color(colorR, colorG, colorB)); renderTarget.draw(sfText); }
/** * Render object at edittime */ void TileMapObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { if(tileSet.Get().IsDirty()) return; //Get the current view sf::View currentView = renderTarget.getView(); sf::Vector2f centerPos = currentView.getCenter(); //Construct the transform sf::Transform transform; transform.translate(instance.GetX() + centerPos.x - floor(centerPos.x), instance.GetY() + centerPos.y - floor(centerPos.y)); //Unsmooth the texture bool wasSmooth = tileSet.Get().GetTexture().isSmooth(); tileSet.Get().GetTexture().setSmooth(false); //Draw the tilemap renderTarget.draw(vertexArray, sf::RenderStates(sf::BlendAlpha, transform, &tileSet.Get().GetTexture(), NULL)); tileSet.Get().GetTexture().setSmooth(wasSmooth); }
void Object::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { #if !defined(GD_NO_WX_GUI) sf::RectangleShape mask(instance.HasCustomSize() ? sf::Vector2f(instance.GetCustomWidth(),instance.GetCustomHeight()) : GetInitialInstanceDefaultSize(instance, project, layout)); mask.setPosition(instance.GetX(), instance.GetY()); mask.setRotation(instance.GetAngle()); mask.setFillColor(sf::Color( 147,151,255 )); mask.setOutlineThickness(1); mask.setOutlineColor(sf::Color( 255, 48, 69)); renderTarget.draw(mask); #endif }
/** * Render object at edittime */ void TiledSpriteObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { if(!texture) return; float width = instance.HasCustomSize() ? instance.GetCustomWidth() : GetInitialInstanceDefaultSize(instance, project, layout).x; float height = instance.HasCustomSize() ? instance.GetCustomHeight() : GetInitialInstanceDefaultSize(instance, project, layout).y; float xOffset = 0; float yOffset = 0; sf::Vector2f centerPosition = sf::Vector2f(instance.GetX()+width/2, instance.GetY()+height/2); float angleInRad = instance.GetAngle()*3.14159/180.0; texture->texture.setRepeated(true); sf::Vertex vertices[] = {sf::Vertex( centerPosition+RotatePoint(sf::Vector2f(-width/2,-height/2), angleInRad), sf::Vector2f(0+xOffset,0+yOffset)), sf::Vertex( centerPosition+RotatePoint(sf::Vector2f(+width/2,-height/2), angleInRad), sf::Vector2f(width+xOffset,0+yOffset)), sf::Vertex( centerPosition+RotatePoint(sf::Vector2f(+width/2,+height/2), angleInRad), sf::Vector2f(width+xOffset, height+yOffset)), sf::Vertex( centerPosition+RotatePoint(sf::Vector2f(-width/2,+height/2), angleInRad), sf::Vector2f(0+xOffset, height+yOffset))}; renderTarget.draw(vertices, 4, sf::Quads, &texture->texture); texture->texture.setRepeated(false); }
void SpriteObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { bool shouldNotRotate = false; const Sprite * associatedSprite = GetInitialInstanceSprite(instance, project, layout, &shouldNotRotate); if ( associatedSprite == NULL || !associatedSprite->GetSFMLTexture() ) return; sf::Sprite sprite(associatedSprite->GetSFMLTexture()->texture); float scaleX = instance.HasCustomSize() ? instance.GetCustomWidth()/associatedSprite->GetSFMLTexture()->texture.getSize().x : 1; float scaleY = instance.HasCustomSize() ? instance.GetCustomHeight()/associatedSprite->GetSFMLTexture()->texture.getSize().y : 1; sprite.setOrigin( associatedSprite->GetCenter().GetX(), associatedSprite->GetCenter().GetY() ); ; sprite.setRotation( shouldNotRotate ? 0 : instance.GetAngle() ); sprite.setPosition( instance.GetX() + (associatedSprite->GetCenter().GetX() - associatedSprite->GetOrigin().GetX())*fabs(scaleX), instance.GetY() + (associatedSprite->GetCenter().GetY() - associatedSprite->GetOrigin().GetY())*fabs(scaleY) ); sprite.setScale(scaleX, scaleY); renderTarget.draw(sprite); }
/** * Render object at edittime */ void Box3DObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { if ( !topTexture || !bottomTexture || ! rightTexture || !leftTexture || !frontTexture || !backTexture ) return; renderTarget.popGLStates(); float width = instance.HasCustomSize() ? instance.GetCustomWidth() : GetInitialInstanceDefaultSize(instance, project, layout).x; float height = instance.HasCustomSize() ? instance.GetCustomHeight() : GetInitialInstanceDefaultSize(instance, project, layout).y; float xView = renderTarget.getView().getCenter().x*0.25f; float yView = -renderTarget.getView().getCenter().y*0.25f; float zPosition = instance.floatInfos.find("z") != instance.floatInfos.end() ? instance.floatInfos.find("z")->second : 0; float pitch = instance.floatInfos.find("pitch") != instance.floatInfos.end() ? instance.floatInfos.find("pitch")->second : 0; float roll = instance.floatInfos.find("roll") != instance.floatInfos.end() ? instance.floatInfos.find("roll")->second : 0; float yaw = instance.GetAngle(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //Position glRotatef(renderTarget.getView().getRotation(), 0, 0, 1); glTranslatef(instance.GetX()*0.25f - xView, -instance.GetY()*0.25f - yView, zPosition*0.25f - 75.0f*(renderTarget.getView().getSize().y/600.0f)); float sizeWidth = width*0.25f; float sizeHeight = -height*0.25f; float sizeDepth = depth*0.25f; //Rotation glTranslatef(sizeWidth/2, sizeHeight/2, sizeDepth/2); glRotatef(-yaw, 0, 0, 1); glRotatef(pitch, 0, 1, 0); glRotatef(roll, 1, 0, 0); glTranslatef(-sizeWidth/2, -sizeHeight/2, -sizeDepth/2); //Render the box glEnable(GL_BLEND); glEnable(GL_TEXTURE_2D); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); sf::Texture::bind(&backTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(0 , 0, 0); glTexCoord2f(0, 1); glVertex3f(0 , sizeHeight, 0); glTexCoord2f(1, 1); glVertex3f(sizeWidth, sizeHeight, 0); glTexCoord2f(1, 0); glVertex3f(sizeWidth, 0, 0); glEnd(); sf::Texture::bind(&frontTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(0 , 0, sizeDepth); glTexCoord2f(0, 1); glVertex3f(0 , sizeHeight, sizeDepth); glTexCoord2f(1, 1); glVertex3f(sizeWidth, sizeHeight, sizeDepth); glTexCoord2f(1, 0); glVertex3f(sizeWidth, 0, sizeDepth); glEnd(); sf::Texture::bind(&leftTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(0, 0, 0); glTexCoord2f(0, 1); glVertex3f(0, sizeHeight, 0); glTexCoord2f(1, 1); glVertex3f(0, sizeHeight, sizeDepth); glTexCoord2f(1, 0); glVertex3f(0, 0, sizeDepth); glEnd(); sf::Texture::bind(&rightTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(sizeWidth, 0, 0); glTexCoord2f(0, 1); glVertex3f(sizeWidth, sizeHeight, 0); glTexCoord2f(1, 1); glVertex3f(sizeWidth, sizeHeight, sizeDepth); glTexCoord2f(1, 0); glVertex3f(sizeWidth, 0, sizeDepth); glEnd(); sf::Texture::bind(&bottomTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 1); glVertex3f(0, 0, sizeDepth); glTexCoord2f(0, 0); glVertex3f(0, 0, 0); glTexCoord2f(1, 0); glVertex3f(sizeWidth, 0, 0); glTexCoord2f(1, 1); glVertex3f(sizeWidth, 0, sizeDepth); glEnd(); sf::Texture::bind(&topTexture->texture); glBegin(GL_QUADS); glTexCoord2f(0, 1); glVertex3f(0, sizeHeight, sizeDepth); glTexCoord2f(0, 0); glVertex3f(0, sizeHeight, 0); glTexCoord2f(1, 0); glVertex3f(sizeWidth, sizeHeight, 0); glTexCoord2f(1, 1); glVertex3f(sizeWidth, sizeHeight, sizeDepth); glEnd(); renderTarget.pushGLStates(); }
/** * Render object at edittime */ void ShapePainterObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { edittimeIcon.setPosition(instance.GetX(), instance.GetY()); renderTarget.draw(edittimeIcon); }
void SoundObject::DrawInitialInstance(gd::InitialInstance & instance, sf::RenderTarget & renderTarget, gd::Project & project, gd::Layout & layout) { soundSprite.setPosition(instance.GetX(), instance.GetY()); renderTarget.draw(soundSprite); }
/** * Render object at edittime */ void ParticleEmitterObject::DrawInitialInstance(gd::InitialInstance& instance, sf::RenderTarget& renderTarget, gd::Project& project, gd::Layout& layout) { sf::CircleShape circle(3); circle.setPosition(sf::Vector2f(instance.GetX() - 2, instance.GetY() - 2)); circle.setFillColor( sf::Color(GetParticleRed1(), GetParticleGreen1(), GetParticleBlue1())); float emitterAngle = instance.GetAngle() / 180.0 * 3.14159; float line1Angle = emitterAngle - (GetEmitterAngleB() / 2.0) / 180.0 * 3.14159; float line2Angle = emitterAngle + (GetEmitterAngleB() / 2.0) / 180.0 * 3.14159; sf::Vertex line1[] = { sf::Vertex( sf::Vector2f(instance.GetX(), instance.GetY()), sf::Color( GetParticleRed1(), GetParticleGreen1(), GetParticleBlue1())), sf::Vertex( sf::Vector2f(cos(line1Angle) * 32 + instance.GetX(), sin(line1Angle) * 32 + instance.GetY()), sf::Color( GetParticleRed2(), GetParticleGreen2(), GetParticleBlue2()))}; sf::Vertex line2[] = { sf::Vertex( sf::Vector2f(instance.GetX(), instance.GetY()), sf::Color( GetParticleRed1(), GetParticleGreen1(), GetParticleBlue1())), sf::Vertex( sf::Vector2f(cos(line2Angle) * 32 + instance.GetX(), sin(line2Angle) * 32 + instance.GetY()), sf::Color( GetParticleRed2(), GetParticleGreen2(), GetParticleBlue2()))}; renderTarget.draw(circle); renderTarget.draw(line1, 2, sf::Lines); renderTarget.draw(line2, 2, sf::Lines); }