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); }
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); }