Phase 1: Safety & performance foundation for Grid/Entity overhaul
- Fix Entity3D self-reference cycle: replace raw `self` pointer with `pyobject` strong-ref pattern matching UIEntity (closes #266) - TileLayer inherits Grid texture when none set, in all three attachment paths: constructor, add_layer(), and .grid property (closes #254) - Add SpatialHash::queryCell() for O(1) entity-at-cell lookup; fix missing spatial_hash.insert() in Entity.__init__ grid= kwarg path; use queryCell in GridPoint.entities (closes #253) - Add FOV dirty flag and parameter cache to skip redundant computeFOV calls when map unchanged and params match (closes #292) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
836a0584df
commit
94f5f5a3fd
13 changed files with 436 additions and 47 deletions
|
|
@ -631,10 +631,10 @@ static PyObject* convertEntity3DToPython(std::shared_ptr<mcrf::Entity3D> entity)
|
|||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
// Use the entity's cached Python self pointer if available
|
||||
if (entity->self) {
|
||||
Py_INCREF(entity->self);
|
||||
return entity->self;
|
||||
// Use the entity's cached Python pyobject pointer if available
|
||||
if (entity->pyobject) {
|
||||
Py_INCREF(entity->pyobject);
|
||||
return entity->pyobject;
|
||||
}
|
||||
|
||||
// Create a new wrapper
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue