/* BobToolz plugin for GtkRadiant Copyright (C) 2001 Gordon Biggans This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // DPatch.h: interface for the DPatch class. // ////////////////////////////////////////////////////////////////////// #pragma once #include #include typedef struct { bool mergable; int pos1; int pos2; } patch_merge_t; typedef struct { float xyz[3]; float st[2]; float normal[3]; float lightmap[2]; } drawVert_t; namespace scene { class Node; class Instance; } #define MAX_PATCH_WIDTH 32 #define MAX_PATCH_HEIGHT 32 #define MIN_PATCH_WIDTH 3 #define MIN_PATCH_HEIGHT 3 class DPatch { public: std::list SplitRows(); std::list SplitCols(); std::list Split(); void Transpose(); //DPatch* TransposePatch(DPatch* p1); //void DebugPrint(); void Invert(); DPatch* MergePatches( patch_merge_t merge_info, DPatch& p1, DPatch& p2 ); patch_merge_t IsMergable( const DPatch& other ); bool ResetTextures( const char *oldTextureName, const char *newTextureName ); scene::Node* QER_entity; scene::Node* QER_brush; void LoadFromPatch( scene::Instance& patch ); void BuildInRadiant( scene::Node* entity = NULL ); void SetTexture( const char* textureName ); char texture[256]; int width, height; drawVert_t points[MAX_PATCH_WIDTH][MAX_PATCH_HEIGHT]; DPatch(); virtual ~DPatch(); };