protected override void UpdateGeneratorInternal() { if (surfaceAssets == null) { var defaultRenderMaterial = CSGMaterialManager.DefaultWallMaterial; var defaultPhysicsMaterial = CSGMaterialManager.DefaultPhysicsMaterial; surfaceAssets = new CSGSurfaceAsset[6] { CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial), CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial), CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial), CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial), CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial), CSGSurfaceAsset.CreateInstance(defaultRenderMaterial, defaultPhysicsMaterial) }; } if (surfaceDescriptions == null || surfaceDescriptions.Length != 6) { // TODO: make this independent on plane position somehow var surfaceFlags = CSGDefaults.SurfaceFlags; surfaceDescriptions = new SurfaceDescription[6] { new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 }, new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 }, new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 }, new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 }, new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 }, new SurfaceDescription { UV0 = UVMatrix.centered, surfaceFlags = surfaceFlags, smoothingGroup = 0 } }; } if (BoundsExtensions.IsValid(bounds.min, bounds.max)) { BrushMeshAssetFactory.GenerateBoxAsset(brushMeshAsset, bounds, surfaceAssets, surfaceDescriptions); } else { brushMeshAsset.Clear(); } }
// TODO: improve naming public static CSGModel GetModelForNode(CSGModel overrideModel = null) { if (overrideModel) { BrushMeshAssetFactory.ActiveModel = overrideModel; return(overrideModel); } var activeModel = BrushMeshAssetFactory.ActiveModel; if (!activeModel) { activeModel = BrushMeshAssetFactory.Create <CSGModel>("Model"); BrushMeshAssetFactory.ActiveModel = activeModel; } return(activeModel); }
public static bool GenerateCylinderAsset(CSGBrushMeshAsset brushMeshAsset, CSGCylinderDefinition definition) { definition.Validate(); var tempTop = definition.top; var tempBottom = definition.bottom; if (!definition.isEllipsoid) { tempTop.diameterZ = tempTop.diameterX; tempBottom.diameterZ = tempBottom.diameterX; } switch (definition.type) { case CylinderShapeType.Cylinder: return(BrushMeshAssetFactory.GenerateCylinderAsset(brushMeshAsset, tempBottom, tempTop.height, definition.rotation, definition.sides, definition.surfaceAssets, definition.surfaceDescriptions)); case CylinderShapeType.ConicalFrustum: return(BrushMeshAssetFactory.GenerateConicalFrustumAsset(brushMeshAsset, tempBottom, tempTop, definition.rotation, definition.sides, definition.surfaceAssets, definition.surfaceDescriptions)); case CylinderShapeType.Cone: return(BrushMeshAssetFactory.GenerateConeAsset(brushMeshAsset, tempBottom, tempTop.height, definition.rotation, definition.sides, definition.surfaceAssets, definition.surfaceDescriptions)); } return(false); }
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); }
protected override void UpdateGeneratorInternal() { BrushMeshAssetFactory.GenerateSphereAsset(brushMeshAsset, definition); }
protected override void UpdateGeneratorInternal() { BrushMeshAssetFactory.GenerateSpiralStairsAsset(brushMeshAsset, ref definition); }
protected override void UpdateGeneratorInternal() { BrushMeshAssetFactory.GenerateCapsuleAsset(brushMeshAsset, ref definition); }
protected override void UpdateGeneratorInternal() { BrushMeshAssetFactory.GeneratePathedStairsAsset(brushMeshAsset, definition); }