Parent-Child UI System (#122): - Add parent weak_ptr to UIDrawable for hierarchy tracking - Add setParent(), getParent(), removeFromParent() methods - UICollection now tracks owner and sets parent on append/insert - Auto-remove from old parent when adding to new collection Global Position Property (#102): - Add get_global_position() that walks up parent chain - Expose as read-only 'global_position' property on all UI types - Add UIDRAWABLE_PARENT_GETSETTERS macro for consistent bindings Dirty Flag System (#116): - Modify markDirty() to propagate up the parent chain - Add isDirty() and clearDirty() methods for render optimization Scene as Drawable (#118): - Add position, visible, opacity properties to Scene - Add setProperty()/getProperty() for animation support - Apply scene transformations in PyScene::render() - Fix lifecycle callbacks to clear errors when methods don't exist - Add GameEngine::getScene() public accessor 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
bfadab7486
commit
e3d8f54d46
19 changed files with 988 additions and 67 deletions
|
|
@ -54,3 +54,43 @@ void Scene::key_unregister()
|
|||
*/
|
||||
key_callable.reset();
|
||||
}
|
||||
|
||||
// #118: Scene animation property support
|
||||
bool Scene::setProperty(const std::string& name, float value)
|
||||
{
|
||||
if (name == "x") {
|
||||
position.x = value;
|
||||
return true;
|
||||
}
|
||||
if (name == "y") {
|
||||
position.y = value;
|
||||
return true;
|
||||
}
|
||||
if (name == "opacity") {
|
||||
opacity = std::max(0.0f, std::min(1.0f, value));
|
||||
return true;
|
||||
}
|
||||
if (name == "visible") {
|
||||
visible = (value != 0.0f);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Scene::setProperty(const std::string& name, const sf::Vector2f& value)
|
||||
{
|
||||
if (name == "pos" || name == "position") {
|
||||
position = value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
float Scene::getProperty(const std::string& name) const
|
||||
{
|
||||
if (name == "x") return position.x;
|
||||
if (name == "y") return position.y;
|
||||
if (name == "opacity") return opacity;
|
||||
if (name == "visible") return visible ? 1.0f : 0.0f;
|
||||
return 0.0f;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue