| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# cstool/enginetools.h

Go to the documentation of this file.

    00001 /*
    00002     Copyright (C) 2005 by Jorrit Tyberghein
    00003
    00004     This library is free software; you can redistribute it and/or
    00005     modify it under the terms of the GNU Library General Public
    00006     License as published by the Free Software Foundation; either
    00007     version 2 of the License, or (at your option) any later version.
    00008
    00009     This library is distributed in the hope that it will be useful,
    00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00012     Library General Public License for more details.
    00013
    00014     You should have received a copy of the GNU Library General Public
    00015     License along with this library; if not, write to the Free
    00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00017 */
    00018 #ifndef __CS_ENGINETOOLS_H__
    00019 #define __CS_ENGINETOOLS_H__
    00020
    00025 #include "csextern.h"
    00026
    00027 #include "csutil/set.h"
    00028 #include "csutil/array.h"
    00029 #include "csgeom/vector3.h"
    00030
    00031 class csVector2;
    00032 struct iSector;
    00033 struct iCamera;
    00034 struct iMeshWrapper;
    00035 struct iCollideSystem;
    00036
    00040 struct csShortestDistanceResult
    00041 {
    00046   float sqdistance;
    00047
    00054   csVector3 direction;
    00055 };
    00056
    00060 struct csScreenTargetResult
    00061 {
    00065   iMeshWrapper* mesh;
    00066
    00072   csVector3 isect;
    00073
    00079   int polygon_idx;
    00080 };
    00081
    00086 class CS_CRYSTALSPACE_EXPORT csEngineTools
    00087 {
    00088 private:
    00089   static float FindShortestDistance (
    00090         const csVector3& source, iSector* sourceSector,
    00091         const csVector3& dest, iSector* destSector,
    00092         float maxradius,
    00093         csSet<csPtrKey<iSector> >& visited_sectors,
    00094         csVector3& direction,
    00095         bool accurate);
    00096
    00097 public:
    00136   static csShortestDistanceResult FindShortestDistance (
    00137         const csVector3& source, iSector* sourceSector,
    00138         const csVector3& dest, iSector* destSector,
    00139         float maxradius, bool accurate = false);
    00140
    00154   static csScreenTargetResult FindScreenTarget (const csVector2& pos,
    00155       float maxdist, iCamera* camera, iCollideSystem* cdsys = 0);
    00156 };
    00157
    00158 #endif // __CS_ENGINETOOLS_H__