
This file was automatically generated from diguy_changes_dox.h. Do not edit this file directly; the changes will be lost.Contents:
\page changelog DI-Guy Changes and Version History
\tableofcontents\section Version125Data DI-Guy Data History
For an overview of data changes please see release notes:
\section Version125 DI-Guy Version 12.5
\subsection v125diguyAPI DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
\subsubsection v1251api Version 12.5.1
- Fixed bug where customer sourced dds files failed to load because we assumed they were lz4'ed.
- Fixed bug where files with capitalized extensions eg "FLT" failed to load.
- Fixed bug where invalid xrefs caused parent bounding boxes to fail to register as possibly valid.
- Fixed hard crash when drawing empty octtree.
- Fixed matrix state glitch when drawing octtree and scene object bounds
- Fixed path planning bug in funnel code when far above the z origin.
- Fixed bug where browsing for a new scene object file name didn't force octtree recreation.
- Fixed logic bug in check visibility code.
- Fixed bug where changing appearances could cause single frame muzzle flashes and loss of character skinning matrices.
- Fixed bug where flt files were unable to have their material edited by the character viewer
- Fixed bug where changing character type caused all action beads to collapse on a path.
- Added additional guide example showing differences between similar and dissimilar character types.
- Fixed bug in built-in OpenGL renderer where fixed function mode didn't properly bind textures. Fixes textureless segmented characters rendering in Motion Editor.
- Fixed joystick not properly loading in I-Guy mode.
- Fixed ray testing against scaled scene objects.
- Fixed off by one error in link combo in character viewer.
- Fixed bug in Lua debugger. "Step over" and "Step out" buttons were not working correctly
- General improvements to code that tests get_enabled() and get_dead() on a character, the code will now also test the character's t_out compared to current time
- Added diguyAgentParams:set_influence_box_enabled() (and get)
- Fixed bug with ground clamping on large scenarios.
- Fixed performance issue with receiving props over the network.
- Improved shadow pass rendering performance.
- Shader cleanup.
- Changed Graphics API shader samples to default point light #define to off.
- Fixed crash when executing gesture that wasn't made for a character.
- Fixed crash when loading degenerate flt file xrefs.
- Improved memory use when decompressing many dds files.
- diguyCharacter::set_orientation() now checks if the character has a vehicle controller and if so, it now allows the caller to hard-set the vehicle's orientation. Previously, only the vehicle controller determined this.
- diguyCharacter::find_path() now checks if the character_type contains the substring 'vehicle' and if so, the path produced will be wide enough to allow the character to pass, based upon character's bounding-box's width.
- Added a number of try/catch blocks to deal with running out of memory while loading extremely large scenarios.
- Added code/UI to allow DI-Guy Scenario to unload textures when not used for a long time. Off by default.
- Added a number of experimental diguyApp memory management functions:
\subsubsection v1250api Version 12.5.0
CRITICAL api changes
float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z);
- C++ callback:
float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z, int * valid);
- Graphics API
New Features
- bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices must be set to 0 if you aren't planning on upgrading shaders to use 4x3 matrices.
- As a performance optimization we are no longer transposing our internal matrix representation in C++ before sending to OpenGL. 4x4 matrix bind should get updated to
glUniformMatrix4fv(m_bind_location_ufrm_link_matrices, // uniform var location num_mats, // number of matrices !get_transposed_matrix_data(), // whether to transpose matrix mat_data); // pointer to matrix data
- New adaptive guide allowing characters to fix dead reckoning errors with appropriate step and strafe motions. Now the default in the networking system as well as featured in the guide example.
- New texture variation system allowing for infinite variations on next-gen characters. See diguyCharacter::set_use_texture_variations().
- Next-gen characters now have a number of multiple available head appearances.
- Motion engine should now be fully multi-threaded, thread control api is part of diguyApp.
- New C++ documentation system, utilizing doxygen.
- Fixed matrix update issues with motion lod system and skinned characters, motion lod system can be used again with them, same issues had been happening with segmented characters as well. We recommend using multi-threaded pipeline instead of motion lods at this point.
- New ground clamp option 'g' - approximation based on ground clamping vehicle bounds
- Scene objects can now be collada DAEs.
- Added support for bump maps on scene objects.
- New multi-threaded asynchronous texture loader, controllable via scenario UI and diguyCharacter::set_texture_load_behavior() and diguySceneObject::set_texture_load_behavior()
- Collision Infrastructure Improvements:
- Improved performance of ray tests with scenes with many props.
- Scene Object spatial partitioning system has been overhauled allowing scene objects to be repositioned without recreating the octtree.
- Performance improvement for addingdeletingtransforming scene objects.
- Octtree memory usage has been reduced by 10%.
- Octtree is now available for end users who's objects are not flt files, see scene_object_mesh programming example.
- New Scene Object collision control API functions:
- diguyScenario::create_user_defined_scene_object()
- diguySceneObject::add_vertex_to_user_defined()
- diguySceneObject::add_triangle_to_user_defined()
- diguySceneObject::add_vertex_array_to_user_defined();
- diguySceneObject::add_triangle_array_to_user_defined()
- diguySceneObject::add_triangle_to_user_defined();
- diguySceneObject::build_user_defined();
- New API functions:
- diguyCharacter::get_facefx_node_value()
- diguyCharacter::get_max_shader_quality_level()
- diguyCharacter::get_texture_load_behavior()
- diguyCharacter::get_use_texture_variations()
- diguyCharacter::set_max_shader_quality_level()
- diguyCharacter::set_texture_load_behavior()
- diguyCharacter::set_use_texture_variations()
- diguyImpact::get_impact_velocity(float* x, float* y, float* z)
- diguyImpact::get_is_from_net_detonation()
- diguyImpact::get_DIS_munition_septet_value(int septet_index)
- diguyImpact::get_DIS_site()
- diguyImpact::get_DIS_host()
- diguyImpact::get_DIS_event_number()
- diguyImpact::get_DIS_munition_number()
- diguyImpact::get_DIS_detonation_result()
- diguyImpact::get_DIS_burst_warhead_type()
- diguyImpact::get_DIS_burst_fuze()
- diguyImpact::get_DIS_burst_quantity()
- diguyImpact::get_DIS_burst_rate()
- diguyScenario::get_character_type_from_appearance();
- diguyScenario::get_num_character_types_with_appearance()
- diguyScenario::get_weapon_fire_effects_enabled()
- diguyScenario::set_default_intersection_function()
- diguyScenario::set_intersection_function()
- diguyScenario::set_particle_module_disabled()
- diguyScenario::set_weapon_fire_effects_enabled()
- diguySceneObject::get_max_shader_quality_level()
- diguySceneObject::get_texture_load_behavior()
- diguySceneObject::set_max_shader_quality_level()
- diguySceneObject::set_texture_load_behavior()
- diguy_ogl_apply_active_lights();
- Upgraded lua/C++ binding library. Should greatly improve the readablity of error warnings when lua improperly calls C++.
- diguyCharacter::get_ai_state_string() signature has changed to have flags for optionally including callstack info.
- diguyCharacter::is_within_distance_n_of_member_of_group() factors in if a character is enabled.
- Fixes to the bead constraints system (and user interface) renamed beads should keep the script and decision constraints attached to them.
- Fixed bugs where script and decision beads attached to the end of paths and stop signs didn't always trigger, or triggered later then might be expected. This might introduce slight timing changes to existing scenarios.
- Characters are now sorted before drawing, and depending on the rendering pass drawn front to back or back to front.
- Fixed bug in diguyCharacter::force_partial_path() when a target action bead is specified.
- Fixed crash in diguyScenario::preload_appearance() when a non-existant appearance is specified.
- diguyScenario::preload_appearance() should now preload textures for appearances that are based on material swaps.
- References to aim algorithm 7 have been removed.
- Deprecated Functions Removed:
- diguyApp::create_load_manager() replaced with diguyScenario::create_load_manager()
- diguyApp::get_load_manager() replaced with diguyScenario::get_character_load_manager()
- diguyApp::get_load_manager() replaced with diguyScenario::get_character_load_manager()->set_enabled(0)
- diguyCharacter::set_max_impact_hits() replaced with diguyCharacter::set_weapon_max_impacts()
- diguyCharacter::get_paused() replaced with diguyCharacter::get_is_network_paused()
- diguyCharacter::get_visible() replaced with diguyCharacter::get_is_drawn()
- diguyCharacter::set_aim_param_desired_locate_time()
- diguyCharacter::get_aim_param_desired_locate_time()
- diguyCharacter::set_aim_param_seek_tolerance()
- diguyCharacter::get_aim_param_seek_tolerance()
- diguyCharacter::set_aim_interpolation_flag()
- diguyCharacter::get_aim_interpolation_flag()
- diguyCharacter::set_aim_smooth_flag()
- diguyCharacter::get_aim_smooth_flag()
- diguyCharacter::set_aim_divisions()
- diguyCharacter::set_aim_param_time_constant() replaced with set_aim_param_acquire_factor()
- diguyCharacter::get_aim_param_time_constant() replaced with get_aim_param_acquire_factor()
- diguyCharacter::set_aim_param_time_constant2() replaced with set_aim_param_new_aim_duration()
- diguyCharacter::get_aim_param_time_constant2() replaced with get_aim_param_new_aim_duration()
- diguyCharacter::set_aim_param_reset_time_constant() replaced with set_aim_param_new_aim_factor()
- diguyCharacter::get_aim_param_reset_time_constant() replaced with get_aim_param_new_aim_factor()
- Deprecated Callbacks Removed:
- diguyCrowd::CALLBACK_ID_NEW_FOCUS_CHARACTER use diguyCharacter::CALLBACK_ID_AGENT_NEW_FOCUS_CHARACTER
- diguyCrowd::CALLBACK_ID_ATTACKER_OUT_OF_TARGETS use diguyCharacter::CALLBACK_ID_AGENT_ATTACK_OUT_OF_TARGETS
- diguyCrowd::CALLBACK_ID_ATTACKER_NO_VISIBLE_TARGETS use diguyCharacter::CALLBACK_ID_AGENT_ATTACK_NO_VISIBLE_TARGETS
- diguyCrowd::CALLBACK_ID_PURSUED_CHARACTER_REACHED use diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_REACHED
- diguyCrowd::CALLBACK_ID_WANDER_TARGET_REACHED use diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_REACHED
- Fixed bug with T-in/T-out and review data on scene object characters.
- Updated perl header file examples with lua equivalents.
- Character viewer debug shader can now be used on scene objects
- Fixed bug on blinking characters when t-in was not 0.
- Fixed Expressive Faces pop when interacting with gaze code.
- Added the ability to pause the shadow map update and lower the update frequency.
- Added controls for adjusting the shadow map frustum and shadow acne fudge factor.
- Character culling is now based on the base link, not the position link.
- New DI-Guy Author APIs:
\subsection v125digs DI-Guy Scenario
\subsubsection v1250digs Version 12.5.0
- New lighting system triggered by particle effects and weapons fire.
- Improvements to 3d visuals for path editing.
- Merged some subwidgets in character page.
- Improved interactive Face Expression Editing.
- Improved determinism of fast forward, and setting current time via the VCR UI.
- Streamlined performance settings. Crowd Load Manager, Load Manager tabs have been phased out, settings are now located in the performance page.
- Changing camera settings will now force a motion update on all characters.
- Property tree UI's now have slider widgets, easier to change values interactively.
- Labels above character's heads now autoscale and draw z-sorted.
- Right click menu now contains a shortcut to turning on the debug label.
- Right click on log window selection can now go to package selected or Character selected.
- Shader UI includes the ability to edit character variation texture colors.
- Physx library has been rewritten to use Physx 3.2, this is upgraded from version 2.8, Physx installer should no longer be needed.
- Fixed a number of sound looping issues.
\subsection v125DIGuyAI DI-Guy AI
\subsubsection v1250AI Version 12.5.0
- Improved turning motion system, now on by default.
- Variant system now treats the normal variant as an indicator to automatically pick an appropriate variant for the character. Controlled by diguyCharacter::agent_set_auto_variant_selection()
- System will now cycle through appropriate motions randomly.
- LuaCharacter - sleep_ignore_messages avoids resuming the coroutine.
- AI movement callbacks are now queued up and triggered at the end of the multi-threaded update.
- New AI State Inspector - mini lua watch window, activate via right click menu.
- Added diguyCrowdProfile::create_character() short cut for using a profile to create a character.
- Significantly improved speed of collision influence calculation for crowds.
- Crowd profiles have been updated to use new variation system.
- New API functions:
\subsection v125gapi Graphics API Changes
\subsubsection v1251gapi Version 12.5.1
- Added functionality to support color picking intersection testing for scene graph implementations.
- Added sample code demonstrating intersection testing with OpenSceneGraph.
- New API Functions:
\subsubsection v1250gapi Version 12.5.0
- Modified diguyOsgGraphicsMesh::build() to load appearance textures on demand instead of pre-loading all appearance textures.
- Added support for 4x3 skinned matrices, saves 25% of the bandwidth and uniform constants sent per character draw call. Now the default for OpenGL. Configurable via bdiGraphicsInitOgl.use_4x3_shader_matrices and bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices. diguy_graphics_get_osg_defaults() and diguy_graphics_get_dx9_defaults() have been added to make it a bit easier to get the defaults set up.
- Added sample code demonstrating use of 4x3 matrices for transform data.
- Greatly expanded shader techniques API, diguyGraphicsShaderTechnique can now be subclassed and end users can create new shaders on the fly with diguyGraphicsShaderTechnique::find_or_create_shader_variation(). End users can override existing functionality and return alternatively compiled shaders depending on their own criteria, sample code is provided demonstrating conditionally compiling in point light support but only using shader when necessary.
- Fixed matrix transpose mistake in diguyOglGraphicsLink.cpp
- Cleaned up computation of local space camera.
- Removed use of display lists from diguyOglGraphicsMaterial.cpp
- Cleaned up diguyOglGraphicsShaderInstance.cpp to reflect the use of shader techniques.
- Added sample code demonstrating updating lighting state for simple point lights on characters.
- Added sample code demonstrating using #defines to control compilation of various shader features.
- Added support for variation system to sample code, this is shown in diguyOglGraphicsShape and diguyOsgGraphicsShape.
- Added diguyOglGraphicsShaderTechnique demonstrating how to modify built-in shaders and overriding our existing shader LOD system.
- New API Functions:
- diguyGraphicsShaderProgram::get_num_additional_feature_names()
- diguyGraphicsShaderProgram::get_additional_feature_name()
- diguyGraphicsShaderProgram::has_additional_feature()
- diguyGraphicsShaderProgram::get_vertex_shader_filename()
- diguyGraphicsShaderProgram::get_pixel_shader_filename()
- diguyGraphicsShaderProgram::get_transposed_matrix_data()
- diguyGraphicsShaderProgram::load()
- diguyGraphicsShaderProgram::get_use_4x3_shader_matrix_data()
- diguyGraphicsShaderTechnique::get_shader_by_distance()
- diguyGraphicsShaderTechnique::get_program_index_by_distance()
- diguyGraphicsShaderTechnique::get_shadow_pass_shader()
- diguyGraphicsShaderTechnique::find_or_create_shader_variation()
- diguyGraphicsShaderTechnique::pick_shader_program()
- diguyGraphicsShaderTechnique::build();
- diguyGraphicsShaderTechnique::add_additional_shader()
- diguyGraphicsShaderTechnique::get_num_additional_shaders()
- diguyGraphicsShaderTechnique::get_additional_shader_at_index()
- diguyGraphicsShape::get_variation_texture()
- diguyGraphicsShape::get_variation_texture_size()
- diguyGraphicsShape::update_variation_texture()
- Init params: bdiGraphicsInitGraphicsAPI.transpose_shader_matrices
- Init params: bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices
\subsection v12diguynet DI-Guy Networking
\subsubsection v125 Version 12.5
- New API Functions:
- New Custom PDU's ( Note: Functionality currently limited to DIS. )
- DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION replicates variation texture over the network
- DIGUY_CUSTOM_PDU_ID_EXECUTE_GESTURE replicates the diguyCharacter::execute_gesture() call over the network
- DIGUY_CUSTOM_PDU_ID_CHARACTER_SCALE replicates the diguyCharacter::set_scale() value over the network.
- DIGUY_CUSTOM_PDU_ID_SET_CHAR_APPEARANCE Now contains a second optional string for head appearances
\section Version120 DI-Guy Version 12.0
\subsection v12digs DI-Guy Scenario
\subsubsection v1201 Version 12.0.1
- Added visualization option for gaze vectors.
- Restored missing default face expressions and chain settings libraries to new.dss.
- Added display of more callback information to the Event Mapper User Interface.
- Fixed bugs with water shader.
\subsection v12diguyAPI DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
\subsubsection v1203 Version 12.0.3
- Updated network model map for vehicles and also resolved issue with vehicles stuttering on paths.
- Made fire and detonation PDUs use matching event ids. Added velocities to Fire PDUs. M16 velocity is used by default for all weapons but can be overridden in munition config file.
- Fixed DI-Guy Scenario bugs in copy/paste paths, action spreadsheet.
- Fixed minor content bugs involving missing torso on insurgent.
\subsubsection v1202 Version 12.0.2
- Fixed diguyApp::reload_shader_programs() to support the graphics API. See diguyOglGraphicsShaderProgram.cpp for minor change: shaders that are already loaded must be detached on reload.
- Added diguyCharacter::set_shader_lod() and diguyCharacter::get_shader_lod().
- Modified diguyCharacter::set_face_expression() to support a strength multiplier.
- Modified diguyOsgGraphicsMesh::build() to load appearance textures on demand instead of pre-loading all appearance textures.
- Call callbacks with id CALLBACK_ID_SCENE_OBJECT_IMPACT if diguyScenario::trigger_detonation() or diguyCharacter::trigger_detonation_on_character() are called.
- Values in diguy_dis_constants.h now available in scripting.
- Added a number of DIS detonation data values to diguyImpact; e.g., diguyImpact::get_DIS_detonation_result().
\subsubsection v1201 Version 12.0.1
- AI flee code now properly uses feeler callback to pick the longest available flee route when near buildings.
- Fleshed out FaceFX api, fixed a number of after action review issues, added the following functions:
- Updates to FaceFX sample content.
- Added the following functions to help enable advanced shader materials in the graphics api:
- diguyOglGraphicsShaderProgram::bind_uniform_with_location()
- diguyOglGraphicsShaderProgram::bind_uniform_with_location()
- diguyOglGraphicsShaderProgram::get_attrib_bind_location()
- diguyOglGraphicsShaderProgram::get_uniform_bind_location()
- Streamlined shader bind and unbind calls.
- Fixed issue where even with only 1 update thread was used some of the multi-threaded infrastructure was active.
- Added warnings to various add_callback_script functions to warn if the same callback is repeatedly added.
- Update Middle Eastern AI's to avoid perpetual memory growth.
- Changed multi-threading to only use the Qt threading framework when more than one thread is allocated to DI-Guy.
\subsubsection v1200 Version 12.0.0
- In API programs shadow disks are off by default. Now the "set_draw_character_shadow_disks" setting in .dss files will be ignored. To turn shadow disks on or off an explicit call to diguyScenario::set_draw_character_shadow_disks() needs to be made.
- Fixed diguyCharacter::agent_set_current_params_from_profile() so arguments are in proper order. Note: If you have existing calls to agent_set_initial_params_from_profile(), verify that you are getting proper behavior.
- Added the following functions:
- Removed the following experimental functions; should use minds instead:
- diguyCharacter::add_state_machine_instance()
- diguyCharacter::remove_state_machine_instance()
- diguyCharacter::remove_all_state_machine_instances()
- diguyCharacter::find_state_machine_instance()
- diguyScenario::get_num_state_machines()
- diguyScenario::create_state_machine()
- diguyScenario::destroy_state_machine()
- diguyScenario::get_state_machine_at_index()
- diguyScenario::find_state_machine()
- diguyScenario::get_num_state_machine_instances()
- diguyScenario::add_state_machine_instance()
- diguyScenario::remove_state_machine_instance()
- diguyScenario::get_this_state_machine_instance()
- diguyCrowd::all_members_add_state_machine_instance()
- diguyCrowd::all_members_remove_state_machine_instance()
- Removed the following deprecated functions:
- diguyApp::set_student_log_callback()
- diguyApp::student_log_print()
- diguyApp::set_user_query_yes_no_callback()
- diguyApp::user_query_yes_no()
- diguyApp::set_user_query_text_callback()
- diguyApp::set_user_query_item_callback()
- diguyApp::user_query_item()
- diguyApp::set_user_inform_callback()
- diguyApp::user_inform()
\subsection v12DIGuyAI DI-Guy AI
\subsection v12gapi Graphics API Changes
- See the 11-12 transition guide in the SDK user manual for a complete overview of the changes between 11 and 12
\section v11diguy DI-Guy Version 11
\subsection v11diguyapi DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
\subsubsection v1160 Version 11.6.0
- Added diguyRegionPaintbrushMode enum to diguy_constants.h.
- Fixed problem with agent_set_current_params_from_profile() use in decision clauses.
- Made the following functions callable from decisions:
- Added the following functions:
- diguyApp::set_region_paintbrush_mode()
- diguyApp::get_region_paintbrush_mode()
- diguyApp::set_munition_type_DIS_impact_septet()
- diguyApp::set_munition_type_DIS_tracer_septet()
- diguyCharacter::trigger_detonation_on_character()
- diguyCharacter::get_vehicle_body_orientation()
- diguyScenario::trigger_decision_delayed()
- diguyScenario::trigger_script_delayed()
- diguyScenario::get_altitude_from_point()
- diguyScenario::destroy_region()
- diguyScenario::save()
- diguyScenario::save_as()
- diguyScenario::get_filename()
- diguyScenario::get_filename_without_directory()
- diguyScenario::get_unsaved()
- diguyScenario::set_unsaved(int unsaved)
- diguyRegion::get_random_factor()
- Remove unused playback mode enum DIGUY_SCENARIO_PLAYBACK_MODE_RECORD.
- Made changes to some scenario call operations. Previously the diguyScenario::post_draw() call had no effect; it now allows various post draw type operations to be optionally invoked. Previously these operations were automatically done at the end of diguyScenario::draw_pass2().
- Added the following functions:
\subsection gapi Graphics API Changes
\subsubsection v1160 Version 11.6.0
- Moved the following functions from diguyGraphicsShaderInstance to diguyGraphicsShaderProgram:
- diguyGraphicsShaderInstance::bind_link_matrices()
- diguyGraphicsShaderInstance::bind_color_array()
Your Graphics API subclasses will need to be updated. bind_link_matrices() will now potentially be called multiple times per character depending on its complexity. For example, animated faces from facefx will cause multiple matrix binds.
The signature for diguyGraphicsTexture::bind_now() has changed to diguyGraphicsTexture::bind_now(diguyTextureMapType texture_type) to support multi-texturing. Your Graphics API subclasses need to be updated.
\subsubsection v110x Version 11.0.x
- Added ability to hear sounds when history is enabled and time is rewound to a point midway in the sound. Note that the function diguyScenario::set_history_max_sound_instances() lets users set how many sound instances to be remembered; default is 100.
- Updated where DI-Guy looks for its license file. It is looked for in this order:
- file specified by the environment variable DIGUY_LICENSE_FILE
- file specified by the environment variable BDILM_LICENSE_FILE
- file specified by the environment variable LM_LICENSE_FILE
- license.dat in DI-Guy installation flexlm subdir
- Turned off character shadow disks by default when using SDK; they're still on by default in DI-Guy Scenario.
\subsubsection v1104 Version 11.0.4
- Resolved issues with wheeled vehicles on paths, force_action, and resume_path
- Problem with vehicles not resuming their path and remaining motionless after force_action("still")
- Problem with vehicles resuming path and wheels not spinning
- Problems with position discontinuities when force_action("still") is applied to a vehicle on a path
\subsubsection v1102 Version 11.0.2
- Updated where DI-Guy looks for its license file. It is looked for in this order:
- file specified by the environment variable DIGUY_LICENSE_FILE
- file specified by the environment variable BDILM_LICENSE_FILE
- file specified by the environment variable LM_LICENSE_FILE
- license.dat in DI-Guy installation flexlm subdir
- Turned off character shadow disks by default when using SDK; they're still on by default in DI-Guy Scenario.
- Removed use of glCallList in materials for the Graphics API sample code and the internal OpenGL renderer. Call lists are deprecated and have more overhead then just calling material functions directly.
- Added early out sample code for materials to graphics API; end users should now have the tools to skip unnecessary material binds.
- Added a new geode/mesh merge as part of the bdg creation; should cut number of meshes and draw calls in half for most of the non- skinned characters.
- Added new draw stats profiler to improve feedback on pipeline bottlenecks. Profiler now available in Character Viewer. (Press Ctrl-P a few times.)
- Added linear draw pipeline init argument.
- Updated Benchmark sample program with new options and statistics.
- Fixed bug where get link positions would not take character scale into effect.
- Added the following functions to DI-Guy Graphics API:
- diguyGraphicsLink::get_link_transformation_matrix()
- diguyGraphicsLink::begin_character_draw()
- diguyGraphicsLink::end_character_draw()
- diguyGraphicsLink::get_use_linear_traversal_draw()
- diguyGraphicsLink::set_use_linear_traversal_draw()
- diguyGraphicsTexture::get_last_bound_texture()
- diguyGraphicsTexture::clear_last_bound_texture()
- Added sample code to the OpenGL graphics API reference implementation demonstrating the use of the link local transformation matrix to simplify the number of OpenGL function made.
- Added sample code to the OpenGL graphics API reference implementation to demonstrate using diguyGraphicsTexture::get_last_bound_texture() to minimize state changes.
- Added the following functions to DI-Guy OpenGL rendering API:
\subsubsection v1101 Version 11.0.1
- Added the following functions to DI-Guy Graphics API:
- Added sample code to the OpenGL Graphics API reference implementation to demonstrate using diguyGraphicsMaterial::get_last_bound_material() to minimize state changes.
- Fixed binary geometry serialization bug on x64 machines.
- Added diguyScenario::is_valid_character_group_pointer()
\subsubsection v1100 Version 11.0.0
- Removed deprecated functions:
- diguyChainSimulation::set_connection_character()
- New APIs:
- diguyFormation
- diguyVehicleController
- diguyViewButtonPanel (DI-Guy Scenario only)
\subsubsection v1051 Version 10.5.1
- Removed deprecated functions:
- diguyScenario::set_tin()
- diguyScenario::get_tin()
- diguyScenario::trigger_script_event()
- diguyScenario::add_custom_appearance()
- diguyScenario::add_custom_appearance_based_on_existing_appearance()
- diguyScenario::add_named_callback()
- diguyScenario::remove_named_callback()
- diguyScenario::call_named_callback()
- diguyScenario::set_iguy_character()
\subsubsection v1017 Version 10.1.7
- Added the following functions:
- diguyCharacter::set_max_unprocessed_impacts()
- diguyCharacter::get_max_unprocessed_impacts()
- diguyScenario::set_max_unprocessed_impacts()
- diguyScenario::get_max_unprocessed_impacts()
- diguyCharacter::reset_shader_program_to_default()
- diguySceneObject::reset_shader_program_to_default()
\subsubsection v1016 Version 10.1.6
- Added functions to diguyViewCamera and diguyViewCameraSettings:
- Added flag to diguyScenario that explicitly enables or disables tout ("T Out") for the scenario, instead of using the arbitrary value of 60000 seconds to mean tout should have no effect.
- Added flag similar to above that enables or disables character tout.
- Added the following functions:
- diguyCharacter::get_muzzle_link()
- diguyCharacter::get_muzzle_offset()
- diguyCharacter::stop_appearance_effect()
- diguyCharacter::set_weapon_tracers_enabled()
- diguyCharacter::get_weapon_tracers_enabled()
- diguyCharacter::set_weapon_shell_eject_enabled()
- diguyCharacter::get_weapon_shell_eject_enabled()
- diguyCharacter::set_weapon_smoke_enabled()
- diguyCharacter::get_weapon_smoke_enabled()
\subsubsection v1014 Version 10.1.4
- Added diguyCharacter::CALLBACK_ID_AGENT_MIND_CURRENT_STATE_CHANGED.
- Added the following functions for getting and setting mind data.
- Added the following functions for setting agent params, and other agent behavior.
\subsubsection v1013 Version 10.1.3
- Added the following blink functions to diguyCharacter.
- diguyCharacter::set_automatic_blink_duration_in()
- diguyCharacter::get_automatic_blink_duration_in()
- diguyCharacter::set_automatic_blink_duration_out()
- diguyCharacter::get_automatic_blink_duration_out()
- diguyCharacter::set_automatic_blink_target_in()
- diguyCharacter::get_automatic_blink_target_in()
- diguyCharacter::set_automatic_blink_target_out()
- diguyCharacter::get_automatic_blink_target_out()
- diguyCharacter::set_automatic_blinks_enabled()
- diguyCharacter::get_automatic_blinks_enabled()
- Added the following gesture functions to diguyCharacter.
- Added the following misc functions to diguyCharacter.
\subsubsection v1011 Version 10.1.1
- Added the following functions to diguyCharacter.
\subsubsection v1010 Version 10.1.0
- Added the following functions for improved LOD handling.
- Added the following functions to diguyCharacter.
\subsection v11digs DI-Guy Scenario
\subsubsection v1151 Version 11.5.1
- Fixed intersection test issue with scene objects
- Fixed bogus fog changed notification
- Improved sound history recording and playback
\subsubsection v1101 Version 11.0.1
- Fixed crash with using qt_invoke without lqt loaded.
\subsection v11ME DI-Guy Motion Editor
\subsubsection v1101ME Version 11.0.1
- Fixed Motion Arc extended info handling.
- Fixed issue with the poser not being available on some skinned character links.
\subsubsection v1100 Version 11.0.0
- Initial support for handling skinned characters.
\subsection v11diguycv DI-Guy Character Viewer
\subsubsection v11 Version 11
- Added Shadow and normal previewer.
- Added LOD picker.
\subsection v11vpdiguy DI-Guy for Vega Prime
\subsubsection v1151 Version 11.5.1
- Initial support for vegaPrime 5.x.
- fixed crash on exit using some modules.
- Changed setScriptPerlEnable default from true to false.
\subsubsection v1101 Version 11.0.1
- Initial support for vegaPrime 4.x.
\subsection v11diguynet DI-Guy Networking
\subsubsection v1101 Version 11.0.1
- Fixed a number of bugs with transmitting gazing and aiming behavior over network.
- Improvements to log messages.
\section v10apps DI-Guy Applications Version 10
\subsection v10api DI-Guy API 10
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
\subsubsection v10010 Version 10.0.10
- Impact processing on characters now considers mind wakeup callbacks when deciding how the impact affects the character, in addition to the straight callbacks that are considered now.
- Added functions:
- Added the following diguyCharacter callbacks that report when an agent is being push around by other characters of vehicles.
- diguyCharacter::CALLBACK_ID_AGENT_NON_ZERO_REPULSION
- diguyCharacter::CALLBACK_ID_AGENT_ZERO_REPULSION
\subsubsection v1008 Version 10.0.8
- Added merging of regions during scenario merge.
- Fixed merging of crowds to include merging of crowd behavior regions.
- Added diguyScenario::CALLBACK_ID_PLAYBACK_MODE_CHANGED.
- Added diguy_set_diguy_base_dir_path() function.
- Added remove_on_scenario_load argument to most add_default_*_callback() functions; allows for "permanent" callbacks to be added that persist through scenario loads. The default is
- meaning remove the callback when a scenario is loaded.
\subsubsection v1006 Version 10.0.6
- Fixed visual issues of skinned appearances when the character is scaled or is using a motion LOD greater than 1.
- Fixed issue where default scenario callbacks were not being called.
- Added functions:
\subsubsection v1005 Version 10.0.5
- Fixed hard crashes with on-screen labels outside of the ogl pipeline.
- Fixed issues with octtree creation and visibility checks.
- Fix for vc8 mdd examples using lua.
- Added missing header file for DI-Guy Bench Marking example.
- Added infrastructure for hooking up callbacks so visibility tests can work in the SDK. See the following functions:
\subsubsection v1004 Version 10.0.4
- Fixed bug where green boxes were appearing at the origin in some DI-Guy Graphics API examples.
- Characters with skinned appearances specified will switch to their default unskinned appearance on platforms without skinning support.
- Added diguyScenario::get_altitude_function() and diguyScenario::set_altitude_function() mainly needed for force local path via the API.
- Added bdiGraphicsInitGraphicsAPI::characters_have_world_space_triangle_query and bdiGraphicsInitGraphicsAPI::scene_objects_have_world_space_triangle_query function allow octtree to be built from internally loaded scene objects. Note: this functionality requires that diguyGraphicsMesh::free_loader_memory() not be called.
\subsubsection v1003 Version 10.0.3
- Changed diguyScenario::set_default_lod_ranges() to accept "all" for the character type. Passing "all" will set the default LOD ranges for all character types, not just one specific one.
- Added the following functions to DI-Guy Graphics API for more flexibility in handling graphics LODs.
\subsubsection v1001 Version 10.0.1
- Fixed bugs with intersecting characters added to the octtree.
- Fixed bugs where custom directory env variable was being ignored when looking up lua scripts.
- Added functions diguyCharacter::create_complete_pose_override() and diguyCharacter::destroy_complete_pose_override().
- Fixed bug where OGL skinned characters were missing some polygons; please see graphics API samples if you are seeing this bug. Your VBO class may need slight changes.
\subsubsection v1000 Version 10.0.0
- Added support for character "type maps". Type maps add extra data to characters that make it easier to decide which character type and appearance best match the desired role for characters to be added to the scenario. See the class diguyCharacterTypeMap, and information about the "Appearance Wizard" for DI-Guy Scenario.
- Added the following functions to diguyCharacter API:
- diguyCharacter::get_nearest_character_type_map()
- The DI-Guy Graphics API example directories osg_12_examples and osg_22_examples have been removed. They have been replaced with osg_2_examples.
- The osg_2_examples reference implementation now has support for skinned appearances. It uses the DI-Guy built-in geometry loader instead of OSG's, as DI-Guy has some specific requirements for loaded skinned geometry.
- diguyScenario::add_callback() and diguyScenario::add_callback_script() have been modified with an addition argument that specifies whether the callback should remain after a new scenario has been loaded. The previous behavior was for the callback to not be removed, which could cause problems. Users will now need to explicitly request that the callback remain.
\subsubsection v915 Version 9.1.5
- The ability to show bar graph information has been added to the diguyViewLabel class. See diguyViewLabel::enable_bar_graph().
- Added the following functions to diguyCharacter API:
- Added the following functions to DI-Guy Graphics API:
- diguyGraphicsLink::post_build()
- diguyGraphicsLink::set_shader_instance()
- diguyGraphicsMaterial::get_is_unlit()
- Added new DI-Guy Graphics API classes: diguyGraphicsShaderProgram and diguyGraphicsShaderInstance.
- Added time_to_live to network.cfg file.
- Removed the following experimental functions:
- diguyScenario::load_shader()
- diguyScenario::reload_shader_programs()
- Added new DI-Guy functions to allow SDK users to intercept fire requests and plug in their own intersection test; see diguyScenario::set_fire_weapon_intersection_function() for more info.
\subsubsection v914 Version 9.1.4
- Added the following functions to diguyCharacter API:
- The way that weapon sounds are handled has been changed.
- The following functions have been deprecated:
- The above deprecated functions are replaced by:
- Added the following diguyCharacter callbacks to make it easier to tie events to editing characters in the UI.
- diguyCharacter::CALLBACK_ID_UI_MOUSE_DOWN
- diguyCharacter::CALLBACK_ID_UI_MOUSE_UP
- Added diguyViewPainter class that allows the drawing of lines and
other primitives in DI-Guy Scenario 3D view windows. For access to this object call diguyApp::get_painter().
- Added diguyScenario::CALLBACK_ID_POST_DRAW, allowing the scripting engine a chance to draw in the 3D view in DI-Guy Scenario. Characters with minds are also given the opportunity to draw; see the default luaCharacter script.
\subsubsection v912 Version 9.1.2
- Added diguyImpact::get_impact_type() and diguyImpact::get_impact_type_string() which provide information about how the impact was generated. New accessors for querying normal information are also available.
- Added new Lua Scripting module:
- The Lua module has all the functionality of the current Perl module.
- Lua is popular in the game development industry for it's speed and efficiency. Lua script execution is much less performance intensive than a similar Perl script.
- Lua is the basis for the new DI-Guy AI Mind framework.
- Scripts are no longer limited in length (was 32K).
- Deprecated functions:
- diguyCharacter::get_base_link() replaced with diguyCharacter::get_position_link()
- Added the following diguyCharacter callbacks to make it easier to tie events to editing characters in the UI.
- diguyCharacter::CALLBACK_ID_UI_PRE_TRANSLATION
- diguyCharacter::CALLBACK_ID_UI_POST_TRANSLATION
\subsubsection v911 Version 9.1.1
- Added the following function to diguyCharacter API:
- Added the following functions to diguyCharacter API for getting and setting character variables with a compact function name:
- Sound Module Improvements:
- Adding looping flag to diguyCharacter::play_3d_sound() and diguyCharacter::play_sound() allows sounds to repeat until explicitly stopped with diguyCharacter::stop_sound() or diguyCharacter::stop_all_sounds()
- 3D Sounds should now Doppler shift depending on the velocity of the emitter and listener.
- More a number of diguySound functions have been added to allow querying a sounds properties.
- Fixed problem with the OpenFlight geometry loader. Light point records were causing the loader to fail.
- Added two new diguyCharacter callback ids:
- diguyCharacter::CALLBACK_ID_POST_CREATE_GEOMETRY
- diguyCharacter::CALLBACK_ID_PRE_DESTROY_GEOMETRY
- Added new plugin function, post_reset(). Allows plugins to do reset operations at the end of a scenario reset, instead of only at the beginning.
\subsubsection v910 Version 9.1.0
- Added the following functions to diguyCharacter API:
\subsection v10digs DI-Guy Scenario 10
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
\subsubsection v1002 Version 10.0.2
- Fixed the appearance of state functions in the code browser.
\subsubsection v1000 Version 10.0.0
- Added the "Appearance Wizard" to places where character type and appearance can be selected. The Appearance Wizard provides an interactive UI for selecting desired attributes of the character to be created, such as category, age, sex, race, military branch, carried object, etc.
- Character types and appearances are now marked as "Recommended" and "Not Recommended". Many older character types and appearances have been nominally replaced with newer versions which should be preferred over the older ones. By default DI-Guy Scenario will show only the preferred ones, but can be changed to show all of them. Scenarios that currently use now not-recommended character types and appearances will still work as before.
\subsubsection v913 Version 9.1.3
- Improvements to autocomplete, including DIGUY_* constants as well as dynamic analysis of lua objects.
\subsubsection v912 Version 9.1.2
- Added new documentation viewer, accessible under the help menu.
\subsubsection v911 Version 9.1.1
- When selecting which agents' parameters are going to be edited, multi-select can now be used.
- Replaced Scenario Elements, Character Elements, View Settings, Event Handlers, and DI-Guy AI Elements windows with a single revamped Scenario Elements window that has collapsible tab groups.
- Removed experimental, incomplete "Merge Blitz" capability.
\subsubsection v910 Version 9.1.0
- Script editing now uses an editing component based on Scintilla, this provides syntax highlighting/coloring, line numbering, basic auto-complete, and code folding. Currently supported control keys:
- Ctrl '{' or Ctrl '}' - jump to matching brace
- Ctrl f - find dialog
- F3 - find again
- Added a number of ui improvements:
- Beads now display the time they occur instead of just an index.
- The Action Spreadsheet is available in the character elements page.
- A number of element types can now be sorted in their selector view at the top of the page. Most widgets can be sorted by index and name. Some add the ability to be sorted by time, appearance, character type, etc.
- The path page has a sorted list of all beads on a path.
\subsection v10diguyAI DI-Guy AI 10
\subsubsection v1004 Version 10.0.4
- Added new AI_Populate SDK example; demonstrates populating the environment with lua minds based Agents via the SDK.
\subsubsection v1003 Version 10.0.3
- Improved behavior of paintbrush far from origin and at different heights.
- Added bright red log/package indicator on lua syntax errors.
- Improved behavior of code browser recompile button, pops up log window on syntax errors.
\subsubsection v1002 Version 10.0.2
- Fixed hard crash in path planner when pursuing with no behavior region set. - Fixed a number of bugs with agents colliding with props. - Fixed bug with crowd awareness code far from the origin.
\subsubsection v914 Version 9.1.4
- Significant improvements to A* path planning performance, 10x speed up in most cases.
\subsubsection v913 Version 9.1.3
- Improvements to path planning API, added the following functions to diguyCharacter API for navigating the world
\subsubsection v912 Version 9.1.2
- New Lua based mind framework:
- New Lua Mind Editor in UI
- The crowd/people blitzers can now create characters with minds.
- Added the following functions to diguyCharacter API:
- Added diguyCharacter::CALLBACK_ID_AGENT_VEHICLE_COLLISION; this callback is triggered on a vehicle when a vehicle hits an agent.
- Added diguyRegion, an API wrapper for painted meshes. Retrievable with the function diguyScenario::find_region().
- Vehicle bounds are now smoothed when the vehicle changes speed.
- Added simple gazing model into agent focus behavior.
- Added Idle Behavior, agent will stop moving and be responsive to focus and simple requests but won't spontaneously move.
- Added diguyCharacter::agent_begin_behavior() allows starting a behavior by name. Typically some of the more elaborate functions are preferred, but this can be useful for idling and such.
- Changes to None behavior. Agent will attempt to do less and clear out some transient state to make the behavior of the behavior more consistent.
\subsubsection v911 Version 9.1.1
- The following diguyCrowd callbacks are deprecated, and have been replaced with diguyCharacter equivalents.
- diguyCrowd::CALLBACK_ID_NEW_FOCUS_CHARACTER
- diguyCrowd::CALLBACK_ID_ATTACKER_NO_VISIBLE_TARGETS
- diguyCrowd::CALLBACK_ID_ATTACKER_OUT_OF_TARGETS
- diguyCrowd::CALLBACK_ID_PURSUED_CHARACTER_REACHED
- diguyCrowd::CALLBACK_ID_WANDER_TARGET_REACHED
- diguyCrowd::agents_flee_crowd()
- Added the following diguyCharacter callbacks to make it easier to detect important events in agent behavior.
- diguyCharacter::CALLBACK_ID_AGENT_NEW_BEHAVIOR
- diguyCharacter::CALLBACK_ID_AGENT_NEW_FOCUS_CHARACTER
- diguyCharacter::CALLBACK_ID_AGENT_ATTACK_OUT_OF_TARGETS
- diguyCharacter::CALLBACK_ID_AGENT_ATTACK_NO_VISIBLE_TARGETS
- diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_REACHED
- diguyCharacter::CALLBACK_ID_AGENT_PURSUE_TARGET_LOST
- diguyCharacter::CALLBACK_ID_AGENT_MINGLE_TARGET_REACHED
- diguyCharacter::CALLBACK_ID_AGENT_MINGLE_TARGET_LOST
- diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_REACHED
- diguyCharacter::CALLBACK_ID_AGENT_WANDER_TARGET_LOST
- diguyCharacter::CALLBACK_ID_AGENT_FLEE_AREA_LEFT
- diguyCharacter::CALLBACK_ID_AGENT_FLEE_AREA_ENTERED
- diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_WAYPOINT_REACHED
- diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_FORWARD_DEST_REACHED
- diguyCharacter::CALLBACK_ID_AGENT_TRAVEL_BACKWARD_DEST_REACHED
- DI-Guy AI agents can now flee from multiple characters, groups, and locations instead of just one.
- Functions diguyCharacter::agent_set_current_params_from_profile() and diguyCrowd::set_current_params_from_profile() have a new argument, retain_focus_objects. Setting this to 1 allows the specified to be loaded without changing the agents' current focus character or group.
\subsection v10ME DI-Guy Motion Editor
- Added support for filtering the action table editor, eases editing of large action tables.
- Added code to reverse motions.
- Grabbing a pose on a Linear Offset should interpolate properly.
- Motion arc list and action table motion list are now in sync.
\subsection v10digcv DI-Guy Character Viewer 10
\subsubsection v1000 Version 10.0.0
- Added "Appearance Wizard" button to make selecting an appropriate character type and appearance easier.
\subsection v10vpdiguy DI-Guy for Vega Prime 10
\subsubsection v1004 Version 10.0.4
- Initial release compiling with vp 3.0.
\subsubsection v912 Version 9.1.2
- Added support for turning on DI-Guy AI from vpDiguySettings UI. DI-Guy AI functionality is limited inside of Vega Prime
- Added support for turning on Lua scripting module from the the UI.
- Fixed long standing issue with character's having link offsets applied multiple times. (Also in 9.0.4)
\subsection v10diguynet DI-Guy Networking
\subsubsection v916 Version 9.1.6
- Fire PDUs position should now be the muzzle of the gun, the entity type should match the munition type fired, and the velocity should be the normalized direction of the muzzle.
- Fixed issue where agents on non-flat terrains were sending erroneous z values.
ALL RIGHTS RESERVED.
These coded instructions, statements, and computer programs contain unpublished proprietary information of Boston Dynamics and are protected by Copyright Laws of the United States. They may not be used, duplicated, or disclosed in any form, in whole or in part, without the prior written consent from Boston Dynamics.
RESTRICTED RIGHTS LEGEND
Use, duplication, or disclosure by the government is subject to restrictions as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Sofware clause at DFARS 252.227-7013 and/or in similar or successor clauses in the FAR, or the DOD or NASA FAR Supplement, or to subparagraphs (c)(1) and (c)(2) of the Commercial Computer Software--Restricted Rights at 48 CFR 52.227-19, as applicable. Unpublished-rights reserved under the Copyright Laws of the United States.
Contractor/Manufacturer is:
Boston Dynamics/78 Fourth Avenue/Waltham MA 02451.