204 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
};
 | 
						|
 |