Esempio n. 1
0
        void InitCSGTree()
        {
            csgTree = CSGUtility.LoadTree("import.xml", out instanceNodes);
            if (csgTree == null)
            {
                MessageBox.Show("Failed to load file");
                return;
            }

            instanceNodeTranslations = new List <Vector3>();
            if (instanceNodes != null &&
                instanceNodes.Count > 0)
            {
                foreach (var node in instanceNodes)
                {
                    instanceNodeTranslations.Add(node.LocalTranslation);
                }

                subInstanceBrushes = new HashSet <CSGNode>();
                foreach (var node in instanceNodes)
                {
                    foreach (var brush in CSGUtility.FindChildBrushes(node))
                    {
                        subInstanceBrushes.Add(brush);
                    }
                }

                allBrushes = (from node in
                              CSGUtility.FindChildBrushes(csgTree)
                              where !subInstanceBrushes.Contains(node)
                              select node).ToList();
            }
            else
            {
                allBrushes = CSGUtility.FindChildBrushes(csgTree).ToList();
            }

            var updateNodes = new List <CSGNode>();

            updateNodes.AddRange(allBrushes);
            updateNodes.AddRange(instanceNodes);

            UpdateMeshes(csgTree, updateNodes);
        }