Removed updateDraw boolean

This commit is contained in:
Yousef Khadadeh 2025-07-21 17:48:46 +03:00
parent 38a10e0ef4
commit 24b2d47a90
4 changed files with 3 additions and 12 deletions

View file

@ -112,19 +112,16 @@ void DrawComponent::temp_update(DrawingProgram& drawP) {
drawP.compCache.preupdate_component(collabListInfo.lock());
worldAABB = std::nullopt;
initialize_draw_data(drawP);
updateDraw = true;
}
void DrawComponent::transform_temp_update(DrawingProgram& drawP) {
drawP.compCache.preupdate_component(collabListInfo.lock());
worldAABB = std::nullopt;
updateDraw = true;
}
void DrawComponent::final_update(DrawingProgram& drawP) {
initialize_draw_data(drawP);
finalize_update(drawP);
updateDraw = true;
}
void DrawComponent::client_send_place(DrawingProgram& drawP) {
@ -161,7 +158,6 @@ void DrawComponent::finalize_update(DrawingProgram& drawP, bool invalidateCache)
if(invalidateCache)
drawP.compCache.preupdate_component(collabListInfo.lock());
create_collider(drawP.colliderAllocated);
updateDraw = true;
}
bool DrawComponent::collides_with_world_coords(const CoordSpaceHelper& camCoords, const SCollision::ColliderCollection<WorldScalar>& checkAgainstWorld, bool colliderAllocated) {
@ -202,7 +198,7 @@ void DrawComponent::canvas_do_calculated_transform(SkCanvas* canvas) {
void DrawComponent::calculate_draw_transform(const DrawData& drawData) {
drawSetupData.shouldDraw = !drawData.clampDrawBetween || ((drawData.clampDrawMaximum >= coords.inverseScale) && (drawData.clampDrawMinimum < coords.inverseScale));
if(drawSetupData.shouldDraw) {
drawSetupData.shouldDraw = updateDraw || !worldAABB || SCollision::collide(*worldAABB, drawData.cam.viewingAreaGenerousCollider);
drawSetupData.shouldDraw = !worldAABB || SCollision::collide(*worldAABB, drawData.cam.viewingAreaGenerousCollider);
if(drawSetupData.shouldDraw) {
if(drawData.mipMapLevelTwo > coords.inverseScale)
drawSetupData.mipmapLevel = 2;

View file

@ -72,8 +72,6 @@ class DrawComponent {
#ifndef IS_SERVER
bool selected = false;
bool updateDraw = true;
bool globalCollisionCheck = false;
std::chrono::time_point<std::chrono::steady_clock> lastTransformTime;

View file

@ -572,9 +572,6 @@ void DrawingProgram::draw(SkCanvas* canvas, const DrawData& drawData) {
draw_components_to_canvas(drawProgCacheCanvas, drawData, false);
canvas->drawImage(world.main.drawProgCache.surface->makeTemporaryImage(), 0, 0);
}
for(auto& c : components.client_list())
c->obj->updateDraw = false;
}
switch(controls.selectedTool) {

View file

@ -24,7 +24,7 @@ void DrawingProgramCache::build(std::vector<CollabListType::ObjectInfoPtr> compo
unsortedComponents.clear();
nodesWithCachedSurfaces.clear();
std::erase_if(components, [&](auto& c) {
if(!c->obj->worldAABB || c->obj->updateDraw) {
if(!c->obj->worldAABB) {
unsortedComponents.emplace_back(c);
c->obj->parentBvhNode.reset();
return true;
@ -36,7 +36,7 @@ void DrawingProgramCache::build(std::vector<CollabListType::ObjectInfoPtr> compo
}
void DrawingProgramCache::update() {
if(unsortedComponents.size() >= 1000 && (std::chrono::steady_clock::now() - lastBvhBuildTime) >= std::chrono::seconds(7))
if(unsortedComponents.size() >= 1000 && (std::chrono::steady_clock::now() - lastBvhBuildTime) >= std::chrono::seconds(5))
force_rebuild();
}