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; } }
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; }
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()); }
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; }
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()); }