#ifndef NXS_NEXUS_MT_H #define NXS_NEXUS_MT_H #include "nexus.h" #include #include #include namespace nxs { class Frag:public std::vector {}; struct Node { std::vector in; std::vector out; std::vector frags; float error; bool visited; }; class Policy { public: virtual bool Expand(unsigned int patch, Nexus::Entry &entry) = 0; virtual void Visit(Node *node, std::queue &qnode); }; class FrustumPolicy: public Policy { public: vcg::Frustumf frustum; float error; void GetView() { frustum.GetView(); } bool Expand(unsigned int patch, Nexus::Entry &entry); }; class NexusMt: public Nexus { private: std::vector nodes; public: void LoadHistory(); void ClearHistory(); void ExtractFixed(std::vector &selected, float error); void Extract(std::vector &selected, Policy *policy); protected: void Select(std::vector &selected); }; } #endif