So extract out the facility spawn related section.
"FACILITIES
Facility is the term used for the grouping of objects into a single unit placed in the game. Facilities are .xml files that define what objects are called and where they’re placed. Though the .xmls can be created by hand, the easiest method is to create the scene in Gmax and export the .xml.
When exported, the top two levels of node names and positions will be exported to the .xml. There will be a root node for the facility, then a node for each object to be part of that facility. The name for each object must exactly match one of the objects in the game folders or else it will not match up.
The easiest method of creation is to import each object into Gmax if possible, so that proper spacing can be quickly achieved. It is not necessary though, as it only looks at the names of the nodes, boxes or dummy objects will work fine, boxes of size equal to the object would work best. Unfortunately, if using the stock CFS3 objects, there’s no good way to retrieve the size of the objects so close placement of objects will require some trial and error.
In addition to explicitly calling vehicles or plane, you can you a ‘pick type’ node. The following is a list of the different ‘pick types’ that can be used. When a node with one of these names is placed, a object will be chosen randomly and placed there. The list of objects to choose from is determined based on the nationality of the owner of the facility and the current date in the game. A object of corresponding nationality that was in service during the current date which matches the category (all of which are defined in the .xdp), will then be placed in the position of the ‘pick type’ node.
This allows for ever changing background aircraft and vehicles around the facility to help it feel more alive, instead of always seeing the same thing over and over.
#level_bomber CATEGORY_AIRCRAFT_LEVELBOMBER
#tactical_bomber CATEGORY_AIRCRAFT_TACTBOMBER
#fighter_bomber CATEGORY_AIRCRAFT_FIGHTERBOMBER
// ships
#carrier CATEGORY_SHIP_CARRIER
#cruiser CATEGORY_SHIP_CRUISER
#destroyer CATEGORY_SHIP_DESTROYER
#submarine CATEGORY_SHIP_SUMBARINE
#battle CATEGORY_SHIP_BATTLE
#patrol CATEGORY_SHIP_PATROL
#auxiliary CATEGORY_SHIP_AUX
// vehicles
#tracked CATEGORY_VEHICLE_TRACKED
#wheeled CATEGORY_VEHICLE_WHEELED
#rail CATEGORY_VEHICLE_RAIL
#amphibious CATEGORY_VEHICLE_AMPHIBIOUS
#bailout CATEGORY_VEHICLE_BAILOUT
#balloon CATEGORY_VEHICLE_BALLOON
// anything else...
#artillery CATEGORY_STATIC_ARTILLERY
#equipment CATEGORY_STATIC_MECHEQUIP
#structure CATEGORY_STATIC_STRUCT
#factory CATEGORY_STATIC_FACTORY
#noncombatant CATEGORY_STATIC_NONCOMBATANT
#runway CATEGORY_STATIC_RUNWAY
#airbase CATEGORY_STATIC_AIRBASE
#weapon CATEGORY_WEAPON
#formation CATEGORY_FORMATION
#facility CATEGORY_FACILITY
// groups...
#bombers CATEGORY_AIRCRAFT_ALLBOMBERS & ~CATEGORY_AIRCRAFT_FIGHTERBOMBER }
#fighters CATEGORY_AIRCRAFT_ALLFIGHTERS
#aircraft CATEGORY_AIRCRAFT
#vehicles CATEGORY_VEHICLE
#ships CATEGORY_SHIP
// pick-types - categories plus a finer grained categorization - used for spawning
#armor_aa_static CATEGORY_VEHICLE
#armor_aa_mobile CATEGORY_VEHICLE
#armor_artillery_static CATEGORY_STATIC_ARTILLERY
#armor_artillery_mobile CATEGORY_VEHICLE
#armor_artillery_harbor_small CATEGORY_STATIC_ARTILLERY
#armor_artillery_harbor_large CATEGORY_STATIC_ARTILLERY
#armor_tank_light CATEGORY_VEHICLE_TRACKED
#armor_tank_medium CATEGORY_VEHICLE_TRACKED
#armor_tank_heavy CATEGORY_VEHICLE_TRACKED
#armor_tank_destroyer CATEGORY_VEHICLE_TRACKED
#support_emergency_ambulance CATEGORY_VEHICLE_WHEELED
#support_emergency_fire CATEGORY_VEHICLE_WHEELED
#support_gas CATEGORY_VEHICLE_WHEELED
#support_truck CATEGORY_VEHICLE_WHEELED
#personnel_car CATEGORY_VEHICLE_WHEELED
#personnel_staff CATEGORY_VEHICLE_WHEELED
#military_defensive_balloon CATEGORY_VEHICLE_BALLOON
#rail_loco_large CATEGORY_VEHICLE_RAIL
#rail_loco_medium CATEGORY_VEHICLE_RAIL
#rail_loco_small CATEGORY_VEHICLE_RAIL
#rail_freight_box CATEGORY_VEHICLE_RAIL
#rail_freight_flat CATEGORY_VEHICLE_RAIL
#rail_freight_tank CATEGORY_VEHICLE_RAIL
#rail_armor_flak CATEGORY_VEHICLE_RAIL
#rail_armor_gun CATEGORY_VEHICLE_RAIL
#flag CATEGORY_STATIC_NONCOMBATANT
#harborguns CATEGORY_STATIC_ARTILLERY
armor_artillery_harbor_small
#harborgun CATEGORY_STATIC_ARTILLERY
armor_artillery_harbor_large
#flaktower CATEGORY_STATIC_ARTILLERY
To create a group of the same randomly picked object (so it appears a squadron is parked at the airbase, or a factory is making all the same vehicle) add #(#) after the name.
#fighters#1
#fighters#1
#fighters#1
#fighters#1
#fighters#2
#fighters#2
#fighters#2
#fighters#2
In this example there will be two groups of fighters, the #1 would all be the same kind and the #2 would all be the same. Groups 1 and 2 may or may not be the same as each other.
In the File Properties, custom tab, the following information must be placed.
Name= type
Type=text
Value=Airbase, Ammo Depot, Artillery, Bunker, Dug-in tanks, flaktower, Factory, Refinery, Invasion Fleet, Invasion Defense, Radar, V1 Site, V2 Site, Shipyard, Sub Base, Rail Yard, etc…
The Value=X defines the display name for the facility in the game. It can be anything you wish, these are some of the names used in the stock facilities.
Name=flags
Type=text
Value=isAirbase, isFactory, isMilitary, isPort, isRailyard,spawnsRailTraffic
The ‘flags=isX’ is used by the dynamic mission generator. When a railyard is needed, the game will place one of the facilities with the flags=isRailyard line in the .xml. ‘spawnsRailTraffic’ is an additional flag for railyards telling it to generate trains.
Upon export, this information should be in the top line of the .xml. It can always be added by hand, but will have to be readded after every export from Gmax.
SPECIAL OBJECTS IN FACILITIES
minor_road A linear spline with this name will act as a path for vehicles to travel upon. Any vehicle placed on top of one of the vertices of the spline will be thought to be on the path and will travel around path in a continuous loop. You can have multiple vehicles on a path, but each will go at their own speed and will occasionally pass through each other.
The properties for a minor_road object should have a entry that says:
Type=Road
Airbase# These define the runways. The runways are not actual objects that get placed in the game, but are drawn on the facility ground plane. The airbase# nodes define the length of the runway and surface type. There are several different length runways currently used, additional runways can be created if a separate .xdp is also created and placed into the buildings directory.
Airbase#_notakeoff is for airbases with multiple runways. Runways marked with the ‘_notakeoff’ tag will not be used by the AI aircraft. These runways still have the surface properties of regular runways and can be used by the player as normal.
Runway_path is a two point spline that runs near the length of the runway. This defines the takeoff and landing points for AI aircraft. No type needs to be defined in the properties of this object.
taxi_path short two-point line that determines the position of the player’s plane in the UI animations. The properties for a taxi_path should have a entry that says:
type=hangar
railroad This is a two point spline that will draw and act like a railroad. It should stretch the entire width of the facility. This will also cause the Railyard to be placed along an exsisting railroad in the area. The properties for railroad should have a entry that says:
type=snap
shoreline This is a two point spline that stretches across the entire width of the facility and will automatically line the facility up with a shoreline or river bank. Each point will meet with the shoreline of the surrounding terrain, the line running across the facility will be the divider between land and water. The shoreline object can also be outside of the groundplane for the facility. This is helpful for invasion defenses and the like, so their orientation and position relative to the shoreline can be easily defined within the scene. The properties for shoreline should have a entry that says:
type=snap
groundplane This is a plane that generally encompasses all the buildings in the facility. This object does not show up in the game, but it does flatten the terrain so that all the buildings appear on a level surface. To texture the ground plane will require the terrain SDK. "
++++++++
I have been using the CFs3 Editor recently to re arrange a facility and it isn't as easy as it looks. While if gave me a general idea of object position, it was not pictorially precise enough for me to re arrange stuff. I found it easier going into CFS3 on a mission and then using the screenshots from that together with a mental x and y orientation. In theory one could make a grid facility to place on top in the correct orientation to help with that.