Example #1
0
void Camera::Render(Scene &scn) {
    RenderPath(scn);
    SaveBitmap("tmp-rendering.bmp");
    std::cout << "Rendered initial pass" << std::endl;
    for (int i = 0; i < _superSample; ++i) {
        RenderPath(scn, i + 1);
        SaveBitmap("tmp-rendering.bmp");
        std::cout << "Rendered " << i << " pass" << std::endl;
    }
}
Example #2
0
NAMESPACE_UPP

void BufferPainter::BeginOnPathOp(double q, bool abs)
{
	if(onpath.GetCount() == 0)
		RenderPath(ONPATH, NULL, RGBAZero());
	Begin();
	if(pathlen > 0) {
		if(!abs)
			q *= pathlen;
		Pointf pos(0, 0);
		for(int i = 0; i < onpath.GetCount(); i++) {
			PathLine& l = onpath[i];
			if(l.len > 0 && (l.len > q || q >= 1.0 && i == onpath.GetCount() - 1)) {
				Pointf v = l.p - pos;
				Translate(q / l.len * v + pos);
				Rotate(Bearing(v));
				break;
			}
			q -= l.len;
			pos = l.p;
		}
	}
	attrstack.Top().onpath = true;
	onpathstack.Add() = onpath;
	pathlenstack.Add(pathlen);
	onpath.Clear();
	pathlen = 0;
}
Example #3
0
	void FS_GoNear::Update(Brain* brain, double time)
	{
		if (!brain->GetMemory()->IsGoToGoing())
			return;

		BE::Entity* owner = brain->GetOwner();
		auto gtc = brain->GetOwner()->GetLayer()
			->FindEntity("terrain")->GetC<GridTerrainComponent>();
		if (!gtc) return;
		auto sbc = owner->GetC<BE::SteeringBehaviorComponent>();
		if (!sbc) return;

		bool renderPath = false;
		if (gtc->IsMapChanged() &&
			sbc->GetType()._to_integral()
			== BE::SteeringBehavior::ENUM::FOLLOW_PATH)
		{
			if (FindPathNear(brain))
				brain->GetMemory()->SetGoToGoing();
			else
				brain->GetMemory()->SetGoToFailed();
			renderPath = true;
		}

		if (sbc->IsArrived())
		{
			brain->GetMemory()->SetGoToArrived();
			_path.clear();
			renderPath = true;
		}

		if (renderPath)
			RenderPath(gtc, _path, gtc->GetAIWorld());
	}
Example #4
0
FDE_RENDERSTATUS CFDE_RenderContext::DoRender(IFX_Pause* pPause) {
  if (m_pRenderDevice == NULL) {
    return FDE_RENDERSTATUS_Failed;
  }
  if (m_pIterator == NULL) {
    return FDE_RENDERSTATUS_Failed;
  }
  Lock();
  FDE_RENDERSTATUS eStatus = FDE_RENDERSTATUS_Paused;
  CFX_Matrix rm;
  rm.SetReverse(m_Transform);
  CFX_RectF rtDocClip = m_pRenderDevice->GetClipRect();
  if (rtDocClip.IsEmpty()) {
    rtDocClip.left = rtDocClip.top = 0;
    rtDocClip.width = (FX_FLOAT)m_pRenderDevice->GetWidth();
    rtDocClip.height = (FX_FLOAT)m_pRenderDevice->GetHeight();
  }
  rm.TransformRect(rtDocClip);
  IFDE_VisualSet* pVisualSet;
  FDE_HVISUALOBJ hVisualObj;
  CFX_RectF rtObj;
  int32_t iCount = 0;
  while (TRUE) {
    hVisualObj = m_pIterator->GetNext(pVisualSet);
    if (hVisualObj == NULL || pVisualSet == NULL) {
      eStatus = FDE_RENDERSTATUS_Done;
      break;
    }
    rtObj.Empty();
    pVisualSet->GetRect(hVisualObj, rtObj);
    if (!rtDocClip.IntersectWith(rtObj)) {
      continue;
    }
    switch (pVisualSet->GetType()) {
      case FDE_VISUALOBJ_Text:
        RenderText((IFDE_TextSet*)pVisualSet, hVisualObj);
        iCount += 5;
        break;
      case FDE_VISUALOBJ_Path:
        RenderPath((IFDE_PathSet*)pVisualSet, hVisualObj);
        iCount += 20;
        break;
      case FDE_VISUALOBJ_Widget:
        iCount += 10;
        break;
      case FDE_VISUALOBJ_Canvas:
        FXSYS_assert(FALSE);
        break;
      default:
        break;
    }
    if (iCount >= 100 && pPause != NULL && pPause->NeedToPauseNow()) {
      eStatus = FDE_RENDERSTATUS_Paused;
      break;
    }
  }
  Unlock();
  return m_eStatus = eStatus;
}
Example #5
0
	void FS_GoNear::Enter(Brain* brain)
	{
		if (FindPathNear(brain))
			brain->GetMemory()->SetGoToGoing();
		else
			brain->GetMemory()->SetGoToFailed();

		BE::Entity* owner = brain->GetOwner();
		auto entities = std::move(owner->GetLayer()->GetEntities());
		auto gtc = brain->GetOwner()->GetLayer()
			->FindEntity("terrain")->GetC<GridTerrainComponent>();
		if (!gtc) return;

		RenderPath(gtc, _path, gtc->GetAIWorld());
	}