/* Copyright (C) 1997, 1998, 1999, 2000 by Alex Pfaffe (Digital Dawn Graphics Inc) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _ddgTree_Class_ #define _ddgTree_Class_ #include "struct/ddggroup.h" #include "render/ddgvbuf.h" class WEXP ddgTree : public ddgNode { typedef ddgNode super; friend class ddgForest; friend class ddgForestBlock; public: enum ddgTreeType{ oak = 0, pine, fern, birch1, birch2, bush, palm }; private: static bool ddgTreeInit; ddgTreeType _type; public: ddgTree(ddgTreeType t); bool init( ddgContext *ctx ); bool draw( ddgContext *ctx); }; class ddgEcoSystem; class ddgEcoBlock; class WEXP ddgForest : public ddgGroup { typedef ddgGroup super; friend class ddgForestBlock; ddgEcoSystem *_ecoSystem; ddgTree *_tree; public: ddgForest( ddgTree *t, ddgEcoSystem *e) : _ecoSystem(e), _tree(t) {} bool init( ddgContext *ctx ); bool draw( ddgContext *ctx); }; class WEXP ddgForestBlock : public ddgVBuffer { typedef ddgVBuffer super; ddgEcoBlock *_eb; ddgTree *_tree; bool _ortho; public: ddgForestBlock( ddgTree *t, ddgEcoBlock *e, bool o) : ddgVBuffer(ddgVArray::quad), _tree(t), _eb(e), _ortho(o) {} bool init( ddgContext *ctx ); bool draw( ddgContext *ctx); }; #endif