Exemplo n.º 1
0
void EditorLineItem::toXml(QDomElement &elt) const
{
    elt.setAttribute( "start", IOHelper::variantToString( mapToScene(m_line[BEGIN]) ) );
    elt.setAttribute( "end", IOHelper::variantToString( mapToScene(m_line[END] ) ) );
    elt.setAttribute( "color", IOHelper::variantToString( m_item->pen().color() ) );
    elt.setAttribute( "width", IOHelper::variantToString( m_item->pen().width() ) );
    elt.setAttribute( "style", IOHelper::variantToString( m_item->pen().style() ) );
    elt.setAttribute( "shadow", IOHelper::variantToString( isShadowEnabled() ) );
}
Exemplo n.º 2
0
void EditorEllipseItem::toXml(QDomElement &elt) const
{
    elt.setAttribute( "color", IOHelper::variantToString( m_item->pen().color() ) );
    elt.setAttribute( "bgColor", IOHelper::variantToString( m_item->brush().color() ) );
    elt.setAttribute( "rotation", QString::number( m_rotation,'f',1) );
    elt.setAttribute( "width", IOHelper::variantToString( m_item->pen().width() ) );
    if ( m_item->brush().style() == Qt::NoBrush)
        elt.setAttribute( "alpha", "0");
    else
        elt.setAttribute( "alpha", IOHelper::variantToString( m_item->brush().color().alpha() ) );
    elt.setAttribute( "rect", IOHelper::variantToString( m_item->rect() ) );
    elt.setAttribute( "pos", IOHelper::variantToString( pos() ) );
    elt.setAttribute( "style", IOHelper::variantToString( m_item->pen().style() ) );
    elt.setAttribute( "shadow", IOHelper::variantToString( isShadowEnabled() ) );
}
Exemplo n.º 3
0
// See http://visual-computing.intel-research.net/art/publications/sdsm/
bool CentralVideoSettings::isSDSMEnabled() const
{
    return isShadowEnabled() && isARBShaderAtomicCountersUsable() && isARBShaderStorageBufferObjectUsable() && isARBComputeShaderUsable() && isARBImageLoadStoreUsable() && UserConfigParams::m_sdsm;
}
Exemplo n.º 4
0
void ShadowManager::updateBlock(GameObject *block,
                                std::vector<cocos2d::V2F_C4B_T2F_Triangle> &triangles,
                                bool clipX) {
  auto renderer = block->getRenderer();
  if (!renderer->isShadowEnabled() || !renderer->isVisible() || !block->isRemovable()) {
    return;
  }
  if (renderer->getBoundingBox().containsPoint(mLightPos)) {
    return;
  }
  if (renderer->getShadowGroup() != mShadowGroup) {
    return;
  }

  auto bounds = GameLevel::instance().getBounds();
  auto camera = GameLevel::instance().getGameLayer()->getCamera();
#if EDITOR_MODE
  auto camRelative = camera->getPosition() - VisibleRect::getVisibleRect().size / 2 -
    Vec2(0, UI_LAYER_HIGHT / 2);
#else
  auto camRelative = camera->getPosition() - VisibleRect::getVisibleRect().size / 2;
#endif

  auto lightPos = mLightPos - camRelative;

  std::vector<Vec2> pts;
  block->getRenderer()->getPointsForShadow(lightPos, pts);
  for (auto &p : pts) {
    p -= camRelative;
  }
  auto entries = getShadowEntry(pts, lightPos);
  if (entries.noShadow) {
    return;
  }

  Color4B colorBase = Color4B::BLACK;
  const float LENGTH = 1500;

  Vec2 dir0, dir1;
  if (mLightType == LIGHT_POINT) {
    dir0 = entries.pt1 - lightPos;
    dir0.normalize();
    dir1 = entries.pt2 - lightPos;
    dir1.normalize();
  } else if (mLightType == LIGHT_DIR) {
    dir0 = dir1 = mLightDir;
  }

  Vec2 f0 = entries.pt1 + dir0 * LENGTH;
  Vec2 f1 = entries.pt2 + dir1 * LENGTH;

  if (clipX) {
    Vec2 leftupper(0, 2000);
    Vec2 leftlower(0, -1000);

    Vec2 rightupper(bounds.size.width, 2000);
    Vec2 rightlower(bounds.size.width, -1000);

    if (Vec2::isSegmentIntersect(leftlower, leftupper, entries.pt1, f0)) {
      f0 = Vec2::getIntersectPoint(leftlower, leftupper, entries.pt1, f0);
    }
    if (Vec2::isSegmentIntersect(leftlower, leftupper, entries.pt2, f1)) {
      f1 = Vec2::getIntersectPoint(leftlower, leftupper, entries.pt2, f1);
    }
    if (Vec2::isSegmentIntersect(rightlower, rightupper, entries.pt1, f0)) {
      f0 = Vec2::getIntersectPoint(rightlower, rightupper, entries.pt1, f0);
    }
    if (Vec2::isSegmentIntersect(rightlower, rightupper, entries.pt2, f1)) {
      f1 = Vec2::getIntersectPoint(rightlower, rightupper, entries.pt2, f1);
    }
  }

  Size visibleSize = VisibleRect::getVisibleRect().size;
  float center = visibleSize.width / 2;
  Vec2 offset(-center - visibleSize.width * (mPosX - 0.5f), 0);

  V2F_C4B_T2F_Triangle t;
  t.a.vertices = entries.pt1 + offset;
  t.a.colors = colorBase;

  t.b.vertices = f1 + offset;
  t.b.colors = colorBase;

  t.c.vertices = f0 + offset;
  t.c.colors = colorBase;

  triangles.push_back(t);

  t.a.vertices = entries.pt1 + offset;
  t.a.colors = colorBase;

  t.b.vertices = entries.pt2 + offset;
  t.b.colors = colorBase;

  t.c.vertices = f1 + offset;
  t.c.colors = colorBase;

  triangles.push_back(t);

  if (entries.needMakeUp) {
    t.a.vertices = entries.pt1 + offset;
    t.a.colors = colorBase;

    t.b.vertices = entries.pt2 + offset;
    t.b.colors = colorBase;

    t.c.vertices = entries.makeUpPt + offset;
    t.c.colors = colorBase;
    
    triangles.push_back(t);
  }
}
Exemplo n.º 5
0
void LightingModel::setShadow(bool enable) {
    if (enable != isShadowEnabled()) {
        _parametersBuffer.edit<Parameters>().enableShadow = (float)enable;
    }
}