Ejemplo n.º 1
0
 /// <summary>
 /// Gets the reference of the base polygon in the tile.
 /// </summary>
 /// <returns>The reference of the base polygon.</returns>
 public uint GetBasePolyRef()
 {
     if (mOwner.IsDisposed)
     {
         return(0);
     }
     return(NavmeshTileEx.dtnmGetPolyRefBase(mOwner.root, mTile));
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Gets the size of the buffer required by the <see cref="GetState"/> method.
 /// </summary>
 /// <returns>The size of the state data.</returns>
 public int GetStateSize()
 {
     if (mOwner.IsDisposed)
     {
         return(0);
     }
     return(NavmeshTileEx.dtnmGetTileStateSize(mOwner.root, mTile));
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the tile header from the raw tile data.
        /// </summary>
        /// <param name="rawTileData">The raw tile data.</param>
        /// <param name="header">The header.</param>
        /// <returns>The status of the request.</returns>
        public static NavStatus GetHeader(byte[] rawTileData, out NavmeshTileHeader header)
        {
            header = new NavmeshTileHeader();

            if (rawTileData == null)
                return NavStatus.Failure | NavStatus.InvalidParam;

            return NavmeshTileEx.dtnmGetTileDataHeader(rawTileData, rawTileData.Length, ref header);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Gets the tile header.
        /// </summary>
        /// <returns>The tile header.</returns>
        public NavmeshTileHeader GetHeader()
        {
            NavmeshTileHeader result = new NavmeshTileHeader();

            if (mData == IntPtr.Zero)
                return new NavmeshTileHeader();

            NavmeshTileEx.dtnmGetTileDataHeaderAlt(mData, mDataLength, ref result);

            return result;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Gets a copy of the off-mesh connection buffer.
        /// </summary>
        /// <param name="buffer">
        /// The buffer to load the results into.
        /// [Length: >= <see cref="NavmeshTileHeader.connCount"/>]
        /// </param>
        /// <returns>The number of connections returned.</returns>
        public int GetConnections(NavmeshConnection[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(0);
            }

            return(NavmeshTileEx.dtnmGetTileConnections(mTile
                                                        , buffer
                                                        , buffer.Length));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Gets a copy of the <see cref="NavmeshBVNode"/> tree.
        /// </summary>
        /// <param name="buffer">
        /// The buffer to load the results into.
        /// [Length: >= <see cref="NavmeshTileHeader.bvNodeCount"/>]
        /// </param>
        /// <returns>The number of nodes returned.</returns>
        public int GetBVTree(NavmeshBVNode[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(0);
            }

            return(NavmeshTileEx.dtnmGetTileBVTree(mTile
                                                   , buffer
                                                   , buffer.Length));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets a copy of the link buffer.
        /// </summary>
        /// <param name="buffer">
        /// The buffer to load the results into.
        /// [Length: >= <see cref="NavmeshTileHeader.maxLinkCount"/>]
        /// </param>
        /// <returns>The number of links returned.</returns>
        public int GetLinks(NavmeshLink[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(0);
            }

            return(NavmeshTileEx.dtnmGetTileLinks(mTile
                                                  , buffer
                                                  , buffer.Length));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Gets a copy of the detail mesh buffer buffer.
        /// </summary>
        /// <param name="buffer">
        /// The buffer to load the results into.
        /// [Length: >= <see cref="NavmeshTileHeader.detailMeshCount"/>]
        /// </param>
        /// <returns>The number of meshes returned.</returns>
        public int GetDetailMeshes(NavmeshDetailMesh[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(0);
            }

            return(NavmeshTileEx.dtnmGetTileDetailMeshes(mTile
                                                         , buffer
                                                         , buffer.Length));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Gets a copy of the vertex buffer.
        /// </summary>
        /// <param name="buffer">
        /// The buffer to load the results into.
        /// [Length: >= <see cref="NavmeshTileHeader.vertCount"/>]
        /// </param>
        /// <returns>The number of vertices returned.</returns>
        public int GetVerts(Vector3[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(0);
            }

            return(NavmeshTileEx.dtnmGetTileVerts(mTile
                                                  , buffer
                                                  , buffer.Length));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Creates tile data from a serialized data created by <see cref="GetData"/>.
        /// </summary>
        /// <param name="rawTileData">The serialized tile data.</param>
        /// <returns>A new tile data object, or null on error.</returns>
        public static NavmeshTileData Create(byte[] rawTileData)
        {
            if (rawTileData == null)
                return null;

            NavmeshTileData result = new NavmeshTileData();

            if (NavmeshTileEx.dtnmBuildTileDataRaw(rawTileData, rawTileData.Length, result))
                return result;

            return null;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Create tile data from the provided build data.
        /// </summary>
        /// <param name="buildData">The build data.</param>
        /// <returns>A new tile data object, or null on error.</returns>
        public static NavmeshTileData Create(NavmeshTileBuildData buildData)
        {
            if (buildData == null || buildData.IsDisposed)
                return null;

            NavmeshTileData result = new NavmeshTileData();

            if (NavmeshTileEx.dtnmBuildTileData(buildData, result))
                return result;

            return null;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Sets the non-structural state defined by the state data.
        /// (Obtained from the <see cref="GetState"/> method.)
        /// </summary>
        /// <param name="stateData">The state data to apply.</param>
        /// <returns>The <see cref="NavStatus" /> flags for the operation.</returns>
        public NavStatus SetState(byte[] stateData)
        {
            if (mOwner.IsDisposed || stateData == null)
            {
                return(NavStatus.Failure | NavStatus.InvalidParam);
            }

            return(NavmeshTileEx.dtnmRestoreTileState(mOwner.root
                                                      , mTile
                                                      , stateData
                                                      , stateData.Length));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Gets the non-structural state of the tile. (Flags, areas, etc.)
        /// </summary>
        /// <remarks>
        /// <para>
        /// The state data is only valid until the tile reference changes.
        /// </para>
        /// </remarks>
        /// <param name="buffer">
        /// The buffer to load the state into. [Length: >= <see cref="GetStateSize"/>]
        /// </param>
        /// <returns>The <see cref="NavStatus" /> flags for the operation.</returns>
        public NavStatus GetState(byte[] buffer)
        {
            if (mOwner.IsDisposed || buffer == null)
            {
                return(NavStatus.Failure | NavStatus.InvalidParam);
            }

            return(NavmeshTileEx.dtnmStoreTileState(mOwner.root
                                                    , mTile
                                                    , buffer
                                                    , buffer.Length));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Creates tile data from a serialized data created by <see cref="GetData"/>.
        /// </summary>
        /// <param name="rawTileData">The serialized tile data.</param>
        /// <returns>A new tile data object, or null on error.</returns>
        public static NavmeshTileData Create(byte[] rawTileData)
        {
            if (rawTileData == null)
            {
                return(null);
            }

            NavmeshTileData result = new NavmeshTileData();

            if (NavmeshTileEx.dtnmBuildTileDataRaw(rawTileData, rawTileData.Length, result))
            {
                return(result);
            }

            return(null);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Create tile data from the provided build data.
        /// </summary>
        /// <param name="buildData">The build data.</param>
        /// <returns>A new tile data object, or null on error.</returns>
        public static NavmeshTileData Create(NavmeshTileBuildData buildData)
        {
            if (buildData == null || buildData.IsDisposed)
            {
                return(null);
            }

            NavmeshTileData result = new NavmeshTileData();

            if (NavmeshTileEx.dtnmBuildTileData(buildData, result))
            {
                return(result);
            }

            return(null);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Gets the tile header.
        /// </summary>
        /// <returns>The tile header.</returns>
        public NavmeshTileHeader GetHeader()
        {
            if (mOwner.IsDisposed)
            {
                return(new NavmeshTileHeader());
            }

            IntPtr header = NavmeshTileEx.dtnmGetTileHeader(mTile);

            if (header == IntPtr.Zero)
            {
                return(new NavmeshTileHeader());
            }

            return((NavmeshTileHeader)
                   Marshal.PtrToStructure(header, typeof(NavmeshTileHeader)));
        }