This reference describes historical BigWorld Python client contracts for callbacks, entities, collision, cameras, models, resources, diagnostics, and other engine concepts that still help explain the customized client.

Documentation caveats

Some legacy API entries contain contradictory prose or signatures:

  • loadResourceListBG(resourceList, callbackFn, priority=64) says in its main description and example that the callback receives a ResourceRefs object, but its parameter table incorrectly says the callback takes no arguments. The detailed example and current WoT behavior agree on one resource-ref argument.
  • Optional parameters are printed as required in several signatures, including player(entity), camera(cam), and worldDrawEnabled(newValue); their prose explains the getter form when the argument is omitted.
  • Some descriptions are clearly copied incorrectly. For example, the old getFullScreenAspectRatio description talks about memory usage.
  • Spelling varies between historical Targetting/MouseTargettingMatrix and current Targeting/MouseTargetingMatrix. WoT compatibility code explicitly contains at least one deprecated spelling alias.

Prefer the detailed behavior and examples, then verify against the target client. Never infer a current signature from a legacy synopsis alone.

Compatibility details

  • A later 2.0-era callback implementation made handles ever-increasing and unique, so cancelling an already-cancelled handle had no side effect.
  • Callbacks due in the same frame were changed to run in registration order. callback(0.0, fn) was still guaranteed for the next frame, including when scheduled from inside another callback. These are historical guarantees; current WoT code should not rely on same-deadline ordering without testing.
  • loadResourceListBG gained a priority argument, with higher values loaded first.
  • A documented limitation says loading a GUI XML through prerequisites or loadResourceListBG did not automatically background-load texture paths referenced inside that XML. Callers had to discover and load those assets separately. Modern WoT resource types differ, but nested dependencies still need verification.
  • MouseTargettingMatrix was changed to originate on the camera near plane, rather than the camera position, to prevent a collision ray from hitting a wall behind a backed-up camera.
  • addModel/delModel were introduced to draw PyAttachment objects without an entity owner. This is global scene ownership and requires explicit remove.
  • Client-only spaces stopped automatically becoming camera space; callers had to assign the camera's spaceID explicitly.
  • weather(spaceID) made spaceID optional, defaulting to current camera space. Verify whether that overload survives in the target client.
  • Several APIs were already removed or deprecated in the same historical era, including rumble and chunkInhabitant. Release notes are therefore useful for detecting stale examples even within the supplied 2.0 documentation.

Core legacy contracts

Callbacks and time

Historical callback(time, function) promises execution after the delay but not before the next tick. The callable takes no arguments and the return value is an integer cancellation handle. cancelCallback(handle) returns None. This confirms that callback(0.0, fn) is deferred rather than synchronous.

Historical time() is client simulation time at the player entity. The manual explains that remote entities can be rendered/interpolated further behind that time with distance. serverTime() is the server's entity time. This supports the current rule not to mix client and server time domains.

Player switching

Historical player() gets the current player. Supplying an entity changed the single player entity by invoking onBecomeNonPlayer, changing the old entity back to its ordinary class, changing the new entity into its Player<Type> class, and invoking onBecomePlayer. WoT still uses account/avatar player lifecycle concepts, but mods must not use BigWorld.player(entity) to switch the current player.

Entity lookup and collections

Historical entity(id, lookInCache=False) could optionally search cached entities outside the area of interest. The module attributes distinguished:

  • entities: currently in-world/non-cached entities;
  • cachedEntities: known server entities outside the area of interest;
  • allEntities: every client-instantiated entity.

Current WoT deprecates or aliases the latter two. Its BigWorld.entities also has additions such as valuesOfType, absent from legacy PyEntities. PyEntities documents dictionary-like get, has_key, keys, values, and items.

Collision

Historical collide(spaceID, src, dst) returns None or a three-tuple: (hitPoint, hitTriangle, materialKind). hitTriangle contains three Vector3s and material kind is an integer from 0 to 255. Current vertical-ray usage reads result[0][1] as hit-point Y, but native WoT extensions and other collision helpers may return different structures.

Historical findDropPoint(spaceID, point) performed the specialized downward collision and returned (dropPoint, triangle) or None. Current WoT code uses collide for this purpose; verify findDropPoint before use.

Background resources

Historical loadResourceListBG takes a resource list, completion callback and optional priority (default 64, higher first). It returns nothing immediately. The callback receives PyResourceRefs, which owns the loaded resources and exposes failedIDs, mapping-style access, and pop(resourceID) to transfer one resource out of its ownership.

The example explicitly checks entity.inWorld after asynchronous completion. That is direct historical support for current stale-context checks.

Model(*paths) is synchronous and can block the main thread while loading. Historical fetchModel(*paths, callback) was the background model-specific alternative; verify its availability before use.

Camera and projection

Historical camera() gets the active camera; camera(cam) replaces it. cameraSpaceID() gets or sets the camera's space. projection() returns a ProjectionAccess object whose fov is vertical radians, with nearPlane, farPlane, and rampFov(newFov, seconds). Replacing cameras or projection globally remains invasive in WoT.

Targeting

The module's target is a callable PyTarget singleton. Calling it returns the current target. Its legacy surface is:

  • caps(*caps): required positive and forbidden negative entity target caps;
  • clear() and debug-only debugLock(entity);
  • source: matrix provider supplying the targeting origin/direction;
  • exclude: entity omitted from selection, normally the player/controlled vehicle;
  • maxDistance, selectionFov, and deselectionFov;
  • isEnabled, isFull, isHeld, and isHidden;
  • noPartial: require full locks;
  • skeletonCheckEnabled: use skeleton colliders where supplied;
  • entity: current target even when it is hidden or not a full valid target.

This explains why target() and target.entity are not interchangeable.

Models, motors, and entities

Legacy Entity documents id, spaceID, position, yaw/pitch/roll, matrix, model(s), filter, physics, vehicle, inWorld, base, cell, target caps, model ownership, traps, and enter/leave/player lifecycle callbacks.

Legacy PyModel documents nodes and attachments, action queues, motors, bounds, position, scale, visibility, sounds, and model/world lifetime. A Servo is a motor whose signal matrix provider continuously sets model transform.

Complete legacy module inventory

The following names preserve the legacy module surface for discovery. Treat each name as legacy-only until availability and signature are verified.

Classes listed by the module

ActionMatcher, ActionQueuer, ArmTrackerNodeInfo, AutoAim, AvatarDropFilter, AvatarFilter, BaseCamera, BaseNodeInfo, BlendNodeInfo, BoidsFilter, Bouncer, BoxAttachment, CameraSpeed, CursorCamera, DiffDirProvider, DirectionCursor, DumbFilter, Entity, EntityDirProvider, EntityMProv, Filter, FlexiCam, FootTrigger, FreeCamera, Homer, LatencyGUIComponent, LatencyInfo, LinearHomer, Motor, Orbitor, OrthogonalNodeInfo, Oscillator, Oscillator2, Physics, PlayerAvatarFilter, PlayerMProv, ProjectionAccess, Propellor, PyAttachment, PyAxisEvent, PyChunkLight, PyChunkModel, PyChunkSpotLight, PyDye, PyEntities, PyFashion, PyGraphicsSetting, PyIMEEvent, PyKeyEvent, PyLoft, PyModel, PyModelNode, PyModelObstacle, PyModelRenderer, PyMorphControl, PyMouseEvent, PyResourceRefs, PySceneRenderer, PyServer, PyShimmerCountProvider, PySplodge, PyTarget, PyTextureProvider, PythonServer, PyWaterVolume, ScanDirProvider, ServerCaller, ServerDiscovery, ServerDiscoveryDetails, Servo, SkeletonCollider, Targeting, Tracker, TrackerNodeInfo, UnresolvedUDORefException, VectorGenerator, Weather, and WebPageProvider.

Runtime, entity, space, and collision functions

callback, cancelCallback, player, playerDead, time, serverTime, stime (deprecated), entity, createEntity, destroyEntity, resetEntityManager, connectedEntity, controlEntity, createSpace, releaseSpace, clearSpace, clearAllSpaces, clearEntitiesAndSpaces, addSpaceGeometryMapping, delSpaceGeometryMapping, spaceLoadStatus, spaceTimeOfDay, timeOfDay, collide, findDropPoint, findChunkFromPoint, chunkTransform, reloadChunks, addPot, delPot, addMat, delMat, addWaterVolumeListener, and delWaterVolumeListener.

Camera, input, and targeting functions

camera, cameraSpaceID, projection, target, CursorCamera, FreeCamera, FlexiCam, InvViewMatrix, PlayerMatrix, MouseTargettingMatrix, ThirdPersonTargettingMatrix, DiffDirProvider, EntityDirProvider, ScanDirProvider, AxisEvent, KeyEvent, MouseEvent, isKeyDown, keyToString, stringToKey, setCursor, sinkKeyEvents, axisDirection, and dcursor.

Models, movement, rendering, and environment functions

Model, models, fetchModel, addModel, delModel, addAlwaysUpdateModel, delAlwaysUpdateModel, ActionMatcher, AvatarDropFilter, AvatarFilter, PlayerAvatarFilter, DumbFilter, BoidsFilter, Bouncer, Homer, LinearHomer, Orbitor, Oscillator, Oscillator2, Propellor, Servo, Tracker, TrackerNodeInfo, ArmTrackerNodeInfo, OrthogonalNodeInfo, BoxAttachment, FootTrigger, PyModelObstacle, PyModelRenderer, PySceneRenderer, PyMorphControl, PyTextureProvider, PyWaterVolume, PyChunkModel, PyChunkLight, PyChunkSpotLight, Loft, Material, RenderTarget, Splodge, addShadowEntity, delShadowEntity, addDecal, clearDecals, addFogEmitter, delFogEmitter, addSkyBox, delSkyBox, delStaticSkyBoxes, ambientController, fogController, sunlightController, weather, weatherController, floraReset, floraVBSize, flashBangAnimation, removeFlashBangAnimation, createTranslationOverrideAnim, flyThroughRunning, and worldDrawEnabled.

Graphics, window, resources, sound, and diagnostics functions

loadResourceListBG, GraphicsSetting, graphicsSettings, getGraphicsSetting, setGraphicsSetting, hasPendingGraphicsSettings, commitPendingGraphicsSettings, rollBackPendingGraphicsSettings, graphicsSettingsNeedRestart, autoDetectGraphicsSettings, changeFullScreenAspectRatio, getFullScreenAspectRatio, changeVideoMode, listVideoModes, videoModeIndex, isVideoWindowed, isVideoVSync, setVideoVSync, isTripleBuffered, setTripleBuffering, windowSize, screenSize, screenWidth, screenHeight, resizeWindow, screenShot, addTextureFeed, getTextureFeed, delTextureFeed, loadEventProject, reloadEventProject, unloadEventProject, loadSoundBankIntoMemory, unloadSoundBankFromMemory, loadSoundGroup, unloadSoundGroup, getSound, getSoundBanks, playSound, setDefaultSoundProject, setMasterVolume, addWatcher, addFunctionWatcher, getWatcher, getWatcherDir, setWatcher, delWatcher, debugAQ, debugModel, dumpMemCounters, dumpRefs, memUsed, totalPhysicalMemory, totalVirtualMemory, probe, server, connect, disconnect, quit, restartGame, savePreferences, saveFontCacheMap, localeInfo, darkenConsoleBackground, decalTextureIndex, noPartialLocks, playMovie, getMaterialKinds, and reloadTextures.

Legacy VOIP functions

VOIP.initialise, VOIP.finalise, VOIP.login, VOIP.logout, VOIP.createChannel, VOIP.joinChannel, VOIP.leaveChannel, VOIP.queryChannels, VOIP.inviteUser, VOIP.kickUser, VOIP.enableActiveChannel, VOIP.disableActiveChannel, VOIP.enableMicrophone, VOIP.disableMicrophone, VOIP.enablePositional, VOIP.disablePositional, VOIP.setChannelVolume, VOIP.setMasterVolume, VOIP.setMicrophoneVolume, VOIP.setHandler, VOIP.getStatistics, and VOIP.command.

Current WoT exposes BigWorld.VOIP as a native object used by its VOIP manager; do not assume these 2010 method signatures remain intact.

Module attributes

allEntities, cachedEntities, entities, cameraSpeed, component, isEmbedded, platform, serverDiscovery, target, targeting, plus a legacy bots-only attribute. Several attributes exist only in a particular BigWorld component/build.

Use rule

Use this reference to understand native concepts and discover possible object members. Before using any name in a mod, require current behavior or runtime verification for the exact target client. Server, editor, bots, and stock sample-game APIs are not client-mod APIs merely because they share the BigWorld module name in another component.