2025-01-22 16:18:30 +01:00

204 lines
7.3 KiB
Plaintext

interface rcConfig {
void rcConfig();
/// The width of the field along the x-axis. [Limit: >= 0] [Units: vx]
attribute long width;
/// The height of the field along the z-axis. [Limit: >= 0] [Units: vx]
attribute long height;
/// The width/height size of tile's on the xz-plane. [Limit: >= 0] [Units: vx]
attribute long tileSize;
/// The size of the non-navigable border around the heightfield. [Limit: >=0] [Units: vx]
attribute long borderSize;
/// The xz-plane cell size to use for fields. [Limit: > 0] [Units: wu]
attribute float cs;
/// The y-axis cell size to use for fields. [Limit: > 0] [Units: wu]
attribute float ch;
/// The minimum bounds of the field's AABB. [(x, y, z)] [Units: wu]
//attribute float[] bmin;
/// The maximum bounds of the field's AABB. [(x, y, z)] [Units: wu]
//attribute float[] bmax;
/// The maximum slope that is considered walkable. [Limits: 0 <= value < 90] [Units: Degrees]
attribute float walkableSlopeAngle;
/// Minimum floor to 'ceiling' height that will still allow the floor area to
/// be considered walkable. [Limit: >= 3] [Units: vx]
attribute long walkableHeight;
/// Maximum ledge height that is considered to still be traversable. [Limit: >=0] [Units: vx]
attribute long walkableClimb;
/// The distance to erode/shrink the walkable area of the heightfield away from
/// obstructions. [Limit: >=0] [Units: vx]
attribute long walkableRadius;
/// The maximum allowed length for contour edges along the border of the mesh. [Limit: >=0] [Units: vx]
attribute long maxEdgeLen;
/// The maximum distance a simplfied contour's border edges should deviate
/// the original raw contour. [Limit: >=0] [Units: vx]
attribute float maxSimplificationError;
/// The minimum number of cells allowed to form isolated island areas. [Limit: >=0] [Units: vx]
attribute long minRegionArea;
/// Any regions with a span count smaller than this value will, if possible,
/// be merged with larger regions. [Limit: >=0] [Units: vx]
attribute long mergeRegionArea;
/// The maximum number of vertices allowed for polygons generated during the
/// contour to polygon conversion process. [Limit: >= 3]
attribute long maxVertsPerPoly;
/// Sets the sampling distance to use when generating the detail mesh.
/// (For height detail only.) [Limits: 0 or >= 0.9] [Units: wu]
attribute float detailSampleDist;
/// The maximum distance the detail mesh surface should deviate from heightfield
/// data. (For height detail only.) [Limit: >=0] [Units: wu]
attribute float detailSampleMaxError;
};
interface Vec3 {
void Vec3();
void Vec3(float x, float y, float z);
attribute float x;
attribute float y;
attribute float z;
};
interface Triangle {
void Triangle();
[Const, Ref] Vec3 getPoint(long n);
};
interface DebugNavMesh {
void DebugNavMesh();
long getTriangleCount();
[Const, Ref] Triangle getTriangle(long n);
};
interface dtNavMesh {
};
interface NavmeshData {
void NavmeshData();
attribute any dataPointer;
attribute long size;
};
interface NavPath
{
long getPointCount();
[Const, Ref] Vec3 getPoint(long n);
};
interface dtObstacleRef {
};
interface dtCrowdAgentParams {
void dtCrowdAgentParams();
attribute float radius; ///< Agent radius. [Limit: >= 0]
attribute float height; ///< Agent height. [Limit: > 0]
attribute float maxAcceleration; ///< Maximum allowed acceleration. [Limit: >= 0]
attribute float maxSpeed; ///< Maximum allowed speed. [Limit: >= 0]
/// Defines how close a collision element must be before it is considered for steering behaviors. [Limits: > 0]
attribute float collisionQueryRange;
attribute float pathOptimizationRange; ///< The path visibility optimization range. [Limit: > 0]
/// How aggresive the agent manager should be at avoiding collisions with this agent. [Limit: >= 0]
attribute float separationWeight;
/// Flags that impact steering behavior. (See: #UpdateFlags)
attribute long updateFlags;
/// The index of the avoidance configuration to use for the agent.
/// [Limits: 0 <= value <= #DT_CROWD_MAX_OBSTAVOIDANCE_PARAMS]
attribute long obstacleAvoidanceType;
/// The index of the query filter used by this agent.
attribute long queryFilterType;
/// User defined data attached to the agent.
//attribute VoidPtr userData;
};
interface NavMesh {
void NavMesh();
void destroy();
void build([Const] float[] positions, [Const] long positionCount, [Const] long[] indices, [Const] long indexCount, [Const, Ref] rcConfig config);
void buildFromNavmeshData(NavmeshData data);
[Value] NavmeshData getNavmeshData();
void freeNavmeshData(NavmeshData data);
[Value] DebugNavMesh getDebugNavMesh();
[Value] Vec3 getClosestPoint([Const, Ref] Vec3 position);
[Value] Vec3 getRandomPointAround([Const, Ref] Vec3 position, float maxRadius);
[Value] Vec3 moveAlong([Const, Ref] Vec3 position, [Const, Ref] Vec3 destination);
dtNavMesh getNavMesh();
[Value] NavPath computePath([Const, Ref] Vec3 start, [Const, Ref] Vec3 end);
void setDefaultQueryExtent([Const, Ref] Vec3 extent);
[Value] Vec3 getDefaultQueryExtent();
dtObstacleRef addCylinderObstacle([Const, Ref] Vec3 position, float radius, float height);
dtObstacleRef addBoxObstacle([Const, Ref] Vec3 position, [Const, Ref] Vec3 extent, float angle);
void removeObstacle(dtObstacleRef obstacle);
void update();
};
interface Crowd {
void Crowd([Const] long maxAgents, [Const] float maxAgentRadius, dtNavMesh nav);
void destroy();
long addAgent([Const, Ref] Vec3 position, [Const] dtCrowdAgentParams params);
void removeAgent([Const] long idx);
void update([Const] float dt);
[Value] Vec3 getAgentPosition([Const] long idx);
[Value] Vec3 getAgentVelocity([Const] long idx);
[Value] Vec3 getAgentNextTargetPath([Const] long idx);
long getAgentState([Const] long idx);
boolean overOffmeshConnection([Const] long idx);
void agentGoto([Const] long idx, [Const, Ref] Vec3 destination);
void agentTeleport([Const] long idx, [Const, Ref] Vec3 destination);
[Value] dtCrowdAgentParams getAgentParameters([Const] long idx);
void setAgentParameters([Const] long idx, [Const] dtCrowdAgentParams params);
void setDefaultQueryExtent([Const, Ref] Vec3 extent);
[Value] Vec3 getDefaultQueryExtent();
[Value] NavPath getCorners([Const] long idx);
};
interface RecastConfigHelper {
void RecastConfigHelper();
void setBMAX([Ref] rcConfig config, [Const] float x, [Const] float y, [Const] float z);
void setBMIN([Ref] rcConfig config, [Const] float x, [Const] float y, [Const] float z);
[Value] Vec3 getBMAX([Ref] rcConfig config);
[Value] Vec3 getBMIN([Ref] rcConfig config);
};
interface rcFloatArray {
attribute float[] raw;
void rcFloatArray(long num);
[Const] long size();
[Const] float at(long n);
[Const] long set(long n, float value);
};
interface rcIntArray {
attribute long[] raw;
void rcIntArray(long num);
[Const] long size();
[Const] long at(long n);
[Const] long set(long n, long value);
};