コード例 #1
0
        private static bool GetBrushOutlineValues(Int32 brushNodeID,
                                                  ref Vector3[]     vertices,
                                                  ref Int32[]       visibleOuterLines,
                                                  ref Int32[]       visibleInnerLines,
                                                  ref Int32[]       invisibleOuteLines,
                                                  ref Int32[]       invisibleInnerLines,
                                                  ref Int32[]       invalidLines)
        {
            var brushInfo = CSGManager.GetBrushInfo(brushNodeID);

            if (brushInfo == null)
            {
                return(false);
            }

            var brushOutline = brushInfo.brushOutline;

            if (brushOutline == null ||
                brushOutline.vertices == null ||
                brushOutline.vertices.Length < 3)
            {
                return(false);
            }

            // TODO: once we switch to managed code, remove need to copy outlines
            vertices            = brushOutline.vertices.ToArray();
            visibleOuterLines   = brushOutline.brushOutline.visibleOuterLines.ToArray();
            visibleInnerLines   = brushOutline.brushOutline.visibleInnerLines.ToArray();
            invisibleOuteLines  = brushOutline.brushOutline.invisibleOuterLines.ToArray();
            invisibleInnerLines = brushOutline.brushOutline.invisibleInnerLines.ToArray();
            invalidLines        = brushOutline.brushOutline.invalidLines.ToArray();
            return(true);
        }
コード例 #2
0
        private static bool GetSurfaceOutlineValues(Int32 brushNodeID,
                                                    Int32 surfaceID,
                                                    ref float3[]    vertices,
                                                    ref Int32[]     visibleOuterLines,
                                                    ref Int32[]     visibleInnerLines,
                                                    ref Int32[]     visibleTriangles,
                                                    ref Int32[]     invisibleOuterLines,
                                                    ref Int32[]     invisibleInnerLines,
                                                    ref Int32[]     invalidLines)
        {
            var brushInfo = CSGManager.GetBrushInfo(brushNodeID);

            if (brushInfo == null)
            {
                return(false);
            }

            if (brushInfo.brushOutlineDirty)
            {
                ChiselWireframe.UpdateOutline(brushNodeID);
                brushInfo.brushOutlineDirty = false;
            }

            var brushOutline = brushInfo.brushOutline;

            if (brushOutline == null ||
                brushOutline.vertices == null ||
                brushOutline.vertices.Length < 3)
            {
                return(false);
            }

            var surfaceOutlines = brushOutline.surfaceOutlines;

            if (surfaceOutlines == null ||
                surfaceID < 0 ||
                surfaceID >= surfaceOutlines.Length)
            {
                return(false);
            }

            var surfaceOutline = surfaceOutlines[surfaceID];

            // TODO: once we switch to managed code, remove need to copy outlines
            vertices            = brushOutline.vertices.ToArray();
            visibleOuterLines   = surfaceOutline.visibleOuterLines.ToArray();
            visibleInnerLines   = surfaceOutline.visibleInnerLines.ToArray();
            visibleTriangles    = surfaceOutline.visibleTriangles.ToArray();
            invisibleOuterLines = surfaceOutline.invisibleOuterLines.ToArray();
            invisibleInnerLines = surfaceOutline.invisibleInnerLines.ToArray();
            invalidLines        = surfaceOutline.invalidLines.ToArray();
            return(true);
        }
コード例 #3
0
        internal static void UpdateOutline(Int32 brushNodeID)
        {
            var brushInfo           = CSGManager.GetBrushInfo(brushNodeID);
            var brushMeshInstanceID = CSGManager.GetBrushMeshID(brushNodeID);

            if (BrushMeshManager.IsBrushMeshIDValid(brushMeshInstanceID))
            {
                var brushMesh = BrushMeshManager.GetBrushMesh(brushMeshInstanceID);
                brushInfo.brushOutline = CreateOutline(brushMesh);
            }
            else
            {
                if (brushInfo.brushOutline == null)
                {
                    brushInfo.brushOutline = new BrushOutline();
                }
                brushInfo.brushOutline.Reset();
            }
        }
コード例 #4
0
        // TODO: generate outlines somewhere in managed code


        private static UInt64 GetBrushOutlineGeneration(Int32 brushNodeID)
        {
            var brushInfo = CSGManager.GetBrushInfo(brushNodeID);

            return(brushInfo.brushOutlineGeneration);
        }