Aw query 5x5
Jump to navigation
Jump to search
Minimum requirements | ||
---|---|---|
Added in version 3.2 | ||
SDK | build 21 | |
World | build 33 |
int aw_query_5x5 (int x_sector, int z_sector, int sequence[5][5])
Description
Queries for property in a five by five sector area.
Callback
Notes
This method functions identically to aw_query except that it queries a five by five sector area instead of a three by three sector area. This allows the application to query a larger area (200 meters in all directions) in a single call.
For a complete description of how to user this method, see aw_query and Property.
Arguments
- x_sector
- z_sector
- sequence
Argument attributes
None
Return values
- RC_SUCCESS (1) (2)
- RC_NOT_INITIALIZED (1)
- RC_NO_INSTANCE (1)
- RC_NO_CONNECTION (1)
- The connection to the world is down.
- RC_QUERY_IN_PROGRESS (1)
- RC_TIMEOUT
(1) Possible return values when a callback is installed.
(2) Returned by the world server.
Returned attributes
Usage
Count the number of objects in the 5x5 sector area around 500N 500W.
int sequence[5][5]; int object_count; void handle_cell_begin (void) { int cell_x = aw_int (AW_CELL_X); int cell_z = aw_int (AW_CELL_Z); int sector_x = aw_sector_from_cell (cell_x); int sector_z = aw_sector_from_cell (cell_z); if (sector_x < -2 || sector_x > 2 || sector_z < -2 || sector_z > 2) return; sequence[sector_z + 2][sector_x + 2] = aw_int (AW_CELL_SEQUENCE); } void handle_cell_object (void) { object_count += 1; } int main (int argc, char *argv[]) { int rc; /* ... */ aw_event_set (AW_EVENT_CELL_BEGIN, handle_cell_begin); aw_event_set (AW_EVENT_CELL_OBJECT, handle_cell_object); memset (sequence, 0, sizeof (sequence)); for (;;) { rc = aw_query_5x5 (0, 0, sequence); if (rc != RC_SUCCESS) { printf ("Query failed (reason %d)\n", rc); return 0; } if (!aw_bool (AW_QUERY_COMPLETE)) break; } printf ("%d objects at sector (0, 0)\n", object_count); /* ... */ return 0; }
This trick allows an application to immediately receive AW_EVENT_OBJECT_ADD and AW_EVENT_OBJECT_DELETE events for an area.
int sequence[5][5]; memset (sequence, -1, sizeof (sequence)); aw_query_5x5 (query_x, query_z, sequence);