#ifndef __URDE_CBOORENDERER_HPP__ #define __URDE_CBOORENDERER_HPP__ #include "IRenderer.hpp" #include "CDrawable.hpp" #include "Shaders/CThermalColdFilter.hpp" namespace urde { class IObjectStore; class CMemorySys; class IFactory; class Buckets { public: static void Clear(); static void Sort(); static void InsertPlaneObject(float, float, const zeus::CAABox&, bool, const zeus::CPlane&, bool, EDrawableType, const void*); static void Insert(const zeus::CVector3f&, const zeus::CAABox&, EDrawableType, const void*, const zeus::CPlane&, unsigned short); static void Shutdown(); static void Init(); }; class CBooRenderer : public IRenderer { IFactory& x8_factory; IObjectStore& xc_store; // CFont x10_fnt; u32 x18_ = 0; std::list x1c_; zeus::CFrustum x44_frustumPlanes; float x2f8_thermColdScale = 0.f; CThermalColdFilter m_thermColdFilter; public: CBooRenderer(IObjectStore& store, IFactory& resFac); void AddStaticGeometry(const std::vector&, const CAreaOctTree*, int); void RemoveStaticGeometry(const std::vector&); void DrawUnsortedGeometry(const std::vector&, int, unsigned int, unsigned int); void DrawSortedGeometry(const std::vector&, int, unsigned int, unsigned int); void DrawStaticGeometry(const std::vector&, int, unsigned int, unsigned int); void PostRenderFogs(); void AddParticleGen(const CElementGen&); void AddPlaneObject(const void*, const zeus::CAABox&, const zeus::CPlane&, int); void AddDrawable(void const *, const zeus::CVector3f&, const zeus::CAABox&, int, EDrawableSorting); void SetDrawableCallback(TDrawableCallback, const void*); void SetWorldViewpoint(const zeus::CTransform&); void SetPerspectiveFovScalar(float); void SetPerspective(float, float, float, float, float); void SetPerspective(float, float, float, float); void SetViewportOrtho(bool, float, float); void SetClippingPlanes(const zeus::CFrustum&); void SetViewport(int, int, int, int); void SetDepthReadWrite(bool, bool); void SetBlendMode_AdditiveAlpha(); void SetBlendMode_AlphaBlended(); void SetBlendMode_NoColorWrite(); void SetBlendMode_ColorMultiply(); void SetBlendMode_InvertDst(); void SetBlendMode_InvertSrc(); void SetBlendMode_Replace(); void SetBlendMode_AdditiveDestColor(); void SetDebugOption(EDebugOption, int); void BeginScene(); void EndScene(); void BeginPrimitive(EPrimitiveType, int); void BeginLines(int); void BeginLineStrip(int); void BeginTriangles(int); void BeginTriangleStrip(int); void BeginTriangleFan(int); void PrimVertex(const zeus::CVector3f&); void PrimNormal(const zeus::CVector3f&); void PrimColor(float, float, float, float); void PrimColor(const zeus::CColor&); void EndPrimitive(); void SetAmbientColor(const zeus::CColor&); void SetStaticWorldAmbientColor(const zeus::CColor&); void DrawString(const char*, int, int); u32 GetFPS(); void CacheReflection(TReflectionCallback, void*, bool); void DrawSpaceWarp(const zeus::CVector3f&, float); void DrawThermalModel(const CModel&, const zeus::CColor&, const zeus::CColor&, const float*, const float*); void DrawXRayOutline(const CModel&, const float*, const float*); void SetWireframeFlags(int); void SetWorldFog(ERglFogMode, float, float, const zeus::CColor&); void RenderFogVolume(const zeus::CColor&, const zeus::CAABox&, const TLockedToken*, const CSkinnedModel*); void SetThermal(bool, float, const zeus::CColor&); void SetThermalColdScale(float scale); void DoThermalBlendCold(); void DoThermalBlendHot(); u32 GetStaticWorldDataSize(); }; } #endif // __URDE_CBOORENDERER_HPP__