| 1 | The classes in the model system are (at least in mid-July 2005), in a vague UML-ish syntax, arranged somewhat like: |
| 2 | |
| 3 | |
| 4 | [wiki:Image:graphics.png] |
| 5 | |
| 6 | ([http://wildfiregames.com/~code/resources/wiki/graphics/graphics.vsd Editable Visio version]) |
| 7 | |
| 8 | |
| 9 | == Random [wiki:Actors] == |
| 10 | ([http://www.wildfiregames.com/forum/index.php?showtopic=1799 Original discussion]) |
| 11 | |
| 12 | Selections are made at three levels: |
| 13 | * Global - e.g. "Winter". |
| 14 | * Entity - e.g. "Chop". |
| 15 | * Actor - e.g. "Helmet B". (The same selections are used for the base actor and all prop actors.) |
| 16 | |
| 17 | ''Global-level selections'' are currently unimplemented. |
| 18 | |
| 19 | ''Entity-level selections'' are set by `CUnit::!SelectEntityVariant(name)` (currently only one selection can be made at a time, since I assume that's the most convenient interface), which is called by the entity when its state changes (e.g. when it starts chopping wood). (TODO: Determine what "state" means, and the exact strings that should be used.) |
| 20 | |
| 21 | ''Actor-level selections'' are usually either specified when reading the map (for units that were created in the editor, or for loading a saved game), or else are not specified at all. When they are not specified, random selections will be made and then added to the actor selections list. (TODO: Should/can this be network-synchronised?) |
| 22 | |
| 23 | The selections, and the resultant variation, are remembered in the `!ObjectEntry`. When changes are made to the selections, the `!ObjectEntry` rebuilds its model data to match the new variation. |