- Add markDirty() calls to setProperty() methods in: - UISprite: position, scale, sprite_index changes - UICaption: position, font_size, colors, text changes - UIGrid: position, size, center, zoom, color changes - UILine: thickness, position, endpoints, color changes - UICircle: radius, position, colors changes - UIArc: radius, angles, position, color changes - UIEntity: position changes propagate to parent grid - Expand getMetrics() Python API to include detailed timing breakdown: - grid_render_time, entity_render_time, fov_overlay_time - python_time, animation_time - grid_cells_rendered, entities_rendered, total_entities - Add comprehensive benchmark suite (tests/benchmarks/benchmark_suite.py): - 6 scenarios: empty, static UI, animated UI, mixed, deep hierarchy, grid stress - Automated metrics collection and performance assessment - Timing breakdown percentages This enables proper dirty flag propagation for the upcoming texture caching system (#144) and provides infrastructure for performance benchmarking (#104). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
6c496b8732
commit
219a559c35
9 changed files with 442 additions and 3 deletions
|
|
@ -499,27 +499,33 @@ bool UISprite::setProperty(const std::string& name, float value) {
|
|||
if (name == "x") {
|
||||
position.x = value;
|
||||
sprite.setPosition(position); // Keep sprite in sync
|
||||
markDirty(); // #144 - Propagate to parent for texture caching
|
||||
return true;
|
||||
}
|
||||
else if (name == "y") {
|
||||
position.y = value;
|
||||
sprite.setPosition(position); // Keep sprite in sync
|
||||
markDirty(); // #144 - Propagate to parent for texture caching
|
||||
return true;
|
||||
}
|
||||
else if (name == "scale") {
|
||||
sprite.setScale(sf::Vector2f(value, value));
|
||||
markDirty(); // #144 - Content change
|
||||
return true;
|
||||
}
|
||||
else if (name == "scale_x") {
|
||||
sprite.setScale(sf::Vector2f(value, sprite.getScale().y));
|
||||
markDirty(); // #144 - Content change
|
||||
return true;
|
||||
}
|
||||
else if (name == "scale_y") {
|
||||
sprite.setScale(sf::Vector2f(sprite.getScale().x, value));
|
||||
markDirty(); // #144 - Content change
|
||||
return true;
|
||||
}
|
||||
else if (name == "z_index") {
|
||||
z_index = static_cast<int>(value);
|
||||
markDirty(); // #144 - Z-order change affects parent
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -528,10 +534,12 @@ bool UISprite::setProperty(const std::string& name, float value) {
|
|||
bool UISprite::setProperty(const std::string& name, int value) {
|
||||
if (name == "sprite_index" || name == "sprite_number") {
|
||||
setSpriteIndex(value);
|
||||
markDirty(); // #144 - Content change
|
||||
return true;
|
||||
}
|
||||
else if (name == "z_index") {
|
||||
z_index = value;
|
||||
markDirty(); // #144 - Z-order change affects parent
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue