// EMERGENT GAME TECHNOLOGIES PROPRIETARY INFORMATION // // This software is supplied under the terms of a license agreement or // nondisclosure agreement with Emergent Game Technologies and may not // be copied or disclosed except in accordance with the terms of that // agreement. // // Copyright (c) 1996-2007 Emergent Game Technologies. // All Rights Reserved. // // Emergent Game Technologies, Chapel Hill, North Carolina 27517 // http://www.emergent.net #ifndef EDGEMAP_H #define EDGEMAP_H #include #include #include "EdgeKey.h" // custom allocator for the edge map class EdgeAllocator { public: void* Allocate() { return NiNew AllocNode; } void Deallocate (void* pvNode) { NiDelete (AllocNode*)pvNode; } protected: class AllocNode : public NiMemObject { public: AllocNode* m_pkNext; int m_aiV[2]; NiPoint3 m_kEdge; }; }; class EdgeMap : public NiTMapBase { public: EdgeMap(unsigned int uiHashSize = 37) : NiTMapBase(uiHashSize) { /**/ } virtual ~EdgeMap() { RemoveAll(); } virtual NiTMapItem* NewItem() { return (NiTMapItem*)m_kAllocator.Allocate(); } virtual void DeleteItem(NiTMapItem* pkItem) { m_kAllocator.Deallocate(pkItem); } }; #endif