Esempio n. 1
0
        protected override void UpdateGeneratorInternal()
        {
            if (surfaceAssets == null ||
                surfaceAssets.Length != 3)
            {
                var defaultRenderMaterial  = CSGMaterialManager.DefaultWallMaterial;
                var defaultPhysicsMaterial = CSGMaterialManager.DefaultPhysicsMaterial;
                surfaceAssets = new CSGSurfaceAsset[3];
                for (int i = 0; i < 3; i++) // Note: sides share same material
                {
                    surfaceAssets[i] = CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial);
                }
            }

            if (Shape == null)
            {
                Shape = new Curve2D(DefaultShape);
            }

            int sides = Shape.controlPoints.Length;

            if (surfaceDescriptions == null ||
                surfaceDescriptions.Length != 2 + sides)
            {
                var surfaceFlags = CSGDefaults.SurfaceFlags;
                surfaceDescriptions = new SurfaceDescription[2 + sides];
                for (int i = 0; i < 2 + sides; i++)
                {
                    surfaceDescriptions[i] = new SurfaceDescription {
                        surfaceFlags = surfaceFlags, UV0 = UVMatrix.centered
                    };
                }
            }

            BrushMeshAssetFactory.GenerateExtrudedShapeAsset(brushMeshAsset, shape, path, curveSegments, surfaceAssets, ref surfaceDescriptions);
        }