35 class VSG_DECLSPEC PagedLOD :
public Inherit<Node, PagedLOD>
39 PagedLOD(
const PagedLOD& rhs,
const CopyOp& copyop = {});
43 double minimumScreenHeightRatio = 0.0;
52 using Children = std::array<Child, 2>;
55 bool highResActive(uint64_t frameCount, uint64_t inactiveAge = 3)
const
57 return (frameCount - frameHighResLastUsed.load()) <= inactiveAge;
64 template<
class N,
class V>
65 static void t_traverse(N& node, V& visitor)
67 for (
auto& child : node.children)
69 if (child.node) child.node->accept(visitor);
73 void traverse(Visitor& visitor)
override { t_traverse(*
this, visitor); }
74 void traverse(ConstVisitor& visitor)
const override { t_traverse(*
this, visitor); }
75 void traverse(RecordTraversal& visitor)
const override { t_traverse(*
this, visitor); }
77 void read(Input& input)
override;
78 void write(Output& output)
const override;
84 ref_ptr<Options> options;
87 mutable std::atomic<double> priority{0.0};
89 mutable std::atomic_uint64_t frameHighResLastUsed{0};
90 mutable std::atomic_uint requestCount{0};
92 enum RequestStatus :
unsigned int
104 mutable std::atomic<RequestStatus> requestStatus{NoRequest};
105 mutable uint32_t index = 0;
107 ref_ptr<Node> pending;
111 struct PagedLODContainer :
public Inherit<Object, PagedLODContainer>
113 explicit PagedLODContainer(uint32_t maxNumPagedLOD = 10000);
125 uint32_t previous = 0;
128 List* list =
nullptr;
131 using Elements = std::vector<Element>;
138 void resize(uint32_t new_size);
140 void inactive(
const PagedLOD* plod);
147 bool check(
const List& list);
149 void print(std::ostream& out);
ref_ptr< Object > clone(const CopyOp ©op={}) const override
Definition PagedLOD.h:61
int compare(const Object &rhs) const override
compare two objects, return -1 if this object is less than rhs, return 0 if it's equal,...
Definition PagedLOD.h:124
Definition PagedLOD.h:116