public override void OnInitialize() { base.OnInitialize(); if (generated != null && !generated.generatedDataContainer) { generated.Destroy(); } if (generated == null) { generated = ChiselGeneratedObjects.Create(gameObject); } 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 // Legacy solution if (!IsDefaultModel && name == ChiselGeneratedComponentManager.kGeneratedDefaultModelName) { IsDefaultModel = true; } initialized = true; }
static int FinishMeshUpdates(CSGTree tree, ref VertexBufferContents vertexBufferContents, ref Mesh.MeshDataArray meshDataArray, NativeList <ChiselMeshUpdate> colliderMeshUpdates, NativeList <ChiselMeshUpdate> debugHelperMeshes, NativeList <ChiselMeshUpdate> renderMeshes, JobHandle dependencies) { ChiselModel model = null; for (int m = 0; m < registeredModels.Count; m++) { if (!registeredModels[m]) { continue; } if (registeredModels[m].Node == tree) { model = registeredModels[m]; } } if (model == null) { if (meshDataArray.Length > 0) { meshDataArray.Dispose(); } meshDataArray = default; return(0); } if (!ChiselGeneratedObjects.IsValid(model.generated)) { if (model.generated != null) { model.generated.Destroy(); } model.generated = ChiselGeneratedObjects.Create(model.gameObject); } var count = model.generated.FinishMeshUpdates(model, model.gameObject, ref meshDataArray, ref vertexBufferContents, colliderMeshUpdates, debugHelperMeshes, renderMeshes, dependencies); componentGenerator.Rebuild(model); PostUpdateModel?.Invoke(model); return(count); }
public void Rebuild(ChiselModel model) { if (!model.IsInitialized) { model.OnInitialize(); } if (!ChiselGeneratedObjects.IsValid(model.generated)) { if (model.generated != null) { model.generated.Destroy(); } model.generated = ChiselGeneratedObjects.Create(model.gameObject); } UpdateModelFlags(model); }