123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- enum PGPolyFlags
- {
- NONE,
- WALK, // Ability to walk (ground, grass, road)
- DISABLED, // Disabled polygon
- DOOR, // Ability to move through doors
- INSIDE, // Ability to move inside buildings
- SWIM, // Ability to swim (water)
- SWIM_SEA, // Ability to swim (sea water)
- LADDER, // Ability to climb on ladders
- JUMP_OVER, // Ability to do jumps overs
- JUMP_DOWN, // Ability to jump down
- CLIMB, // Ability to climb up
- CRAWL, // Ability to crawl
- CROUCH, // Ability to crouch
- UNREACHABLE,
- ALL,
- JUMP, // JUMP_OVER | JUMP_DOWN
- SPECIAL // JUMP | CLIMB | CRAWL | CROUCH
- }
- enum PGAreaType
- {
- NONE,
- TERRAIN,
- WATER,
- WATER_DEEP,
- WATER_SEA,
- WATER_SEA_DEEP,
- OBJECTS_NOFFCON,
- OBJECTS,
- BUILDING,
- ROADWAY,
- TREE,
- ROADWAY_BUILDING,
- DOOR_OPENED,
- DOOR_CLOSED,
- LADDER,
- CRAWL,
- CROUCH,
- FENCE_WALL,
- JUMP
- }
- /*!
- Filter for FindPath, RaycastNavMesh, SampleNavmeshPosition
- */
- class PGFilter : Managed
- {
- // Uses PGPolyFlags bitmasks
- proto native int GetIncludeFlags();
- proto native int GetExcludeFlags();
- proto native int GetExlusiveFlags();
- proto native void SetFlags(int includeFlags, int excludeFlags, int exclusiveFlags);
- proto native void SetCost(PGAreaType areaType, float cost);
- }
- class AIWorld : Managed
- {
- private void AIWorld();
- private void ~AIWorld();
- /*!
- Creates group with group behaviour specified by templateName param.
- AIGroups lifetime is managed by AIWorld, e.g. empty groups are deleted automatically.
- */
- proto native AIGroup CreateGroup(string templateName);
- /*!
- Creates group with no group behaviour
- */
- proto native AIGroup CreateDefaultGroup();
- /*!
- Destroys group and all AIAgents attached
- */
- proto native void DeleteGroup(notnull AIGroup group);
-
- /*!
- Finds path on navmesh using path graph filter.
-
- /param [in] from starting position
- /param [in] to ending position
- /param [in] pgFilter filter used for searching
- /param [out] waypoints waypoints array including starting and ending position
- /returns true - if path has been found
- */
- proto native bool FindPath(vector from, vector to, PGFilter pgFilter, out TVectorArray waypoints);
-
- /*!
- Raytest in navmesh
-
- /param [in] from starting position
- /param [in] to ending position
- /param [in] pgFilter filter used for searching
- /param [out] hitPos hit position
- /param [out] hitNormal hit normal
- /returns true - if ray hits navmesh edge
- */
- proto native bool RaycastNavMesh(vector from, vector to, PGFilter pgFilter, out vector hitPos, out vector hitNormal);
-
- /*!
- Finds closest point on navmesh within maxDistance radius using path graph filter.
-
- /param [in] position position wanted
- /param [in] maxDistance search radius
- /param [in] pgFilter filter used for searching
- /param [out] sampledPosition closest position on navmesh to position
- /returns true - function succeedes and found position is written to output paramter "sampledPosition"
- /returns false - function failed to find position on navmesh within given radius, output paramter is left intact
- */
- proto native bool SampleNavmeshPosition(vector position, float maxDistance, PGFilter pgFilter, out vector sampledPosition);
- }
|