public void SyncWithModel(FigureModel model, List <ControlVertexProvider> children) { //sync occluder var materialSetDirector = model.MaterialSet.Directory; var newOcclusionDirectory = OccluderLoader.IsOcclusionDirectory(materialSetDirector) ? materialSetDirector : (model.Shape.Directory ?? occluderLoader.DefaultDirectory); if (newOcclusionDirectory != occlusionDirectory) { var newOccluder = occluderLoader.Load(newOcclusionDirectory); occluder?.Dispose(); occlusionDirectory = newOcclusionDirectory; occluder = newOccluder; } //sync visible isVisible = model.IsVisible; //register child occluders if (children != null) { //children are synced first so all children should have occluders by this point var childOccluders = children .Where(child => child.isVisible) .Select(child => child.occluder) .ToList(); occluder.SetChildOccluders(childOccluders); } }