Ship 0.8 fog/freistellen and fix Windows CI for friends
Some checks are pending
Windows Release / windows-x86_64 (push) Waiting to run

Publish the portable zip to public Forgejo from the private GitHub
builder, and force Ninja so MSVC 195 deps build without CMake 4.2.
This commit is contained in:
copilot 2026-10-25 18:07:47 +01:00
parent 97b136de3b
commit 1c1d63f376
46 changed files with 1748 additions and 156 deletions

View file

@ -20,6 +20,7 @@
#include "DrawingProgramLayerListItem.hpp"
#include "DrawingProgramLayerManagerGUI.hpp"
#include <unordered_set>
#include <vector>
class DrawingProgramLayerManager {
private:
@ -85,5 +86,25 @@ class DrawingProgramLayerManager {
std::vector<CanvasComponentContainer::ObjInfo*> get_flattened_component_list() const;
std::vector<DrawingProgramLayerListItem*> get_flattened_layer_list();
void add_undo_place_component(CanvasComponentContainer::ObjInfo* objInfo);
bool can_current_peer_edit_layer(const DrawingProgramLayerListItem* layer) const;
bool client_may_modify_component(const CanvasComponentContainer* comp) const;
void ensure_editing_layer_is_editable();
/** Host: recompute fog coverage and erase/reveal (+ resources) on clients. */
void refresh_fog_client_projection();
/** Coalesce frequent mesh edits; flushed once per frame in DrawingProgram::update. */
void mark_fog_client_projection_dirty();
void flush_fog_client_projection_if_dirty();
// NetObjIDs omitted from the last client projection (host only).
std::unordered_set<NetworkingObjects::NetObjID> clientHiddenComponentIds;
// Client inserts into locked/fog layers — erase after the NetObj update finishes.
void defer_reject_component(DrawingProgramLayerListItem* layer, NetworkingObjects::NetObjID compId);
void flush_deferred_rejects();
DrawingProgramLayerManagerGUI listGUI;
private:
std::vector<std::pair<DrawingProgramLayerListItem*, NetworkingObjects::NetObjID>> deferredRejectInserts;
bool fogClientProjectionDirty = false;
};