Entity Processor

The entity process stage is designed for batch processing entities in the scene set. Users can implement an EntityProcessor to control the entity process stage.

Also, attributes (component) of each object (entity) can be manipulated in this processor, including:

Entity filtering

We filter out cameras in the room with few furniture in the following example DSL.

from ksecs.ECS.processors.entity_processor import EntityProcessor
from shapely.geometry import Point
class CameraFilterProcessor(EntityProcessor):
    def process(self):
        for room in self.shader.world.rooms:
            polygon = room.gen_polygon()
            furniture_count = 0
            for ins in self.shader.world.instances:
                if not ins.type == 'ASSET':
                    continue
                if polygon.contains(Point([ins.transform[i] for i in [3, 7, 11]])):
                    furniture_count += 1
            if furniture_count < 5: # We only use room with more than or equal to 5 assets
                for camera in self.shader.world.cameras:
                    if polygon.contains(Point([camera.position[axis] for axis in "xyz"])):
                        self.shader.world.delete_entity(camera)