/// <summary> /// Builds polygon mesh from the provided contours. /// </summary> /// <remarks> /// <para> /// The values of the CellSize-based parameters will be converted to world units. /// </para> /// </remarks> /// <param name="context">The context to use for the operation.</param> /// <param name="contours">The contours to use to build the mesh.</param> /// <param name="maxVertsPerPoly"> /// The maximum allowed vertices for a polygon. /// [Limits: 3 <= value <= <see cref="NMGen.MaxAllowedVertsPerPoly"/>] /// </param> /// <param name="walkableHeight"> /// The walkable height used to build the contour data. /// [Limit: >= <see cref="NMGen.MinWalkableHeight"/>] [Units: YCellSize] /// </param> /// <param name="walkableRadius"> /// The radius used to erode the walkable area covered by the contours. /// [Limit: >= 0] [Units: XZCellSize] /// </param> /// <param name="walkableStep"> /// The walkable step used to build /// the contour data. [Limit: >= 0] [Units: YCellSize]</param> /// <returns>The generated polygon mesh, or null if there were errors.</returns> public static PolyMesh Build(BuildContext context, ContourSet contours , int maxVertsPerPoly, int walkableHeight, int walkableRadius, int walkableStep) { if (context == null || contours == null) { return(null); } PolyMesh result = new PolyMesh(AllocType.External); if (!PolyMeshEx.rcpmBuildFromContourSet(context.root , contours.root , maxVertsPerPoly , ref result.root , ref result.mMaxVerts)) { return(null); } result.mWalkableHeight = walkableHeight * contours.YCellSize; result.mWalkableRadius = walkableRadius * contours.XZCellSize; result.mWalkableStep = walkableStep * contours.YCellSize; return(result); }
/// <summary> /// Constructor /// </summary> /// <remarks> /// <para> /// A 'no result' object will be created if the <paramref name="polyMesh"/> parameter /// is null or has a polygon count of zero. /// </para> /// </remarks> /// <param name="tx">The x-index of the tile within the tile grid. (tx, tz)</param> /// <param name="tz">The z-index of the tile within the tile grid. (tx, tz)</param> /// <param name="polyMesh">The polymesh.</param> /// <param name="detailMesh">The detail mesh.</param> /// <param name="heightfield">The heightfield.</param> /// <param name="compactField">The compact field.</param> /// <param name="contours">The contour set.</param> public NMGenAssets(int tx, int tz , PolyMesh polyMesh , PolyMeshDetail detailMesh , Heightfield heightfield , CompactHeightfield compactField , ContourSet contours) { mTileX = tx; mTileZ = tz; if (polyMesh == null || polyMesh.PolyCount == 0) { mPolyMesh = null; mDetailMesh = null; mHeightfield = null; mCompactField = null; mContours = null; } else { mPolyMesh = polyMesh; mDetailMesh = detailMesh; // OK to be null. mHeightfield = heightfield; mCompactField = compactField; mContours = contours; } }
/// <summary> /// Sets the context as having produced no result. /// </summary> public void SetAsNoResult() { mHeightfield = null; mCompactField = null; mContours = null; mPolyMesh = null; mDetailMesh = null; mNoResult = true; }
/// <summary> /// Builds polygon mesh from the provided contours. /// </summary> /// <remarks> /// <para> /// The values of the CellSize-based parameters will be converted to world units. /// </para> /// </remarks> /// <param name="context">The context to use for the operation.</param> /// <param name="contours">The contours to use to build the mesh.</param> /// <param name="maxVertsPerPoly"> /// The maximum allowed vertices for a polygon. /// [Limits: 3 <= value <= <see cref="NMGen.MaxAllowedVertsPerPoly"/>] /// </param> /// <param name="walkableHeight"> /// The walkable height used to build the contour data. /// [Limit: >= <see cref="NMGen.MinWalkableHeight"/>] [Units: YCellSize] /// </param> /// <param name="walkableRadius"> /// The radius used to erode the walkable area covered by the contours. /// [Limit: >= 0] [Units: XZCellSize] /// </param> /// <param name="walkableStep"> /// The walkable step used to build /// the contour data. [Limit: >= 0] [Units: YCellSize]</param> /// <returns>The generated polygon mesh, or null if there were errors.</returns> public static PolyMesh Build(BuildContext context, ContourSet contours , int maxVertsPerPoly, int walkableHeight, int walkableRadius, int walkableStep) { if (context == null || contours == null) return null; PolyMesh result = new PolyMesh(AllocType.External); if (!PolyMeshEx.rcpmBuildFromContourSet(context.root , contours.root , maxVertsPerPoly , ref result.root , ref result.mMaxVerts)) { return null; } result.mWalkableHeight = walkableHeight * contours.YCellSize; result.mWalkableRadius = walkableRadius * contours.XZCellSize; result.mWalkableStep = walkableStep * contours.YCellSize; return result; }