Files
CDAG/Research/scene/PoolBuilder/StandardPoolBuilder.h

36 lines
1.4 KiB
C++

#pragma once
#include "BaseTreePoolBuilder.h"
class StandardPoolBuilder : public BaseTreePoolBuilder
{
public:
using BaseTreePoolBuilder::BaseTreePoolBuilder;
virtual ~StandardPoolBuilder() override {}
std::string GetFullFileName(const std::string& fileName) const override;
std::vector<unsigned8> GetPointerSizesPerLevel(const BaseTree* tree) const;
protected:
void InitBuild(const BaseTree* tree) override;
void FinishBuild(const BaseTree* tree) override;
bool WordAligned() const override { return false; }
unsigned8 GetBytesPerPointer(const BaseTree* tree, const unsigned32& nodeId) const override;
std::vector<unsigned8> WrapPointer(const BaseTree* root, const unsigned32& nodeIndex, const unsigned32& indexInPool, const unsigned32& pointer) const override;
size_t GetPoolInfoSize(const BaseTree* tree) const override;
std::vector<unsigned8> GetPoolInfo(const BaseTree* tree, const std::vector<size_t>& nodePointers, const std::vector<unsigned32>& nodeOrder) override;
//void StandardPoolBuilder::OrderNodes(const BaseTree* tree, std::vector<unsigned32>& nodeOrder) const override;
void CalculatePointerSizesPerLevel(const BaseTree* tree);
void ClearVariables();
// Variables used during the current build
bool mIsBuildingTree = false;
std::vector<unsigned8> mPointerSizesPerLevel;
std::vector<unsigned32> mLevelOffsets;
};