internal static void UpdateModelMeshDescriptions(ChiselModel model) { if (!ChiselModelGeneratedObjects.IsValid(model.generated)) { if (model.generated != null) { model.generated.Destroy(); } model.generated = ChiselModelGeneratedObjects.Create(model); } var tree = model.Node; if (!tree.Valid) { return; } var meshTypes = ChiselMeshQueryManager.GetMeshQuery(model); var meshDescriptions = tree.GetMeshDescriptions(meshTypes, model.VertexChannelMask); // Check if the tree creates *any* meshes if (meshDescriptions == null || meshDescriptions.Length == 0) { //componentGenerator.RemoveAllGeneratedComponents(model); PostUpdateModel?.Invoke(model); return; } // Sort all meshDescriptions so that meshes that can be merged are next to each other Array.Sort(meshDescriptions, kMeshDescriptionSorterDelegate); model.generated.Update(model, meshDescriptions); }
public override void OnInitialize() { if (generated != null && !generated.generatedDataContainer) { generated.Destroy(); } if (generated == null) { generated = ChiselModelGeneratedObjects.Create(this); } if (colliderSettings == null) { colliderSettings = new ChiselGeneratedColliderSettings(); colliderSettings.Reset(); } if (renderSettings == null) { renderSettings = new ChiselGeneratedRenderSettings(); renderSettings.Reset(); } #if UNITY_EDITOR if (uvGenerationSettings == null) { uvGenerationSettings = new SerializableUnwrapParam(); UnityEditor.UnwrapParam defaults; UnityEditor.UnwrapParam.SetDefaults(out defaults); uvGenerationSettings.angleError = defaults.angleError; uvGenerationSettings.areaError = defaults.areaError; uvGenerationSettings.hardAngle = defaults.hardAngle; uvGenerationSettings.packMarginPixels = defaults.packMargin * 256; } #else if (generated != null && generated.meshRenderers != null) { foreach (var renderable in generated.renderables) { renderable.meshRenderer.forceRenderingOff = true; renderable.meshRenderer.enabled = renderable.sharedMesh.vertexCount == 0; } } #endif initialized = true; }
public void Rebuild(ChiselModel model) { if (!model.IsInitialized) { model.OnInitialize(); } if (!ChiselModelGeneratedObjects.IsValid(model.generated)) { if (model.generated != null) { model.generated.Destroy(); } model.generated = ChiselModelGeneratedObjects.Create(model); } UpdateModelFlags(model); }