Пример #1
0
        /// <summary>
        /// Creates a new mapper.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Will return null if parameters are invalid. Must have at least one valid area/flag map.
        /// </para>
        /// </remarks>
        /// <param name="name">The processor name.</param>
        /// <param name="priority">The processor priority.</param>
        /// <param name="areas">The areas check for.</param>
        /// <param name="flags">The flags to apply.</param>
        /// <returns>A new marker, or null on error.</returns>
        public static AreaFlagMapper Create(string name, int priority, byte[] areas, ushort[] flags)
        {
            if (areas == null || flags == null || areas.Length != flags.Length ||
                !NMGen.IsValidAreaBuffer(areas, areas.Length))
            {
                return(null);
            }

            return(new AreaFlagMapper(name, priority
                                      , (byte[])areas.Clone(), (ushort[])flags.Clone()));
        }
Пример #2
0
        /// <summary>
        /// Validates the mesh and areas.
        /// </summary>
        /// <remarks>
        /// <para>
        /// The <paramref name="areas"/> parameter is validated only if it is non-null.
        /// </para>
        /// </remarks>
        /// <param name="mesh">The mesh to validate.</param>
        /// <param name="areas">The area to validate. (If non-null.)</param>
        /// <returns>True if the structure and content of the parameters are considered valid.
        /// </returns>
        public static bool IsValid(TriangleMesh mesh, byte[] areas)
        {
            if (mesh == null || mesh.triCount == 0 || !TriangleMesh.IsValid(mesh, true))
            {
                return(false);
            }

            if (areas != null && (areas.Length != mesh.triCount ||
                                  !NMGen.IsValidAreaBuffer(areas, mesh.triCount)))
            {
                return(false);
            }

            return(true);
        }