public bool GenerateNodes(ChiselBlobAssetReference <NativeChiselSurfaceDefinition> surfaceDefinitionBlob, NativeList <GeneratedNode> nodes, Allocator allocator)
        {
            var generatedBrushMeshes = new NativeList <ChiselBlobAssetReference <BrushMeshBlob> >(nodes.Length, Allocator.Temp);

            try
            {
                generatedBrushMeshes.Resize(nodes.Length, NativeArrayOptions.ClearMemory);
                var description = new BrushMeshFactory.LineairStairsData(bounds,
                                                                         stepHeight, stepDepth,
                                                                         treadHeight,
                                                                         nosingDepth, nosingWidth,
                                                                         plateauHeight,
                                                                         riserType, riserDepth,
                                                                         leftSide, rightSide,
                                                                         sideWidth, sideHeight, sideDepth);
                const int subMeshOffset = 0;
                if (!BrushMeshFactory.GenerateLinearStairsSubMeshes(generatedBrushMeshes,
                                                                    subMeshOffset,
                                                                    in description,
                                                                    in surfaceDefinitionBlob,
                                                                    allocator))
                {
                    for (int i = 0; i < generatedBrushMeshes.Length; i++)
                    {
                        if (generatedBrushMeshes[i].IsCreated)
                        {
                            generatedBrushMeshes[i].Dispose();
                        }
                        generatedBrushMeshes[i] = default;
                    }
                    return(false);
                }
                for (int i = 0; i < generatedBrushMeshes.Length; i++)
                {
                    nodes[i] = GeneratedNode.GenerateBrush(generatedBrushMeshes[i]);
                }
            }
            finally
            {
                generatedBrushMeshes.Dispose();
            }
            return(true);
        }
Exemplo n.º 2
0
        public int PrepareAndCountRequiredBrushMeshes()
        {
            var size = BoundsSize;

            if (math.any(size == 0))
            {
                return(0);
            }

            var description = new BrushMeshFactory.LineairStairsData(bounds,
                                                                     stepHeight, stepDepth,
                                                                     treadHeight,
                                                                     nosingDepth, nosingWidth,
                                                                     plateauHeight,
                                                                     riserType, riserDepth,
                                                                     leftSide, rightSide,
                                                                     sideWidth, sideHeight, sideDepth);

            return(description.subMeshCount);
        }