From 6b2bd27b71179c65e3fedc73d52d7e2b2e221438 Mon Sep 17 00:00:00 2001 From: ikpil Date: Mon, 22 Apr 2024 23:52:01 +0900 Subject: [PATCH] added RcSpanPool class --- src/DotRecast.Recast/RcHeightfield.cs | 30 +++++++-------------- src/DotRecast.Recast/RcSpanPool.cs | 38 +++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 21 deletions(-) create mode 100644 src/DotRecast.Recast/RcSpanPool.cs diff --git a/src/DotRecast.Recast/RcHeightfield.cs b/src/DotRecast.Recast/RcHeightfield.cs index dd8b5fc..b46cc99 100644 --- a/src/DotRecast.Recast/RcHeightfield.cs +++ b/src/DotRecast.Recast/RcHeightfield.cs @@ -22,29 +22,17 @@ using DotRecast.Core.Numerics; namespace DotRecast.Recast { - /** Represents a heightfield layer within a layer set. */ + /// A dynamic heightfield representing obstructed space. + /// @ingroup recast public class RcHeightfield { - /** The width of the heightfield. (Along the x-axis in cell units.) */ - public readonly int width; - - /** The height of the heightfield. (Along the z-axis in cell units.) */ - public readonly int height; - - /** The minimum bounds in world space. [(x, y, z)] */ - public readonly RcVec3f bmin; - - /** The maximum bounds in world space. [(x, y, z)] */ - public RcVec3f bmax; - - /** The size of each cell. (On the xz-plane.) */ - public readonly float cs; - - /** The height of each cell. (The minimum increment along the y-axis.) */ - public readonly float ch; - - /** Heightfield of spans (width*height). */ - public readonly RcSpan[] spans; + public readonly int width; //< The width of the heightfield. (Along the x-axis in cell units.) + public readonly int height; //< The height of the heightfield. (Along the z-axis in cell units.) + public readonly RcVec3f bmin; //< The minimum bounds in world space. [(x, y, z)] + public RcVec3f bmax; //< The maximum bounds in world space. [(x, y, z)] + public readonly float cs; //< The size of each cell. (On the xz-plane.) + public readonly float ch; //< The height of each cell. (The minimum increment along the y-axis.) + public readonly RcSpan[] spans; //< Heightfield of spans (width*height). /** Border size in cell units */ public readonly int borderSize; diff --git a/src/DotRecast.Recast/RcSpanPool.cs b/src/DotRecast.Recast/RcSpanPool.cs new file mode 100644 index 0000000..393ceea --- /dev/null +++ b/src/DotRecast.Recast/RcSpanPool.cs @@ -0,0 +1,38 @@ +/* +Copyright (c) 2009-2010 Mikko Mononen memon@inside.org +DotRecast Copyright (c) 2023 Choi Ikpil ikpil@naver.com + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +namespace DotRecast.Recast +{ + /// A memory pool used for quick allocation of spans within a heightfield. + /// @see rcHeightfield + public class RcSpanPool + { + public RcSpanPool next; //< The next span pool. + public readonly RcSpan[] items; //< Array of spans in the pool. + + public RcSpanPool() + { + items = new RcSpan[RcConstants.RC_SPANS_PER_POOL]; + for (int i = 0; i < items.Length; ++i) + { + items[i] = new RcSpan(); + } + } + } +} \ No newline at end of file