DI-Guy SDK Documentation  13.7
diguy_changes.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3  **
4  *t DI-Guy Changes and Version History
5  */
6 /****************************************************************************/
7 
8 /*****************************************************************************
9  *****************************************************************************
10  **
11  *2 DI-Guy Version 12.5
12  **
13  *****************************************************************************
14  *****************************************************************************
15  **
16 
17  **************************************
18  *3 DI-Guy API
19  **************************************
20  **
21  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
22  **
23  *4 Version 12.5.3
24  **
25  *- - Fixed a bug in diguyApp::set_num_rendering_passes() where it would not effect
26  *- rendering in the graphics API.
27  *- - Added support for two pass transparency rendering in the Graphics API
28  *- - Fixed appearances not instantly broadcasting a PDU when character appearance changed.
29  *- - Fixed position pop when character appearance changed.
30  *- - Fixed hard crash when preloading appearances with legacy character types.
31  *- - Fixed bug with handling of uppercase extensions on geometry data.
32  **
33  *4 Version 12.5.2
34  **
35  *- - Fixed precision issue in diguyCharacter::get_position_double().
36  *- - Fixed xref bounds issue on initial scene object load.
37  *- - Fixed dae LOD issue where lod's after 0 were not loaded.
38  *- - Added diguyCharacter::get_num_appearances_of_type() and
39  *- diguyCharacter::get_appearance_name_at_index() accessors for various appearances.
40  *- - Vehicles that aren't sending custom PDU's will still generate repulsive
41  *- bounds for crowds.
42  **
43  *4 Version 12.5.1
44  **
45  *- - Fixed bug where customer sourced dds files failed to load because we assumed
46  *- they were lz4'ed.
47  *- - Fixed bug where files with capitalized extensions eg "FLT" failed to load.
48  *- - Fixed bug where invalid xrefs caused parent bounding boxes to fail to register
49  *- as possibly valid.
50  *- - Fixed hard crash when drawing empty octtree.
51  *- - Fixed matrix state glitch when drawing octtree and scene object bounds
52  *- - Fixed path planning bug in funnel code when far above the z origin.
53  *- - Fixed bug where browsing for a new scene object file name didn't force octtree
54  *- recreation.
55  *- - Fixed logic bug in check visibility code.
56  *- - Fixed bug where changing appearances could cause single frame muzzle flashes and
57  *- loss of character skinning matrices.
58  *- - Fixed bug where flt files were unable to have their material edited by
59  *- the character viewer
60  *- - Fixed bug where changing character type caused all action beads to collapse
61  *- on a path.
62  *- - Added additional guide example showing differences between similar and dissimilar
63  *- character types.
64  *- - Fixed bug in built-in OpenGL renderer where fixed function mode didn't properly
65  *- bind textures. Fixes textureless segmented characters rendering in Motion Editor.
66  *- - Fixed joystick not properly loading in I-Guy mode.
67  *- - Fixed ray testing against scaled scene objects.
68  *- - Fixed off by one error in link combo in character viewer.
69  *- - Fixed bug in Lua debugger. "Step over" and "Step out" buttons were not working correctly
70  *- - General improvements to code that tests get_enabled() and get_dead() on a character, the
71  *- code will now also test the character's t_out compared to current time.
72  *- - Added diguyAgentParams:set_influence_box_enabled() (and get)
73  *- - Fixed bug with ground clamping on large scenarios.
74  *- - Fixed performance issue with receiving props over the network.
75  *- - Improved shadow pass rendering performance.
76  *- - Shader cleanup.
77  *- - Changed Graphics API shader samples to default point light #define to off.
78  *- - Fixed crash when executing gesture that wasn't made for a character.
79  *- - Fixed crash when loading degenerate flt file xrefs.
80  *- - Improved memory use when decompressing many dds files.
81  *- - diguyCharacter::set_orientation() now checks if the character has a vehicle
82  *- controller and if so, it now allows the caller to hard-set the vehicle's
83  *- orientation. Previously, only the vehicle controller determined this.
84  *- - diguyCharacter::find_path() now checks if the character_type contains the
85  *- substring 'vehicle' and if so, the path produced will be wide enough to allow
86  *- the character to pass, based upon character's bounding-box's width.
87  *- - Added a number of try/catch blocks to deal with running out of memory while
88  *- loading extremely large scenarios.
89  *- - Added code/UI to allow DI-Guy Scenario to unload textures when not used for
90  *- a long time. Off by default.
91  *- - Added diguyCharacter::trigger_shader_refresh(), a function that triggers
92  *- a refresh of the shader for a character.
93  *- - Added a number of experimental diguyApp memory management functions:
94  *>
95  *- - diguyApp::set_threshold_to_unload_textures()
96  *- - diguyApp::get_threshold_to_unload_textures()
97  *- - diguyApp::set_texture_unload_frequency()
98  *- - diguyApp::get_texture_unload_frequency()
99  *- - diguyApp::get_unload_unused_after_scenario_load()
100  *- - diguyApp::set_unload_unused_after_scenario_load()
101  **
102  *4 Version 12.5.0
103  **
104  *b CRITICAL api changes
105  *- - C++ callback:<br>
106  *b float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z); <br>
107  *- has been replaced with <br>
108  *b float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z, int * valid);<br>
109  *- code will need to be updated before recompiling.
110  *- - Graphics API
111  *>
112  *- - bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices must be set to 0 if you
113  *- aren't planning on upgrading shaders to use 4x3 matrices.
114  *- - As a performance optimization we are no longer transposing our internal matrix
115  *- representation in C++ before sending to OpenGL.
116  *- 4x4 matrix bind should get updated to
117  *e glUniformMatrix4fv(m_bind_location_ufrm_link_matrices, // uniform var location
118  *e num_mats, // number of matrices
119  *e !get_transposed_matrix_data(), // whether to transpose matrix
120  *e mat_data); // pointer to matrix data
121  *- where bdiGraphicsInitGraphicsAPI.transpose_shader_matrices has been properly set
122  *- see diguyOglGraphicsShaderProgram.cpp for example.
123  *<
124  **
125  *b New Features
126  *- - New adaptive guide allowing characters to fix dead reckoning errors with appropriate
127  *- step and strafe motions. Now the default in the networking system as well as featured
128  *- in the guide example.
129  *- - New texture variation system allowing for infinite variations on next-gen
130  *- characters. See diguyCharacter::set_use_texture_variations().
131  *- - Next-gen characters now have a number of multiple available head appearances.
132  *- - Motion engine should now be fully multi-threaded, thread control api is part of diguyApp.
133  *- - New C++ documentation system, utilizing doxygen.
134  *- - Fixed matrix update issues with motion lod system and skinned characters,
135  *- motion lod system can be used again with them, same issues had been happening with
136  *- segmented characters as well. We recommend using multi-threaded pipeline instead
137  *- of motion lods at this point.
138  *- - New ground clamp option 'g' - approximation based on ground clamping vehicle bounds
139  *- - Scene objects can now be collada DAEs.
140  *- - Added support for bump maps on scene objects.
141  *- - New multi-threaded asynchronous texture loader, controllable via scenario UI and
142  *- diguyCharacter::set_texture_load_behavior() and diguySceneObject::set_texture_load_behavior()
143  *-
144  *- - Collision Infrastructure Improvements:
145  *>
146  *- - Improved performance of ray tests with scenes with many props.
147  *- - Scene Object spatial partitioning system has been overhauled allowing scene objects
148  *- to be reposition without recreating the octtree.
149  *- - Octtree memory usage has been reduced by 10%.
150  *- - Octtree is now available for end users who's objects are not flt files, see
151  *- scene_object_mesh programming example.
152  *<
153  *- - New Scene Object collision control API functions:
154  *>
155  *- - diguyScenario::create_user_defined_scene_object()
156  *- - diguySceneObject::add_vertex_to_user_defined()
157  *- - diguySceneObject::add_triangle_to_user_defined()
158  *- - diguySceneObject::add_vertex_array_to_user_defined();
159  *- - diguySceneObject::add_triangle_array_to_user_defined()
160  *- - diguySceneObject::add_triangle_to_user_defined();
161  *- - diguySceneObject::build_user_defined();
162  *<
163  *- - New API functions:
164  *>
165  *- - diguyCharacter::get_facefx_node_value()
166  *- - diguyCharacter::get_max_shader_quality_level()
167  *- - diguyCharacter::get_texture_load_behavior()
168  *- - diguyCharacter::get_use_texture_variations()
169  *- - diguyCharacter::set_max_shader_quality_level()
170  *- - diguyCharacter::set_texture_load_behavior()
171  *- - diguyCharacter::set_use_texture_variations()
172  *- - diguyCharacter::set_use_texture_variations()
173  *- - diguyCharacter::set_current_hand_item_appearance(const char* hand_item_appearance)
174  *- - diguyCharacter::get_current_hand_item_appearance()
175  *- - diguyCharacter::get_num_supplementary_appearances_of_type(diguySupplementaryAppearanceTypes appearance_type)
176  *- - diguyCharacter::get_supplementary_appearance_name(diguySupplementaryAppearanceTypes appearance_type, int index)
177  *- - diguyImpact::get_impact_velocity(float* x, float* y, float* z)
178  *- - diguyImpact::get_is_from_net_detonation()
179  *- - diguyImpact::get_DIS_munition_septet_value(int septet_index)
180  *- - diguyImpact::get_DIS_site()
181  *- - diguyImpact::get_DIS_host()
182  *- - diguyImpact::get_DIS_event_number()
183  *- - diguyImpact::get_DIS_munition_number()
184  *- - diguyImpact::get_DIS_detonation_result()
185  *- - diguyImpact::get_DIS_burst_warhead_type()
186  *- - diguyImpact::get_DIS_burst_fuze()
187  *- - diguyImpact::get_DIS_burst_quantity()
188  *- - diguyImpact::get_DIS_burst_rate()
189  *- - diguyScenario::get_character_type_from_appearance();
190  *- - diguyScenario::get_num_character_types_with_appearance()
191  *- - diguyScenario::get_weapon_fire_effects_enabled()
192  *- - diguyScenario::set_default_intersection_function()
193  *- - diguyScenario::set_intersection_function()
194  *- - diguyScenario::set_particle_module_disabled()
195  *- - diguyScenario::set_weapon_fire_effects_enabled()
196  *- - diguySceneObject::get_max_shader_quality_level()
197  *- - diguySceneObject::get_texture_load_behavior()
198  *- - diguySceneObject::set_max_shader_quality_level()
199  *- - diguySceneObject::set_texture_load_behavior()
200  *- - diguy_ogl_apply_active_lights();
201  *<
202  *- - Upgraded lua/C++ binding library. Should greatly improve the readablity of error warnings
203  *- when lua improperly calls C++.
204  *- - diguyCharacter::get_ai_state_string() signature has changed to have flags for
205  *- optionally including callstack info.
206  *- - diguyCharacter::is_within_distance_n_of_member_of_group() factors in if a character
207  *- is enabled.
208  *- - Fixes to the bead constraints system (and user interface) renamed beads should
209  *- keep the script and decision constraints attached to them.
210  *- - Fixed bugs where script and decision beads attached to the end of paths and stop
211  *- signs didn't always trigger, or triggered later then might be expected. This might
212  *- introduce slight timing changes to existing scenarios.
213  *- - Characters are now sorted before drawing, and depending on the rendering pass
214  *- drawn front to back or back to front.
215  *- - Fixed bug in diguyCharacter::force_partial_path() when a target action bead is specified.
216  *- - Fixed crash in diguyScenario::preload_appearance() when a non-existant appearance is specified.
217  *- - diguyScenario::preload_appearance() should now preload textures for appearances
218  *- that are based on material swaps.
219  *- - References to aim algorithm 7 have been removed.
220  *- - Deprecated Functions Removed:
221  *>
222  *- - diguyApp::create_load_manager() replaced with diguyScenario::create_load_manager()
223  *- - diguyApp::get_load_manager() replaced with diguyScenario::get_character_load_manager()
224  *- - diguyApp::get_load_manager() replaced with diguyScenario::get_character_load_manager()->set_enabled(0)
225  *- - diguyCharacter::set_max_impact_hits() replaced with diguyCharacter::set_weapon_max_impacts()
226  *- - diguyCharacter::get_paused() replaced with diguyCharacter::get_is_network_paused()
227  *- - diguyCharacter::get_visible() replaced with diguyCharacter::get_is_drawn()
228  *- - diguyCharacter::set_aim_param_desired_locate_time()
229  *- - diguyCharacter::get_aim_param_desired_locate_time()
230  *- - diguyCharacter::set_aim_param_seek_tolerance()
231  *- - diguyCharacter::get_aim_param_seek_tolerance()
232  *- - diguyCharacter::set_aim_interpolation_flag()
233  *- - diguyCharacter::get_aim_interpolation_flag()
234  *- - diguyCharacter::set_aim_smooth_flag()
235  *- - diguyCharacter::get_aim_smooth_flag()
236  *- - diguyCharacter::set_aim_divisions()
237  *- - diguyCharacter::set_aim_param_time_constant() replaced with set_aim_param_acquire_factor()
238  *- - diguyCharacter::get_aim_param_time_constant() replaced with get_aim_param_acquire_factor()
239  *- - diguyCharacter::set_aim_param_time_constant2() replaced with set_aim_param_new_aim_duration()
240  *- - diguyCharacter::get_aim_param_time_constant2() replaced with get_aim_param_new_aim_duration()
241  *- - diguyCharacter::set_aim_param_reset_time_constant() replaced with set_aim_param_new_aim_factor()
242  *- - diguyCharacter::get_aim_param_reset_time_constant() replaced with get_aim_param_new_aim_factor()
243  *<
244  *- - Deprecated Callbacks Removed:
245  *>
246  *- - diguyCrowd::CALLBACK_ID_NEW_FOCUS_CHARACTER use diguyCharacter::CALLBACK_ID_AGENT_NEW_FOCUS_CHARACTER
247  *- - diguyCrowd::CALLBACK_ID_ATTACKER_OUT_OF_TARGETS use diguyCharacter::CALLBACK_ID_AGENT_ATTACK_OUT_OF_TARGETS
248  *- - diguyCrowd::CALLBACK_ID_ATTACKER_NO_VISIBLE_TARGETS use diguyCharacter::CALLBACK_ID_AGENT_ATTACK_NO_VISIBLE_TARGETS
249  *- - diguyCrowd::CALLBACK_ID_PURSUED_CHARACTER_REACHED use diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_REACHED
250  *- - diguyCrowd::CALLBACK_ID_WANDER_TARGET_REACHED use diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_REACHED
251  *<
252  *- - Fixed bug with T-in/T-out and review data on scene object characters.
253  *- - Updated perl header file examples with lua equivalents.
254  *- - Character viewer debug shader can now be used on scene objects
255  *- - Fixed bug on blinking characters when t-in was not 0.
256  *- - Fixed Expressive Faces pop when interacting with gaze code.
257  *- - Added the ability to pause the shadow map update and lower the update frequency.
258  *- - Added controls for adjusting the shadow map frustum and shadow acne fudge factor.
259  *- - Character culling is now based on the base link, not the position link.
260  *- - New DI-Guy Author APIs:
261  *>
262  *- - diguyAuthorInterface
263  *- - diguyAuthorVisualMaterial
264  *- - diguyAuthorVisualMultiline
265  *- - diguyAuthorVisualObjectHandle
266  *- - diguyAuthorVisualObjectHandle
267  *- - diguyAuthorVisualRegionMesh
268  *- - diguyAuthorVisualRegionPaintbrush
269  *- - diguyAuthorVisualWaypoint
270  *<
271  **
272  **************************************
273  *3 DI-Guy Scenario
274  **************************************
275  **
276  *4 Version 12.5.0
277  **
278  *- - New lighting system triggered by particle effects and weapons fire.
279  *- - Improvements to 3d visuals for path editing.
280  *- - Merged some subwidgets in character page.
281  *- - Improved interactive Face Expression Editing.
282  *- - Improved determinism of fast forward, and setting current time via the VCR UI.
283  *- - Streamlined performance settings. Crowd Load Manager, Load Manager tabs have
284  *- been phased out, settings are now located in the performance page.
285  *- - Changing camera settings will now force a motion update on all characters.
286  *- - Property tree UI's now have slider widgets, easier to change values interactively.
287  *- - Labels above character's heads now autoscale and draw z-sorted.
288  *- - Right click menu now contains a shortcut to turning on the debug label.
289  *- - Right click on log window selection can now go to package selected or Character
290  *- selected.
291  *- - Shader UI includes the ability to edit character variation texture colors.
292  *- - Physx library has been rewritten to use Physx 3.2, this is upgraded from version 2.8, Physx
293  *- installer should no longer be needed.
294  *- - Fixed a number of sound looping issues.
295  *- - Hand items are no longer baked into separate character appearances, but are selectable from a
296  *- menu of multiple options associated with a single character appearance. This is similar to
297  *- how head appearances work.
298  **
299  **************************************
300  *3 DI-Guy AI
301  **************************************
302  **
303  *4 Version 12.5.0
304  **
305  *- - Improved turning motion system, now on by default.
306  *- - Variant system now treats the normal variant as an indicator to automatically
307  *- pick an appropriate variant for the character. Controlled by
308  *- diguyCharacter::agent_set_auto_variant_selection()
309  *- - System will now cycle through appropriate motions randomly.
310  *- - LuaCharacter - sleep_ignore_messages avoids resuming the coroutine.
311  *- - AI movement callbacks are now queued up and triggered at the end of the
312  *- multi-threaded update.
313  *- - New AI State Inspector - mini lua watch window, activate via right click menu.
314  *- - Added diguyCrowdProfile::create_character() short cut for using a profile to
315  *- create a character.
316  *- - Significantly improved speed of collision influence calculation for crowds.
317  *- - Crowd profiles have been updated to use new variation system.
318  *- - Performance improvement for adding/deleting/transforming scene objects.
319  *- - Performance improvement for intersection testing against scene objects and props.
320  *- - New API functions:
321  *>
322  *- - diguyAgentParams::set_turning_motions_enabled()
323  *- - diguyAgentParams::get_turning_motions_enabled()
324  *- - diguyCharacter::agent_set_auto_variant_selection()
325  *- - diguyCharacter::agent_get_auto_variant_selection()
326  *- - diguyCrowdProfile::create_character()
327  *<
328  ***
329  **************************************
330  *3 Graphics API Changes
331  **
332  *4 Version 12.5.3
333  *- - Fix for automatic graphics LOD switching not working in graphics api.
334  **
335  *4 Version 12.5.2
336  *- - Fix in OpenSceneGraph implementation for leaking nodes when using
337  *- variation textures.
338  **
339  *4 Version 12.5.1
340  *- - Added functionality to support color picking intersection testing for
341  *- scene graph implementations.
342  *- - Added sample code demonstrating intersection testing with OpenSceneGraph.
343  *- - New API Functions:
344  *>
345  *- - diguyGraphicsShape::get_bind_color_array()
346  *<
347  *4 Version 12.5.0
348  *- - Modified diguyOsgGraphicsMesh::build() to load appearance textures
349  *- on demand instead of pre-loading all appearance textures.
350  *- - Added support for 4x3 skinned matrices, saves 25% of the bandwidth and
351  *- uniform constants sent per character draw call. Now the default for OpenGL.
352  *- Configurable via bdiGraphicsInitOgl.use_4x3_shader_matrices and
353  *- bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices.
354  *- diguy_graphics_get_osg_defaults() and diguy_graphics_get_dx9_defaults()
355  *- have been added to make it a bit easier to get the defaults set up.
356  *- - Added sample code demonstrating use of 4x3 matrices for transform data.
357  *- - Greatly expanded shader techniques API, diguyGraphicsShaderTechnique can
358  *- now be subclassed and end users can create new shaders on the fly with
359  *- diguyGraphicsShaderTechnique::find_or_create_shader_variation(). End users
360  *- can override existing functionality and return alternatively compiled shaders
361  *- depending on their own criteria, sample code is provided demonstrating
362  *- conditionally compiling in point light support but only using shader when
363  *- necessary.
364  *- - Fixed matrix transpose mistake in diguyOglGraphicsLink.cpp
365  *- - Cleaned up computation of local space camera.
366  *- - Removed use of display lists from diguyOglGraphicsMaterial.cpp
367  *- - Cleaned up diguyOglGraphicsShaderInstance.cpp to reflect the use of shader
368  *- techniques.
369  *- - Added sample code demonstrating updating lighting state for simple point
370  *- lights on characters.
371  *- - Added sample code demonstrating using #defines to control compilation of
372  *- various shader features.
373  *- - Added support for variation system to sample code, this is shown in diguyOglGraphicsShape
374  *- and diguyOsgGraphicsShape.
375  *- - Added diguyOglGraphicsShaderTechnique demonstrating how to modify built-in
376  *- shaders and overriding our existing shader LOD system.
377  *- - New API Functions:
378  *>
379  *- - diguyGraphicsShaderProgram::get_num_additional_feature_names()
380  *- - diguyGraphicsShaderProgram::get_additional_feature_name()
381  *- - diguyGraphicsShaderProgram::has_additional_feature()
382  *- - diguyGraphicsShaderProgram::get_vertex_shader_filename()
383  *- - diguyGraphicsShaderProgram::get_pixel_shader_filename()
384  *- - diguyGraphicsShaderProgram::get_transposed_matrix_data()
385  *- - diguyGraphicsShaderProgram::load()
386  *- - diguyGraphicsShaderProgram::get_use_4x3_shader_matrix_data()
387  *- - diguyGraphicsShaderTechnique::get_shader_by_distance()
388  *- - diguyGraphicsShaderTechnique::get_program_index_by_distance()
389  *- - diguyGraphicsShaderTechnique::get_shadow_pass_shader()
390  *- - diguyGraphicsShaderTechnique::find_or_create_shader_variation()
391  *- - diguyGraphicsShaderTechnique::pick_shader_program()
392  *- - diguyGraphicsShaderTechnique::build();
393  *- - diguyGraphicsShaderTechnique::add_additional_shader()
394  *- - diguyGraphicsShaderTechnique::get_num_additional_shaders()
395  *- - diguyGraphicsShaderTechnique::get_additional_shader_at_index()
396  *- - diguyGraphicsShape::get_variation_texture()
397  *- - diguyGraphicsShape::get_variation_texture_size()
398  *- - diguyGraphicsShape::update_variation_texture()
399  *- - Init params: bdiGraphicsInitGraphicsAPI.transpose_shader_matrices
400  *- - Init params: bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices
401  *<
402  **************************************
403  *3 DI-Guy Networking Changes
404  **************************************
405  **
406  *4 Version 12.5
407  **
408  *- - New API Functions:
409  *>
410  *- - diguyNetInterface::set_use_adaptive_guide()
411  *- - diguyNetInterface::get_use_adaptive_guide()
412  *<
413  *- - New Custom PDU's ( Note: Functionality currently limited to DIS. )
414  *>
415  *- - DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION replicates variation texture over the network
416  *- - DIGUY_CUSTOM_PDU_ID_EXECUTE_GESTURE replicates the diguyCharacter::execute_gesture()
417  *- call over the network
418  *- - DIGUY_CUSTOM_PDU_ID_CHARACTER_SCALE replicates the diguyCharacter::set_scale()
419  *- value over the network.
420  *<
421  *- - DIGUY_CUSTOM_PDU_ID_SET_CHAR_APPEARANCE Now contains a second optional
422  *- string for head appearances
423 
424  *****************************************************************************
425  *****************************************************************************
426  **
427  *2 DI-Guy Version 12.0
428  **
429  *****************************************************************************
430  *****************************************************************************
431  **
432  **************************************
433  *3 DI-Guy Scenario
434  **************************************
435  **
436  *4 Version 12.0.1
437  **
438  *- - Added visualization option for gaze vectors.
439  *- - Restored missing default face expressions and chain settings
440  *- libraries to new.dss.
441  *- - Added display of more callback information to the Event Mapper User
442  *- Interface.
443  *- - Fixed bugs with water shader.
444  **
445 
446  **************************************
447  *3 DI-Guy AI
448  **************************************
449  **
450  **************************************
451  *3 DI-Guy API
452  **************************************
453  **
454  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
455  **
456  *4 Version 12.0.3
457  **
458  *- - Updated network model map for vehicles and also resolved issue with vehicles
459  *- stuttering on paths.
460  *- - Made fire and detonation PDUs use matching event ids. Added velocities to Fire
461  *- PDUs. M16 velocity is used by default for all weapons but can be overridden in
462  *- munition config file.
463  *- - Fixed DI-Guy Scenario bugs in copy/paste paths, action spreadsheet.
464  *- - Fixed minor content bugs involving missing torso on insurgent.
465  **
466  *4 Version 12.0.2
467  **
468  *- - Fixed diguyApp::reload_shader_programs() to support the graphics API.
469  *- See diguyOglGraphicsShaderProgram.cpp for minor change: shaders that
470  *- are already loaded must be detached on reload.
471  *- - Added diguyCharacter::set_shader_lod() and
472  *- diguyCharacter::get_shader_lod().
473  *- - Modified diguyCharacter::set_face_expression() to support a strength
474  *- multiplier.
475  *- - Modified diguyOsgGraphicsMesh::build() to load appearance textures
476  *- on demand instead of pre-loading all appearance textures.
477  *- - Call callbacks with id CALLBACK_ID_SCENE_OBJECT_IMPACT if
478  *- diguyScenario::trigger_detonation() or
479  *- diguyCharacter::trigger_detonation_on_character() are called.
480  *- - Values in diguy_dis_constants.h now available in scripting.
481  *- - Added a number of DIS detonation data values to diguyImpact; e.g.,
482  *- diguyImpact::get_DIS_detonation_result().
483  **
484  *4 Version 12.0.1
485  **
486  *- - AI flee code now properly uses feeler callback to pick the longest
487  *- available flee route when near buildings.
488  *- - Fleshed out FaceFX api, fixed a number of after action review issues,
489  *- added the following functions:
490  *>
491  *- - diguyCharacter::stop_facefx_animations()
492  *- - diguyCharacter::get_num_facefx_nodes();
493  *- - diguyCharacter::get_facefx_node_name();
494  *- - diguyCharacter::find_facefx_node_index();
495  *- - diguyCharacter::set_facefx_node_value();
496  *<
497  *- - Updates to FaceFX sample content.
498  **
499  *- - Added the following functions to help enable advanced shader materials
500  *- in the graphics api:
501  *>
502  *- - diguyOglGraphicsShaderProgram::bind_uniform_with_location()
503  *- - diguyOglGraphicsShaderProgram::bind_uniform_with_location()
504  *- - diguyOglGraphicsShaderProgram::get_attrib_bind_location()
505  *- - diguyOglGraphicsShaderProgram::get_uniform_bind_location()
506  *<
507  *- - Streamlined shader bind and unbind calls.
508  *- - Fixed issue where even with only 1 update thread was used some of the
509  *- multi-threaded infrastructure was active.
510  *- - Added warnings to various add_callback_script functions to warn if
511  *- the same callback is repeatedly added.
512  *- - Update Middle Eastern AI's to avoid perpetual memory growth.
513  *-
514  *- - Changed multi-threading to only use the Qt threading framework when
515  *- more than one thread is allocated to DI-Guy.
516  **
517  *4 Version 12.0.0
518  **
519  *- - In API programs shadow disks are off by default. Now the
520  *- "set_draw_character_shadow_disks" setting in .dss files will be
521  *- ignored. To turn shadow disks on or off an explicit call to
522  *- diguyScenario::set_draw_character_shadow_disks() needs to be made.
523  *- - Fixed diguyCharacter::agent_set_current_params_from_profile() so
524  *- arguments are in proper order. *Note*: If you have existing calls
525  *- to agent_set_initial_params_from_profile(), verify that you are
526  *- getting proper behavior.
527  *- - Added the following functions:
528  *>
529  *- - diguyAgentParams::set_wander_max_wander_dist()
530  *- - diguyAgentParams::set_wander_sets_desired_orientation()
531  *<
532  *- - Removed the following experimental functions; should use minds
533  *- instead:
534  *>
535  *- - diguyCharacter::add_state_machine_instance()
536  *- - diguyCharacter::remove_state_machine_instance()
537  *- - diguyCharacter::remove_all_state_machine_instances()
538  *- - diguyCharacter::find_state_machine_instance()
539  *- - diguyScenario::get_num_state_machines()
540  *- - diguyScenario::create_state_machine()
541  *- - diguyScenario::destroy_state_machine()
542  *- - diguyScenario::get_state_machine_at_index()
543  *- - diguyScenario::find_state_machine()
544  *- - diguyScenario::get_num_state_machine_instances()
545  *- - diguyScenario::add_state_machine_instance()
546  *- - diguyScenario::remove_state_machine_instance()
547  *- - diguyScenario::get_this_state_machine_instance()
548  *- - diguyCrowd::all_members_add_state_machine_instance()
549  *- - diguyCrowd::all_members_remove_state_machine_instance()
550  *<
551  *- - Removed the following deprecated functions:
552  *>
553  *- - diguyApp::set_student_log_callback()
554  *- - diguyApp::student_log_print()
555  *- - diguyApp::set_user_query_yes_no_callback()
556  *- - diguyApp::user_query_yes_no()
557  *- - diguyApp::set_user_query_text_callback()
558  *- - diguyApp::set_user_query_item_callback()
559  *- - diguyApp::user_query_item()
560  *- - diguyApp::set_user_inform_callback()
561  *- - diguyApp::user_inform()
562  *<
563  **************************************
564  *4 Graphics API Changes
565  **
566  */
567 
568 /*****************************************************************************
569  *****************************************************************************
570  **
571  *2 DI-Guy Version 11
572  **
573  *****************************************************************************
574  *****************************************************************************
575  **
576  **************************************
577  *3 DI-Guy API
578  **************************************
579  **
580  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
581  **
582  *4 Version 11.6.0
583  **
584  *- - Added diguyRegionPaintbrushMode enum to diguy_constants.h.
585  *- - Fixed problem with agent_set_current_params_from_profile() use in
586  *- decision clauses.
587  *- - Made the following functions callable from decisions:
588  *>
589  *- - diguyCharacter::agent_move_on()
590  *- - diguyCharacter::agent_move_to_region()
591  *- - diguyCharacter::agent_path_follow()
592  *- - diguyCharacter::agent_resume_path_follow()
593  *- - diguyCharacter::agent_set_current_focus_character()
594  *- - diguyCharacter::agent_set_current_focus_group()
595  *<
596  *- - Added the following functions:
597  *>
598  *- - diguyApp::set_region_paintrush_mode()
599  *- - diguyApp::get_region_paintrush_mode()
600  *- - diguyApp::set_munition_type_DIS_impact_septet()
601  *- - diguyApp::set_munition_type_DIS_tracer_septet()
602  *- - diguyCharacter::trigger_detonation_on_character()
603  *- - diguyCharacter::get_vehicle_body_orientation()
604  *- - diguyScenario::trigger_decision_delayed()
605  *- - diguyScenario::trigger_script_delayed()
606  *- - diguyScenario::get_altitude_from_point()
607  *- - diguyScenario::destroy_region()
608  *- - diguyScenario::save()
609  *- - diguyScenario::save_as()
610  *- - diguyScenario::get_filename()
611  *- - diguyScenario::get_filename_without_directory()
612  *- - diguyScenario::get_unsaved()
613  *- - diguyScenario::set_unsaved(int unsaved)
614  *- - diguyRegion::get_random_factor()
615  *<
616  *- - Remove unused playback mode enum DIGUY_SCENARIO_PLAYBACK_MODE_RECORD.
617  *- - Made changes to some scenario call operations. Previously the
618  *- diguyScenario::post_draw() call had no effect; it now allows various
619  *- post draw type operations to be optionally invoked. Previously
620  *- these operations were automatically done at the end of
621  *- diguyScenario::draw_pass2().
622  *- - Added the following functions:
623  *>
624  *- - diguyScenario::set_overall_history_type()
625  *- - diguyScenario::get_overall_history_type()
626  *- - diguyScenario::manually_invoke_callbacks_now()
627  *- - diguyScenario::set_current_region()
628  *- - diguyScenario::get_current_region()
629  *<
630  **
631  **************************************
632  *4 Graphics API Changes
633  **
634  *- - Moved the following functions from diguyGraphicsShaderInstance to
635  *- diguyGraphicsShaderProgram:
636  *>
637  *- - diguyGraphicsShaderInstance::bind_link_matrices()
638  *- - diguyGraphicsShaderInstance::bind_color_array()
639  *<
640  ** Your Graphics API subclasses will need to be updated.
641  ** bind_link_matrices() will now potentially be called multiple times per
642  ** character depending on its complexity. For example, animated faces
643  ** from facefx will cause multiple matrix binds.
644  **
645  ** The signature for diguyGraphicsTexture::bind_now() has changed to
646  ** diguyGraphicsTexture::bind_now(diguyTextureMapType texture_type) to
647  ** support multi-texturing. Your Graphics API subclasses need to be
648  ** updated.
649  **
650  **************************************
651  *4 Version 11.0.x
652  **
653  *- - Added ability to hear sounds when history is enabled and time is
654  *- rewound to a point midway in the sound. Note that the function
655  *- diguyScenario::set_history_max_sound_instances() lets users set how
656  *- many sound instances to be remembered; default is 100.
657  *- - Updated where DI-Guy looks for its license file. It is looked for
658  *- in this order:
659  *>
660  *- - file specified by the environment variable DIGUY_LICENSE_FILE
661  *- - file specified by the environment variable BDILM_LICENSE_FILE
662  *- - file specified by the environment variable LM_LICENSE_FILE
663  *- - license.dat in DI-Guy installation flexlm subdir
664  *<
665  *- - Turned off character shadow disks by default when using SDK; they're
666  *- still on by default in DI-Guy Scenario.
667  **
668  *4 Version 11.0.4
669  **
670  *- - Resolved issues with wheeled vehicles on paths, force_action, and resume_path
671  *>
672  *- - Problem with vehicles not resuming their path and remaining motionless after force_action("still")
673  *- - Problem with vehicles resuming path and wheels not spinning
674  *- - Problems with position discontinuities when force_action("still") is applied to a vehicle on a path
675  *<
676  *4 Version 11.0.2
677  **
678  *- - Updated where DI-Guy looks for its license file. It is looked for
679  *- in this order:
680  *>
681  *- - file specified by the environment variable DIGUY_LICENSE_FILE
682  *- - file specified by the environment variable BDILM_LICENSE_FILE
683  *- - file specified by the environment variable LM_LICENSE_FILE
684  *- - license.dat in DI-Guy installation flexlm subdir
685  *<
686  *- - Turned off character shadow disks by default when using SDK; they're
687  *- still on by default in DI-Guy Scenario.
688  *- - Removed use of glCallList in materials for the Graphics API sample
689  *- code and the internal OpenGL renderer. Call lists are deprecated
690  *- and have more overhead then just calling material functions
691  *- directly.
692  *- - Added early out sample code for materials to graphics API; end users
693  *- should now have the tools to skip unnecessary material binds.
694  *- - Added a new geode/mesh merge as part of the bdg creation; should
695  *- cut number of meshes and draw calls in half for most of the non-
696  *- skinned characters.
697  *- - Added new draw stats profiler to improve feedback on pipeline
698  *- bottlenecks. Profiler now available in Character Viewer. (Press
699  *- Ctrl-P a few times.)
700  *- - Added linear draw pipeline init argument.
701  *- - Updated Benchmark sample program with new options and statistics.
702  *- - Fixed bug where get link positions would not take character scale
703  *- into effect.
704  *- - Added the following functions to DI-Guy Graphics API:
705  *>
706  *- - diguyGraphicsLink::get_link_transformation_matrix()
707  *- - diguyGraphicsLink::begin_character_draw()
708  *- - diguyGraphicsLink::end_character_draw()
709  *- - diguyGraphicsLink::get_use_linear_traversal_draw()
710  *- - diguyGraphicsLink::set_use_linear_traversal_draw()
711  *- - diguyGraphicsTexture::get_last_bound_texture()
712  *- - diguyGraphicsTexture::clear_last_bound_texture()
713  *<
714  *- - Added sample code to the OpenGL graphics API reference
715  *- implementation demonstrating the use of the link local
716  *- transformation matrix to simplify the number of OpenGL function
717  *- made.
718  *- - Added sample code to the OpenGL graphics API reference
719  *- implementation to demonstrate using
720  *- diguyGraphicsTexture::get_last_bound_texture() to minimize state
721  *- changes.
722  *- - Added the following functions to DI-Guy OpenGL rendering API:
723  *>
724  *- - diguy_ogl_get_num_frame_stats()
725  *- - diguy_ogl_frame_stat_name()
726  *- - diguy_ogl_get_frame_stat();
727  *- - diguy_ogl_clear_all_frame_stats()
728  *<
729  *4 Version 11.0.1
730  **
731  *- - Added the following functions to DI-Guy Graphics API:
732  *>
733  *- - diguyGraphicsMaterial::get_last_bound_material()
734  *- - diguyGraphicsMaterial::clear_last_bound_material()
735  *<
736  *- - Added sample code to the OpenGL Graphics API reference
737  *- implementation to demonstrate using
738  *- diguyGraphicsMaterial::get_last_bound_material() to minimize state
739  *- changes.
740  *- - Fixed binary geometry serialization bug on x64 machines.
741  *- - Added diguyScenario::is_valid_character_group_pointer()
742  **
743  *4 Version 11.0.0
744  **
745  *- - Removed deprecated functions:
746  *>
747  *- - diguyChainSimulation::set_connection_character()
748  *<
749  *- - New APIs:
750  *>
751  *- - diguyFormation
752  *- - diguyVehicleController
753  *- - diguyViewButtonPanel (DI-Guy Scenario only)
754  *<
755  *4 Version 10.5.1
756  **
757  *- - Removed deprecated functions:
758  *>
759  *- - diguyScenario::set_tin()
760  *- - diguyScenario::get_tin()
761  *- - diguyScenario::trigger_script_event()
762  *- - diguyScenario::add_custom_appearance()
763  *- - diguyScenario::add_custom_appearance_based_on_existing_appearance()
764  *- - diguyScenario::add_named_callback()
765  *- - diguyScenario::remove_named_callback()
766  *- - diguyScenario::call_named_callback()
767  *- - diguyScenario::set_iguy_character()
768  *<
769  **
770  *4 Version 10.1.7
771  **
772  *- - Added the following functions:
773  *>
774  *- - diguyCharacter::set_max_unprocessed_impacts()
775  *- - diguyCharacter::get_max_unprocessed_impacts()
776  *- - diguyScenario::set_max_unprocessed_impacts()
777  *- - diguyScenario::get_max_unprocessed_impacts()
778  *- - diguyCharacter::reset_shader_program_to_default()
779  *- - diguySceneObject::reset_shader_program_to_default()
780  *<
781  *4 Version 10.1.6
782  **
783  *- - Added functions to diguyViewCamera and diguyViewCameraSettings:
784  *>
785  *- - diguyViewCamera::set_speed_fov_degrees_per_wheel_click()
786  *- - diguyViewCamera::get_speed_fov_degrees_per_wheel_click()
787  *- - diguyViewCameraSettings::set_speed_fov_degrees_per_wheel_click()
788  *- - diguyViewCameraSettings::get_speed_fov_degrees_per_wheel_click()
789  *<
790  *- - Added flag to diguyScenario that explicitly enables or disables
791  *- tout ("T Out") for the scenario, instead of using the arbitrary
792  *- value of 60000 seconds to mean tout should have no effect.
793  *- - Added flag similar to above that enables or disables character tout.
794  *>
795  *- - diguyScenario::set_tout_enabled()
796  *- - diguyScenario::get_tout_enabled()
797  *- - diguyCharacter::set_tout_enabled()
798  *- - diguyCharacter::get_tout_enabled()
799  *<
800  *- - Added the following functions:
801  *>
802  *- - diguyCharacter::get_muzzle_link()
803  *- - diguyCharacter::get_muzzle_offset()
804  *- - diguyCharacter::stop_appearance_effect()
805  *- - diguyCharacter::set_weapon_tracers_enabled()
806  *- - diguyCharacter::get_weapon_tracers_enabled()
807  *- - diguyCharacter::set_weapon_shell_eject_enabled()
808  *- - diguyCharacter::get_weapon_shell_eject_enabled()
809  *- - diguyCharacter::set_weapon_smoke_enabled()
810  *- - diguyCharacter::get_weapon_smoke_enabled()
811  *<
812  *4 Version 10.1.4
813  **
814  *- - Added diguyCharacter::CALLBACK_ID_AGENT_MIND_CURRENT_STATE_CHANGED.
815  *- - Added the following functions for getting and setting mind data.
816  *>
817  *- - diguyCharacter::get_mind_current_state_name()
818  *- - diguyCharacter::set_mind_field_as_string()
819  *- - diguyCharacter::set_mind_field_as_float()
820  *- - diguyCharacter::get_mind_field_as_float()
821  *- - diguyCharacter::set_mind_field_as_int()
822  *- - diguyCharacter::get_mind_field_as_int()
823  *<
824  *- - Added the following functions for setting agent params, and other
825  *- agent behavior.
826  *>
827  *- - diguyCharacter::agent_set_initial_params_from_profile()
828  *- - diguyCrowd::set_initial_params_from_profile()
829  *- - diguyAgentParams::set_move_on_t_min()
830  *- - diguyAgentParams::get_move_on_t_min()
831  *- - diguyAgentParams::set_move_on_t_max()
832  *- - diguyAgentParams::get_move_on_t_max()
833  *- - diguyCharacter::agent_move_on()
834  *<
835  *4 Version 10.1.3
836  **
837  *- - Added the following blink functions to diguyCharacter.
838  *>
839  *- - diguyCharacter::set_automatic_blink_duration_in()
840  *- - diguyCharacter::get_automatic_blink_duration_in()
841  *- - diguyCharacter::set_automatic_blink_duration_out()
842  *- - diguyCharacter::get_automatic_blink_duration_out()
843  *- - diguyCharacter::set_automatic_blink_target_in()
844  *- - diguyCharacter::get_automatic_blink_target_in()
845  *- - diguyCharacter::set_automatic_blink_target_out()
846  *- - diguyCharacter::get_automatic_blink_target_out()
847  *- - diguyCharacter::set_automatic_blinks_enabled()
848  *- - diguyCharacter::get_automatic_blinks_enabled()
849  *<
850  *- - Added the following gesture functions to diguyCharacter.
851  *>
852  *- - diguyCharacter::execute_table_gesture()
853  *- - diguyCharacter::set_executing_table_gesture_desired_action()
854  *- - diguyCharacter::end_executing_gesture()
855  *- - diguyCharacter::abort_executing_gesture()
856  *<
857  *- - Added the following misc functions to diguyCharacter.
858  *>
859  *- - diguyCharacter::get_gaze_is_active()
860  *- - diguyCharacter::get_lpoint_is_active()
861  *<
862  *4 Version 10.1.1
863  **
864  *- - Added the following functions to diguyCharacter.
865  *>
866  *- - diguyCharacter::get_is_aiming()
867  *<
868  *4 Version 10.1.0
869  **
870  *- - Added the following functions for improved LOD handling.
871  *>
872  *- - diguyScenario::set_scale_graphics_lod_ranges_from_view_settings()
873  *- - diguyScenario::get_scale_graphics_lod_ranges_from_view_settings()
874  *- - diguyLoadManager::set_scale_zone_extents_from_view_settings()
875  *- - diguyLoadManager::get_scale_zone_extents_from_view_settings()
876  *<
877  *- - Added the following functions to diguyCharacter.
878  *>
879  *- - diguyCharacter::set_graphics_ptr()
880  *- - diguyCharacter::get_num_pose_overrides()
881  *- - diguyCharacter::get_pose_override_at_index()
882  *<
883  **
884  **************************************
885  *3 DI-Guy Scenario
886  **************************************
887  **
888  *4 Version 11.5.1
889  **
890  *- - Fixed intersection test issue with scene objects
891  *- - Fixed bogus fog changed notification
892  *- - Improved sound history recording and playback
893  **
894  *4 Version 11.0.1
895  **
896  *- - Fixed crash with using qt_invoke without lqt loaded.
897  **
898  **************************************
899  *3 DI-Guy Motion Editor
900  **************************************
901  **
902  *4 Version 11.0.1
903  **
904  *- - Fixed Motion Arc extended info handling.
905  *- - Fixed issue with the poser not being available on some skinned
906  *- character links.
907  **
908  *4 Version 11.0.0
909  **
910  *- - Initial support for handling skinned characters.
911  **
912  **************************************
913  *3 DI-Guy Character Viewer
914  **************************************
915  **
916  *4 Version 11
917  **
918  *- - Added Shadow and normal previewer.
919  *- - Added LOD picker.
920  **
921  **************************************
922  *3 DI-Guy for Vega Prime
923  **************************************
924  **
925  *4 Version 11.5.1
926  **
927  *- - Initial support for vegaPrime 5.x.
928  *- - fixed crash on exit using some modules.
929  *- - Changed setScriptPerlEnable default from true to false.
930  **
931  *4 Version 11.0.1
932  **
933  *- - Initial support for vegaPrime 4.x.
934  **
935  **************************************
936  *3 DI-Guy Networking
937  **************************************
938  **
939  *4 Version 11.0.1
940  **
941  *- - Fixed a number of bugs with transmitting gazing and aiming behavior
942  *- over network.
943  *- - Improvements to log messages.
944  **
945  */
946 
947 /*****************************************************************************
948  *****************************************************************************
949  **
950  *2 DI-Guy Applications Version 10
951  **
952  *****************************************************************************
953  *****************************************************************************
954  **
955  **************************************
956  *3 DI-Guy API 10
957  **************************************
958  **
959  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
960  **
961  *4 Version 10.0.10
962  **
963  *- - Impact processing on characters now considers mind wakeup callbacks
964  *- when deciding how the impact affects the character, in addition to
965  *- the straight callbacks that are considered now.
966  *- - Added functions:
967  *>
968  *- - diguyAgentParams::set_vehicle_base_influence_box()
969  *- - diguyAgentParams::get_vehicle_base_influence_box()
970  *<
971  *- - Added the following diguyCharacter callbacks that report when
972  *- an agent is being push around by other characters of vehicles.
973  *>
974  *- - diguyCharacter::CALLBACK_ID_AGENT_NON_ZERO_REPULSION
975  *- - diguyCharacter::CALLBACK_ID_AGENT_ZERO_REPULSION
976  *<
977  **
978  *4 Version 10.0.8
979  **
980  *- - Added merging of regions during scenario merge.
981  *- - Fixed merging of crowds to include merging of crowd behavior
982  *- regions.
983  *- - Added diguyScenario::CALLBACK_ID_PLAYBACK_MODE_CHANGED.
984  *- - Added diguy_set_diguy_base_dir_path() function.
985  *- - Added remove_on_scenario_load argument to most
986  *- add_default_*_callback() functions; allows for "permanent" callbacks
987  *- to be added that persist through scenario loads. The default is
988  *- 0, meaning remove the callback when a scenario is loaded.
989  *-
990  *4 Version 10.0.6
991  **
992  *- - Fixed visual issues of skinned appearances when the character is
993  *- scaled or is using a motion LOD greater than 1.
994  *- - Fixed issue where default scenario callbacks were not being called.
995  *- - Added functions:
996  *>
997  *- - diguyCharacter::set_graphics_api_node_ptr()
998  *- - diguyCharacter::get_graphics_api_node_ptr()
999  *- - diguyScenario::set_graphics_api_node_ptr()
1000  *- - diguyScenario::get_graphics_api_node_ptr()
1001  *<
1002  *4 Version 10.0.5
1003  **
1004  *- - Fixed hard crashes with on-screen labels outside of the ogl pipeline.
1005  *- - Fixed issues with octtree creation and visibility checks.
1006  *- - Fix for vc8 mdd examples using lua.
1007  *- - Added missing header file for DI-Guy Bench Marking example.
1008  *- - Added infrastructure for hooking up callbacks so visibility tests
1009  *- can work in the SDK. See the following functions:
1010  *>
1011  *- - diguyScenario::set_default_point_los_function()
1012  *- - diguyScenario::set_default_character_los_function()
1013  *- - diguyCharacter::set_point_los_function()
1014  *- - diguyCharacter::get_point_los_function()
1015  *- - diguyCharacter::set_character_los_function()
1016  *- - diguyCharacter::get_character_los_function()
1017  *<
1018  *4 Version 10.0.4
1019  **
1020  *- - Fixed bug where green boxes were appearing at the origin in some
1021  *- DI-Guy Graphics API examples.
1022  *- - Characters with skinned appearances specified will switch to their
1023  *- default unskinned appearance on platforms without skinning support.
1024  *- - Added diguyScenario::get_altitude_function() and
1025  *- diguyScenario::set_altitude_function() mainly needed for force local
1026  *- path via the API.
1027  *- - Added bdiGraphicsInitGraphicsAPI::characters_have_world_space_triangle_query
1028  *- and bdiGraphicsInitGraphicsAPI::scene_objects_have_world_space_triangle_query
1029  *- function allow octtree to be built from internally loaded scene objects.
1030  *- *Note*: this functionality requires that diguyGraphicsMesh::free_loader_memory()
1031  *- not be called.
1032  **
1033  *4 Version 10.0.3
1034  **
1035  *- - Changed diguyScenario::set_default_lod_ranges() to accept "all"
1036  *- for the character type. Passing "all" will set the default LOD
1037  *- ranges for all character types, not just one specific one.
1038  *- - Added the following functions to DI-Guy Graphics API for more
1039  *- flexibility in handling graphics LODs.
1040  *>
1041  *- - diguyGraphicsShape::set_graphics_lod_ranges()
1042  *- - diguyGraphicsShape::set_graphics_lod()
1043  *- - diguyGraphicsShape::get_graphics_lod()
1044  *<
1045  *4 Version 10.0.1
1046  **
1047  *- - Fixed bugs with intersecting characters added to the octtree.
1048  *- - Fixed bugs where custom directory env variable was being ignored when
1049  *- looking up lua scripts.
1050  *- - Added functions diguyCharacter::create_complete_pose_override() and
1051  *- diguyCharacter::destroy_complete_pose_override().
1052  *- - Fixed bug where OGL skinned characters were missing some polygons;
1053  *- please see graphics API samples if you are seeing this bug. Your VBO
1054  *- class may need slight changes.
1055  **
1056  *4 Version 10.0.0
1057  **
1058  *- - Added support for character "type maps". Type maps add extra data
1059  *- to characters that make it easier to decide which character type
1060  *- and appearance best match the desired role for characters to be
1061  *- added to the scenario. See the class diguyCharacterTypeMap, and
1062  *- information about the "Appearance Wizard" for DI-Guy Scenario.
1063  *- - Added the following functions to diguyCharacter API:
1064  *>
1065  *- - diguyCharacter::get_nearest_character_type_map()
1066  *<
1067  *- - The DI-Guy Graphics API example directories osg_12_examples and
1068  *- osg_22_examples have been removed. They have been replaced with
1069  *- osg_2_examples.
1070  *- - The osg_2_examples reference implementation now has support for
1071  *- skinned appearances. It uses the DI-Guy built-in geometry loader
1072  *- instead of OSG's, as DI-Guy has some specific requirements for
1073  *- loaded skinned geometry.
1074  *- - diguyScenario::add_callback() and diguyScenario::add_callback_script()
1075  *- have been modified with an addition argument that specifies whether
1076  *- the callback should remain after a new scenario has been loaded. The
1077  *- previous behavior was for the callback to not be removed, which could
1078  *- cause problems. Users will now need to explicitly request that the
1079  *- callback remain.
1080  **
1081  *4 Version 9.1.5
1082  **
1083  *- - The ability to show bar graph information has been added to the
1084  *- diguyViewLabel class. See diguyViewLabel::enable_bar_graph().
1085  *- - Added the following functions to diguyCharacter API:
1086  *>
1087  *- - diguyCharacter::set_weapon_munition_type_override()
1088  *- - diguyCharacter::get_weapon_munition_type_override()
1089  *- - diguyCharacter::get_weapon_muzzle_munition_type()
1090  *- - diguyCharacter::get_default_muzzle_munition_type()
1091  *<
1092  *- - Added the following functions to DI-Guy Graphics API:
1093  *>
1094  *- - diguyGraphicsLink::post_build()
1095  *- - diguyGraphicsLink::set_shader_instance()
1096  *- - diguyGraphicsMaterial::get_is_unlit()
1097  *<
1098  *- - Added new DI-Guy Graphics API classes: diguyGraphicsShaderProgram
1099  *- and diguyGraphicsShaderInstance.
1100  *- - Added time_to_live to network.cfg file.
1101  *- - Removed the following experimental functions:
1102  *>
1103  *- - diguyScenario::load_shader()
1104  *- - diguyScenario::reload_shader_programs()
1105  *<
1106  *- - Added new DI-Guy functions to allow SDK users to intercept fire
1107  *- requests and plug in their own intersection test; see
1108  *- diguyScenario::set_fire_weapon_intersection_function() for more info.
1109  **
1110  *4 Version 9.1.4
1111  **
1112  *- - Added the following functions to diguyCharacter API:
1113  *>
1114  *- - diguyCharacter::set_initial_path()
1115  *- - diguyCharacter::get_initial_path()
1116  *<
1117  *- - The way that weapon sounds are handled has been changed.
1118  *>
1119  *- Previously weapon sounds were largely determined by the
1120  *- character's default weapon sound setting, as set by
1121  *- set_default_weapon_sound(). Weapon sounds (and other data) are
1122  *- now set automatically based on the munition type(s) of the weapon
1123  *- the character is carrying. The default munition type sound can
1124  *- be overridden by calling set_weapon_sound_override(). Note that
1125  *- existing, deprecated calls to set_default_weapon_sound() will
1126  *- have the same effect as calling set_weapon_sound_override().
1127  **
1128  *- - The following functions have been deprecated:
1129  *>
1130  *- - diguyCharacter::set_default_weapon_sound()
1131  *- - diguyCharacter::get_default_weapon_sound()
1132  *- - diguyCharacter::set_default_weapon_sound_gain()
1133  *- - diguyCharacter::get_default_weapon_sound_gain()
1134  *<
1135  *- - The above deprecated functions are replaced by:
1136  *>
1137  *- - diguyCharacter::set_weapon_sound_override()
1138  *- - diguyCharacter::get_weapon_sound_override()
1139  *- - diguyCharacter::set_weapon_sound_gain_override()
1140  *- - diguyCharacter::get_weapon_sound_gain_override()
1141  *<
1142  *<
1143  *- - Added the following diguyCharacter callbacks to make it easier to
1144  *- tie events to editing characters in the UI.
1145  *>
1146  *- - diguyCharacter::CALLBACK_ID_UI_MOUSE_DOWN
1147  *- - diguyCharacter::CALLBACK_ID_UI_MOUSE_UP
1148  *<
1149  *- - Added diguyViewPainter class that allows the drawing of lines and
1150  ** other primitives in DI-Guy Scenario 3D view windows. For access to
1151  ** this object call diguyApp::get_painter().
1152  *- - Added diguyScenario::CALLBACK_ID_POST_DRAW, allowing the scripting
1153  *- engine a chance to draw in the 3D view in DI-Guy Scenario.
1154  *- Characters with minds are also given the opportunity to draw; see
1155  *- the default luaCharacter script.
1156  **
1157  *4 Version 9.1.2
1158  **
1159  *- - Added diguyImpact::get_impact_type() and diguyImpact::get_impact_type_string()
1160  *- which provide information about how the impact was generated. New
1161  *- accessors for querying normal information are also available.
1162  *- - Added new Lua Scripting module:
1163  *>
1164  *- - The Lua module has all the functionality of the current Perl
1165  *- module.
1166  *- - Lua is popular in the game development industry for it's speed
1167  *- and efficiency. Lua script execution is much less performance
1168  *- intensive than a similar Perl script.
1169  *- - Lua is the basis for the new DI-Guy AI Mind framework.
1170  *<
1171  *- - Scripts are no longer limited in length (was 32K).
1172  *- - Deprecated functions:
1173  *>
1174  *- - diguyCharacter::get_base_link() replaced with
1175  *- diguyCharacter::get_position_link()
1176  *<
1177  *- - Added the following diguyCharacter callbacks to make it easier to
1178  *- tie events to editing characters in the UI.
1179  *>
1180  *- - diguyCharacter::CALLBACK_ID_UI_PRE_TRANSLATION
1181  *- - diguyCharacter::CALLBACK_ID_UI_POST_TRANSLATION
1182  *<
1183  **
1184  *4 Version 9.1.1
1185  **
1186  *- - Added the following function to diguyCharacter API:
1187  *>
1188  *- - diguyCharacter::get_random_factor()
1189  *<
1190  *- - Added the following functions to diguyCharacter API for getting
1191  *- and setting character variables with a compact function name:
1192  *>
1193  *- - diguyCharacter::set_ivar()
1194  *- - diguyCharacter::get_ivar()
1195  *- - diguyCharacter::set_fvar()
1196  *- - diguyCharacter::get_fvar()
1197  *- - diguyCharacter::set_svar()
1198  *- - diguyCharacter::get_svar()
1199  *<
1200  *- - Sound Module Improvements:
1201  *>
1202  *- - Adding looping flag to diguyCharacter::play_3d_sound() and
1203  *- diguyCharacter::play_sound() allows sounds to repeat until
1204  *- explicitly stopped with diguyCharacter::stop_sound() or
1205  *- diguyCharacter::stop_all_sounds()
1206  *- - 3D Sounds should now Doppler shift depending on the velocity of
1207  *- the emitter and listener.
1208  *- - More a number of diguySound functions have been added to allow
1209  *- querying a sounds properties.
1210  *<
1211  *- - Fixed problem with the OpenFlight geometry loader. Light point
1212  *- records were causing the loader to fail.
1213  *- - Added two new diguyCharacter callback ids:
1214  *>
1215  *- - diguyCharacter::CALLBACK_ID_POST_CREATE_GEOMETRY
1216  *- - diguyCharacter::CALLBACK_ID_PRE_DESTROY_GEOMETRY
1217  *<
1218  *- - Added new plugin function, post_reset(). Allows plugins to do
1219  *- reset operations at the end of a scenario reset, instead of only
1220  *- at the beginning.
1221  **
1222  *4 Version 9.1.0
1223  **
1224  *- - Added the following functions to diguyCharacter API:
1225  *>
1226  *- - diguyCharacter::get_current_traveled_path_is()
1227  *- - diguyCharacter::get_current_appearance_is()
1228  *- - diguyCharacter::get_current_head_appearance_is()
1229  *- - diguyCharacter::execute_table_gesture()
1230  *<
1231  **
1232  **************************************
1233  *3 DI-Guy Scenario 10
1234  **************************************
1235  **
1236  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
1237  **
1238  *4 Version 10.0.2
1239  **
1240  *- - Fixed the appearance of state functions in the code browser.
1241  **
1242  *4 Version 10.0.0
1243  **
1244  *- - Added the "Appearance Wizard" to places where character type and
1245  *- appearance can be selected. The Appearance Wizard provides an
1246  *- interactive UI for selecting desired attributes of the character
1247  *- to be created, such as category, age, sex, race, military branch,
1248  *- carried object, etc.
1249  *- - Character types and appearances are now marked as "Recommended" and
1250  *- "Not Recommended". Many older character types and appearances have
1251  *- been nominally replaced with newer versions which should be
1252  *- preferred over the older ones. By default DI-Guy Scenario will show
1253  *- only the preferred ones, but can be changed to show all of them.
1254  *- Scenarios that currently use now not-recommended character types and
1255  *- appearances will still work as before.
1256  **
1257  *4 Version 9.1.3
1258  **
1259  *- - Improvements to autocomplete, including DIGUY_* constants as well as
1260  *- dynamic analysis of lua objects.
1261  **
1262  *4 Version 9.1.2
1263  **
1264  *- - Added new documentation viewer, accessible under the help menu.
1265  **
1266  *4 Version 9.1.1
1267  **
1268  *- - When selecting which agents' parameters are going to be edited,
1269  *- multi-select can now be used.
1270  *- - Replaced Scenario Elements, Character Elements, View Settings,
1271  *- Event Handlers, and DI-Guy AI Elements windows with a single
1272  *- revamped Scenario Elements window that has collapsible tab groups.
1273  *- - Removed experimental, incomplete "Merge Blitz" capability.
1274  **
1275  *4 Version 9.1.0
1276  **
1277  *- - Script editing now uses an editing component based on Scintilla,
1278  *- this provides syntax highlighting/coloring, line numbering, basic
1279  *- auto-complete, and code folding.
1280  *- Currently supported control keys:
1281  *>
1282  *- - Ctrl '{' or Ctrl '}' - jump to matching brace
1283  *- - Ctrl f - find dialog
1284  *- - F3 - find again
1285  *<
1286  *- - Added a number of ui improvements:
1287  *>
1288  *- - Beads now display the time they occur instead of just an index.
1289  *- - The Action Spreadsheet is available in the character elements
1290  *- page.
1291  *- - A number of element types can now be sorted in their selector
1292  *- view at the top of the page. Most widgets can be sorted by index
1293  *- and name. Some add the ability to be sorted by time, appearance,
1294  *- character type, etc.
1295  *- - The path page has a sorted list of all beads on a path.
1296  *<
1297  **
1298  **************************************
1299  *3 DI-Guy AI 10
1300  **************************************
1301  **
1302  *4 Version 10.0.4
1303  **
1304  *- - Added new AI_Populate SDK example; demonstrates populating the
1305  *- environment with lua minds based Agents via the SDK.
1306  **
1307  *4 Version 10.0.3
1308  **
1309  *- - Improved behavior of paintbrush far from origin and at different
1310  *- heights.
1311  *- - Added bright red log/package indicator on lua syntax errors.
1312  *- - Improved behavior of code browser recompile button, pops up log
1313  *- window on syntax errors.
1314  **
1315  *4 Version 10.0.2
1316  **
1317  ** - Fixed hard crash in path planner when pursuing with no behavior
1318  ** region set.
1319  ** - Fixed a number of bugs with agents colliding with props.
1320  ** - Fixed bug with crowd awareness code far from the origin.
1321  **
1322  *4 Version 9.1.4
1323  **
1324  *- - Significant improvements to A* path planning performance, 10x speed
1325  *- up in most cases.
1326  **
1327  *4 Version 9.1.3
1328  **
1329  *- - Improvements to path planning API, added the following functions to
1330  *- diguyCharacter API for navigating the world
1331  *>
1332  *- - diguyCharacter::agent_move_to_point()
1333  *- - diguyCharacter::agent_move_to_point_via_subregions()
1334  *- - diguyCharacter::agent_move_to_region()
1335  *- - diguyCharacter::agent_move_to_region_via_subregions()
1336  *<
1337  **
1338  *4 Version 9.1.2
1339  **
1340  *- - New Lua based mind framework:
1341  *>
1342  *- - New Lua Mind Editor in UI
1343  *- - The crowd/people blitzers can now create characters with minds.
1344  *<
1345  **
1346  *- - Added the following functions to diguyCharacter API:
1347  *>
1348  *- - diguyCharacter::agent_get_crowd()
1349  *- - diguyCharacter::agent_flee_crowd()
1350  *<
1351  *- - Added diguyCharacter::CALLBACK_ID_AGENT_VEHICLE_COLLISION; this
1352  *- callback is triggered on a vehicle when a vehicle hits an agent.
1353  *- - Added diguyRegion, an API wrapper for painted meshes. Retrievable
1354  *- with the function diguyScenario::find_region().
1355  *- - Vehicle bounds are now smoothed when the vehicle changes speed.
1356  *- - Added simple gazing model into agent focus behavior.
1357  *- - Added Idle Behavior, agent will stop moving and be responsive
1358  *- to focus and simple requests but won't spontaneously move.
1359  *- - Added diguyCharacter::agent_begin_behavior() allows starting a
1360  *- behavior by name. Typically some of the more elaborate functions are
1361  *- preferred, but this can be useful for idling and such.
1362  *- - Changes to None behavior. Agent will attempt to do less and clear
1363  *- out some transient state to make the behavior of the behavior more
1364  *- consistent.
1365  **
1366  *4 Version 9.1.1
1367  **
1368  *- - The following diguyCrowd callbacks are deprecated, and have been
1369  *- replaced with diguyCharacter equivalents.
1370  *>
1371  *- - diguyCrowd::CALLBACK_ID_NEW_FOCUS_CHARACTER
1372  *- - diguyCrowd::CALLBACK_ID_ATTACKER_NO_VISIBLE_TARGETS
1373  *- - diguyCrowd::CALLBACK_ID_ATTACKER_OUT_OF_TARGETS
1374  *- - diguyCrowd::CALLBACK_ID_PURSUED_CHARACTER_REACHED
1375  *- - diguyCrowd::CALLBACK_ID_WANDER_TARGET_REACHED
1376  *- - diguyCrowd::agents_flee_crowd()
1377  *<
1378  *- - Added the following diguyCharacter callbacks to make it easier to
1379  *- detect important events in agent behavior.
1380  *>
1381  *- - diguyCharacter::CALLBACK_ID_AGENT_NEW_BEHAVIOR
1382  *- - diguyCharacter::CALLBACK_ID_AGENT_NEW_FOCUS_CHARACTER
1383  *- - diguyCharacter::CALLBACK_ID_AGENT_ATTACK_OUT_OF_TARGETS
1384  *- - diguyCharacter::CALLBACK_ID_AGENT_ATTACK_NO_VISIBLE_TARGETS
1385  *- - diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_REACHED
1386  *- - diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_LOST
1387  *- - diguyCharacter::CALLBACK_ID_AGENT_MINGLE_TARGET_REACHED
1388  *- - diguyCharacter::CALLBACK_ID_AGENT_MINGLE_TARGET_LOST
1389  *- - diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_REACHED
1390  *- - diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_LOST
1391  *- - diguyCharacter::CALLBACK_ID_AGENT_FLEE_AREA_LEFT
1392  *- - diguyCharacter::CALLBACK_ID_AGENT_FLEE_AREA_ENTERED
1393  *- - diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_WAYPOINT_REACHED
1394  *- - diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_FORWARD_DEST_REACHED
1395  *- - diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_BACKWARD_DEST_REACHED
1396  *<
1397  *- - DI-Guy AI agents can now flee from multiple characters, groups, and
1398  *- locations instead of just one.
1399  *- - Functions diguyCharacter::agent_set_current_params_from_profile()
1400  *- and diguyCrowd::set_current_params_from_profile() have a new
1401  *- argument, retain_focus_objects. Setting this to 1 allows the
1402  *- specified to be loaded without changing the agents' current focus
1403  *- character or group.
1404  **
1405  **************************************
1406  *3 DI-Guy Motion Editor
1407  **************************************
1408  **
1409  *- - Added support for filtering the action table editor, eases editing
1410  *- of large action tables.
1411  *- - Added code to reverse motions.
1412  *- - Grabbing a pose on a Linear Offset should interpolate properly.
1413  *- - Motion arc list and action table motion list are now in sync.
1414  **
1415  **************************************
1416  *3 DI-Guy Character Viewer 10
1417  **************************************
1418  **
1419  *4 Version 10.0.0
1420  **
1421  *- - Added "Appearance Wizard" button to make selecting an appropriate
1422  *- character type and appearance easier.
1423  **
1424  **************************************
1425  *3 DI-Guy for Vega Prime 10
1426  **************************************
1427  **
1428  *4 Version 10.0.4
1429  **
1430  *- - Initial release compiling with vp 3.0.
1431  **
1432  *4 Version 9.1.2
1433  **
1434  *- - Added support for turning on DI-Guy AI from vpDiguySettings UI.
1435  *- DI-Guy AI functionality is limited inside of Vega Prime
1436  *- - Added support for turning on Lua scripting module from the
1437  *- the UI.
1438  *- - Fixed long standing issue with character's having link offsets
1439  *- applied multiple times. (Also in 9.0.4)
1440  **
1441  **************************************
1442  *3 DI-Guy Networking
1443  **************************************
1444  **
1445  *4 Version 9.1.6
1446  **
1447  *- - Fire PDUs position should now be the muzzle of the gun, the entity
1448  *- type should match the munition type fired, and the velocity should
1449  *- be the normalized direction of the muzzle.
1450  *- - Fixed issue where agents on non-flat terrains were sending erroneous
1451  *- z values.
1452  **
1453  **
1454  */
1455 
1456 /*****************************************************************************
1457  *****************************************************************************
1458  **
1459  *2 DI-Guy Applications, 9.0 and Earlier
1460  **
1461  *****************************************************************************
1462  *****************************************************************************
1463  **
1464  **************************************
1465  *3 DI-Guy API
1466  **************************************
1467  **
1468  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
1469  **
1470  *4 Version 9.0.4
1471  **
1472  *- - Added new argument to diguyCharacter::force_action() that allows
1473  *- the forced action to begin partway into the action.
1474  *- - Added the following functions to diguyCharacter API:
1475  *>
1476  *- - diguyCharacter::get_most_recent_forced_action()
1477  *- - diguyCharacter::get_most_recent_forced_action_t()
1478  *- - diguyCharacter::get_most_recent_forced_action_t_offset()
1479  *<
1480  *4 Version 9.0.1
1481  **
1482  *- - Added new guide example, see $DIGUY/programming_examples/diguy_ogl/guide_example
1483  *- - Added the following functions to diguyCharacter API:
1484  *>
1485  *- - diguyCharacter::get_distance_to_impact()
1486  *- - diguyCharacter::set_is_scene_object()
1487  *- - diguyCharacter::get_is_scene_object()
1488  *- - diguyCharacter::set_apply_actor_scale_to_action_bead_xy_travel() deprecated;
1489  *- use diguyCharacter::set_apply_actor_scale_to_action_bead_travel() instead
1490  *- - diguyCharacter::get_apply_actor_scale_to_action_bead_xy_travel() deprecated;
1491  *- use diguyCharacter::get_apply_actor_scale_to_action_bead_travel() instead
1492  *<
1493  *- - Manually invoking a diguyCharacter perl script callback via
1494  *- diguyCharacter::manually_invoke_event_handler() will now have the
1495  *- $callback_object variable properly set.
1496  *- - Minor munition system improvements:
1497  *>
1498  *- - Munitions sound effects now include sound gain.
1499  *- - Added diguyScenario::trigger_detonation(), a function for
1500  *- creating a detonation at an arbitrary xyz location.
1501  *- - Fixed bug with location of munition particle effects.
1502  *<
1503  *- - Added new Munition system demonstration; see AI_Munitions_Demo.dss in
1504  *- scenarios directory.
1505  *- - Improved default 3d sound behavior; prior default 3d sound falloff
1506  *- was much too aggressive. Future DI-Guy releases will make more of
1507  *- these values tuneable.
1508  **
1509  *4 Version 9.0.0
1510  **
1511  *- - Promoted the following functions from experimental to
1512  *- official status:
1513  *>
1514  *- - diguyScenario::find_character_at_screen_coords()
1515  *- - diguyScenario::get_impact_at_screen_coords()
1516  *- - diguyScenario::get_intersection_at_screen_coords()
1517  *- - diguyScenario::force_octtree_generation()
1518  *- - diguyScenario::intersect_static_geometry()
1519  *- - diguyScenario::add_character_to_octtree()
1520  *- - diguyScenario::remove_character_from_octtree()
1521  *- - diguyCharacter::set_apply_actor_scale_to_action_bead_xy_travel()
1522  *- - diguyCharacter::get_apply_actor_scale_to_action_bead_xy_travel()
1523  *<
1524  *- - Added functions to allow user to specify custom feeler functions:
1525  *>
1526  *- - diguyScenario::set_default_agent_feeler_function()
1527  *- - diguyCharacter::agent_set_feeler_function()
1528  *- - diguyCharacter::agent_get_feeler_function()
1529  *<
1530  *- - Fixed more issues with recent changes to reduce path memory overhead.
1531  *- - Changing current appearance will now complain less if the resulting
1532  *- change doesn't require recompilation of path data.
1533  *- - diguy_dis_constants.h now includes custom PDU enumeration.
1534  *- - Changes made to aim algorithm 8 parameter functions in an effort
1535  *- to make them more descriptive. Note that only the set functions
1536  *- are listed; the corresponding get functions have changed, too.
1537  *>
1538  *- - diguyCharacter::set_aim_param_time_constant() deprecated;
1539  *- use diguyCharacter::set_aim_param_acquire_factor() instead
1540  *- - diguyCharacter::set_aim_param_reset_time_constant() deprecated;
1541  *- use diguyCharacter::set_aim_param_new_aim_factor() instead
1542  *- - diguyCharacter::set_aim_param_time_constant2() deprecated;
1543  *- use diguyCharacter::set_aim_param_new_aim_duration() instead
1544  *<
1545  *4 Version 8.6.3
1546  **
1547  *- - Fixed some issues with recent changes to reduce path memory overhead.
1548  **
1549  *4 Version 8.6.2
1550  **
1551  *- - Changes made to support multiple active formations. New arguments
1552  *- added to diguyCharacter::call_formation() and
1553  *- diguyCharacter::break_formation() to support multiple formations.
1554  *- Default behavior remains the same as before.
1555  *- - Significant memory savings when dealing with characters with
1556  *- long paths.
1557  *- - Added new argument to diguyCharacter::set_current_appearance()
1558  *- function: allow_actor_change. Previously changes to a character's
1559  *- appearance that would result in an actor (size of character) change
1560  *- were not allowed. Passing 1 (the default) for this argument now
1561  *- allows such a change.
1562  **
1563  *4 Version 8.6.1
1564  **
1565  *- - Added function diguyCharacter::get_current_traveled_path().
1566  *- - Improved logic for picking dead action.
1567  *- - Removed deprecated functions:
1568  *>
1569  *- - diguyLoadManager::set_max_update_period()
1570  *- - diguyLoadManager::set_nonvisible_update_rate()
1571  *- - diguyLoadManager::set_zone_bounds()
1572  *- - diguyLoadManager::set_zone_parameters()
1573  *<
1574  *- - Improved DIS/HLA Networking:
1575  *>
1576  *- - Added support for Flat Earth and Geocentric coordinates.
1577  *- - Coordinate system changes can now be applied while the system is
1578  *- connected to the network.
1579  *- - DI-Guy characters can now have different Munition types which are
1580  *- sent over the network as part of the detonation pdus.
1581  *<
1582  *- - Improved Munition Support:
1583  *>
1584  ** Heavy rewrite/solidification of our munition and detonation code.
1585  *>
1586  *- - Characters now have a munition type, defaults to "m16".
1587  *- - Munition definitions are stored in the munition_type.cfg file.
1588  *- They have a number of required and optional fields including
1589  *- septet, radius, and special effects to create when triggered.
1590  *- - The munition name and radius is now part of diguyImpact
1591  *- structure. This allows the end user to build damage models in
1592  *- scripts that are based on the munition type of an impact, along
1593  *- with fall-off effects based on distance from impact location.
1594  *- - Characters hit by broadcast detonations will now call the
1595  *- CALLBACK_ID_IMPACT callback if they have one, this emulates what
1596  *- happens when characters are shot by other DI-Guys. If they are
1597  *- members of a crowd and the crowd has an impact callback that will
1598  *- be called, if no impact callback exists they will die.
1599  *- - Crowds should now react to remote detonations.
1600  *- - Impacting a scene object will now transmit a detonation.
1601  *<
1602  *<
1603  *4 Version 8.5.0
1604  **
1605  *- - Many new function calls available from decisions.
1606  *- - Changed default aim algorithm from 7 to 8. To change it back to 7,
1607  *- call diguyCharacter::set_aim_algorithm(), passing 7 as the
1608  *- aim_algorithm argument.
1609  *- - Improved diguyCharacter::check_character_visibility(). Character
1610  *- will now use the cervical joint as the source point, and test
1611  *- multiple positions on the target.
1612  *- - Promoted diguyCharacter version 8 aim algorithm functions from
1613  *- experimental to official.
1614  *- - Characters that are flagged as scene object are no longer baked
1615  *- into the world octtree. Editing them no longer requires an expensive
1616  *- octtree rebuild.
1617  *- - Fixed access bug in diguyScenario::find_path_shape().
1618  *- - Added functions:
1619  *>
1620  *- - diguyCharacter::get_last_impact_is_from_vehicle()
1621  *- - diguyCharacter::get_last_impact_speed_is_greater_than()
1622  *- - diguyCharacterGuide::set_position_acquired()
1623  *- - diguyCharacterGuide::set_orientation_acquired()
1624  *- - diguyImpact::get_impact_speed()
1625  *<
1626  *4 Version 8.1.0
1627  **
1628  *- - Added function diguyScenario::preload_sound()
1629  *- - Added callback id diguyScenario::CALLBACK_ID_SAVE_SCENARIO_FILE
1630  *- - Added experimental functions:
1631  *>
1632  *- - diguyCharacter::get_nearest_waypoint_index_in_path()
1633  *- - diguyCharacter::set_desired_orientation_to_current_orientation()
1634  *- - diguyCharacter::check_character_visibility()
1635  *<
1636  *4 Version 8.0.6
1637  **
1638  *- - Fixed issue where turreted vehicles broadcast angle did not match
1639  *- the DIS standard.
1640  *- - Added experimental aim functions. These functions are for the new
1641  *- DI-Guy version 8 aim algorithm.
1642  *>
1643  *- - diguyCharacter::set_aim_algorithm()
1644  *- - diguyCharacter::get_aim_algorithm()
1645  *- - diguyCharacter::set_aim_param_seek_tolerance()
1646  *- - diguyCharacter::get_aim_param_seek_tolerance()
1647  *- - diguyCharacter::set_aim_param_time_constant()
1648  *- - diguyCharacter::get_aim_param_time_constant()
1649  *- - diguyCharacter::set_aim_param_time_constant2()
1650  *- - diguyCharacter::get_aim_param_time_constant2()
1651  *- - diguyCharacter::set_aim_param_reset_time_constant()
1652  *- - diguyCharacter::get_aim_param_reset_time_constant()
1653  *- - diguyCharacter::set_aim_param_azimuth_acquired_range()
1654  *- - diguyCharacter::get_aim_param_azimuth_acquired_range()
1655  *- - diguyCharacter::set_aim_param_elevation_acquired_range()
1656  *- - diguyCharacter::get_aim_param_elevation_acquired_range()
1657  *- - diguyCharacter::set_aim_param_max_per_frame_adj_factor()
1658  *- - diguyCharacter::get_aim_param_max_per_frame_adj_factor()
1659  *- - diguyCharacter::set_aim_converge_every_frame()
1660  *- - diguyCharacter::get_aim_converge_every_frame()
1661  *- - diguyCharacter::aim_converge()
1662  *<
1663  *4 Version 8.0.5
1664  **
1665  *- - Fixed issue with TXP geometry loader. If external textures are
1666  *- marked as "Unknown" format, the actual format is now derived from
1667  *- the filename extension in the case of .rgb, .rgba, .int, and .inta
1668  *- texture files.
1669  **
1670  *4 Version 8.0.4
1671  **
1672  *- - Improved documentation for function diguyScenario::update().
1673  *- - Fixed some issues with I-Guy and its use of joystick input. I-Guy
1674  *- input for DI-Guy 8 now more closely matches that of previous
1675  *- versions.
1676  *- - Fixed some issues with muzzle flashes. In particular, muzzle
1677  *- flashes were not consistently showing up in DI-Guy Scenario, both
1678  *- during initial simulation and during review data playback.
1679  *- - DI-Guy now includes a DIGuyLicenseTool application that makes it
1680  *- easier to gather the appropriate information needed to request a
1681  *- license from Boston Dynamics. This utility program can be run
1682  *- during Applications installation, or, after installation is
1683  *- complete, from the DI-Guy folder in the Start Menu.
1684  *- - Fixed a problem with programming examples that used OpenAL
1685  *- with the VC7 static libs (Makefile.vc7_md, for example)
1686  *- would crash when an .ogg file was loaded.
1687  **
1688  *4 Version 8.0.3
1689  **
1690  *- - Fixed some issues with I-Guy:
1691  *>
1692  *- - Firing the I-Guy's weapon now correctly uses the trajectory
1693  *- to the crosshair, instead of along the weapon barrel.
1694  *- - Keyboard control of looking up and down now possible; use
1695  *- 'Page Up' and 'Page Down' keys.
1696  *<
1697  *- - Fixed problem with networked characters climbing hills.
1698  *- - Fixed problem with networked characters transitioning too quickly.
1699  *- - Added Visual Studio 7.1 solution for diguy_ogl/simple_playback
1700  *- example.
1701  *- - Fixed issue with diguyCharacter::stop_all_sounds() and
1702  *- diguyScenario::stop_all_sounds() not saving history events.
1703  **
1704  *4 Version 8.0.2
1705  **
1706  *- - Fixed problem with some textures not loading properly.
1707  *- - Fixed problem with DirectX examples not shutting down cleanly
1708  *- if there is a license problem.
1709  **
1710  *4 Version 8.0.1
1711  **
1712  *- - Fixed issues with temporary characters not always being destroyed.
1713  *- - Fixed issues with temporary characters showing up in review
1714  *- playback.
1715  *- - Fixed issues with appearance effects being recycled properly.
1716  *- - Fixed problem with eyes not participating in gazing.
1717  *- - Rework of many examples in the programming_examples directory.
1718  *- Some new examples added, some older ones removed.
1719  *- - Added README.txt files to diguy_plugin examples that better describe
1720  *- what the examples show, and how to use them in DI-Guy Scenario.
1721  **
1722  *4 Version 8.0.0
1723  **
1724  *- - Initial 8.0 release candidate.
1725  *- - Setting of tin (T In) and tout (T Out) calls for characters have
1726  *- been tightened up. For example, a character's tin can no longer
1727  *- be set to before the current scenario t. It could be before, but
1728  *- would cause potential problems. Warning messages are printed to
1729  *- the log when improper tin or tout times are attempted.
1730  **
1731  *4 Version 7.1.20
1732  **
1733  *- - Added new diguySignal and diguyScenario functions:
1734  *>
1735  *- - diguySignal::set_info_text()
1736  *- - diguySignal::get_info_text()
1737  *- - diguyScenario::signal_palette_show_all()
1738  *- - diguyScenario::signal_palette_hide_all()
1739  *<
1740  *- - The signal info_text field allows signals to be tagged in the DI-Guy
1741  *- Scenario Signal Palette with text different than the signal name.
1742  *- The new show all and hide all functions take an optional filter
1743  *- that can be used to make the operation work on a subset of the
1744  *- signals.
1745  **
1746  *4 Version 7.1.19
1747  **
1748  *- - Fixed problem with vehicle_wheels character in which first frame
1749  *- of playback had wheels in incorrect position.
1750  *- - Improved documentation for diguyCharacter Performance Functions.
1751  *- - Improved documentation for diguyCharacter functions that
1752  *- deal with enabling and disabling characters in various ways.
1753  *- - Added functions:
1754  *>
1755  *- - diguyLoadManager::set_zone_all_blends_disabled()
1756  *- - diguyLoadManager::get_zone_all_blends_disabled()
1757  *- - diguyLoadManager::set_zone_shape_switches_disabled()
1758  *- - diguyLoadManager::get_zone_shape_switches_disabled()
1759  *- - diguyLoadManager::set_zone_shape_callbacks_disabled()
1760  *- - diguyLoadManager::get_zone_shape_callbacks_disabled()
1761  *- - diguyLoadManager::set_zone_graphics_api_shape_update_disabled()
1762  *- - diguyLoadManager::get_zone_graphics_api_shape_update_disabled()
1763  *- - diguyCharacter::get_is_active()
1764  *- - diguyCharacter::set_invisible_flag()
1765  *- - diguyCharacter::get_invisible_flag()
1766  *<
1767  *- - Added function diguyCharacterGroup::get_is_network_paused(), and
1768  *- deprecated function diguyCharacterGroup::get_paused()
1769  *- - Added function diguyCharacterGroup::get_visible(), and
1770  *- deprecated function diguyCharacterGroup::get_is_drawn()
1771  *- - Made the following functions callable from decisions:
1772  *>
1773  *- - diguyCharacter::get_is_network_paused()
1774  *- - diguyCharacter::get_is_network_published()
1775  *- - diguyCharacter::get_is_network_reflected()
1776  *<
1777  *4 Version 7.1.18
1778  **
1779  *- - Added functions:
1780  *>
1781  *- - diguy_extract_translation_and_euler_angles_from_matrix()
1782  *- - diguy_create_matrix_from_translation_and_euler_angles()
1783  *- - diguyCharacter::set_appearance()
1784  *- - diguyCharacter::get_aim_is_possible()
1785  *<
1786  *- - Changed the name of several experimental functions:
1787  *>
1788  *- - diguyCharacter::start_appearance_effect() -> diguyCharacter::begin_appearance_effect()
1789  *- - diguyCharacter::stop_appearance_effect() -> diguyCharacter::end_appearance_effect()
1790  *<
1791  *- - The following experimental functions were promoted to
1792  *- official API status:
1793  *>
1794  *- - diguyScenario::create_temporary_character()
1795  *- - diguyScenario::send_character_to_recycle_bin()
1796  *- - diguyScenario::retrieve_character_from_recycle_bin()
1797  *- - diguyScenario::set_playback_mode()
1798  *- - diguyScenario::set_playback_mode_stop()
1799  *- - diguyScenario::set_playback_mode_play()
1800  *- - diguyCharacter::get_is_temporary()
1801  *- - diguyCharacter::translate_all_paths()
1802  *- - diguyCharacter::rotate_all_paths_about_point()
1803  *- - diguyCharacter::rotate_all_paths_about_current_waypoint()
1804  *- - diguyCharacter::manually_invoke_event_handler()
1805  *<
1806  *- - The ability to change the tin ("T In") time of a scenario has been
1807  *- removed. THIS CHANGE WILL AFFECT SCENARIOS THAT USED THIS
1808  *- FUNCTIONALITY. Setting the tin of a scenario to anything other than
1809  *- 0 has always had unintended side-effects for DI-Guy, which is why
1810  *- this capability has been removed. The functions
1811  *- diguyScenario::set_tin() and diguyScenario::get_tin() are now
1812  *- deprecated as a result. (Note that diguyCharacter::set_tin()
1813  *- has not been changed.)
1814  **
1815  *4 Version 7.1.16
1816  **
1817  *- - Added the following functions:
1818  *>
1819  *- - diguyCharacter::set_initial_up_vector()
1820  *- - diguyCharacter::get_initial_up_vector()
1821  *- - diguyCharacter::get_up_vector()
1822  *<
1823  *4 Version 7.1.14
1824  **
1825  *- - Fixed issues with scenario merging. Chain settings and particle
1826  *- systems in particular did not merge well.
1827  **
1828  *4 Version 7.1.13
1829  **
1830  *- - The following experimental functions were promoted to
1831  *- official API status:
1832  *>
1833  *- - diguyCharacter::set_minimum_cpl()
1834  *- - diguyCharacter::get_minimum_cpl()
1835  *- - diguyCharacter::get_maximum_possible_current_cpl()
1836  *- - diguyCharacter::maximize_current_cpl()
1837  *- - diguyCharacter::set_automatic_cpl_switching_enabled()
1838  *- - diguyCharacter::get_automatic_cpl_switching_enabled()
1839  *- - diguyCharacter::set_current_cpl()
1840  *- - diguyCharacter::get_current_cpl()
1841  *- - diguyCharacter::set_position_accumulation_disabled()
1842  *- - diguyCharacter::get_position_accumulation_disabled()
1843  *- - diguyCharacter::set_all_blends_disabled()
1844  *- - diguyCharacter::get_all_blends_disabled()
1845  *- - diguyCharacter::set_shape_switches_disabled()
1846  *- - diguyCharacter::get_shape_switches_disabled()
1847  *- - diguyCharacter::set_shape_callbacks_disabled()
1848  *- - diguyCharacter::get_shape_callbacks_disabled()
1849  *- - diguyCharacter::set_graphics_api_shape_update_disabled()
1850  *- - diguyCharacter::get_graphics_api_shape_update_disabled()
1851  *- - diguyCharacter::optimized_update()
1852  *- - diguyCharacter::get_is_recycled()
1853  *- - diguyCharacter::get_last_impact_record()
1854  *- - diguyCharacter::get_last_impact_number()
1855  *- - diguyCharacter::get_last_impact_been_processed()
1856  *- - diguyCharacter::set_last_impact_been_processed()
1857  *- - diguyCharacter::get_last_impact_link()
1858  *- - diguyCharacter::get_last_impact_link_is()
1859  *- - diguyCharacter::set_weapon_projectile_is_visible()
1860  *- - diguyCharacter::get_weapon_projectile_is_visible()
1861  *- - diguyCharacter::start_appearance_effect()
1862  *- - diguyCharacter::stop_appearance_effect()
1863  *- - diguyApp::set_precompute_quaternions_enabled()
1864  *- - diguyApp::get_precompute_quaternions_enabled()
1865  *- - diguyApp::set_num_rendering_passes()
1866  *- - diguyApp::get_num_rendering_passes()
1867  *<
1868  *- - The following deprecated functions were removed:
1869  *>
1870  *- - diguyApp::set_use_varsets_enabled()
1871  *- - diguyApp::get_use_varsets_enabled()
1872  *- - diguyCharacterGroup::set_all_members_t()
1873  *<
1874  *4 Version 7.1.12
1875  **
1876  *- - Added new functions to diguyCharacter:
1877  *>
1878  *- - diguyCharacter::set_position_to_other_character_position()
1879  *- - diguyCharacter::set_desired_position_to_current_position()
1880  *- - diguyCharacter::set_desired_position_to_waypoint()
1881  *- - diguyCharacter::set_desired_position_to_path_waypoint()
1882  *- - diguyCharacter::set_desired_position_to_path_shape_waypoint()
1883  *- - diguyCharacter::find_guide()
1884  *<
1885  *4 Version 7.1.11
1886  **
1887  *- - The following functions were added to diguySensorRegion that
1888  *- make it easier to write callback handlers for sensor regions:
1889  *>
1890  *- - get_autosense_callback_candidate_entered()
1891  *- - get_autosense_callback_candidate_left()
1892  *<
1893  *- - Characters now fire live rounds by default when
1894  *- diguyCharacter::fire_weapon() is called. THIS IS A CHANGE
1895  *- FROM PREVIOUS DEFAULT BEHAVIOR.
1896  *- The old behavior can be restored in two ways:
1897  *>
1898  *- - In DI-Guy Scenario, the Weapon Params tab on the Character
1899  *- Elements palette has a checkbox called "Weapon Fires Live
1900  *- Rounds". The checkbox can be unchecked, followed by pressing
1901  *- the "Copy to All Characters" button.
1902  *- - In a program using the DI-Guy API, the function
1903  *- diguyCharacter::set_weapon_fires_live_rounds() can be called.
1904  *<
1905  *- - Character Labels Visibility is now set to 'None' in the default
1906  *- .dss file.
1907  *- - Added function to diguyCharacterGuide:
1908  *>
1909  *- - diguyCharacterGuide::remove_all_disabled_guides()
1910  *<
1911  *- - Made the following functions available to Decision Beads and Decision
1912  *- Events:
1913  *>
1914  *- - diguyCharacter::remove_all_guides()
1915  *- - diguyCharacter::remove_all_disabled_guides()
1916  *<
1917  *- - Removed DI-Guy Graphics API programming example
1918  *- ogl_examples_high_precision/simple_playback_high_precision.
1919  *- Replaced it with streamlined example
1920  *- ogl_examples/simple_playback_far_positions.
1921  *- - Fixed problem with props/scene objects showing up at origin
1922  *- in after-action review.
1923  **
1924  *4 Version 7.1.10
1925  **
1926  *- - Fixed a problem with the DI-Guy Graphics API that prevented
1927  *- textures on some characters from being correctly bound under
1928  *- certain circumstances.
1929  **
1930  *4 Version 7.1.9
1931  **
1932  *- - The following optional functions were added to plugins:
1933  *>
1934  *- - void key_press()
1935  *- - void key_release()
1936  *<
1937  *- - Added diguyIGuyController class for C++ and script control over
1938  *- the I-Guy character.
1939  *- - Setting the dead reckoning time threshold is now done by setting the
1940  *- variable time_threshold in the network.cfg file. The variable
1941  *- tick_period has been deprecated and will no longer have any effect.
1942  *- The default value is 5 seconds.
1943  **
1944  *4 Version 7.1.8
1945  **
1946  *- - Added callback and event handling support for scenario variables:
1947  *>
1948  *- - diguyScenario::add_default_variable_callback()
1949  *- - diguyScenario::remove_default_variable_callback()
1950  *- - diguyScenario::remove_default_variable_callback_with_user_data()
1951  *- - diguyScenario::add_default_variable_callback_script()
1952  *- - diguyScenario::remove_default_variable_callback_script()
1953  *- - diguyScenario::register_variable_event_handler()
1954  *- - diguyScenario::register_variable_event_handler_from_library()
1955  *- - diguyScenario::register_variable_event_handler_script()
1956  *- - diguyScenario::has_registered_variable_event_handler()
1957  *- - diguyScenario::unregister_variable_event_handler()
1958  *- - diguyVariable::CALLBACK_ID_VALUE_CHANGED
1959  *- - diguyVariable::add_callback()
1960  *- - diguyVariable::remove_callback()
1961  *- - diguyVariable::remove_callback_with_user_data()
1962  *- - diguyVariable::add_callback_script()
1963  *- - diguyVariable::remove_callback_script()
1964  *- - diguyVariable::map_event_handler_to_callback_id()
1965  *- - diguyVariable::unmap_event_handler_from_callback_id()
1966  *<
1967  *4 Version 7.1.7
1968  **
1969  *- - Added parameters polygon_offset_factor and polygon_offset_units
1970  *- to bdiGraphicsInitOgl structure to allow for better control
1971  *- over subface rendering in OpenGL.
1972  *- - Addressed some issues with diguyGraphicsLink and far positions.
1973  **
1974  *4 Version 7.1.6
1975  **
1976  *- - Added functions to diguySensorRegion:
1977  *>
1978  *- - diguySensorRegion::contains_character_from_group()
1979  *<
1980  *- - Added experimental functions
1981  *- diguyScenario::create_temporary_character() and
1982  *- diguyCharacter::get_is_temporary(). These functions allow
1983  *- for the creation of 'temporary' characters that are not saved
1984  *- in a .dss file and are recycled on scenario reset. Temporary
1985  *- characters are useful as fired munitions, effects, etc.
1986  *- - Added functions to diguyCharacterGuide:
1987  *>
1988  *- - diguyCharacterGuide::get_position_acquired()
1989  *- - diguyCharacterGuide::get_orientation_acquired()
1990  *<
1991  *- - Added new callbacks to diguyCharacter:
1992  *>
1993  *- - diguyCharacter::CALLBACK_ID_GUIDE_POSITION_ACQUIRED
1994  *- - diguyCharacter::CALLBACK_ID_GUIDE_POSITION_UNACQUIRED
1995  *- - diguyCharacter::CALLBACK_ID_GUIDE_ORIENTATION_ACQUIRED
1996  *- - diguyCharacter::CALLBACK_ID_GUIDE_ORIENTATION_UNACQUIRED
1997  *- - diguyCharacter::CALLBACK_ID_CURRENT_TOUT_REACHED
1998  *<
1999  *- - Added function diguyCharacter::set_custom_orientation_rx_and_ry().
2000  *- This function allows the roll and pitch components of a
2001  *- character to be set without taking the character off of its
2002  *- current path, if there is one. The character's up vector
2003  *- (as set by diguyCharacter::set_up_vector()) must be 'c'
2004  *- (custom) for these values to have an effect.
2005  *- - Added new distance calculation functions:
2006  *>
2007  *- - diguyCharacter::get_distance_to_character()
2008  *- - diguyCharacter::get_distance_xy_to_character()
2009  *- - diguyCharacter::get_distance_to_path()
2010  *<
2011  *- - Added new experimental functions for locating a nearby character.
2012  *- These functions have a check_visibility argument; if 1, the
2013  *- function will do a simple ray trace against scene object geometry.
2014  *>
2015  *- - diguyCharacter::get_nearest_active_character()
2016  *- - diguyCharacter::get_nearest_active_character_in_group()
2017  *<
2018  *- - Added diguySensorRegion::contains_character_by_type()
2019  *- - Added diguyCharacter::force_local_path() new function that
2020  *- can grab a preexisting path. copy and transform it into the
2021  *- local space of the character and switch to it.
2022  *- - Removed function diguy_dis_get_action_from_entity_state() from
2023  *- diguy_module_dis.h. diguyCharacter::get_action_from_entity_state()
2024  *- should be called instead to map DIS values to an action.
2025  **
2026  *4 Version 7.1.5
2027  **
2028  *- - Added experimental transformation functions for paths:
2029  *>
2030  *- - diguyCharacterPath::translate()
2031  *- - diguyCharacterPath::rotate_about_point()
2032  *- - diguyPathShape::translate()
2033  *- - diguyPathShape::rotate_about_point()
2034  *<
2035  *- - Added experimental performance tuning functions:
2036  *>
2037  *- - diguyScenario::send_character_to_recycle_bin()
2038  *- - diguyScenario::retrieve_character_from_recycle_bin()
2039  *<
2040  *- - Deprecated experimental performance tuning functions:
2041  *>
2042  *- - diguyApp::set_use_varsets_enabled()
2043  *- - diguyApp::get_use_varsets_enabled()
2044  *<
2045  *4 Version 7.1.4
2046  **
2047  *- - Added function diguyCharacterPath::get_path_shape(), that
2048  *- provides access to a path's underlying path shape.
2049  *- - Added functions diguyCharacter::get_nearest_active_character()
2050  *- and diguyCharacter::get_nearest_active_character_in_group().
2051  *- These functions will walk through either all characters or all
2052  *- characters in a group, and return the nearest character that is
2053  *- both alive and enabled. An optional argument specifies whether
2054  *- to skip characters that are invisible to the caller because a
2055  *- scene object is in the way.
2056  *- - Added convenience functions diguyCharacter::get_distance() and
2057  *- diguyCharacter::get_distance_xy() for getting the distance
2058  *- between two characters.
2059  **
2060  *4 Version 7.1.3
2061  **
2062  *- - Deprecated diguyChainSimulation::set_connection_character()
2063  *- function. Replaced with
2064  *- diguyChainSimulation::set_chain_mass_connection_character().
2065  *- - Added ability to set all chain mass positions in the
2066  *- call diguyChainSimulation::set_chain_mass_position()
2067  *- by passing -1 for the chain_mass_index.
2068  *- - Added ability to fix all chain mass positions in the
2069  *- call diguyChainSimulation::set_chain_mass_position_is_fixed()
2070  *- by passing -1 for the chain_mass_index.
2071  *- - Added aiming ability for characters with turrets.
2072  *- - Fixed problems with debug versions of programming examples
2073  *- that caused heap corruption on some Windows systems.
2074  **
2075  *4 Version 7.1.2
2076  **
2077  *- - Added new callback to diguyCharacter:
2078  *>
2079  *- - diguyCharacter::CALLBACK_ID_DESIRED_ACTION_REACHED
2080  *<
2081  *4 Version 7.1.1
2082  **
2083  *- - Added a new experimental character type called "chain_simulation"
2084  *- that can do realtime simulation of chains, ropes, and hoses.
2085  *- The appearance of the chain_simulation character determines its
2086  *- simulation settings. Chain simulation settings are created and
2087  *- on the DI-Guy Scenario Chain Sim Settings page, or via the
2088  *- diguyChainSettings class. Runtime parameters of the chain
2089  *- simulation are set by obtaining a diguyChainSimulation object
2090  *- via the diguyCharacter::get_chain_simulation() call.
2091  *- - Fixed issues with diguyCharacter::set_current_appearance().
2092  *- 0 was returned even if appearance change failed; not correctly
2093  *- returns -1 on failure.
2094  *- - Added new experimental functions to event bead classes. These
2095  *- functions make it possible to specify that event beads should
2096  *- begin and/or when a specific action bead or waypoint is reached.
2097  *- Members are:
2098  *>
2099  *- - diguyCharacterPathAimBead::get_begin_at_object_name()
2100  *- - diguyCharacterPathAimBead::set_begin_at_object_name()
2101  *- - diguyCharacterPathAimBead::get_end_at_object_name()
2102  *- - diguyCharacterPathAimBead::set_end_at_object_name()
2103  *- - diguyCharacterPathDecisionBead::get_begin_at_object_name()
2104  *- - diguyCharacterPathDecisionBead::set_begin_at_object_name()
2105  *- - diguyCharacterPathDecisionBead::get_end_at_object_name()
2106  *- - diguyCharacterPathDecisionBead::set_end_at_object_name()
2107  *- - diguyCharacterPathGazeBead::get_begin_at_object_name()
2108  *- - diguyCharacterPathGazeBead::set_begin_at_object_name()
2109  *- - diguyCharacterPathGazeBead::get_end_at_object_name()
2110  *- - diguyCharacterPathGazeBead::set_end_at_object_name()
2111  *- - diguyCharacterPathScriptBead::get_begin_at_object_name()
2112  *- - diguyCharacterPathScriptBead::set_begin_at_object_name()
2113  *- - diguyCharacterPathScriptBead::get_end_at_object_name()
2114  *- - diguyCharacterPathScriptBead::set_end_at_object_name()
2115  *<
2116  *- - Function diguyApp::load_plugin() has three new optional arguments:
2117  *- required_by_scenario, unload_on_scenario_close, and
2118  *- accepts_mouse_input.
2119  *- - Added functions to diguyImpact:
2120  *>
2121  *- - diguyImpact::get_location_in_link_coordinates()
2122  *<
2123  *- - Added functions to diguyScenario:
2124  *>
2125  *- - diguyScenario::get_impact_at_screen_coords()
2126  *<
2127  *- - Added functions to diguyCharacter:
2128  *>
2129  *- - diguyCharacter::set_label_text_shadow_color()
2130  *- - diguyCharacter::get_label_text_shadow_color()
2131  *- - diguyCharacter::set_label_text_shadow_is_visible()
2132  *- - diguyCharacter::get_label_text_shadow_is_visible()
2133  *<
2134  *- - Character label information is now saved in the scenario
2135  *- file and restored when the scenario is loaded.
2136  **
2137  *4 Version 7.1.0
2138  **
2139  *- - Added function diguy_get_app(), a cleaner function for
2140  *- retrieving the diguyApp object than diguyApp::get_app().
2141  *- - Added experimental transformation functions for paths:
2142  *>
2143  *- - diguyCharacter::translate_all_paths()
2144  *- - diguyCharacter::rotate_all_paths_about_point()
2145  *- - diguyCharacter::rotate_all_paths_about_current_waypoint()
2146  *- - diguyCharacterGroup::translate_all_paths()
2147  *- - diguyCharacterGroup::rotate_all_paths_about_point()
2148  *- - diguyCharacterGroup::rotate_all_paths_about_current_waypoint()
2149  *<
2150  *- - Added functions diguyApp::get_diguy_base_dir() and
2151  *- diguyApp::get_diguy_subdir().
2152  *- - Added diguyCharacter::get_parent() function.
2153  *- - Added diguyViewLight::set_shadowmap_size() and
2154  *- diguyViewLight::get_shadowmap_size(); allows setting shadow
2155  *- map resolution.
2156  *- Must be a power of 2.
2157  *- - Made various internal performance enhancements for scenario
2158  *- updates.
2159  *- - Fixed a problem with motion LODs updating all links every
2160  *- now and then, even if the current action hasn't changed.
2161  *- - Made the scenario be able to go past 60000 seconds. Now a
2162  *- scenario tout greater than 60000 seconds is interpreted as
2163  *- unlimited.
2164  *- - Fixed a problem with motion LODs updating too many links.
2165  *- - Made various internal performance enhancements for scenario
2166  *- updates.
2167  *- - Added performance tuning functions:
2168  *>
2169  *- - diguyCharacter::set_automatic_cpl_switching_enabled()
2170  *- - diguyCharacter::get_automatic_cpl_switching_enabled()
2171  *- - diguyCharacter::set_minimum_cpl()
2172  *- - diguyCharacter::get_minimum_cpl()
2173  *- - diguyCharacter::get_maximum_possible_current_cpl()
2174  *- - diguyCharacter::maximize_current_cpl()
2175  *- - diguyCharacter::get_current_cpl()
2176  *- - diguyCharacter::set_position_accumulation_disabled()
2177  *- - diguyCharacter::get_position_accumulation_disabled()
2178  *- - diguyCharacter::set_all_blends_disabled()
2179  *- - diguyCharacter::get_all_blends_disabled()
2180  *- - diguyCharacter::set_shape_switches_disabled()
2181  *- - diguyCharacter::get_shape_switches_disabled()
2182  *- - diguyCharacter::set_shape_callbacks_disabled()
2183  *- - diguyCharacter::get_shape_callbacks_disabled()
2184  *- - diguyCharacter::set_graphics_api_shape_update_disabled()
2185  *- - diguyCharacter::get_graphics_api_shape_update_disabled()
2186  *- - diguyCharacter::optimized_update()
2187  *- - diguyScenario::optimized_update()
2188  *- - diguyScenario::send_character_to_recycle_bin()
2189  *- - diguyScenario::retrieve_character_from_recycle_bin()
2190  *- - diguyGraphicsLink::get_data_ptr()
2191  *- - diguyGraphicsLink::get_translation_data_index()
2192  *- - diguyGraphicsLink::get_rotation_data_index()
2193  *- - diguyGraphicsLink::get_scale_data_index()
2194  *- - diguyGraphicsLink::get_quat_data_ptr()
2195  *- - diguyGraphicsLink::get_quat_data_index()
2196  *- - diguyApp::set_use_varsets_enabled()
2197  *- - diguyApp::get_use_varsets_enabled()
2198  *- - diguyApp::set_precompute_quaternions_enabled()
2199  *- - diguyApp::get_precompute_quaternions_enabled()
2200  *<
2201  *4 Version 7.0.9
2202  **
2203  *- - Rewrote portions of network mapping code, custom pdus/specialized
2204  *- motions will now work with more characters.
2205  *- This requires a new version of data, but any character that has
2206  *- been properly tagged with variants and postures should transmit
2207  *- better.
2208  *- - Rewrote speed code, networked characters should scale speed to
2209  *- try and match packets that are coming in.
2210  **
2211  *4 Version 7.0.8
2212  **
2213  *- - Trying to get the position of a invalid link will behave a bit
2214  *- better.
2215  **
2216  *4 Version 7.0.6
2217  **
2218  *- - Creating a path when a character has none will properly set
2219  *- the initial path name.
2220  **
2221  *4 Version 7.0.5
2222  **
2223  *- - Fixed a crash that sometimes happened while reading comments
2224  *- out of texture .attr files.
2225  **
2226  *4 Version 7.0.3
2227  **
2228  *- - Fixed a problem with the diguyGraphicsShape::update() function not
2229  *- always being called.
2230  *- - Fixed various bugs with VR-Link and DI-Guy time sync code.
2231  *- - Added warning if diguyCharacter::set_desired_action() is called
2232  *- with 0.0f as the speed.
2233  **
2234  *4 Version 7.0.2
2235  **
2236  *- - Fixed a problem with gazing and aiming not zeroing in on the
2237  *- correct positions when using DI-Guy for Vega.
2238  **
2239  *4 Version 7.0.1
2240  **
2241  *- - Deprecated "named_callback" functions in diguyApp. Event handler
2242  *- functions should be used instead.
2243  *- - Renamed some diguyViewCamera functions:
2244  *>
2245  *- - diguyViewCamera::get_world_offset_position() has become
2246  *- diguyViewCamera::get_segment_origin()
2247  *- - diguyViewCamera::get_local_position() has become
2248  *- diguyViewCamera::get_position_segment_offset()
2249  *- - diguyViewCamera::get_local_fix() has become
2250  *- diguyViewCamera::get_fix_segment_offset()
2251  *<
2252  *- - Added function diguyCharacterGroup::update_all_members(), and
2253  *- deprecated function diguyCharacterGroup::set_all_members_t()
2254  *- - Fixed problem with deleting one scenario and creating another
2255  *- causing a crash.
2256  *- - Fixed crash problem with function diguy_set_cfg_file().
2257  *- - Changed the default settings of automatic switching of graphics
2258  *- LODs and motion LODs, as set by
2259  *- diguyScenario::set_automatic_graphics_lod_switching() and
2260  *- diguyScenario::set_automatic_motion_lod_switching(). Previously
2261  *- automatic LOD switching was always enabled unless explicitly
2262  *- disabled by calling the above functions. Now automatic LOD
2263  *- switching will be disabled by default in DI-Guy API applications,
2264  *- but remain enabled by default in DI-Guy Scenario.
2265  *- - Added the following functions for adding and removing appearances:
2266  *>
2267  *- - diguyScenario::add_appearance()
2268  *- - diguyScenario::add_appearance_based_on_existing_appearance()
2269  *- - diguyScenario::remove_appearance()
2270  *<
2271  *- - diguyScenario::add_custom_appearance() deprecated;
2272  *- use diguyScenario::add_appearance().
2273  *- - diguyScenario::add_custom_appearance_based_on_existing_appearance()
2274  *- deprecated; use
2275  *- diguyScenario::add_appearance_based_on_existing_appearance().
2276  *- - Promoted the following functions from experimental to
2277  *- official status:
2278  *>
2279  *- - diguyCharacter::get_label_text()
2280  *- - diguyCharacter::set_label_text()
2281  *- - diguyCharacter::get_label_is_visible()
2282  *- - diguyCharacter::set_label_is_visible()
2283  *- - diguyCharacter::set_label_text_color()
2284  *- - diguyCharacter::get_label_text_color()
2285  *- - diguyCharacter::set_label_background_color()
2286  *- - diguyCharacter::get_label_background_color()
2287  *<
2288  *- - Removed diguyLoadManager camera functions (load manager camera
2289  *- now always tracks the scenario's primary view camera):
2290  *>
2291  *- - diguyLoadManager::add_camera()
2292  *- - diguyLoadManager::add_view_camera()
2293  *- - diguyLoadManager::move_camera()
2294  *- - diguyLoadManager::change_view_camera_settings()
2295  *- - diguyLoadManager::remove_camera()
2296  *- - diguyLoadManager::remove_all_cameras()
2297  *<
2298  *4 Version 7.0.0
2299  **
2300  *- - Fixed problem with diguyCharacter::set_speed(). The set speed
2301  *- was being reset to the action's default speed after a short time,
2302  *- which is not correct behavior.
2303  *- - Changed values returned by diguyCharacter::get_aim_azimuth()
2304  *- and diguyCharacter::get_aim_elevation() to be character-
2305  *- relative rather than world-relative.
2306  **
2307  *4 Version 6.1.10
2308  **
2309  *- - Fixed event propagation bug when event tout is -1 and scenario
2310  *- tout is changed.
2311  *- - Added optional actor argument to
2312  *- diguyScenario::add_custom_appearance() function. This
2313  *- fixes a problem with characters not being able to switch
2314  *- to custom appearances with
2315  *- diguyCharacter::set_current_appearance() because of actors
2316  *- being different.
2317  *- - Added simple_playback_high_precision and view_far_position that
2318  *- demonstrate off the use of high precision position values.
2319  **
2320  *4 Version 6.1.9
2321  **
2322  *- - Fixed problem with various diguyWaypoint "get" functions
2323  *- that return angles (e.g., diguyWaypoint::get_yaw_in());
2324  *- they weren't properly returning angles in degrees.
2325  *- - Fixed problem with merging scenarios: merged waypoints at
2326  *- the origin were not being rotated correctly.
2327  *- - Fixed problem with config file appearance syntax. The
2328  *- item "shapeset:shape" format caused a crash; it now works
2329  *- again.
2330  *- - Fixed problems with required plug-in list not saving or
2331  *- resetting properly.
2332  **
2333  *4 Version 6.1.8
2334  **
2335  *- - Far positions rendering are now off by default, though
2336  *- DI-Guy Scenario and DI-Guy Scenario UI V6 turn them on.
2337  *- Practically this means that while internally things are
2338  *- done at a higher precision format, the render camera being
2339  *- in local space will be a change that needs to be explicitly
2340  *- asked for.
2341  *- - Added the following functions for controlling far position
2342  *- state:
2343  *>
2344  *- - diguy_ogl_get_use_far_positions()
2345  *- - diguy_ogl_set_use_far_positions()
2346  *- - diguy_graphics_get_use_far_positions()
2347  *- - diguy_graphics_set_use_far_positions()
2348  *<
2349  *- - Added accessors for setting character and scene object culling
2350  *- on/off.
2351  *>
2352  *- - diguyScenario::set_character_culling_enabled()
2353  *- - diguyScenario::get_character_culling_enabled()
2354  *- - diguyScenario::set_scene_object_culling_enabled()
2355  *- - diguyScenario::get_scene_object_culling_enabled()
2356  *<
2357  *- - Added accessors for setting character and scene object bounding
2358  *- volume visualization on/off. (only works for OpenGL)
2359  *>
2360  *- - diguyScenario::set_character_visualize_bounds_enabled()
2361  *- - diguyScenario::get_character_visualize_bounds_enabled()
2362  *- - diguyScenario::set_scene_object_visualize_bounds_enabled()
2363  *- - diguyScenario::get_scene_object_visualize_bounds_enabled()
2364  *<
2365  *- - Fixed a bug with diguyCharacter::set_current_appearance().
2366  *- - Added warning message if a proposed appearance change is null;
2367  *- fixes crash bug.
2368  *- - diguyScenario::trigger_script_event() deprecated;
2369  *- use diguyScenario::trigger_script().
2370  *- - Added function diguyScenario::trigger_decision().
2371  **
2372  *4 Version 6.1.7
2373  **
2374  *- - Added new experimental functions. (Experimental
2375  *- functions are typically for probationary features whose final
2376  *- functionality or API has not been fully worked out.)
2377  *>
2378  *- - diguyCharacter::set_weapon_projectile_is_visible()
2379  *- - diguyCharacter::get_weapon_projectile_is_visible()
2380  *- - diguyCharacter::get_label_text()
2381  *- - diguyCharacter::set_label_text()
2382  *- - diguyCharacter::get_label_is_visible()
2383  *- - diguyCharacter::set_label_is_visible()
2384  *- - diguyCharacter::set_label_text_color()
2385  *- - diguyCharacter::get_label_text_color()
2386  *- - diguyCharacter::set_label_background_color()
2387  *- - diguyCharacter::get_label_background_color()
2388  *- - diguyScenario::find_character_at_screen_coords()
2389  *- - diguyScenario::set_playback_mode()
2390  *- - diguyScenario::set_playback_mode_stop()
2391  *- - diguyScenario::set_playback_mode_play()
2392  *<
2393  *- - Removed the function diguyLoadManager::set_enable_culling().
2394  *- - Added optional arguments initial_posture and initial_variant
2395  *- to diguyScenario::set_iguy_character().
2396  *- - Added function diguyScenario::get_time_of_day().
2397  *- - Fixed bug in diguyCharacter::is_speaking(). It was
2398  *- sometimes improperly returning FALSE.
2399  *- - Added the following functions that control whether the scenario
2400  *- will be reset (as if diguyScenario::reset() were called) when
2401  *- a merge happens:
2402  *>
2403  *- - diguyScenarioMergeSettings::set_reset_flag()
2404  *- - diguyScenarioMergeSettings::get_reset_flag()
2405  *<
2406  *- - Now incoming XC_MERGE_SCENARIO PDUs do not cause the running
2407  *- scenario to stop and reset.
2408  *- - Now incoming XC_MERGE_SCENARIO PDUs cause a
2409  *- XC_MERGE_SCENARIO_COMPLETE PDU to be sent when the merge
2410  *- operation is done.
2411  *- - Now incoming XC_LOAD_SCENARIO PDUs cause a
2412  *- XC_LOAD_SCENARIO_COMPLETE PDU to be sent when the load
2413  *- operation is complete.
2414  *- - Added the following functions:
2415  *>
2416  *- - diguyExerciseInterface::send_pdu_xc_eval_script()
2417  *- - diguyExerciseInterface::send_pdu_xc_time_now()
2418  *<
2419  *- - Now incoming XC_TIME_NOW messages cause the scenario to chase
2420  *- sync.
2421  *- - Now incoming XC_EVAL_SCRIPT messages cause the script therein
2422  *- to be evaluated.
2423  *- - diguyScenario::load() has been changed to not accept .flt
2424  *- filenames. The new function diguyScenario::create_scene_object()
2425  *- should be used instead.
2426  *- - Added the following functions:
2427  *>
2428  *- - diguyScenario::create_scene_object()
2429  *- - diguyScenario::destroy_scene_object()
2430  *<
2431  *- - Fixed problem with DX99 version of the library that prevented
2432  *- gazing from working correctly.
2433  *- - Added better detection of and error message for missing
2434  *- DI-Guy Data installation.
2435  *- - Renamed experimental "shot" class, function names, and
2436  *- callback ids to use the more generic term "impact":
2437  *>
2438  *- - diguyShot
2439  *>
2440  *- - diguyShot (class name) -> diguyImpact
2441  *- - get_shooter_name() -> get_attacker_name()
2442  *- - get_shooter() -> get_attacker()
2443  *- - get_shot_number() -> get_impact_number()
2444  *- - set_shot_number() -> set_impact_number()
2445  *- - get_shot_been_processed() -> get_impact_been_processed()
2446  *- - set_shot_been_processed() -> set_impact_been_processed()
2447  *<
2448  *- - diguyCharacter
2449  *>
2450  *- - CALLBACK_ID_GOT_SHOT -> CALLBACK_ID_IMPACT
2451  *- - CALLBACK_ID_SHOT_SUCCESS -> CALLBACK_ID_FIRE_WEAPON_SUCCESS
2452  *- - get_last_shot_record() -> get_last_impact_record()
2453  *- - get_last_shot_number() -> get_last_impact_number()
2454  *- - get_last_shot_been_processed() -> get_last_impact_been_processed()
2455  *- - set_last_shot_been_processed() -> set_last_impact_been_processed()
2456  *- - get_last_shot_link() -> get_last_impact_link()
2457  *- - get_last_shot_link_is() -> get_last_impact_link_is()
2458  *- - set_max_shot_hits() -> set_max_impact_hits()
2459  *<
2460  *- - diguyScenario
2461  *>
2462  *- - CALLBACK_ID_ENVIRONMENTAL_DETONATION -> CALLBACK_ID_SCENE_OBJECT_IMPACT
2463  *- - get_last_env_shot_info() -> get_last_env_impact_info()
2464  *<
2465  *<
2466  *- - Added function diguyExerciseInterface::send_pdu_xc_time_now().
2467  *- - Added code to properly respond to incoming XC_TIME_NOW PDUs.
2468  **
2469  *4 Version 6.1.6
2470  **
2471  *- - Added functions and diguyExerciseInterface class for
2472  *- enhanced networking support:
2473  *>
2474  *- - diguyApp::get_exercise_interface()
2475  *- - diguyExerciseInterface::send_pdu_xc_load_scenario()
2476  *- - diguyExerciseInterface::send_pdu_xc_merge_scenario()
2477  *- - diguyExerciseInterface::send_pdu_xc_trigger_script()
2478  *- - diguyExerciseInterface::send_pdu_xc_control()
2479  *- - diguyScenario::set_tin_time_of_day()
2480  *- - diguyScenario::get_tin_time_of_day()
2481  *<
2482  *- - Added new functions diguyView::get_width() and
2483  *- diguyView::get_height().
2484  *- - Experimental plugin infrastructure has been reworked a fair amount.
2485  *>
2486  *- - Function diguyScenario::add_plugin() has been changed to
2487  *- diguyApp::load_plugin().
2488  *- - Function diguyScenario::remove_plugin() has been changed to
2489  *- diguyApp::unload_plugin().
2490  *- - The following functions will be imported when a plugin
2491  *- is loaded. Note that not only diguy_version() must be
2492  *- implemented:
2493  *>
2494  *- - void diguy_version(int* version_major, int* version_minor, int* version_point)
2495  *- - void initialize_plugin(diguyApp* app)
2496  *- - void deinitialize_plugin(diguyApp* app)
2497  *- - void initialize(diguyScenario* s)
2498  *- - void deinitialize(diguyScenario* s)
2499  *- - void pre_update(diguyScenario* s)
2500  *- - void post_update(diguyScenario* s)
2501  *- - void pre_draw(diguyScenario* s)
2502  *- - void post_draw(diguyScenario* s)
2503  *- - void reset(diguyScenario* s)
2504  *- - diguyPluginMouseCursor get_mouse_cursor(diguyScenario* s)
2505  *- - void mouse_press(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
2506  *- - void mouse_drag(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
2507  *- - void mouse_release(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
2508  *- - void mouse_move(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
2509  *- - void save_review_data(diguyScenario* s, const char* filename)
2510  *- - void load_review_data(diguyScenario* s, const char* filename)
2511  *<
2512  *<
2513  *- - Added an additional argument, merge_settings, to the
2514  *- diguyScenario::merge() function.
2515  *- - Added the following functions to enable better control of
2516  *- merging scenarios:
2517  *>
2518  *- - diguyScenario::create_merge_settings()
2519  *- - diguyScenario::destroy_merge_settings()
2520  *<
2521  *- - Added the following functions:
2522  *>
2523  *- - diguyCharacter::revive_now()
2524  *<
2525  *- - Added the following functions in support of 3D positional sound:
2526  *>
2527  *- - diguyCharacter::set_default_weapon_sound()
2528  *- - diguyCharacter::get_default_weapon_sound()
2529  *- - diguyCharacter::set_default_weapon_sound_gain()
2530  *- - diguyCharacter::get_default_weapon_sound_gain()
2531  *- - diguyCharacter::play_3d_sound()
2532  *- - diguySoundInstance::set_is_3d_sound_flag()
2533  *- - diguySoundInstance::get_is_3d_sound_flag()
2534  *<
2535  *- - Added new optional argument "gain" to diguyCharacter::play_sound()
2536  *- function.
2537  *- - Made following functions available to Decision Beads and Decision
2538  *- Events:
2539  *>
2540  *- - diguyCharacter::aim_at_character()
2541  *- - diguyCharacter::end_aim()
2542  *- - diguyCharacter::end_gaze()
2543  *- - diguyCharacter::end_lpoint()
2544  *- - diguyCharacter::gaze_at_character()
2545  *- - diguyCharacter::lpoint_at_character()
2546  *- - diguyCharacter::resume_interrupted_path()
2547  *- - diguyCharacter::play_3d_sound()
2548  *<
2549  *- - Removed unused variable "working_directory" from bdiExFaceInit
2550  *- structure. Replaced with variable "placeholder", leaving the
2551  *- option open for future init variables. Calls passing NULL for
2552  *- the bdiExFaceInit structure to diguy_exface_initialize() will
2553  *- not need to change.
2554  *- - Fixed problem with Decision Bead that incorrectly put function
2555  *- variable_less_than_string() in variable query functions instead
2556  *- of character query functions.
2557  *- - Added script_type argument to diguyScenario::eval_script() and
2558  *- diguyScenario::eval_script_file() functions.
2559  **
2560  *4 Version 6.1.5
2561  **
2562  *- - Fixed problem that newly created characters were not
2563  *- appearing until the next scenario tick dt boundary was
2564  *- crossed.
2565  *- - diguyCharacter::set_t() deprecated;
2566  *- use diguyCharacter::update().
2567  *- - Added new function diguyCharacterPath::get_length().
2568  *- - Fixed potential crash from call to function
2569  *- diguyCharacterPath::update().
2570  *- - Character positions now stored in higher precision format.
2571  *>
2572  *- - Added new functions:
2573  *>
2574  *- - diguyCharacter::set_position_double()
2575  *- - diguyCharacter::get_position_double()
2576  *- - diguyCharacter::get_link_position_double()
2577  *- - diguyCharacter::get_link_position_with_offset_double()
2578  *- - diguyGraphicsLink::get_translation_double()
2579  *- - diguyViewCamera::get_position_double()
2580  *<
2581  *- - New local space camera. DI-Guy can now render in the local
2582  *- space of the camera. This allows DI-Guy to avoid putting
2583  *- large values on the rendering stack, avoiding numerical
2584  *- imprecision on objects that are far from the origin.
2585  *- - Added new local space camera functions:
2586  *>
2587  *- - diguyScenario::set_render_camera()
2588  *- - diguyViewCamera::get_local_fix()
2589  *- - diguyViewCamera::get_local_position()
2590  **
2591  ** In OpenGL, use gluLookAt(local_position_x, local_position_y,
2592  ** local_position_z, local_fix_x, local_fix_y, local_fix_z,
2593  ** 0.0, 0.0, 1.0); to emulate the DI-Guy camera.
2594  *<
2595  *<
2596  *4 Version 6.1.4
2597  **
2598  *- - Added new function diguyGraphicsShape::get_is_hidden().
2599  *- - Added new functions to diguyCharacterGroup class:
2600  *>
2601  *- - diguyCharacterGroup::get_num_members()
2602  *- - diguyCharacterGroup::get_member_at_index()
2603  *<
2604  *- - Added new functions to diguySensorRegion class:
2605  *>
2606  *- - diguySensorRegion::add_characters_in_region_to_group()
2607  *- - diguySensorRegion::add_candidate_characters_in_region_to_group()
2608  *<
2609  *- - Removed unused functions from diguySensorRegion class:
2610  *>
2611  *- - diguySensorRegion::get_characters_in_region()
2612  *- - diguySensorRegion::update_characters_in_region()
2613  *- - diguySensorRegion::update_candidate_characters_in_region()
2614  *<
2615  *4 Version 6.1.3
2616  **
2617  *- - Added new utility function diguy_convert_euler_angle_order().
2618  *- This function should help DI-Guy API users convert the DI-Guy
2619  *- standard Euler angle order of ZXY (yaw then roll then pitch)
2620  *- into other Euler angle orders.
2621  *- - Added new argument rampup_interval to function
2622  *- diguyCharacter::add_motion_texture(). This function makes it
2623  *- possible to more smoothly enter a motion texture. Previously
2624  *- the rampup was hard-coded to 0.2 seconds. If the function
2625  *- is to end existing motion textures, it also uses the passed
2626  *- rampup interval as the rampdown interval for ending the
2627  *- existing motion textures.
2628  *- - Fixed annoying error message that was printed when motion textures
2629  *- ended.
2630  *- - Added new variants that can be added to custom motions:
2631  *>
2632  *- - DIGUY_MOTION_VARIANT_MISC0
2633  *- - DIGUY_MOTION_VARIANT_MISC1
2634  *- - DIGUY_MOTION_VARIANT_MISC2
2635  *- - DIGUY_MOTION_VARIANT_MISC3
2636  *- - DIGUY_MOTION_VARIANT_MISC4
2637  *- - DIGUY_MOTION_VARIANT_MISC5
2638  *- - DIGUY_MOTION_VARIANT_MISC6
2639  *- - DIGUY_MOTION_VARIANT_MISC7
2640  *- - DIGUY_MOTION_VARIANT_MISC8
2641  *- - DIGUY_MOTION_VARIANT_MISC9
2642  *<
2643  *4 Version 6.1.2
2644  **
2645  *- - Changed win32 programming examples so that when examples are
2646  *- compiled for different versions of LIBC (i586_md_debug as
2647  *- opposed to i586_md, for example), the object files will be
2648  *- placed in separate directories.
2649  *- - Added new function calls that will free memory allocated by
2650  *- the DI-Guy Graphics API loader once platform-specific objects
2651  *- have been created:
2652  *>
2653  *- - diguyGraphicsMaterial::free_loader_memory()
2654  *- - diguyGraphicsMesh::free_loader_memory()
2655  *- - diguyGraphicsState::free_loader_memory()
2656  *- - diguyGraphicsTexture::free_loader_memory()
2657  *<
2658  *- - Fixed a problem with gazing in which a character with orientation
2659  *- change enabled would do an extra shuffle to the left and back
2660  *- again when the character was already facing the gaze angle at
2661  *- gaze start.
2662  *- - Added new side-effects to characters that die, including those
2663  *- for which the diguyCharacter::die_now() function is called:
2664  *>
2665  *- - all aiming is ended
2666  *- - all gazing is ended
2667  *- - all pointing is ended
2668  *- - head nodding and shaking are stopped
2669  *- - all gestures are aborted
2670  *- - all sounds originated by the character are stopped
2671  *<
2672  *- - Added new function call limitations to dead characters. The
2673  *- following function calls will have no effect on dead characters:
2674  *>
2675  *- - diguyCharacter::add_motion_texture()
2676  *- - diguyCharacter::aim_at_angle()
2677  *- - diguyCharacter::aim_at_angle_local()
2678  *- - diguyCharacter::aim_at_character()
2679  *- - diguyCharacter::aim_at_point()
2680  *- - diguyCharacter::aim_at_point_local()
2681  *- - diguyCharacter::create_and_force_bridge_path()
2682  *- - diguyCharacter::execute_gesture()
2683  *- - diguyCharacter::execute_1stage_gesture()
2684  *- - diguyCharacter::execute_2stage_gesture()
2685  *- - diguyCharacter::execute_3stage_gesture()
2686  *- - diguyCharacter::fire_screen_space_bullet()
2687  *- - diguyCharacter::fire_weapon()
2688  *- - diguyCharacter::fire_weapon_n_times()
2689  *- - diguyCharacter::force_action()
2690  *- - diguyCharacter::force_action_and_path_shape()
2691  *- - diguyCharacter::force_action_with_duration()
2692  *- - diguyCharacter::force_partial_path()
2693  *- - diguyCharacter::force_path()
2694  *- - diguyCharacter::gaze_at_angle()
2695  *- - diguyCharacter::gaze_at_angle_local()
2696  *- - diguyCharacter::gaze_at_character()
2697  *- - diguyCharacter::gaze_at_point()
2698  *- - diguyCharacter::gaze_at_point_local()
2699  *- - diguyCharacter::lpoint_at_angle()
2700  *- - diguyCharacter::lpoint_at_angle_local()
2701  *- - diguyCharacter::lpoint_at_character()
2702  *- - diguyCharacter::lpoint_at_point()
2703  *- - diguyCharacter::lpoint_at_point_local()
2704  *- - diguyCharacter::nod_head()
2705  *- - diguyCharacter::play_sound()
2706  *- - diguyCharacter::push_path()
2707  *- - diguyCharacter::resume_interrupted_path()
2708  *- - diguyCharacter::set_aim()
2709  *- - diguyCharacter::set_desired_action()
2710  *- - diguyCharacter::set_nod()
2711  *- - diguyCharacter::shake_head()
2712  *<
2713  *- - Added diguyCharacterPath::get_point_at_distance() function that
2714  *- makes it possible to sample path points. The function is very
2715  *- similar to diguyPathShape::get_point_at_distance().
2716  *- - Changed diguyScenario::create_waypoint() function to take an
2717  *- additional argument. Waypoints created with the function can
2718  *- now have different initial weights for entering and leaving the
2719  *- waypoint.
2720  **
2721  *4 Version 6.1.1
2722  **
2723  *- - Added new member function:
2724  *>
2725  *- - diguyLoadManager::remove_all_cameras()
2726  *<
2727  *- - Added new member functions to diguyVariable that allow for
2728  *- setting and getting the initial value of the variable, and
2729  *- for retrieving the scenario and/or character the variable
2730  *- belongs to:
2731  *>
2732  *- - diguyVariable::get_scenario()
2733  *- - diguyVariable::get_character()
2734  *- - diguyVariable::get_initial_value_as_int()
2735  *- - diguyVariable::get_initial_value_as_float()
2736  *- - diguyVariable::get_initial_value_as_string()
2737  *- - diguyVariable::set_initial_value_as_int()
2738  *- - diguyVariable::set_initial_value_as_float()
2739  *- - diguyVariable::set_initial_value_as_string()
2740  *<
2741  *- - Added character variables to characters. Character variables
2742  *- are almost exactly like scenario variables but are local to each
2743  *- character instead of being shared across the scenario. For
2744  *- example, all characters in a scenario could be given a variable
2745  *- named "panic_level" that tracks how panicked the character is.
2746  *- Character variables use the same class as scenario variables:
2747  *- diguyVariable. The following functions are available for
2748  *- accessing character variables:
2749  *>
2750  *- - diguyCharacter::get_num_variables()
2751  *- - diguyCharacter::get_variable_at_index()
2752  *- - diguyCharacter::find_variable()
2753  *- - diguyCharacter::find_or_create_variable()
2754  *- - diguyCharacter::destroy_variable()
2755  *- - diguyCharacter::variable_equal_to_int()
2756  *- - diguyCharacter::variable_greater_than_int()
2757  *- - diguyCharacter::variable_less_than_int()
2758  *- - diguyCharacter::variable_equal_to_float()
2759  *- - diguyCharacter::variable_greater_than_float()
2760  *- - diguyCharacter::variable_less_than_float()
2761  *- - diguyCharacter::variable_equal_to_string()
2762  *- - diguyCharacter::variable_greater_than_string()
2763  *- - diguyCharacter::variable_less_than_string()
2764  *<
2765  *4 Version 6.1.0
2766  **
2767  *- - Added new functions to the DI-Guy Graphics API to make it easier
2768  *- to know which character links or shapes belong to, and to easily
2769  *- get a pointer to the character's base link:
2770  *>
2771  *- - diguyGraphicsLink::get_character()
2772  *- - diguyGraphicsShape::get_character()
2773  *- - diguyCharacter::get_position_link()
2774  *<
2775  *- - Added new function diguyGraphicsLink::get_transformation_matrix().
2776  *- This function provides access to the link transformation in matrix
2777  *- form rather than separate vectors for translation, rotation, etc.
2778  *- - Added new blend functions "StepHalfway" and "Waver". The
2779  *- "StepHalfway" blend function makes an instant step from 0 to 1
2780  *- halfway through the blend. The "Waver" blend function wavers from 0
2781  *- to 1 back to 0 and back to 1 using a three-quarter sine wave.
2782  *- - Added functions to diguyScenario API:
2783  *>
2784  *- - diguyScenario::get_character_type_num_gestures()
2785  *- - diguyScenario::get_character_type_gesture_at_index()
2786  *<
2787  *- - Added functions to diguyCharacterGesture API:
2788  *>
2789  *- - diguyCharacterGesture::force_table_action()
2790  *<
2791  *4 Version 6.0.8
2792  **
2793  *- - Changed DI-Guy Graphics API to not print a warning if a geometry
2794  *- file is not found. This allows external loaders to load their
2795  *- own version of a geometry file without warnings, and without the
2796  *- file having to be present in $DIGUY/geometry.
2797  *- - Added function diguyCharacter::is_group_member().
2798  *- - For Windows, added the DI-Guy version number as a suffix to the
2799  *- .dll that gets installed in the bin directory.
2800  **
2801  *4 Version 6.0.6
2802  **
2803  *- - Changed default for gaze parameter "orientation enabled for
2804  *- gaze". In DI-Guy 5.x this parameter defaulted to 0 for all
2805  *- characters except the sergeant. In earlier versions of 6.0 this
2806  *- was changed to "1 if character has turning actions, else 0".
2807  *- This change has, however, resulted in too much confusion and
2808  *- user astonishment. The new (and hopefully final) change
2809  *- is to default the parameter to 0 for *all* characters. This fixes
2810  *- a backwards incompatibility problem where some version 5 characters
2811  *- that were gazing would leave their path on version 6 and thus not
2812  *- complete the actions specified by their path.
2813  *- - Implemented function diguyCharacter::end_aim(). This function
2814  *- had been omitted from the DI-Guy API.
2815  *- - Fixed problem with initial value of scenario variables, where
2816  *- the integer value of each variable was initialized to zero,
2817  *- even if the intended initial value was nonzero.
2818  *- - Fixed problem when merging two scenarios with different
2819  *- values for tick dt. Decision beads, Script event beads, Aim
2820  *- beads and Gaze beads were being improperly scheduled.
2821  **
2822  *4 Version 6.0.5
2823  **
2824  *- - Fixed diguyCharacter::get_aim_azimuth() and
2825  *- diguyCharacter::get_aim_elevation(). They were returning
2826  *- zero. Now they return meaningful values if the character is
2827  *- aiming.
2828  **
2829  *4 Version 6.0.4
2830  **
2831  *- - DI-Guy can now use OpenGL's multitexturing mechanism. The
2832  *- OpenGL texture unit that DI-Guy will use can be set by
2833  *- setting the bdiGraphicsInitOgl::use_multitexture_extension
2834  *- and bdiGraphicsInitOgl::texture_unit initialization variables.
2835  **
2836  *4 Version 6.0.3
2837  **
2838  *- - Fixed a problem with DI-Guy Graphics API functions not being
2839  *- correctly declared for DLL use.
2840  *- - Fixed a problem with calling path edit functions on a path
2841  *- that is in use. The change was not being fully propagated
2842  *- to the character's motions.
2843  *- - Eliminated GoThere camera instability at low frame rates.
2844  *- - Eliminated aiming instability at low frame rates and at low
2845  *- desired locate times.
2846  **
2847  *4 Version 6.0.2
2848  **
2849  *- - No changes.
2850  **
2851  *4 Version 6.0.1
2852  **
2853  *- - Fixed problem with motion scaling where the scale factor was
2854  *- being applied twice in some cases. (PR 3029)
2855  *- - Removed deprecated diguyCharacter functions:
2856  *>
2857  *- - diguyCharacter::force_action_by_name()
2858  *- - diguyCharacter::get_desired_action_name()
2859  *- - diguyCharacter::set_desired_action_by_name()
2860  *- - diguyCharacter::force_partial_path_by_name()
2861  *- - diguyCharacter::force_path_by_name()
2862  *- - diguyCharacter::push_path_by_name()
2863  *- - diguyCharacter::set_parent_by_name()
2864  *<
2865  *- - Removed deprecated diguySensorRegion function
2866  *- diguySensorRegion::contains_character_by_name().
2867  *- - Removed deprecated diguySignal function diguySignal::play_sound().
2868  *- - Removed deprecated diguyScenario function
2869  *- diguyScenario::find_or_create_face_expression().
2870  **
2871  *4 Version 6.0.0
2872  **
2873  *- - Made aiming precise. Characters now actually aim at the
2874  *- targets specified by aim beads, rather than giving an
2875  *- approximation of proper aim.
2876  *- - Made aiming dynamic. Character aiming motion is now much more
2877  *- realistic, homing in on the specified target.
2878  *- - Added new diguyCharacter functions:
2879  *>
2880  *- - diguyCharacter::aim_at_angle()
2881  *- - diguyCharacter::aim_at_angle_local()
2882  *- - diguyCharacter::aim_at_point()
2883  *- - diguyCharacter::aim_at_point_local()
2884  *- - diguyCharacter::aim_at_character()
2885  *- - diguyCharacter::set_aim_param_desired_locate_time()
2886  *- - diguyCharacter::get_aim_param_desired_locate_time()
2887  *- - diguyCharacter::get_aim_is_acquired()
2888  *- - diguyCharacter::get_aim_is_steady()
2889  *- - diguyCharacter::set_weapon_near_range()
2890  *- - diguyCharacter::set_weapon_far_range()
2891  *<
2892  *- - Added diguyLoadManager class. Members are:
2893  *>
2894  *- - diguyLoadManager::add_camera()
2895  *- - diguyLoadManager::add_view_camera()
2896  *- - diguyLoadManager::move_camera()
2897  *- - diguyLoadManager::change_view_camera_settings()
2898  *- - diguyLoadManager::remove_camera()
2899  *- - diguyLoadManager::set_enable_culling()
2900  *- - diguyLoadManager::set_nonvisible_update_rate()
2901  *- - diguyLoadManager::set_zone_bounds()
2902  *- - diguyLoadManager::set_zone_parameters()
2903  *- - diguyLoadManager::set_max_update_period()
2904  *<
2905  *- - Added new diguyApp functions:
2906  *>
2907  *- - diguyApp::create_load_manager()
2908  *- - diguyApp::get_load_manager()
2909  *- - diguyApp::destroy_load_manager()
2910  *<
2911  *- - Added new diguyCharacter functions:
2912  *>
2913  *- - diguyCharacter::get_bounding_radius()
2914  *- - diguyCharacter::get_default_bounding_radius()
2915  *- - diguyCharacter::set_bounding_radius()
2916  *<
2917  *- - Added new diguyApp class. There is only one diguyApp object per
2918  *- application. It is available after the diguy_*_initialize() call
2919  *- by calling the static function diguyApp::get_app(). The diguyApp
2920  *- object will hold data that is application-wide, which in the past
2921  *- has been somewhat artificially placed in the diguyScenario class.
2922  *- - Removed support for character history types
2923  *- DIGUY_HISTORY_TYPE_FIRST and DIGUY_HISTORY_TYPE_LAST. Characters
2924  *- saved using these history types will have their history type
2925  *- set to DIGUY_HISTORY_TYPE_COMPLETE.
2926  *- - Moved some static functions from diguyScenario to diguyApp:
2927  *>
2928  *- - diguyScenario::add_default_callback() deprecated;
2929  *- use diguyApp::add_default_scenario_callback()
2930  *- - diguyScenario::remove_default_callback() deprecated;
2931  *- use diguyApp::remove_default_scenario_callback()
2932  *- - diguyScenario::remove_default_callback_with_user_data() deprecated;
2933  *- use diguyApp::remove_default_scenario_callback_with_user_data()
2934  *- - diguyScenario::add_default_callback_script() deprecated;
2935  *- use diguyApp::add_default_scenario_callback_script()
2936  *- - diguyScenario::remove_default_callback_script() deprecated;
2937  *- use diguyApp::remove_default_scenario_callback_script()
2938  *<
2939  *- - Deprecated two diguyCharacterPath callback ids. A decision
2940  *- bead or script bead at the appropriate place in the path
2941  *- should be used instead of the deprecated callbacks:
2942  *>
2943  *- - CALLBACK_ID_TIME_LEFT has been changed to
2944  *- CALLBACK_ID_TIME_LEFT_DEPRECATED
2945  *- - CALLBACK_ID_TIME_INTO has been changed to
2946  *- CALLBACK_ID_TIME_INTO_DEPRECATED
2947  *<
2948  *- - Fixed problem with gestures not range checking stage
2949  *- argument. If 0 was passed as the stage in some functions,
2950  *- memory overwrites could have occurred or garbage results could
2951  *- have been returned. Also updated doc of affected functions
2952  *- to specify that stages are between 1 and 3.
2953  *- - Added functions to character for manually applying path
2954  *- bead effects:
2955  *>
2956  *- - diguyCharacter::apply_aim_bead()
2957  *- - diguyCharacter::apply_decision_bead()
2958  *- - diguyCharacter::apply_gaze_bead()
2959  *- - diguyCharacter::apply_script_bead()
2960  *<
2961  *- - Added new diguyCharacterPathDecisionBead class. Members are:
2962  *>
2963  *- - diguyCharacterPathDecisionBead::get_name()
2964  *- - diguyCharacterPathDecisionBead::set_name()
2965  *- - diguyCharacterPathDecisionBead::get_distance_into_path()
2966  *- - diguyCharacterPathDecisionBead::set_distance_into_path()
2967  *- - diguyCharacterPathDecisionBead::get_length()
2968  *- - diguyCharacterPathDecisionBead::set_length()
2969  *- - diguyCharacterPathDecisionBead::get_tin()
2970  *- - diguyCharacterPathDecisionBead::set_tin()
2971  *- - diguyCharacterPathDecisionBead::get_duration()
2972  *- - diguyCharacterPathDecisionBead::set_duration()
2973  *<
2974  *- - Added new diguyCharacterPathAimBead class. Members are:
2975  *>
2976  *- - diguyCharacterPathAimBead::get_name()
2977  *- - diguyCharacterPathAimBead::set_name()
2978  *- - diguyCharacterPathAimBead::get_distance_into_path()
2979  *- - diguyCharacterPathAimBead::set_distance_into_path()
2980  *- - diguyCharacterPathAimBead::get_length()
2981  *- - diguyCharacterPathAimBead::set_length()
2982  *- - diguyCharacterPathAimBead::get_tin()
2983  *- - diguyCharacterPathAimBead::set_tin()
2984  *- - diguyCharacterPathAimBead::get_duration()
2985  *- - diguyCharacterPathAimBead::set_duration()
2986  *<
2987  *- - Added new diguyCharacterPathGazeBead class. Members are:
2988  *>
2989  *- - diguyCharacterPathGazeBead::get_name()
2990  *- - diguyCharacterPathGazeBead::set_name()
2991  *- - diguyCharacterPathGazeBead::get_distance_into_path()
2992  *- - diguyCharacterPathGazeBead::set_distance_into_path()
2993  *- - diguyCharacterPathGazeBead::get_length()
2994  *- - diguyCharacterPathGazeBead::set_length()
2995  *- - diguyCharacterPathGazeBead::get_tin()
2996  *- - diguyCharacterPathGazeBead::set_tin()
2997  *- - diguyCharacterPathGazeBead::get_duration()
2998  *- - diguyCharacterPathGazeBead::set_duration()
2999  *<
3000  *- - Added function diguyCharacter::find_waypoint(). This
3001  *- function finds a waypoint by name.
3002  *- - Added functions to access new bead types. Also added find
3003  *- functions for action beads and script beads. The following
3004  *- functions have been added to diguyCharacterPath:
3005  *>
3006  *- - diguyCharacterPath::find_waypoint()
3007  *- - diguyCharacterPath::find_action_bead()
3008  *- - diguyCharacterPath::find_script_bead()
3009  *- - diguyCharacterPath::get_num_aim_beads()
3010  *- - diguyCharacterPath::get_aim_bead_at_index()
3011  *- - diguyCharacterPath::find_aim_bead()
3012  *- - diguyCharacterPath::get_num_decision_beads()
3013  *- - diguyCharacterPath::get_decision_bead_at_index()
3014  *- - diguyCharacterPath::find_decision_bead()
3015  *- - diguyCharacterPath::get_num_gaze_beads()
3016  *- - diguyCharacterPath::get_gaze_bead_at_index()
3017  *- - diguyCharacterPath::find_gaze_bead()
3018  *<
3019  *- - Added functions to diguyCharacterGesture API:
3020  *>
3021  *- - diguyCharacterGesture::set_table_action_begin()
3022  *- - diguyCharacterGesture::get_table_action_begin()
3023  *- - diguyCharacterGesture::set_table_action_end()
3024  *- - diguyCharacterGesture::get_table_action_end()
3025  *- - diguyCharacterGesture::get_table_action_now()
3026  *- - diguyCharacterGesture::get_table_action_next()
3027  *- - diguyCharacterGesture::get_rampup_duration()
3028  *- - diguyCharacterGesture::set_rampup_duration()
3029  *- - diguyCharacterGesture::get_rampup_blend_function_name()
3030  *- - diguyCharacterGesture::set_rampup_blend_function_name()
3031  *- - diguyCharacterGesture::get_rampdown_duration()
3032  *- - diguyCharacterGesture::set_rampdown_duration()
3033  *- - diguyCharacterGesture::get_rampdown_blend_function_name()
3034  *- - diguyCharacterGesture::set_rampdown_blend_function_name()
3035  *- - diguyCharacterGesture::get_table_action_rep_duration()
3036  *- - diguyCharacterGesture::get_table_transition_duration()
3037  *- - diguyCharacterGesture::get_default_blend_duration()
3038  *- - diguyCharacterGesture::get_num_table_actions()
3039  *- - diguyCharacterGesture::get_table_action_at_index()
3040  *<
3041  *- - Added functions for setting initial motion texture parameters:
3042  *>
3043  *- - diguyCharacter::set_initial_motion_texture()
3044  *- - diguyCharacter::get_initial_motion_texture()
3045  *- - diguyCharacter::set_initial_motion_texture_gain()
3046  *- - diguyCharacter::get_initial_motion_texture_gain()
3047  *<
3048  *- - Plugins require a license.
3049  *- - Moved to flexlm 10.1 on Windows for license management.
3050  *- - Particles now work in locked scenarios.
3051  *- - Made characters with non default actors display properly in
3052  *- Vega Prime.
3053  *- - Saving review data now saves all generated data, not just up to
3054  *- the time slider.
3055  *- - Fixed a bug with history saving.
3056  **
3057  *4 Version 5.3.5
3058  **
3059  *- - Fixed problem with .flt loader not dealing well with .flt files that
3060  *- contain multiple nodes that have the same name. The .flt loader now
3061  *- more vigorously checks for name collisions.
3062  *- - Removed one unused level of Motion LODs. The unused LOD 6 was not
3063  *- mentioned in documentation nor was it used in motion generation
3064  *- code. This change requires use of DI-Guy Data 5.3.5.
3065  *- - Worked on diguyCharacterGesture API:
3066  *>
3067  *- - diguyCharacterGesture::get_num_stages() deprecated;
3068  *- use diguyCharacterGesture::get_num_progression_stages()
3069  *- - diguyCharacterGesture::set_stage_duration() deprecated;
3070  *- use diguyCharacterGesture::set_progression_stage_duration()
3071  *- - diguyCharacterGesture::get_stage_duration() deprecated;
3072  *- use diguyCharacterGesture::get_progression_stage_duration()
3073  *- - diguyCharacterGesture::get_stage_optimal_duration() deprecated;
3074  *- use diguyCharacterGesture::get_progression_stage_optimal_duration()
3075  *<
3076  *- - Worked on diguyCharacterGesture documentation. Added more
3077  *- which functions can be called for which gesture types.
3078  *- - Added type diguyCharacterGestureType and corresponding function
3079  *- diguyCharacterGesture::get_type().
3080  *- - New experimental shooting functionality:
3081  *>
3082  *- - Added callback diguyCharacter::CALLBACK_ID_GOT_SHOT.
3083  *- - Added callback diguyCharacter::CALLBACK_ID_SHOT_SUCCESS.
3084  *- - Added new find all hits functionality.
3085  *- - Added new diguyShot class accessible from scripts,
3086  *- records who got shot and where.
3087  *- - Characters can now shoot multiple targets; added
3088  *- max_shot_hits to control the maximum number of
3089  *- shots to report. By default scene objects stop bullets.
3090  *- - Weapon spread shots test against the octtree first (speed up).
3091  *<
3092  *- - Fixed some bugs with review data.
3093  *- - Experimental plugin infrastructure:
3094  *>
3095  *- - Added functions diguyScenario::add_plugin() and
3096  *- diguyScenario::remove_plugin().
3097  *- - The following functions can be exported from the dll to plug
3098  *- into DI-Guy code:
3099  *>
3100  *- - void initialize(diguyScenario* s)
3101  *- - void deinitialize(diguyScenario* s)
3102  *- - void pre_draw(diguyScenario* s)
3103  *- - void post_draw(diguyScenario* s)
3104  *- - void update(diguyScenario* s)
3105  *- - void reset(diguyScenario* s)
3106  *- - void save_review_data(const char* filename)
3107  *- - void load_review_data(const char* filename)
3108  *<
3109  *- - See Documentation for more information.
3110  *<
3111  **
3112  *4 Version 5.3.4
3113  **
3114  *- - Added new callbacks for use with the diguyCharacter::add_callback()
3115  *- function:
3116  *>
3117  *- - CALLBACK_ID_CURRENT_APPEARANCE_CHANGED
3118  *- - CALLBACK_ID_CURRENT_HEAD_APPEARANCE_CHANGED
3119  *<
3120  *- - Added new gesture type: table gestures. Table gestures are much
3121  *- like character action tables, and allow a single gesture to employ
3122  *- many different motions.
3123  **
3124  *4 Version 5.3.3
3125  **
3126  *- - Improved SDK's initialization time. Version 5.3.3 should take about
3127  *- half the time of version 5.3.2 to initialize.
3128  *- - Changed default override stage of function
3129  *- diguyCharacter::create_pose_override() from 2 to 3.
3130  *- - Improved documentation for diguyCharacter "Pose Functions"
3131  *- section.
3132  *- - Improved documentation for
3133  *- diguyScenario::set_automatic_motion_lod_switching() function.
3134  *- - Added function diguyCharacter::end_all_gestures(), a gentler way
3135  *- than diguyCharacter::abort_all_gestures() to stop a character's
3136  *- active gestures.
3137  *- - Fixed problem with changing an existing character's type via the
3138  *- diguyCharacter::set_character_type() function. The geometry of the
3139  *- character wasn't displaying properly until the scenario was reset.
3140  *- This has been fixed.
3141  *- - Fixed documentation for the
3142  *- diguyCharacterPoseOverride::get_pose_in_radians() function; it was
3143  *- incorrectly implying that it could be used to read the current pose
3144  *- of the character, when it really only returns the most recent pose
3145  *- as set by diguyCharacterPoseOverride::set_pose_in_radians().
3146  *- - Fixed problem where specifying a non-existent default appearance
3147  *- for a character caused a crash.
3148  *- - Fixed problem where characters with no links due to config file
3149  *- syntax errors caused a crash.
3150  **
3151  *4 Version 5.3.2
3152  **
3153  *- - Added missing initial position and orientation functions to
3154  *- diguyCharacter:
3155  *>
3156  *- - diguyCharacter::set_initial_position()
3157  *- - diguyCharacter::get_initial_position()
3158  *- - diguyCharacter::set_initial_orientation()
3159  *- - diguyCharacter::get_initial_orientation()
3160  *<
3161  *- - Added set_name() functions to most DI-Guy API objects.
3162  *- - Added better access to path data such as waypoints and action
3163  *- beads. The following functions have been added to
3164  *- diguyCharacterPath:
3165  *>
3166  *- - diguyCharacterPath::update()
3167  *- - diguyCharacterPath::get_num_waypoints()
3168  *- - diguyCharacterPath::get_waypoint_at_index()
3169  *- - diguyCharacterPath::create_waypoint()
3170  *- - diguyCharacterPath::get_num_action_beads()
3171  *- - diguyCharacterPath::get_action_bead_at_index()
3172  *- - diguyCharacterPath::create_action_bead()
3173  *- - diguyCharacterPath::destroy_action_bead()
3174  *- - diguyCharacterPath::get_num_script_beads()
3175  *- - diguyCharacterPath::get_script_bead_at_index()
3176  *- - diguyCharacterPath::create_script_bead()
3177  *- - diguyCharacterPath::destroy_script_bead()
3178  *<
3179  *- - Added better access to path shape data such as waypoints. The
3180  *- following functions have been added to diguyPathShape:
3181  *>
3182  *- - diguyPathShape::update()
3183  *- - diguyPathShape::get_num_waypoints()
3184  *- - diguyPathShape::get_waypoint_at_index()
3185  *- - diguyPathShape::create_waypoint()
3186  *<
3187  *- - Added new diguyCharacterPathActionBead class. Members are:
3188  *>
3189  *- - diguyCharacterPathActionBead::get_name()
3190  *- - diguyCharacterPathActionBead::get_action()
3191  *- - diguyCharacterPathActionBead::set_action()
3192  *- - diguyCharacterPathActionBead::get_distance_into_path()
3193  *- - diguyCharacterPathActionBead::set_distance_into_path()
3194  *- - diguyCharacterPathActionBead::get_length()
3195  *- - diguyCharacterPathActionBead::set_length()
3196  *- - diguyCharacterPathActionBead::get_derive_length_flag()
3197  *- - diguyCharacterPathActionBead::set_derive_length_flag()
3198  *- - diguyCharacterPathActionBead::get_tin()
3199  *- - diguyCharacterPathActionBead::set_tin()
3200  *- - diguyCharacterPathActionBead::get_duration()
3201  *- - diguyCharacterPathActionBead::set_duration()
3202  *- - diguyCharacterPathActionBead::get_derive_duration_flag()
3203  *- - diguyCharacterPathActionBead::set_derive_duration_flag()
3204  *- - diguyCharacterPathActionBead::get_desired_duration()
3205  *- - diguyCharacterPathActionBead::set_desired_duration()
3206  *- - diguyCharacterPathActionBead::get_derive_desired_duration_flag()
3207  *- - diguyCharacterPathActionBead::set_derive_desired_duration_flag()
3208  *- - diguyCharacterPathActionBead::get_motion_reps()
3209  *- - diguyCharacterPathActionBead::set_motion_reps()
3210  *- - diguyCharacterPathActionBead::get_derive_motion_reps_flag()
3211  *- - diguyCharacterPathActionBead::set_derive_motion_reps_flag()
3212  *- - diguyCharacterPathActionBead::get_transition_before_bead_flag()
3213  *- - diguyCharacterPathActionBead::set_transition_before_bead_flag()
3214  *<
3215  *- - Added new diguyCharacterPathScriptBead class. Members are:
3216  *>
3217  *- - diguyCharacterPathScriptBead::get_name()
3218  *- - diguyCharacterPathScriptBead::set_name()
3219  *- - diguyCharacterPathScriptBead::get_script()
3220  *- - diguyCharacterPathScriptBead::set_script()
3221  *- - diguyCharacterPathScriptBead::get_distance_into_path()
3222  *- - diguyCharacterPathScriptBead::set_distance_into_path()
3223  *- - diguyCharacterPathScriptBead::get_length()
3224  *- - diguyCharacterPathScriptBead::set_length()
3225  *- - diguyCharacterPathScriptBead::get_tin()
3226  *- - diguyCharacterPathScriptBead::set_tin()
3227  *- - diguyCharacterPathScriptBead::get_duration()
3228  *- - diguyCharacterPathScriptBead::set_duration()
3229  *<
3230  *- - Changed API of diguyWaypoint object to have more intuitive function
3231  *- names. Old function names have been deprecated but will still work.
3232  *- - Improved behavior of reflected characters when the remote scenario is
3233  *- reset. After remote reset, on remote play, local reflected
3234  *- characters now immediately perform their desired actions rather than
3235  *- gradually transitioning into them.
3236  *- - Switched to using asynchronous I/O for DIS networking. This improves
3237  *- DI-Guy's robustness on networks with lots of entities.
3238  *- - Fixed problem with diguyPathShape::get_length(). The
3239  *- diguyPathShape::update() function must be called after waypoints have
3240  *- been added to the path shape for the length to be updated. After
3241  *- the update() call, get_length() will return a valid length. (PR 2852)
3242  *- - Fixed problem with diguyCharacter::get_current_path_index()
3243  *- function. The value 0 was being returned when the character was not
3244  *- on a path, and when the character was on the first path. The return
3245  *- value for "not on a path" has been changed to -1. (PR 2856)
3246  *- - Fixed problem with diguyCharacter::get_path_name_at_index() function.
3247  *- An empty string was being returned when the path at the specified
3248  *- index had a zero-length name, and when there was no path at the
3249  *- specified index. The return value for no path at index has been
3250  *- changed to NULL.
3251  *- - Fixed problem which, under DIS using DI-Guy custom information,
3252  *- caused newly created reflected characters not to receive custom action
3253  *- information for up to five seconds. Now custom action information is
3254  *- sent immediately after the first entity state PDU is sent.
3255  **
3256  *4 Version 5.3.1
3257  **
3258  *- - Added support for "live reckoning". Live reckoning provides more
3259  *- accurate display of the behavior of remote characters, using less
3260  *- networking bandwidth.
3261  *- - Added network support for multiple concurrent scenario instances.
3262  *- Characters in all scenarios are published to the network. Incoming
3263  *- entities are created in the scenario which is passed to
3264  *- diguy_dis_go_online() or diguy_hla_go_online().
3265  *- - Improved behavior of reflected entities when the local scenario is
3266  *- reset.
3267  *- - Removed some options from network.cfg. It is recommended that the
3268  *- current network.cfg be deleted and let DI-Guy recreate it.
3269  *- - Improved behavior of reflected entities when the remote scenario is
3270  *- paused. Now they can move to their correct location even when
3271  *- paused, rather than staying still in a location that is suboptimal.
3272  *- - Fixed bug preventing incoming (reflected) non-soldier characters from
3273  *- walking when DI-Guy custom action information is not available.
3274  *- - Removed Review Data dt data member from diguyScenario objects
3275  *- and from the DI-Guy Scenario UI. Any scenario review data is
3276  *- now recorded at the scenario's tick dt.
3277  *- - Added access to the DirectX 9 world stack used by DI-Guy through
3278  *- the new function diguy_dx9_get_world_stack(). This allows users
3279  *- of DI-Guy for DirectX 9 to offset the origin used by characters
3280  *- from 0,0,0. Use of the new function is demonstrated in the
3281  *- example program $DIGUY/programming_examples/diguy_dx9/offset_example.
3282  *- - Made it possible to set the tick dt of a scenario using the
3283  *- function diguyScenario::set_tick_dt(). This was previously
3284  *- possible only in the DI-Guy Scenario UI.
3285  *- - Made it possible to turn off review data generation for scenarios.
3286  *- By default, scenarios created in the DI-Guy Scenario editor will
3287  *- have review data enabled; scenarios created using the DI-Guy API
3288  *- will have review data disabled. Turning on review data can add
3289  *- significantly to memory usage. Changing review data settings can
3290  *- be done using the function diguyScenario::set_history_type().
3291  *- - Turned off review data by default for characters created using the
3292  *- DI-Guy API. The significantly reduces the memory overhead of each
3293  *- character. Review data can be re-enabled using the function
3294  *- diguyCharacter::set_history_type().
3295  *- - Added new callbacks for use with the diguyCharacter::add_callback()
3296  *- function:
3297  *>
3298  *- - CALLBACK_ID_PRE_DIE
3299  *- - CALLBACK_ID_POST_DIE
3300  *- - CALLBACK_ID_PRE_FIRE_WEAPON
3301  *- - CALLBACK_ID_POST_FIRE_WEAPON
3302  *<
3303  *- - Fixed problem with setting character's current appearance too soon
3304  *- after the character was created. This caused a crash.
3305  **
3306  *4 Version 5.2.2
3307  **
3308  *- - New function diguyCharacter::set_weapon_fires_live_rounds() sets
3309  *- whether firing causes collision search for characters to be killed.
3310  *- Default is to fire blanks. Old scenarios that used this
3311  *- functionality need to call this function to re-enable firing to kill
3312  *- other characters.
3313  *- - Fixed problem for expressive faces in Vega. If a model without
3314  *- texture or material was drawn just before the expressive face,
3315  *- the expressive face would inherit its color.
3316  *- - Fixed various memory leaks.
3317  **
3318  *4 Version 5.2.1
3319  **
3320  *- - Improved DIS/HLA Networking:
3321  *>
3322  *- - Motion behavior improved when receiving standard PDUs in DIS.
3323  *- - Motion behavior improved when not using DI-Guy Custom FOM in HLA.
3324  *<
3325  *- - Improved vpNet/DI-Guy for Vega Prime interaction:
3326  *>
3327  *- - DI-Guy for Vega Prime now shares the network connection created
3328  *- by vpNet (MaK Technologies networking add-on to
3329  *- MultiGen-Paradigm's Vega Prime product).
3330  *- - Special programming no longer required to have DI-Guy for Vega
3331  *- Prime/vpNet work together.
3332  *- - Users need to maintain two separate modelmaps, but mapping to
3333  *- NULL is now implemented for both vpNet and DI-Guy, so that
3334  *- entities being drawn by other modules in Vega will not be
3335  *- drawn a second time by DI-Guy for Vega Prime and vice-versa.
3336  *- - Programming examples have been expanded to show simple
3337  *- examples of vpNet/DI-Guy for Vega Prime interaction. Note
3338  *- that these programming examples are copied to the samples
3339  *- directory of the Vega Prime installation.
3340  *- - Added function call diguy_net_get_character_from_id()
3341  *- which returns the diguyCharacter associated with the entity id.
3342  *- Works with both DIS and HLA. (see ref. manual).
3343  *- - Added option hla_advisories to network.cfg. When using HLA,
3344  *- if the RTI uses advisories, hla_advisories should be set to 1.
3345  *- If not, set this to zero. Mismatch between the settings should
3346  *- be avoided.
3347  *<
3348  *- - Fixed problem for expressive faces in Vega. The normals
3349  *- on the head were being scaled incorrectly, causing strange
3350  *- shading artifacts.
3351  *- - Fixed problem for expressive faces in Vega. If more than one
3352  *- expressive face was in a scene, all expressive faces would
3353  *- use the texture of the first expressive face.
3354  **
3355  *4 Version 5.2.0
3356  **
3357  *- - Added dynamic (dll) versions of DI-Guy libraries for win32.
3358  *- - Discontinued support of MT and MTd versions of DI-Guy libraries for
3359  *- win32.
3360  *- - Fixed nmake-based makefiles for win32 programming examples
3361  *- so that they'll work if DI-Guy is installed in a directory with
3362  *- spaces.
3363  **
3364  *4 Version 5.1.25
3365  **
3366  *- - Initial release of version 5.1.
3367  **
3368  *4 Versions 5.1.0 - 5.1.24
3369  **
3370  *- - These versions are 5.1 pre-releases.
3371  **
3372  **
3373  **************************************
3374  *3 DI-Guy Scenario
3375  **************************************
3376  **
3377  *b Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
3378  **
3379  *4 Version 9.1.4
3380  **
3381  *- - Scenario can now be stopped, run, and reset in I-Guy Input
3382  *- Mode by hitting Shift-Space (toggle stop and run) an Shift-Ctrl-Space
3383  *- (reset). Keyboard reset can be disabled in I-Guy mode in the I-Guy
3384  *- Page.
3385  **
3386  *4 Version 9.1.0
3387  **
3388  *- - Large rework of Object pages. There is now one Scenario Objects page
3389  *- that contains all of the pages from previous versions' Scenario
3390  *- Elements, Character Elements, View Settings, Event Handlers, and
3391  *- DI-Guy AI Elements. Pages are separated into multiple tab groups.
3392  **
3393  *4 Version 9.0.2
3394  **
3395  *- - Fixed bug where network page wouldn't remember current coordinate
3396  *- converter settings when closed and reopened.
3397  **
3398  *4 Version 9.0.0
3399  **
3400  *- - Near and far parameters of character weapon parameters are now
3401  *- always enabled, and will alway be taken into consideration.
3402  *- Before they only had an effect if the "spread" of a weapon was
3403  *- greater than 0.
3404  *- - New command line flag added: -runtime_only. If this flag is
3405  *- specified, DI-Guy Scenario will not attempt to check out the
3406  *- development license feature but instead will remain in runtime mode,
3407  *- leaving the development license available to another program.
3408  **
3409  *4 Version 8.6.3
3410  **
3411  *- - Changing a character's character type no longer deletes all action
3412  *- beads. The actions of the existing beads are changed to the nearest
3413  *- equivalent of the new character type.
3414  *- - Region/crowd painting now works on scene object grids. delayed
3415  *- loading of grids should be more responsive as well.
3416  *- - Fixed issues with feelers: changes made via UI now change all crowd
3417  *- members, 3D rep of feelers now updated immediately when changed and
3418  *- on reset.
3419  *- - Fixed set_playback_mode_play() so that it works in decisions.
3420  *- - Ctrl-a will now restore previous visibility settings if hit 2 times
3421  *- in a row.
3422  *- - Added experimental feeler callback option.
3423  *- - Minor UI preference bug fixes.
3424  **
3425  *4 Version 8.6.2
3426  **
3427  *- - Improved speed of particle system rendering.
3428  *- - Fixes to scene object grid rendering.
3429  *- - Fixed problem that character initial path could not be deleted.
3430  *- - If last character path is deleted, initial position and orientation
3431  *- controls now become enabled as they should.
3432  *- - Added preference for changing the fast-forward playback factor.
3433  *- Default is 4. Can be changed in the Preferences dialog.
3434  *- - Symbolic View: Characters merging into a crowd symbol should now work
3435  *- outside of ortho_xy view.
3436  *- - 3d UI: Added right click pop-up menu to character mode.
3437  *- - Added smoothing to ground clamp function.
3438  **
3439  *4 Version 8.6.1
3440  **
3441  *- - Added one click movie creation to DI-Guy Scenario.
3442  *- - More of the UI has up/down sorting arrows.
3443  *- - Added is_speaking as a decision bead query.
3444  *- - Fixed bug with "this_character" not properly having sub-objects
3445  *- listed in decision beads.
3446  *- - Added the ability for labels to reflect character state, accessible
3447  *- in the character label UI.
3448  *- - Fixed math issues with scene object sub-culling, feature should be
3449  *- significantly more robust with scaled and rotated scene objects.
3450  *- - Character's added to dynamic octtree and scene object characters
3451  *- should require less memory, and be more efficient.
3452  *- - Minor improvements to advanced light UI.
3453  *- - Action bead page now lists the current action's information.
3454  *- - Fixed bug where 1st person I-Guy could not be killed.
3455  *- - Better performance when populating or repopulating crowds.
3456  *-
3457  **
3458  *4 Version 8.5.0
3459  **
3460  *- - Initial DI-Guy SAF release.
3461  *- - Added new SAF Elements palette that provides access to DI-Guy SAF
3462  *- objects.
3463  *- - Added shortcut ctrl-a: turns off *all* supplemental visuals,
3464  *- providing better viewing for non-demo scenario run.
3465  *- - Added "Ortho XY" Projection Mode to Camera settings. This provides
3466  *- an alternative planview that uses an orthonormal projection rather
3467  *- that a perspective-based one.
3468  *- - Added "Symbolic View" checkbox to Camera settings. When this is
3469  *- checked characters will be represented as flat polygons rather than
3470  *- their full animated graphics. This, along with the Ortho XY
3471  *- Projection Mode, provides a good SAF-like view of a scenario.
3472  **
3473  *4 Version 8.0.3
3474  **
3475  *- - Fixed issue with I-Guy not using a joystick for input, even through
3476  *- the UI says it is enabled.
3477  *- - Fixed issue with children's bounding volumes not being factored into
3478  *- culling calculation.
3479  *- - User interface polish:
3480  *>
3481  *- - Added more context sensitive input mode buttons.
3482  *- - Labels identifying what character and path is selected have
3483  *- been replaced with combo boxes, allowing for faster editing of
3484  *- complex scenarios.
3485  *- - Fixed various other small UI issues.
3486  *<
3487  *4 Version 8.0.2
3488  **
3489  *- - Fixed issue with sound not playing properly when scenario is
3490  *- fast-forwarded.
3491  *- - Fixed issues with jittery camera in I-Guy 3rd person mode.
3492  *- - Multisync masters now send and receive characters over the network.
3493  **
3494  *4 Version 8.0.0
3495  **
3496  *- - Initial 8.0 release candidate.
3497  *- - Improved plugin interface so that existing plugin name can be
3498  *- changed instead of just being deleted and a new one created.
3499  *- - DI-Guy plugin libraries can now be browsed for in the Plugins page,
3500  *- instead of just typing in the library name.
3501  *- - Added limits to the Tick dt parameter in the Performance page.
3502  *- The Tick dt must now be >= 0.01 seconds, and <= 0.1 seconds.
3503  **
3504  *4 Version 7.1.19
3505  **
3506  *- - Made improvements to DI-Guys sound system, sounds will now pause
3507  *- along with the scenario and can now be fast forwarded and rewound
3508  *- (to a degree).
3509  *-
3510  *4 Version 7.1.16
3511  **
3512  *- - Added 'Init. Up Vector' combo box to Character page. Allows
3513  *- user to set the up vector that the character will use. Previously
3514  *- this could only be done via script of decision.
3515  **
3516  *4 Version 7.1.15
3517  **
3518  *- - Added '-safe_mode' flag to command line. Passing this flag on
3519  *- the command line will cause DI-Guy Scenario to start up using
3520  *- default preferences, which may resolve some unexpected issues.
3521  **
3522  *4 Version 7.1.14
3523  **
3524  *- - Added chain settings to Merge Settings UI.
3525  *- - Fixed issues with selecting a different path by clicking on
3526  *- one of its waypoints in Path Edit Input Mode.
3527  **
3528  *4 Version 7.1.12
3529  **
3530  *- - Review data for new scenarios is now turned off by default.
3531  *- - New characters created in DI-Guy scenario now have no review data
3532  *- by default. Characters from existing scenarios will not be
3533  *- affected. Note that this removes the ability to rewind scenarios
3534  *- unless some review data is turned back on.
3535  **
3536  *4 Version 7.1.11
3537  **
3538  *- - Sounds now stop when a scenario loops or is rewound. Added a
3539  *- 'Stop All Sounds' button to the Scenario palette Sound page,
3540  *- to make it easier to stop playing long sounds.
3541  *- - Window menu now always opens UI windows instead of toggling whether
3542  *- they are shown or hidden. If a window is already open, it is
3543  *- brought to the top of the window stack.
3544  *- - The F-key shortcuts for opening UI windows have changed behavior.
3545  *- Pressing F2 for the Time Control window, for example, will make
3546  *- the Time Control window visible by either opening it or bringing it
3547  *- to the top. Old behavior toggled whether windows were shown or
3548  *- hidden. Use Shift-F-key to use old toggle behavior (hide if
3549  *- showing, show if hidden).
3550  *- - Character Labels Visibility is now set to 'None' in the default
3551  *- .dss file.
3552  **
3553  *4 Version 7.1.8
3554  **
3555  *- - Fixed problem with restoring all event mappings when reloading
3556  *- a previously saved scenario.
3557  **
3558  *4 Version 7.1.7
3559  **
3560  *- - Switch to new installer setup. Should better detect and remove
3561  *- previous versions, and in general be more stable.
3562  *- - Added preliminary support for TerraPage .txp files in scene objects.
3563  *- - Fixed issue with OpenAL not being able to play sounds on some
3564  *- machines.
3565  **
3566  *4 Version 7.1.6
3567  **
3568  *- - Added 3rd Parameter to Decision Beads.
3569  *- - Added diguyCharacter::create_and_force_bridge_spath() and
3570  *- diguyCharacter::force_local_path to Decision Beads editor.
3571  *- - Application now asks user to confirm whether an existing
3572  *- file can be overwritten when Save As is selected.
3573  *- - Added Comment field to Decisions and Decision Beads.
3574  *- - Added new cursor to represent current input mode.
3575  *- - Added events page to character as well as signal and sensor region.
3576  *- Same basic functionality as the event mapper but more distributed
3577  *- UI design.
3578  **
3579  *4 Version 7.1.4
3580  **
3581  *- - Added functionality to the character elements page that allows
3582  *- character list to be reordered using up and down arrows next to
3583  *- the list box.
3584  *- - Character list box will now display disabled characters in gray.
3585  **
3586  *4 Version 7.1.3
3587  **
3588  *- - Added offset XYZ line edits for aiming at characters on Aim
3589  *- Bead page.
3590  **
3591  *4 Version 7.1.2
3592  **
3593  *- - Added new "Character" Input Mode. While in this mode clicks and
3594  *- drags will have the following effects:
3595  *>
3596  *a click and drag - translate character
3597  *a shift-click and drag - rotate character
3598  *<
3599  *- - Made 'Delete' key work on more object types in the 3D window,
3600  *- depending on the current Input Mode:
3601  *>
3602  *a Character or PeopleBlitzer - delete current character
3603  *a Path Edit or Path Insert - delete current waypoint
3604  *a Action Edit or Action Insert - delete current action bead
3605  *a Sensor Edit or Sensor Insert - delete current sensor region
3606  *a Group - delete current group
3607  *<
3608  **
3609  *4 Version 7.1.1
3610  **
3611  *- - Added new "Group" Input Mode. While in the mode clicks and
3612  *- drags will have the following effects:
3613  *>
3614  *a click and drag - translate all group characters
3615  *a shift-click and drag - rotate all group characters
3616  *a ctrl-click - add or remove clicked character
3617  *a to group
3618  *<
3619  *- - Added Chain Sim Settings page to the Scenario Elements palette.
3620  *- - Added edit boxes to event beads (Aim, Decision, Gaze, and Script
3621  *- beads) that allow beginning and end of beads to be tied to
3622  *- specific waypoints or action beads.
3623  *- - Added ability to set character label colors on the Character page.
3624  *- - Added optional labels for action beads in the 3D window that show
3625  *- the action name and the time at which the action begins.
3626  *- - Current selected character index is now saved in .dss file and
3627  *- restored when the scenario is loaded.
3628  *- - Revamped Plugins page. Each plugin now has these parameters:
3629  *>
3630  *a Required By Scenario - If checked, this plugin is required
3631  *a for proper execution of this scenario.
3632  *a When the scenario is loaded this plugin
3633  *a will be loaded as well if it is not
3634  *a already active. Default is unchecked.
3635  *a Unload on Scenario Close - If checked, this plugin will be
3636  *a unloaded if this scenario is closed
3637  *a or a new scenario is opened. Default
3638  *a is unchecked.
3639  *a Accepts Mouse Input - If checked, this plugin will receive
3640  *a mouse events via the mouse plugin
3641  *a functions when the input mode is
3642  *a "Plugin". Default is checked.
3643  *<
3644  *- - Added new camera frustum culling functionality that works on the
3645  *- subshapes of a scene object. The functionality can be turned on
3646  *- via a check box in the performance page, or via
3647  *- diguyScenario::set_scene_object_sub_culling_enabled() and
3648  *- diguyScenario::get_scene_object_sub_culling_enabled().
3649  *- Potentially this can lead to 100%-200% rendering speed increase
3650  *- for large well segmented terrains. Note currently scene object
3651  *- culling must be on for this to work.
3652  **
3653  *4 Version 7.1.0
3654  **
3655  *- - Revamped Cut and Paste operations to use the merge functionality
3656  *- that makes sure objects added to a scenario have unique names.
3657  **
3658  *4 Version 7.0.8
3659  **
3660  *- - Camera speed UI input was broken, should be responsive again
3661  *- - Hitting cancel in particle system texture map property widget will
3662  *- no longer delete the currently selected texture.
3663  *- - Fixed Camera Affected by Script events check box; was actually an
3664  *- SDK fix.
3665  **
3666  *4 Version 7.0.5
3667  **
3668  *- - Enhanced character path following so that waypoints that
3669  *- have a roll parameter specified will roll the character
3670  *- as it travels along the path.
3671  *- - Enhanced character path following so that characters can
3672  *- now pitch "upside-down" along paths.
3673  **
3674  *4 Version 7.0.3
3675  **
3676  *- - Look At button now works for reflected characters.
3677  **
3678  *4 Version 7.0.1
3679  **
3680  *- - Velocity Noise on particles will now get transformed with the
3681  *- parent's orientation.
3682  *- - Fixed problems with various guide algorithms not working well
3683  *- if the desired z coordinate is not at the same altitude as the
3684  *- character.
3685  *- - Re-enabled "-C cfg_file" command line flag.
3686  **
3687  *4 Version 6.1.10
3688  **
3689  *- - Fixed problem that prevented some parameters from being
3690  *- editable in the Decision editor; in particular, when param 2
3691  *- was an appearance or a string.
3692  *- - Fixed aim trajectory rendering to more consistently render
3693  *- and use the proper color.
3694  *- - Fixed problem with I-Guy characters not being able to move
3695  *- forward and back.
3696  *- - Particles are more aggressive about requesting that octtree is
3697  *- rebuilt.
3698  *- - High velocity particles, stuck particles and bouncing particles all
3699  *- interact better after colliding with scene geometry.
3700  *- - BDI_LOG_FATAL errors will behave better in DI-Scenario, giving the
3701  *- option to save before exiting.
3702  *- - Fixed decision beads pseudocode description crash.
3703  **
3704  *4 Version 6.1.9
3705  **
3706  *- - Fixed problem with OpenGL renderer that prevented objects
3707  *- with subfaces from rendering correctly.
3708  *- - Fixed problem with Draw Mode radio buttons in the Preferences
3709  *- dialog not having the correct effect on rendering.
3710  *- - Changed info popups to show up as dialog windows separate
3711  *- from the main window. This prevents the Primary 3D Window
3712  *- from un-maximizing when an info popup pops up.
3713  *- - Fixed problem that scene objects did not correctly look in
3714  *- custom directory for models.
3715  *- - Added code to check positions of DI-Guy Scenario windows;
3716  *- if windows will not be visible (are off-screen, etc.), they
3717  *- are moved to screen coordinate 0,0.
3718  *- - Updated Networking Settings page to be consistent with V6 UI.
3719  *- - Numerous fixes to Networking Settings page.
3720  *- - Added About box with version information.
3721  *- - Fixed bug that preferences weren't correctly saved if app
3722  *- was closed by clicking 'X' button in upper right corner.
3723  *- - Fixed various problems with values entered into edit boxes
3724  *- being clobbered.
3725  *- - Added plugins page to DI-Guy Scenario to match page from V6 UI.
3726  **
3727  *4 Version 6.1.8
3728  **
3729  *- - Fixed world space collisions for particles, functionality was
3730  *- temporally broken.
3731  *- - Particle UI should be now be almost entirely working in DI-Guy
3732  *- Scenario.
3733  *>
3734  *- - Added load particle descriptions button to UI.
3735  *- - Added collision plane rendering check box to UI.
3736  *- - Added check box to particle page that optionally turns off
3737  *- placeholders.
3738  *- - Added orientation flag to particles, useful for parented
3739  *- emitters.
3740  *- - Renaming particles should validate names and echo to other
3741  *- appearance menus.
3742  *- - Adding or removing particle descriptions now properly updates
3743  *- the appearance section of the character page and people blitzer.
3744  *- - Particle manager was getting updated unnecessarily causing
3745  *- particles to playback 2x as fast.
3746  *<
3747  *- - Fixed a focus out problem that yielded a hard lock up if a load
3748  *- manager error message was produced.
3749  *- - Waypoints and sensor regions visuals weren't being properly
3750  *- updated when data changed.
3751  *- - Editing a Scene object triggers the unsaved flag more often.
3752  *- - Fixed a glitch where shadows and the profiler wouldn't work
3753  *- together.
3754  *- - Added UI for setting character and scene object culling active.
3755  *- - Added UI for setting character and scene object bounding volume
3756  *- visualization active.
3757  *-
3758  *4 Version 6.1.7
3759  **
3760  *- - Added UI for setting the character's label text and controlling
3761  *- whether the label is visible to the Character page.
3762  *- - Added new visibility option for Character Labels on the
3763  *- Visibility page: Per Object.
3764  *- - Major reworking of the DI-Guy Scenario user interface in
3765  *- preparation for the DI-Guy 7 release.
3766  *- A version of the program with the old interface (henceforth
3767  *- called the V6 UI) will be available in releases for awhile
3768  *- with a different filename. As time goes on new features that
3769  *- appear in DI-Guy Scenario may not appear in the V6 UI.
3770  *- - Changed the sound module of DI-Guy Scenario to be based on
3771  *- OpenAL. This fixed a problem with sounds playing back too
3772  *- fast on certain systems, and allows for 3D position sounds.
3773  **
3774  *4 Version 6.1.6
3775  **
3776  *- - Added "+plugin <plugin_name>" command line argument. This will
3777  *- load the specified plugin as the application is starting up.
3778  *- This is essentially the same as calling diguyApp::load_plugin()
3779  *- before the initial scenario is created.
3780  *- - Added "Plugin" page. This allows a scenario designer to specify
3781  *- which plugins are required for proper execution of the scenario.
3782  *- - Fixed crash bug that occasionally occurred when the "Trigger Now"
3783  *- button was clicked on the Script and Decision pages.
3784  *- - Added UTM Coordinates to the Networking page.
3785  *- - Added "Decisions", which are similar to Script Events but
3786  *- have a UI for constructing logic similar to Decision Beads.
3787  **
3788  *4 Version 6.1.4
3789  **
3790  *- - Fixed minor problems with decision bead page. The parameters for
3791  *- the sensor region function
3792  *- contains_character_by_type_and_appearance() did not include
3793  *- quotes and were not alphabetized.
3794  *- - Added buttons "Add All" and "Remove All" to Group page.
3795  **
3796  *4 Version 6.1.1
3797  **
3798  *- - Added Load Manager page to the Scenario window. Now users can
3799  *- enable load management, and adjust load management parameters
3800  *- from within DI-Guy Scenario.
3801  *- - Particle warm up time should now work properly on reset.
3802  *- - Added particle system life time, after which it will no longer emit
3803  *- particles.
3804  *- - Added new Particle position and velocity noise options, should allow
3805  *- for better control and movement options.
3806  *- - Added character variable querying to decision beads, can now query
3807  *- variables with: variable_equal_to_(float, int, string),
3808  *- variable_less_than_(float, int, string) and
3809  *- variable_greater_than_(float, int, string).
3810  *- - Added character variable actions to decision beads, can now have
3811  *- actions that affect variables, using
3812  *- variable_set_value_as_(float, int, string) and
3813  *- variable_increment and decrement.
3814  *- string) and variable_greater_than_(float, int, string).
3815  *- - Can now use decision beads to check whether someone's been shot,
3816  *- as well as where the shot hit.
3817  *- - Changed how decision beads get pointers to objects; previously
3818  *- if an object was referenced multiple times in a decision bead
3819  *- (e.g., multiple queries were made of character "soldier-1" in
3820  *- the if clauses), the same object was searched for multiple times.
3821  *- Now a pointer to the object is just searched for once.
3822  *- - Added Variable page to Character window. This page allows for
3823  *- creation, deletion, and editing of character variables. Character
3824  *- variables are almost exactly the same as scenario variables, but
3825  *- are private to each character instead of being shared across the
3826  *- entire scenario.
3827  **
3828  *4 Version 6.1.0
3829  **
3830  *- - Ctrl-'u' now pushes a scenario undo onto the undo stack.
3831  *- - Space bar toggles between play and pause; Ctrl-space bar does a
3832  *- reset.
3833  **
3834  *4 Version 6.0.8
3835  **
3836  *- - DI-Guy Scenario now properly sets the network Force ID for
3837  *- outgoing entities based on group membership. Groups
3838  *- net_friendly, net_opposing, and net_neutral should be used to
3839  *- indicate the Force ID of outgoing entities.
3840  *- - DI-Guy Scenario now assigns incoming entities to group
3841  *- net_friendly, net_opposing, or net_neutral based on the
3842  *- incoming Force ID.
3843  *- - Incoming entities cannot now be assigned to or removed from
3844  *- groups. As well, groups to which incoming entities belong
3845  *- cannot be deleted.
3846  **
3847  *4 Version 6.0.2
3848  **
3849  *- - Fixed problem with "Deflate" compression method for movie frame
3850  *- capture.
3851  *- - Changed label of "Reset" button on Movie Settings page to "Reset
3852  *- Next Frame Number", to differentiate it from the Reset button
3853  *- on the Control palette.
3854  **
3855  *4 Version 6.0.1
3856  **
3857  *- - Added setting of Scenario Review Data on Scenario Performance
3858  *- page to .dss file. It was not being saved and restored as
3859  *- scenarios were saved and loaded.
3860  *- - Changed scenario "Loop" functionality. If no characters have
3861  *- review data, the scenario will reset and play rather than
3862  *- rewind and show review data.
3863  *- - Removed unused "Altitude" edit box from Networking property page.
3864  *- (PR 3002)
3865  *- - Changed gaze bead logic so that faster gazes are possible. The
3866  *- desired locate time for gaze beads was effectively limiting the
3867  *- maximum angular velocity. Now if a gaze bead overrides gaze
3868  *- parameters, it also turns off use of the desired locate time for
3869  *- each link. (PR 3030)
3870  **
3871  *4 Version 6.0.0
3872  **
3873  *- - Added "GoThere" camera movement. In Camera mode, if there is
3874  *- neither a Look At character nor a Look From character selected
3875  *- and the camera projection mode is "free camera", if you hold
3876  *- the Shift key and left-click on anything in the scene, the
3877  *- camera will rapidly travel to what you Shift+clicked on and
3878  *- turn around to face the location from which the camera came.
3879  *- This also works from modes other than camera mode, if you press
3880  *- and hold Alt+Shift while left-clicking.
3881  *- - Changed Aim Bead UI to match Gaze Bead UI. Note that now
3882  *- aiming is also precise, and dynamic. See DI-Guy aiming change
3883  *- above.
3884  *- - Fixed problem with current light and fog settings being overwritten
3885  *- when a .dss file was loaded. (PR 2019)
3886  *- - Fixed problem with primary view of scenario returning 0 when
3887  *- diguyScenarioView::is_showing() was called on it. The correct
3888  *- value is now returned. (PR 2954)
3889  *- - Added ability to change window title of primary view using the
3890  *- call diguyView::set_window_title(). (PR 2953)
3891  *- - Fixed problem with looking at scene objects that are translated
3892  *- away from the origin. (PR 2722)
3893  *- - Fixed problem for character paths on load. Paths that weren't
3894  *- the initial path of the character weren't being fully initialized
3895  *- until they were used by the character. Now all paths receive
3896  *- an initial update call on load.
3897  *- (PR 2791)
3898  *- - Added new command line argument: -no_info_popup_server. Adding
3899  *- this argument to the command line causes DI-Guy Scenario to not
3900  *- attempt to start the program DIGuyInfoPopupServer. If the
3901  *- server is not started, info popup windows will not appear.
3902  *- - Fixed problem that if the Initial Script Filename on the Script
3903  *- Event property page specified a script that didn't exist,
3904  *- no warning was given. Now a log message at Warn level is
3905  *- printed for a missing script file. (PR 2826)
3906  *- - Fixed problem that prevented Performance settings from taking
3907  *- effect unless the scenario was saved and reloaded.
3908  *- - Added edit box for setting character's initial motion texture
3909  *- gain. (PR 2845)
3910  *- - Added UI preference for turning off the "DI-Guy Scenario by
3911  *- Boston Dynamics" overlay.
3912  **
3913  *4 Version 5.3.5
3914  **
3915  *- - Changed edit box for setting character's initial motion texture
3916  *- into a combo box that shows which motion textures are available.
3917  **
3918  *4 Version 5.3.2
3919  **
3920  *- - Small improvement to particle system UI, fixed outstanding issues
3921  *- with texture map browser widget. Color Widgets go right to a color
3922  *- picker. Clicking on static text opens subitems.
3923  *- - Particle Systems now populate better between ticks, i.e. release
3924  *- intervals smaller then the update time now work.
3925  *- - Performance improvements to the particle systems.
3926  **
3927  *4 Version 5.3.1
3928  **
3929  *- - Removed Review Data dt data member from diguyScenario objects
3930  *- and from the DI-Guy Scenario UI. Any scenario review data is
3931  *- now recorded at the scenario's tick dt.
3932  *- - Split Visibility / Performance page into two separate
3933  *- pages named Visibility and Performance.
3934  **
3935  *4 Version 5.3.0
3936  **
3937  *- - Made it possible to turn off review data generation for scenarios.
3938  *- By default, scenarios created in the DI-Guy Scenario editor will
3939  *- have review data enabled; scenarios created using the DI-Guy API
3940  *- will have review data disabled. Turning on review data can add
3941  *- significantly to memory usage. Changing review data settings can
3942  *- be done using the function diguyScenario::set_history_type(), or
3943  *- using the Review Data Type radio buttons on the Visibility /
3944  *- Performance page of the DI-Guy Scenario editor.
3945  **
3946  *4 Version 5.2.3
3947  **
3948  *- - Added joystick gain settings to Preferences. The gains allow
3949  *- DI-Guy Scenario users to adjust how sensitive the joystick will
3950  *- be. Gains of 1.0 retain previous behaviors. Gains less than
3951  *- 1.0 make joystick control less sensitive; i.e., it will take a
3952  *- larger movement to achieve a response. Gains more than
3953  *- 1.0 make joystick control more sensitive; i.e., it will take a
3954  *- smaller movement to achieve a response.
3955  **
3956  *4 Version 5.2.1
3957  **
3958  *- - Special Effects: DI-Guy Scenario now offers a new add-on option for
3959  *- particle-based special effects. Examples of particle effects include
3960  *- smoke, fire, debris, missile trails, rotor wash, explosions, and dust
3961  *- trails. A Particles tab is now available in the Scenario palette for
3962  *- easy control of effects parameters include size, number, color,
3963  *- texture map, velocity, wind effect, and gravity.
3964  *- - Fixed crashing bug when undoing path changes.
3965  *- - Fixed minor issues with using soldier character
3966  *- backward actions and companion waypoints.
3967  *- - Fixed problem where character sounds were not consistently
3968  *- playing when a scenario looped.
3969  *- - Fixed problem where path shapes were not always being drawn
3970  *- when they should have been.
3971  *- - Fixed problem where having path shapes in a scenario caused
3972  *- the program to crash on exit.
3973  *- - Fixed crashing bug when shutting down a scenario that
3974  *- contains characters with guides.
3975  **
3976  *4 Version 5.2.0
3977  **
3978  *- - Added ability to show character names as floating
3979  *- labels next to the character in the 3D window.
3980  *- Name labels can be shown for current character only,
3981  *- all characters, or no characters. Access via the
3982  *- Scenario | Visibility / Performance property page.
3983  *- - Added "Look At" buttons for characters, waypoints,
3984  *- and path beads on respective Elements pages.
3985  *- - Added special effects such as smoke and fire.
3986  *- - Fixed perl script interpreter so that it will work
3987  *- if DI-Guy is installed in a directory with spaces.
3988  *- - Fixed problem where LOD range scale factors weren't
3989  *- taking effect for scene objects.
3990  **
3991  **
3992  **************************************
3993  *3 DI-Guy AI
3994  **************************************
3995  **
3996  *4 Version 9.0.1
3997  **
3998  *- - Fixed bug where characters were improperly going through walls.
3999  *- - Fixed a number of minor crashes with creating behavior paths.
4000  **
4001  *4 Version 9.0.0
4002  **
4003  *- - To enable DI-Guy AI in programs using the DI-Guy SDK, the header
4004  *- file "diguy_ai.h" must be included, and the functions
4005  *- diguy_ai_initialize() and diguy_ai_deinitialize() must be called
4006  *- at the appropriate times.
4007  *- - New command line flag added to DI-Guy Scenario for optionally.
4008  *- disabling DI-Guy AI. By default DI-Guy Scenario will look for the
4009  *- diguy_ai license feature and check it out if it is present. By
4010  *- putting "-module diguy_ai" on the command line, DI-Guy Scenario will
4011  *- not attempt to enable DI-Guy AI.
4012  *- - Fixed problem with DI-Guy AI agents having trouble killing animals.
4013  *- - Painting a non-continuous region will be more likely to successfully
4014  *- create a behavior path, the longest path from the start point to the
4015  *- mouse up location is used.
4016  *- - Fixed issues with feelers: changes made via UI now change all crowd
4017  *- members, 3D rep of feelers now updated immediately when changed and
4018  *- on reset.
4019  *- - Fixed problem that agent feeler collide distance could not be
4020  *- greater than turn distance.
4021  *- - It is now possible to add a feeler callback to enable DI-Guy AI agents
4022  *- to interact better with static geometry in the SDK. See the following
4023  *- functions for more details:
4024  *>
4025  *- - diguyCharacter::agent_set_feeler_function()
4026  *- - diguyCharacter::agent_get_feeler_function()
4027  *- - diguyScenario::agent_set_default_character_feeler_function()
4028  *<
4029  *- - Crowds and agents can now flee a group. Accessed via:
4030  *>
4031  *- - diguyCharacter::agent_flee_group()
4032  *- - diguyCrowd::agents_flee_group()
4033  *<
4034  **
4035  *4 Version 8.6.3
4036  **
4037  *- - Crowd UI Improvements:
4038  *>
4039  *- - Selected member will now only show postures and variants that it has
4040  *- available.
4041  *- - Selected edit mode with display better visual cues indicating which
4042  *- crowd members will be affected by changes
4043  *- - Added look at member button.
4044  *<
4045  *- - Crowd Blitzing: Blitzing a crowd into an area that is non-contiguous
4046  *- will now attempt to find the longest path from the start point to
4047  *- the end point, This should fix a frequent failure case with the
4048  *- Blitzer.
4049  **
4050  *4 Version 8.6.1
4051  **
4052  *- - DI-Guy SAF references changed to DI-Guy AI.
4053  **
4054  *4 Version 8.6.0
4055  **
4056  *- - New DI-Guy SAF functions:
4057  *>
4058  *- - diguyCharacter::agent_set_current_behavior_region_border_is_solid()
4059  *- - diguyCrowd::set_all_members_enabled()
4060  *- - diguyCrowd::set_current_behavior_region_border_is_solid()
4061  *- - diguyCrowd::is_current_behavior_and_focus_group()
4062  *- - diguyCrowd::is_current_behavior_and_focus_character()
4063  *- - diguyCrowd::is_current_behavior()
4064  *- - diguyCrowd::is_crowd_dead()
4065  *- - diguyScenario::set_create_network_crowds()
4066  *- - diguyScenario::get_create_network_crowds()
4067  *<
4068  *4 Version 8.5.0
4069  **
4070  *- - Initial DI-Guy SAF release.
4071  *- - Added/updated DI-Guy SAF classes:
4072  *>
4073  *- - diguyAgentParams
4074  *- - diguyCrowdProfile
4075  *- - diguyCrowd (extensive changes, promoted from experimental)
4076  *<
4077  *- - New DI-Guy SAF functions:
4078  *>
4079  *- - diguyScenario::destroy_crowd()
4080  *- - diguyScenario::get_num_crowds()
4081  *- - diguyScenario::find_crowd()
4082  *- - diguyScenario::get_crowd_at_index()
4083  *- - diguyScenario::create_crowd_profile()
4084  *- - diguyScenario::destroy_crowd_profile()
4085  *- - diguyScenario::get_num_crowd_profile()
4086  *- - diguyScenario::find_crowd_profile()
4087  *- - diguyScenario::get_crowd_profile_at_index()
4088  *- - diguyScenario::create_group_in_region()
4089  *- - diguyCharacter::agent_attack_group()
4090  *- - diguyCharacter::agent_flee_character()
4091  *- - diguyCharacter::agent_flee_location()
4092  *- - diguyCharacter::agent_remove_all_flee_objects()
4093  *- - diguyCharacter::agent_mingle_in_region()
4094  *- - diguyCharacter::agent_pursue_character()
4095  *- - diguyCharacter::agent_pursue_group()
4096  *- - diguyCharacter::agent_travel_behavior_path()
4097  *- - diguyCharacter::agent_travel_path_shape()
4098  *- - diguyCharacter::agent_travel_region_border()
4099  *- - diguyCharacter::agent_wander_region()
4100  *- - diguyCharacter::agent_stop_behavior()
4101  *- - diguyCharacter::agent_set_current_focus_character()
4102  *- - diguyCharacter::agent_set_current_focus_group()
4103  *- - diguyCharacter::agent_get_initial_params()
4104  *- - diguyCharacter::agent_get_current_params()
4105  *- - diguyCharacter::agent_set_current_params_from_profile()
4106  *- - diguyCharacter::agent_get_current_focus_character()
4107  *<
4108  **
4109  **************************************
4110  *3 DI-Guy Motion Editor
4111  **************************************
4112  **
4113  *4 Version 9.0.1
4114  **
4115  *- - Added sample bvh file to motions directory, should help document how
4116  *- DI-Guy expects bvh files to be structured.
4117  **
4118  *4 Version 9.0.0
4119  **
4120  *- - If motions are added to an action table, the proper default actor
4121  *- is now set automatically.
4122  *- - Improved support for editing offset poses, should be much easier, and
4123  *- not cause abrupt joint behavior.
4124  *- - Changing the actor of a motion arc now immediately applies the new
4125  *- scale to the motion, improvements to actor choosing, motion scaling,
4126  *- and importing code.
4127  *- - Fixed a number of action table editing issues: including hard crash
4128  *- with undo, "remove unused motions" causing corrupted action tables.
4129  *- - General UI improvements:
4130  *>
4131  *- - +/- keys behave more intuitively with regards to the yaw/pitch/roll
4132  *- of the poser.
4133  *- - Shift key alters magnitude of +/- change.
4134  *- - Poser editing gizmo now auto-scales based on camera distance.
4135  *- - Editing mode is now displayed in 3D window title bar.
4136  *- - Initial directories for me project, importing motions and saving
4137  *- motions are now set to expected values.
4138  *<
4139  **
4140  *4 Version 8.6.3
4141  **
4142  *- - Fixed issue with zero length animations causing div by zero.
4143  *- - Fixed minor bug with action tables not properly updating when unused
4144  *- motions were removed.
4145  **
4146  *4 Version 7.1.11
4147  **
4148  *- - Fixed problem that many error messages would appear when saving
4149  *- action tables.
4150  **
4151  *4 Version 7.1.0
4152  **
4153  *- - Fixed various problems with setting variants and angle
4154  *- extents for 2-axis motions in the Action Table Editor.
4155  *- - Added sliders for testing aim actions in the Action Table
4156  *- Editor.
4157  **
4158  *4 Version 6.1.9
4159  **
4160  *- - Fixed a number of bugs introduced with the upgrade to high
4161  *- precision positions.
4162  **
4163  *4 Version 6.1.0
4164  **
4165  *- - Added new gesture table editor, allows for the modification of
4166  *- the action tables of table gestures.
4167  *- - Null motion arcs are now editable, with blend type and duration
4168  *- as parameters.
4169  **
4170  *4 Version 6.0.6
4171  **
4172  *- - BVH file import now supports joint translations in addition to
4173  *- rotations.
4174  *- - Resultant BDM files contain only relevant variables.
4175  **
4176  *4 Version 6.0.0
4177  **
4178  *- - Initial 6.0 DI-Guy Motion Editor release.
4179  **
4180  **
4181  **************************************
4182  *3 DI-Guy Character Viewer
4183  **************************************
4184  **
4185  *4 Version 8.0.2
4186  **
4187  *- - Added view selection buttons that load new camera settings.
4188  **
4189  *4 Version 6.1.9
4190  **
4191  *- - Fixed a number of bugs introduced with the upgrade to high
4192  *- precision positions.
4193  *- - Fixed character transparency.
4194  *- - Fixed selecting the default appearance.
4195  **
4196  *4 Version 6.0.2
4197  **
4198  *- - Added default settings file that shows Character Type /
4199  *- Appearance / Action selection page.
4200  **
4201  *4 Version 6.0.1
4202  **
4203  *- - Fixed problem where appearances that used a different actor than
4204  *- the default actor for a character did not correctly display.
4205  **
4206  *4 Version 6.0.0
4207  **
4208  *- - DI-Guy Character Viewer added to DI-Guy Applications Suite.
4209  *- Allows quick review of character types, appearances, and
4210  *- actions.
4211  **
4212  **
4213  **************************************
4214  *3 DI-Guy for Vega Prime
4215  **************************************
4216  **
4217  *4 Version 9.0.3
4218  **
4219  *- - vpNet 2.2 should now be enabled.
4220  *- - Fixed issue with skyLight lighting and shaders not being properly
4221  *- applied.
4222  *- - Fixed Memory leak when characters were unrefed to zero. Note a slight
4223  *- change to the basics example.
4224  **
4225  *4 Version 9.0.1
4226  **
4227  *- - Fixed issue with new vpDiguys not having their locations properly
4228  *- set when reading out of an acf.
4229  *- - Fixed issue with vpDiguyCharacters parented to vpTransforms not
4230  *- being properly created.
4231  **
4232  *4 Version 9.0.0
4233  **
4234  *- - DI-Guy for Vega Prime now works with VP 2.2.
4235  **
4236  *4 Version 8.6.3
4237  **
4238  *- - Fixed crash on exit when a vpDiguyCharacter parent was not a
4239  *- scenario.
4240  *- - Fixed bug where characters would multiply render if they were
4241  *- parented to a vpObject
4242  *- - parented and translated characters will should start broadcasting
4243  *- over the network with proper values.
4244  **
4245  *4 Version 8.0.3
4246  **
4247  *- - Moved example_acfs to their own subdirectory instead of in
4248  ** simple_playback directory.
4249  *- - Added warning about setting channel LOD scale to zero, can cause
4250  ** character to not draw.
4251  *- - Fixed an issue where not having a valid license could cause vp
4252  ** applications to crash.
4253  *- - Fixed licensing issue effecting vpDiguy/vpNet/HLA/stealth.
4254  *- - Basics Programming example now demonstrates ground clamping. As well
4255  *- as some other polish to programming examples.
4256  **
4257  *4 Version 8.0.2
4258  **
4259  *- - Improved reporting of version information during installation.
4260  **
4261  *4 Version 8.0.0
4262  **
4263  *- - Initial 8.0 release candidate.
4264  *- - vpDiguy using vpNet should now support all coordinate conversion
4265  *- routines that vpNet supports.
4266  *- - Memory usage and rendering performance improvements.
4267  **
4268  *4 Version 7.0.8
4269  **
4270  *- - Fixed HLA networking licensing issue. Shouldn't need explicit hla
4271  *- license with vpNet.
4272  *- - Added new autogenerated vpDiguy SDK docs.
4273  *- - Added code to basics example that demonstrates creating a character
4274  *- after configure.
4275  *- - Added documentation about vpDiguy openAL audio module's
4276  *- incompatibility with vpAudio module.
4277  *- - Added static versions of vpDiguy libraries, updated autolinking
4278  *- code in vpDiguyCpp.cpp.
4279  **
4280  *4 Version 7.0.7
4281  **
4282  *- - Fixed a number of vpNet related bugs.
4283  *- - NOTE: In order to make vpNet interaction more solid reading of
4284  *- UTM coordinates out of Scenario Objects in vpDiguy has been
4285  *- disabled. UTM coordinates should be specified explicitly in the
4286  *- Net Connection gcf panel and the DI-Guy Scenario Network Page.
4287  **
4288  *4 Version 7.0.6
4289  **
4290  *- - Fixed a number of recreation/looping related bugs.
4291  **
4292  *4 Version 7.0.3
4293  **
4294  *- - Turned on vpNet/vpDiguy networking.
4295  *- - Updated all the acfs to be vp 2.0 compliant.
4296  *- - Updated vpDiguy gcf to include new 7.0 content.
4297  *- - Fixed bug in UTM support.
4298  *- - Fixed problem if multiple diguy particles attempt to instantiate
4299  *- the same type of vpFX. Fixed memory leak as well.
4300  *- - Fixed divide by zero bug in networking code, could cause 0th
4301  *- character to never show up.
4302  *- - Fixed bug where a character with an appearance change would
4303  *- not be recreated properly if a scenario was looping.
4304  **
4305  *4 Version 7.0.0
4306  **
4307  *- - Fixed a couple of vpDiguyScenario function calls to print a warning
4308  *- if the functions are called before configure, instead of crashing.
4309  *- - diguyCharacter's position syncs with vpDiguyCharacter on creation.
4310  *- - Distributed rendering should now support mapping from DI-Guy
4311  * particles.
4312  **
4313  *4 Version 6.1.11
4314  **
4315  *- - Consolidated networking examples, moved
4316  *- vpnet_(send/receive)_(dis/hla).acf
4317  *- into simple_playback because they didn't have unique c++ code.
4318  *- - Added postLoad function to vpDiguyCharacter building code to try
4319  *- and enable sensor prime.
4320  *- - Added vpDiguyScenario::set_time_independant_of_vp_sim_time() and
4321  *- vpDiguyScenario::get_time_independant_of_vp_sim_time() Allows
4322  *- time to be disconnected from sim time.
4323  **
4324  *4 Version 6.1.10
4325  **
4326  *- - Renamed vpDiguyScenario::SetSyncCameraEnable() to
4327  *- vpDiguyScenario::setSyncCameraEnable().
4328  **
4329  *4 Version 6.1.9
4330  **
4331  *- - Added per scenario time offset code.
4332  **
4333  *4 Version 6.1.8
4334  **
4335  *- - Code now compiles against Vega 2.0 libraries:
4336  *- - Added 2.0 style copy constructor for diguyCharacters to use in
4337  *- cloning.
4338  *- - Fixed a bug where locked off joints issued warnings.
4339  *- - Fixed a bug where some dynamic matrixes weren't being properly
4340  *- updating, fixes gazing inside Vega.
4341  *- - Altered how diguyScenarios get loaded to accommodate new
4342  *- merging code.
4343  *- - Unsupported Vega sound module now uses openAL.
4344  **
4345  *4 Version 6.1.1
4346  **
4347  *- - gcfs and xsd no longer use "DI-Guy" in the naming convention;
4348  *- instead "Diguy" is now used. This avoids uncompilable code
4349  *- generated from lynxPrime's export .cpp functionality, as well
4350  *- as being more consistent with Vega conventions.
4351  **
4352  *4 Version 6.0.8
4353  **
4354  *- - Fixed serious bug affecting HLA networking in DI-Guy for Vega
4355  *- Prime. This bug was causing various problems, ranging from
4356  *- missing or extra apparent network entities, to entities
4357  *- appearing at the wrong location.
4358  **
4359  *4 Version 6.0.7
4360  **
4361  *- - Changed all Vega Prime code/acfs that specify "DI-Guy" to "Diguy".
4362  *- This should allow cpp exports to work better.
4363  *- - Renamed vpDiguy.h/cpp to vpDiguySettings to better match acf info.
4364  *- - Added Vega Prime view settings example that shows off camera sync
4365  *- code.
4366  *- - Added Vega Prime simple example that shows how to initialize and
4367  *- run with no acf or dss.
4368  **
4369  *4 Version 6.0.6
4370  **
4371  *- - Fixed problem which inadvertently disabled standard Vega Prime
4372  *- "X" key functionality (enable / disable the position strategy
4373  *- for all observers) in a vpDiguy application.
4374  **
4375  *4 Version 6.0.5
4376  **
4377  *- - Fixed problems preventing DI-Guy for Vega Prime from
4378  *- working with DIS/HLA for Vega Prime. DI-Guy for Vega
4379  *- Prime now works with Vega Prime 1.2.2 from MultiGen
4380  *- Paradigm and vpNet 1.2.2 from MAK Technologies. Prior
4381  *- versions of vpNet are not supported.
4382  **
4383  *4 Version 6.0.2
4384  **
4385  *- - Switched bdiString to bdiString* in vpDiguyCharacter.h, to remove
4386  *- a dependency on a header file that is not distributed.
4387  **
4388  *4 Version 6.0.1
4389  **
4390  *- - Fixed problem in vpDiguy DIS networking. Outgoing entities were
4391  *- being published with entity numbers which conflicted with those
4392  *- being used by Vega Prime entities. On the receiving end, this
4393  *- would cause characters to pop from place to place.
4394  **
4395  *4 Version 5.3.4
4396  **
4397  *- - Added a circle example program to programming_examples/vpdiguy.
4398  **
4399  *4 Version 5.3.3
4400  **
4401  *- - DI-Guy characters types are now listed in a Character Type combo box.
4402  *- - A character type sensitive list of appearances are now listed in an
4403  *- Appearance combo box.
4404  *- - A character type sensitive list of actions are now listed in an
4405  *- Action combo box.
4406  *- - A character type sensitive list of head appearances are now listed
4407  *- in a Head Appearance combo box.
4408  *- - Altering the xyz position, heading or scale factor of a character
4409  *- now reflects on the character immediately.
4410  *- - Adding a ground clamp to a DI-Guy Scenario node now adds the ground
4411  *- clamp to all of its children that don't currently have a ground
4412  *- clamp.
4413  *- - Added new DI-Guy Settings functionality, including turning on/off
4414  *- scripting, sound effects, facial expressions, and the mapping of
4415  *- DI-Guy particles to Vega particles.
4416  *- - Added new options to DI-Guy Scenario panel.
4417  *- - Added toggle for showing scene objects found in the scenario file.
4418  *- - Added Sync Camera option that will slave the observer/motion controls
4419  *- to the DI-Guy camera.
4420  *- - Adding a DI-Guy character directly to a scene now creates one without
4421  *- a scenario being necessary.
4422  *- - DI-Guy characters dropped into a vpNet model map are now correctly
4423  *- cloned. (Requires the latest version of vpNet.)
4424  **
4425  *4 Version 5.2.1
4426  **
4427  *- - Better integration with MaK's vpNet module (see above).
4428  *- - Installation now occurs as a separate module on the DI-Guy CD.
4429  *- - Installation now automatically copies samples, documents to the Vega
4430  *- Prime installation as well as registering the DI-Guy for Vega Prime
4431  *- module.
4432  **
4433  */
4434 
4435 /*****************************************************************************
4436  *****************************************************************************
4437  **
4438  *2 DI-Guy Data, 9.0 and Earlier
4439  **
4440  *****************************************************************************
4441  *****************************************************************************
4442  **
4443  *4 Version 9.0.1
4444  **
4445  *- - Added character soldier_sa80, a British soldier with desert and
4446  *- temperate appearances using a sa80, based on the soldier_07 character.
4447  *- Available appearances:
4448  *>
4449  *- - uk_desert_sa80
4450  *- - uk_temperate_sa80
4451  *<
4452  *- - Added character "projectile" with meters per second motions.
4453  *- Character projectile appearances:
4454  *>
4455  *- - rpg_fired
4456  *- - sa7_fired
4457  *- - stinger_fired
4458  *- - javelin_fired
4459  *- - 120mm_tank_round_fired
4460  *- - at4_fired
4461  *- - 40mm_fired
4462  *<
4463  *- - Added sound files: m203_hit.wav, fire_m203.wav, arabic_street_sounds.wav
4464  *- sa7_flight.wav, sa7_fired.wav, stinger_fired.wav, stinger_flight.wav,
4465  *- javelin_flight.wav, javelin_impact.wav, at4_fired.wav, at4_flight.wav
4466  *- at4_impact.wav, javelin_fired.wav, pk74_fired.wav, m1a1_fired.wav
4467  **
4468  *4 Version 9.0.0
4469  **
4470  *- - Some character types have been made deprecated, and made "legacy"
4471  *- character types. If these character types are used in an existing
4472  *- .dss file or are created by a diguyScenario::create_character()
4473  *- call they will be created, but by default they will not show up
4474  *- in any DI-Guy Scenario character type selection controls. The
4475  *- legacy character types are:
4476  *>
4477  *- - soldier_m249
4478  *- - soldier_m4
4479  *- - soldier_qk
4480  *- - soldier_signals
4481  *- - soldier_fire
4482  *- - soldier_pistol
4483  *- - soldier_melios
4484  *- - afghan_child_crowd
4485  *- - male_pedestrian3
4486  *- - mped_sweeper
4487  *- - mped1_misc
4488  *- - mped2_misc
4489  *- - mped3_misc
4490  *- - mped5_crowd2
4491  *- - mped5_crowd3
4492  *- - mped5_crowd4
4493  *- - mped5_crowd5
4494  *- - mped5_crowd6
4495  *- - fped2_misc
4496  *- - fped3_crowd2
4497  *- - suspect3
4498  *- - marshaller
4499  *- - esil
4500  *- - soldier_precise
4501  *- - launcher
4502  *- - suspect
4503  *- - suspect2
4504  *- - fped_mother
4505  *- - sergeant
4506  *<
4507  *4 Version 8.0.0
4508  **
4509  *- - New character types:
4510  *>
4511  *- - chain_simulation
4512  *- - civilian_cc
4513  *- - soldier_cc
4514  *- - soldier_at4
4515  *- - soldier_javelin
4516  *- - soldier_m249
4517  *- - soldier_m9
4518  *- - soldier_m4
4519  *- - train
4520  *<
4521  *- - New human appearances:
4522  *>
4523  *- - 3 Security Guards
4524  *- - Hazmat Suits level A B and C
4525  *- - Assortment of Hazmat props
4526  **
4527  *- - 10 different Close Combat civilians
4528  *- - Close Combat BDU and DCU with M9, M249, M240, M60, AT4,
4529  *- Javelin M4 with M203, M16 with M203 Stinger weapons
4530  *- - Close Combat Opfor with SA16, RPG7, AK47 and PK74 weapons
4531  **
4532  *- - 3 Iraqi Insurgents
4533  *- - 2 Iraqi Soldier
4534  *- - 2 Iraqi Police
4535  **
4536  ** The following soldier appearances can have M9, M249, M240, M60,
4537  ** AT4, Javelin M4 with M203 and M16 with M203 weapons:
4538  **
4539  *- - 4 BDU with IBA
4540  *- - 4 ACU with IBA
4541  *- - 4 USMC with IBA
4542  *- - 4 USMC desert with IBA
4543  *<
4544  *- - New turret vehicle and technical vehicle appearances:
4545  *>
4546  *- - gaz_truck_w_ZSU23_turret
4547  *- - gaz_truck_w_ZSU23_turret_blown
4548  *- - toyota_pickup_tech_turret
4549  *- - toyota_pickup_tech_turret_blown
4550  *- - humvee_50cal_grn_turret
4551  *- - humvee_50cal_grn_turret_blown
4552  *- - humvee_50cal_des_turret
4553  *- - humvee_50cal_des_turret_blown
4554  *- - m1a2_abrams_grn_turret
4555  *- - m1a2_abrams_grn_turret_blown
4556  *- - m1a2_abrams_des_turret
4557  *- - m1a2_abrams_des_turret_blown
4558  *- - t72_tank_grn_turret
4559  *- - t72_tank_grn_turret_blown
4560  *- - t72_tank_des_turret
4561  *- - t72_tank_des_turret_blown
4562  *- - m2a3_bradley_grn_turret
4563  *- - m2a3_bradley_grn_turret_blown
4564  *- - m2a3_bradley_des_turret
4565  *- - m2a3_bradley_des_turret_blown
4566  *- - leclerc_tank_descamo_turret
4567  *- - leclerc_tank_descamo_turret_blown
4568  *- - leclerc_tank_camo_turret
4569  *- - leclerc_tank_camo_turret_blown
4570  *<
4571  *- - Added Motions to Soldier and Soldier2 characters:
4572  *>
4573  *- - stand_ready_8th_turn_left
4574  *- - stand_ready_8th_turn_right
4575  *- - stand_ready_qtr_turn_left
4576  *- - stand_ready_qtr_turn_right
4577  *- - stand_aim_extreme
4578  *- - kneel_aim_extreme
4579  *- - walk_aim
4580  *- - walk_aim_back
4581  *<
4582  *4 Version 7.0.0
4583  **
4584  *- - New character types:
4585  *>
4586  *- - chem_bio_pedestrian
4587  *- - fdc_chock_and_chains
4588  *- - fdc_fuelman
4589  *- - fdc_grounding
4590  *- - fdc_pallet
4591  *- - fdc_pedestrian
4592  *- - firefighter
4593  *- - fireman_silver
4594  *- - vehicle_technical
4595  *- - vehicle_turret
4596  *- - vehicle_wheels
4597  *<
4598  *4 Version 6.1.2
4599  **
4600  *- - Vehicles and props now have more accurate bounding volumes.
4601  *- - Fixed problem with config file appearance syntax. The
4602  *- item "shapeset:shape" format caused a crash; it now works
4603  *- again.
4604  *- - Replaced default scene object
4605  *- (sets/default_stage/default_stage.flt) with new default
4606  *- (sets/default_stage7/flt/default_stage7.flt). The new
4607  *- default_stage7.flt scene object has a number of different
4608  *- areas in which example scenarios can be placed.
4609  **
4610  *4 Version 6.1.1
4611  **
4612  *- - Added new appearance "invisible_human"; Using this appearance
4613  *- for a human character will remove all geometry from the
4614  *- character, effectively making it invisible.
4615  **
4616  *4 Version 6.1.0
4617  **
4618  *- - Added ability to specify in config files how long a null
4619  *- transition should take, and which blend function it should use.
4620  **
4621  *4 Version 6.0.2
4622  **
4623  *- - Modified stroll motions of female_pedestrian character to move
4624  *- hands further away from body.
4625  *- - Fixed some facing issues for soldier-type characters in transition
4626  *- motions between stand_aim and kneel_aim actions.
4627  **
4628  *4 Version 6.0.1
4629  **
4630  *- - Added particle_puff.rgba to list of effects textures.
4631  *- - Fixed the standing hip height of actor greg. It had been
4632  *- mistakenly changed to match that of actor bill. This caused
4633  *- problems for motion scaling for some actor / appearance
4634  *- combinations. (PR 3029)
4635  **
4636  *4 Version 6.0.0
4637  **
4638  *- - Initial 6.0 DI-Guy Data release.
4639  **
4640  *4 Version 5.3.5
4641  **
4642  *- - Removed one unused level of Motion LODs from data loaders
4643  *- config entries. The removed LOD 6 always had 0 variables in
4644  *- it, which wasn't useful for anything.
4645  *- This change requires use of DI-Guy Applications 5.3.5.
4646  **
4647  *4 Version 5.3.2
4648  **
4649  *- - Changed format of Motion Texture (motex) entries in DI-Guy
4650  *- config files. The new format gives motion textures their
4651  *- own config entry keyword, separate from motion arcs. This
4652  *- allows DI-Guy to know exactly which motions are going to be
4653  *- used as motion textures. Custom motion textures using the
4654  *- old format need to be updated.
4655  *- - Changed format of gesture entries in DI-Guy config files.
4656  *- Custom gestures using the old format need to be updated.
4657  **
4658  *4 Version 5.3.1
4659  **
4660  *- - Fixed problem with airport_crowd character selecting wrong
4661  *- action for default moving action.
4662  *- - Added sergeant2 character, which is similar to the sergeant
4663  *- character but better deals with transitions between actions.
4664  *- - Added fped_mother2 character, which is similar to the fped_mother
4665  *- character but better deals with transitions between actions.
4666  **
4667  *4 Version 5.2.2
4668  **
4669  *- - Running motion has been improved for the following characters:
4670  *- afghan_fighter, cbd, soldier, soldier2, soldier_precise, soldier_qk.
4671  *- Scenarios from previous revisions using these motions may behave
4672  *- slightly differently.
4673  **
4674  */