BF2 Object Containment
I'm not quite sure where this is going to go, so for the moment it's just some raw data. . .
I (Woody) wrote the following function:
from bf2.stats.constants import *
def showContainment(physicalObject):
def recurseContainment(physicalObject, level):
resultString += " " * level
if level <> 0: resultString += "--> "
resultString += physicalObject.templateName
print resultString
kids = physicalObject.getChildren()
for child in kids:
recurseContainment(child, level + 1)
topParent = getRootParent(physicalObject)
recurseContainment(topParent, 0)
I then set up an event handler to cause showContainment to be called on various Physical Objects when certain events happened--for example, to call it when a EnterVehicle event fires, handing the returned player or vehicle off to showContainment. What this does is to traverse and print the entire "containment" hierarchy for a Physical Object, from top to bottom, so that it can be studied to learn DICE's deepest, darkest secrets.
Here are some examples:
Soldier holding regular rifle:
us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
A guy in a parachute:
parachute
--> ParachuteForceDown
--> parachuteWingLeft
--> parachuteWingRight
--> animatedparachute
--> Parachute_Bodywing
--> parachute_Rudder
--> parachute_elevator
--> parachuteForceFwd
--> parachute_elevator_fwd
--> us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
APC holding two soldiers:
usapc_lav25
--> USAPC_LAV25_hudPass
--> USAPC_LAV25_Turret
--> USAPC_LAV25_BarrelBase
--> USAPC_LAV25_Barrel
--> USAPC_LAV25_TowLauncher_tube
--> USAPC_LAV25_TowLauncher
--> lav25_towbarrel
--> lav25_towbarrel
--> USAPC_LAV25_hud_Spring
--> USAPC_LAV25_hud
--> usapc_lav25_Driver_Camera
--> antenna
--> antenna
--> USAPC_LAV25_SmokeLauncher
--> usapc_lav25_SmokeLauncher_Barrel
--> usapc_lav25_SmokeLauncher_Barrel
--> USAPC_LAV25_Lpropeller
--> USAPC_LAV25_Rpropeller
--> USAPC_LAV25_Engine
--> USAPC_LAV25_nav_RF
--> USAPC_LAV25_Wheel_RF
--> USAPC_LAV25_nav_RR
--> USAPC_LAV25_Wheel_RR
--> USAPC_LAV25_nav_LF
--> USAPC_LAV25__Wheel_LF
--> USAPC_LAV25_nav_LR
--> USAPC_LAV25_Wheel_LR
--> USAPC_LAV25_Rwheel_01
--> USAPC_LAV25_Rwheel_02
--> USAPC_LAV25_Lwheel_01
--> USAPC_LAV25_Lwheel_02
--> USAPC_LAV25_EntryPoint_Front
--> usapc_lav25_EntryPoint_Rear
--> usapc_lav25_Rearpassenger_L
--> usapc_lav25_Rearpassenger_L_Camera
--> usapc_lav25_RearPassengerL_GunBase
--> Firingport_M16
--> us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
--> usapc_lav25_Rearpassenger_R
--> usapc_lav25_Rearpassenger_R_Camera
--> usapc_lav25_RearPassenger_R_GunBase
--> Firingport_M16
--> usapc_lav25_Rearpassenger_BL
--> usapc_lav25_Rearpassenger_BL_Camera
--> usapc_lav25_RearPassenger_BL_GunBase
--> Firingport_M16
--> usapc_lav25_Rearpassenger_BR
--> usapc_lav25_RearPassenger_BR_GunBase
--> Firingport_M16
--> usapc_lav25_RearPassengerCamera
--> usapc_lav25_FloaterFrontLeft
--> usapc_lav25_FloaterFrontRight
--> usapc_lav25_FloaterRearLeft
--> usapc_lav25_FloaterRearRight
--> usapc_lav25_VerticalBodyWing
--> usapc_lav25_Rudder
--> USAPC_LAV25_WaterEngine
--> LaserTarget_vehicle
--> us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
U.S. Blackhawk carrying one soldier:
usthe_uh60
--> USTHE_UH60_FWheelL
--> USTHE_UH60_FWheelR
--> USTHE_UH60_WheelB
--> USTHE_UH60_TailFlap
--> USTHE_UH60_MainEngine
--> USTHE_UH60_TailEngine
--> USTHE_UH60__LLavett
--> USTHE_UH60__RLavett
--> USTHE_UH60_Camera
--> USTHE_UH60_Left_Gunner
--> hmg_m134
--> HMG_M134_Minigun
--> HMG_M134_Barrels
--> HMG_M134_Trigger
--> HMG_M134_Safetyswitch
--> HMG_M134_SafetyCover
--> HMG_M134_Gun
--> HMG_M134_Camera
--> us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
--> USTHE_UH60_Right_Gunner
--> hmg_m134
--> HMG_M134_Minigun
--> HMG_M134_Barrels
--> HMG_M134_Trigger
--> HMG_M134_Safetyswitch
--> HMG_M134_SafetyCover
--> HMG_M134_Gun
--> HMG_M134_Camera
--> USTHE_UH60_CoPilot
--> HeatObject
--> USTHE_UH60_Passenger2
--> USTHE_UH60_Passenger1
--> USTHE_UH60_EntryPoint
--> usthe_uh60_tailrotor
--> usthe_uh60_mainrotor
--> usthe_uh60_flarelauncher
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_flarelauncher_barrel
--> usthe_uh60_EntryPoint_R
--> usthe_uh60_RotorHead1
--> usthe_uh60_RotorHead2
--> usthe_uh60_Rotor
--> usthe_uh60_WingL
--> usthe_uh60_WingR
--> usthe_uh60_Rudder
--> usthe_uh60_BodyWing
--> usthe_uh60_AISpawnPoint
--> usthe_uh60_EntryPoint_mid
--> us_heavy_soldier
--> SoldierCamera
--> US_Assault
--> UnlockUSAssault
--> recycle bin
--> usrif_g3a3
--> ushgr_m67
--> usrif_m203
"Yes", you say, "but what does it all mean?" Ah, now that is the question, isn't it?