Patent ID: 7924282

Claim:
A computer implemented method of loading virtual objects in a graphically simulated virtual environment divided into a plurality of cells, wherein the method is implemented by a computing system having a processor and memory having stored computer-executable instructions which, when executed by the processor, implement the method, and wherein the method is a cyclical method that comprises: (a) an object manager of the computing system identifying a plurality of discrete and separate loaders which are managed by the object manager, wherein each loader loads a corresponding type of object and wherein each loader has a corresponding priority level and a corresponding loading radius; (b) setting a current priority level to a highest priority level, wherein the priority level is used by the object manager to determine when to send notifications to one or more of the plurality of loaders to load or unload corresponding objects based at least in part on a camera position within the virtual environment; (c) the object manager checking a database that maintains data for each cell within the virtual environment and determining whether there are any incoming cells and whether there are any outgoing cells for any loaders at the current priority level and based on the loading radius corresponding to each loader, wherein an incoming cell for a corresponding loader is a cell within the loading radius of the corresponding loader based on a current camera position, and which was not within the loading radius of the corresponding loader based on a previous camera position, and wherein an outgoing cell for a corresponding loader is a cell which is outside of the loading radius of the corresponding loader based on the new current camera position and which was previously within the loading radius of the corresponding loader based on the previous camera position; (d) the object manager sending, to each loader that has a priority equal to the current priority, a load notification instructing each loader to load the object corresponding to that loader into any incoming cell associated with that loader; and (e) the object manager adjusting the current priority level to a next lower priority level; (f) determining whether there are any loaders at the current priority, after being adjusted, wherein if it is determined that there is at least one loader at the current priority, after being adjusted, the method returns to step (c) and wherein if it is determined that there is not at least one loader at the current priority, the method advances to step (g); and (g) determining whether there are any more priority levels to be processed, wherein if it is determined there are more priority levels to be processed, the method returns to step (e) and wherein if it is determined there are not more priority levels to be processed, the method advances to step (b).