#pragma once #include "ElementRenderer.hpp" namespace MidLevelRenderer { class MLRLineCloud; } namespace ElementRenderer { //######################################################################### //####################### LineCloudElement ############################## //######################################################################### class LineCloudElement: public Element { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Initialization // public: static void InitializeClass(); static void TerminateClass(); static ClassData *DefaultData; typedef Element BaseClass; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Constructors/Destructors // protected: LineCloudElement( Stuff::MemoryStream *stream, int version ); public: LineCloudElement(unsigned max_points); ~LineCloudElement(); static LineCloudElement* Make( Stuff::MemoryStream *stream, int version, ShapeHolder shapes ); void Save(Stuff::MemoryStream *stream); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Testing // public: void TestInstance(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Hierarchy // protected: void AttachChild(Element *child); void DetachChild(Element *child); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Collision // protected: bool CastCulledRay(CollisionQuery *query); Element* FindSmallestElementContainingCulled(SphereTest *test); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Drawing // protected: void SetDrawState(); static DrawMethod DrawMethods[DrawStateCount]; void InheritDrawMethod( CameraElement *camera, const StateChange *inherited_state, int clipping_state ); void OverrideDrawMethod( CameraElement *camera, const StateChange *inherited_state, int clipping_state ); int CountTriangles(); public: MidLevelRenderer::MLRLineCloud* GetLineCloud() {Check_Object(this); return m_MLRLineCloud;} void SetDataPointers( const unsigned *used_points, const Stuff::Point3D *point_data, const Stuff::RGBAColor *color_data ); protected: MidLevelRenderer::MLRLineCloud *m_MLRLineCloud; }; }