CEL

Public API Reference

propclass/navgraph.h

00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2003 by Steve Cook
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018 */
00019 
00020 #ifndef __CEL_PF_NAVGRAPH__
00021 #define __CEL_PF_NAVGRAPH__
00022 
00023 // CS Stuff
00024 #include "cstypes.h"
00025 #include "csutil/scf.h"
00026 
00027 struct iPcNavGraph;
00028 struct iPcNavLink;
00029 struct iPcNavNode;
00030 struct iPcNavGraphRules;
00031 struct iSector;
00032 
00033 SCF_VERSION (iPcNavGraphRules, 0, 0, 1);
00034 
00038 struct iPcNavGraphRules : public iBase
00039 {
00044   virtual int TraverseLink (iPcNavGraph* graph, iSector* sector,
00045         iPcNavLink* plink, iCelEntity* ent ) = 0;
00046 
00051   virtual void OptimiseGraph (iPcNavGraph* graph) = 0;
00052 
00057   virtual size_t FindShortestPath (iPcNavGraph* graph, size_t iNodeStart,
00058         size_t iNodeEnd, size_t* &ipath) = 0;
00059 
00064   virtual size_t FindNearestNode (iPcNavGraph* graph, csVector3* point,
00065         iSector* sector, iCelEntity* ent) = 0;
00066 };
00067 
00068 SCF_VERSION (iPcNavLink, 0, 0, 1);
00069 
00071 struct iPcNavLink : public iBase
00072 {
00073   virtual void SetSource (iPcNavNode* newsource) = 0;
00074   virtual csRef<iPcNavNode> GetSource () = 0;
00075   virtual void SetDest (iPcNavNode* newdest) = 0;
00076   virtual csRef<iPcNavNode> GetDest () = 0;
00077   virtual int GetLinkInfo () = 0;
00078   virtual void SetLinkInfo (int idata) = 0;
00079   virtual float GetLength () = 0;
00080 };
00081 
00082 SCF_VERSION (iPcNavNode, 0, 0, 1);
00083 
00085 struct iPcNavNode : public iBase
00086 {
00087   virtual void SetPos ( csVector3 newpos ) = 0;
00088   virtual csVector3 GetPos() = 0;
00089 
00090   virtual size_t AddLink (iPcNavLink* link) = 0;
00091   virtual bool RemoveLink (size_t i) = 0;
00092   virtual iPcNavLink* GetLink (size_t i) = 0;
00093   virtual size_t GetLinkCount () const = 0;
00094   virtual size_t FindLink (iPcNavLink* link) = 0;
00095 };
00096 
00097 SCF_VERSION (iPcNavGraph, 0, 0, 1);
00098 
00100 struct iPcNavGraph : public iBase
00101 {
00102   // UGLY @@@
00103   virtual void* GetPrivateObject () = 0;
00104   virtual int Dump () = 0;
00105   virtual int BuildNodeGraph (iSector* sector, iCelEntity* defaultent) = 0;
00106   virtual void SetRegion (iPcRegion* newregion) = 0;
00107   virtual csRef<iPcRegion> GetRegion() = 0;
00108 
00109   virtual size_t AddNode (iPcNavNode* node) = 0;
00110   virtual bool RemoveNode (size_t i) = 0;
00111   virtual iPcNavNode* GetNode (size_t i) = 0;
00112   virtual size_t GetNodeCount () const = 0;
00113   virtual size_t FindNode (iPcNavNode* Node) = 0;
00114 
00115   virtual size_t AddLink (iPcNavLink* link) = 0;
00116   virtual bool RemoveLink (size_t i) = 0;
00117   virtual iPcNavLink* GetLink (size_t i) = 0;
00118   virtual size_t GetLinkCount () const = 0;
00119   virtual size_t FindLink (iPcNavLink* link) = 0;
00120 
00121   virtual void SetRules (iPcNavGraphRules* newrules) =0;
00122 
00123   virtual size_t FindNearestNode (csVector3* point, iSector* sector,
00124         iCelEntity* ent) = 0;
00125   virtual size_t FindShortestPath (size_t iNodeStart, size_t iNodeEnd, size_t*& ipath) = 0;
00126 };
00127 
00128 #endif

Generated for CEL: Crystal Entity Layer by doxygen 1.4.7