extends Node # Updated each frame from ObserverSnapshot data (Protocol format: {tick, entities}). # Entities use Protocol decoded format: {entity_id, x, y, z, kind: {variant, data}}. var current_snapshot: Dictionary = {} var current_tick: int = 0 var player_position: Vector2 = Vector2.ZERO var visible_entities: Array = [] # Player entity ID — the first entity is assumed to be the player (will be # refined when the server assigns explicit player entity IDs). var player_entity_id: int = 1 func apply_snapshot(snapshot: Dictionary) -> void: current_snapshot = snapshot if snapshot.has("tick"): current_tick = snapshot.tick if snapshot.has("entities"): visible_entities = snapshot.entities # Derive player position from the player entity for entity in visible_entities: if entity.has("entity_id") and entity.entity_id == player_entity_id: player_position = Vector2(entity.x, entity.y) break