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 aResourceRefsobject, 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), andworldDrawEnabled(newValue); their prose explains the getter form when the argument is omitted. - Some descriptions are clearly copied incorrectly. For example, the old
getFullScreenAspectRatiodescription talks about memory usage. - Spelling varies between historical
Targetting/MouseTargettingMatrixand currentTargeting/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. loadResourceListBGgained a priority argument, with higher values loaded first.- A documented limitation says loading a GUI XML through prerequisites or
loadResourceListBGdid 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. MouseTargettingMatrixwas 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/delModelwere introduced to drawPyAttachmentobjects 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
spaceIDexplicitly. weather(spaceID)madespaceIDoptional, 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
rumbleandchunkInhabitant. 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-onlydebugLock(entity);source: matrix provider supplying the targeting origin/direction;exclude: entity omitted from selection, normally the player/controlled vehicle;maxDistance,selectionFov, anddeselectionFov;isEnabled,isFull,isHeld, andisHidden;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.