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?


