DI-Guy C++ SDK Reference  13.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DI-Guy Changes and Version History

DI-Guy Data History

For an overview of data changes please see release notes:

DI-Guy Version 13

DI-Guy 13 Prerelease

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

Version 13.0

Defaulting to VC10

  • DI-Guy Applications are now compiled with Visual Studio 2010 which is now the default compile target.
  • VC10 project files are now available for most programming examples. These make use of property sheets to share variables and configurations between many different examples and configuration targets.

Appearance System

  • New hand item appearance system, reduces the need for hundreds of appearances. Character types now specify information about what hand items are appropriate and configuration information applies that to existing appearances.
  • Fixed bug with decision beads. No head appearances were being shown after revamping the head appearance system.
  • Fixed bug where current body/head/hands appearances weren't restored to defaults on reset.
  • Motion engine is no longer reset when changing heads or hands.

Real time IK system

  • New system for leg and hand/gun real-time adjustments. Feet stick better to terrain/stairs. Hands can now be made to adapt to different weapons without creating new animations.

Core Animation API

  • Quaternion pipeline is now on by default, this can yield a 10-15% update speed up. If this causes any issues it can be turned off by calling diguyApp::set_precompute_quaternions_enabled(0).
  • Rewrote portions of spline interpolation code to give consistent velocity results regardless of number of segments used. Most notable on vehicles with long paths that could exhibit sawtooth velocities in the past.
  • Fixed bug in set orientation that could allow > 2 PI orientations.
  • Modified action lookup to return closer speed based action if alternative variant is specified.
  • Waypoint segment changes should now affect visuals.
  • Large internal rewrites of systems to support blend tree system, animations play back in normalized time, position accumulation works off of dt instead of absolute animation time. Please report any regressions to DI-Guy.

Blend Tree system

  • New animation blend tree system. Enables new multi-direction locomotion animations, aiming while running, and using one action to map to multiple animations. For example 1 character type can now have a stand_ready action that maps to a number of different animations based on what's in their hand. Available animation nodes include 1D blender, 2D blender, 2 Animation priority weight masker, motion selector.
  • Added demoing tools for locomotion, aiming and tool use to DIGuyCharacterViewer.
  • New Node graph editor in Motion Editor.
  • New system for triggering events from within animations, scripts and decisions are available.

Motion Editor

  • Fixed many motion export issues.
  • Added Collada Dae animation file import to Motion Editor.
  • Added bdm2dae, a new bdm to Collada converter to allow animations to be edited in 3ds Max or Maya.
  • Added animation blend tree node editor for authoring animation nodes.
  • Added new DI-Guy extras window includes tools for evaluating different DI-Guy appearances (hand/head) with motions, turning on/off IK and visualizing.
  • Fixed hard crash in Motion Editor when reversing short motions.
  • Fixed Motion Editor mirroring functionality.
  • Added new editor for adding script/decision events to animations (experimental).

Aiming

  • Slowed down aim tracking when character is on top of target. Aiming could oscillate badly before.
  • Fixes to aiming deflection code. Fixes bug where character could sometimes ignore extreme aim at azimuths.
  • Cleaned up aim converge code, only takes one argument on/off now.
  • diguyCharacter::force_action() will no longer reset aimer.

DI-Guy AI

  • Removed DIGUY_DYNAMIC_AVOIDANCE_METHOD_SIMPLE. It wasn't being used.
  • Added diguyDynamicAvoidanceMethod DIGUY_DYNAMIC_AVOIDANCE_METHOD_REPULSION_ZONES_AND_PROJECTED_FORCES, a new algorithm that incorporates facing direction and character velocity into influence calculations. Crowds with repulsion_zone set in dss get automatically upgraded to the new force model.
  • Influence forces are now visualized by increasing red amount in influence disk to represent strength of force on character.
  • Desired force heading line is now green-to-red to better differentiate from repulsion force.
  • Fixed bug where repulsion zone on/off didn't actually work.
  • Fixed bugs in 'teleport at end of path' travel option.
  • The velocity of the current action no longer affects the strength of the force contribution. This makes running characters less likely to plow through crowds.
  • Added smoothing to accumulated crowd forces. Lowers the amount of jittering from the new force model.

Networking

  • Upgraded VR-Link to 5.0.1.
  • HLA configuration files now live in c:/bdi you may need to update your RTI_CONFIG environment variable.
  • Added support for HLA Evolved.
  • Added new DI-Guy HLA Evolved module.
  • New HLA FOM for 1.3 and 1516, adding support for head and hand appearances. Older FOMs will default to sending 12.5 compatible appearances.
  • DIS custom pdu DIGUY_CUSTOM_PDU_ID_SET_CHAR_APPEARANCE now contains 3rd string for hand appearance.
  • DIS custom pdu DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION has been deprecated see DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION_2 for a hardened version of this pdu.
  • Characters now publish angular velocity every frame.
  • Most of the math in the drift guide has been rewritten:

    • Now integrates the desired position forward based on desired velocity.
    • Uses desired angular velocity to modify the orientation over time.
    • Uses desired angular velocity to modify desired velocity.
    • Faster non asymptotic drifting to desired location/orientation.
    • Removed course error concept from guide.
  • Fixed bug with new female casuals with skin tones getting sent over network.
  • Fixed logic bug with DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION handling and multiple variation textures.
  • Updated sample code demonstrating processing DIGUY_CUSTOM_PDU_ID_SET_SHAPE_VARIATION packet.
  • Use transition time and velocity ramping to better slow down decelerating characters who are transitioning to stationary motions.
  • We now only sync speed for characters that don't have custom PDUs being sent, we rely on the initial speed from the action PDU. Fixes issues with crawling, and transition speed.
  • Change publishing code to send the desired action instead of the current action. Lets transitions go out over the network at the start of transition instead of after it's completed.
  • Published velocity is now the average velocity for characters performing most simple actions, this avoids slow or fast packets and yields better dead reckoning results. Character's transitioning or colliding with objects should send raw velocity.
  • Guide example has been heavily rewritten.
  • Tweaked network guide defaults a bit.
  • network.cfg now saves to disk when going on line not off-line.
  • Added adaptive guide value to network.cfg.
  • Added code to better handle characters playing locomotion animations over the network.

DI-Guy For Unity

  • Added support for material swaps to renderer, (used by most skinned characters)
  • Added support for gloss and spec maps to renderer.
  • Textures needed by scenario should now unlz4 and place themselves into the resource directory on the fly.

DI-Guy General API

  • Improvements to changing character types while on a path, still not well supported.
  • Fix bug where diguyCharacter::CALLBACK_ID_CURRENT_ACTION_CHANGED would not go off for characters on paths.
  • Fixed Collada files to use short indices for index buffer, 10% memory/disk improvement.
  • Improved index buffer ordering to better make use of vertex cache, provides frame rate speedup.
  • Intersection callbacks will now test DI-Guy props after calling out to C++ user level code.
  • Improved speed and memory usage of octtree generation.
  • Fixed issues with intersecting non-uniformly scaled props.
  • Fixed issues loading xrefs with multiple "../" in path names, and a number of other xref transform issues.

DI-Guy Graphics API Changes

  • diguyGraphicsLink::get_transformation_matrix_4x4_ptr() now returns a matrix that has scale incorporated in. Removes need for calling glScalef and diguyCharacter::get_scale(), simplifies rendering code and helps support instancing system, please update your code.
  • virtual overridable calls diguyGraphicsLink::attach_to_link() and diguyGraphicsLink::detach_from_link() have been removed, were only used by OSG and architecture improvements have meant that parented object are managed the same way as non-parented objects, this should fix parenting in OSG.
  • diguyGraphicsShape sample code no longer uses get_offset_translation/rotation/scale(), code has been deprecated.
  • Support for Recursive Link Drawing has been removed.

DI-Guy 13 Content Data

Version 13.0

  • Removed vast majority of unneeded appearances that have been replaced by hand item system.
  • Upgraded Male/Female Bikers, Cameraman and Wheelchairs, Flight deck crew to be skinned character compatible.
  • Configuration setup for characters with secondary items (hoses, bikes, wheelchairs) has been simplified to not require additional actors.
  • New car appearances authored via modern pipeline, skinned objects needing only 2 draw calls with bump/spec/AO/variation.
  • New Female casual appearances.
  • New Male casual appearances.
  • New Opfor appearances.
  • New Construction Worker character type.
  • Animation blend tree functionality is now used in soldier_07/mideast_soldier_07 character types, this adds support for:

    • multi-directional movement is now supported via new actions upright_movement, crouched_movement and prone_movement.
    • all moving aim animations now support aiming different directions by combining original motion with stand_aim data.
  • Added movement locomotion action to all vehicle character types as well as bikers and wheelchairs, can use diguyCharacter::set_animation_local_velocity() to go at any speed, not just quantized values in the past.
  • All character animation configuration files have been upgraded to support quaternion pipeline.

DI-Guy 13 API Changes

New API functions

DI-Guy Networking

DI-Guy AI

DI-Guy Graphics API

New API Classes

API's functions modified

Deprecated the following functions:

Deprecated functions Removed

  • Removed the following deprecated functions (see diguyCharacter.h for recommended replacements):

    • diguyCharacter::get_base_link()
    • diguyCharacter::set_apply_actor_scale_to_action_bead_xy_travel()
    • diguyCharacter::get_apply_actor_scale_to_action_bead_xy_travel()
    • diguyCharacter::set_default_weapon_sound()
    • diguyCharacter::get_default_weapon_sound()
    • diguyCharacter::set_default_weapon_sound_gain()
    • diguyCharacter::get_default_weapon_sound_gain()
    • diguyCharacter::set_weapon_munition_type()
    • diguyCharacter::get_weapon_munition_type()
    • diguyCharacter::set_weapon_horizontal_error()
    • diguyCharacter::get_weapon_horizontal_error()
    • diguyCharacter::set_weapon_vertical_error()
    • diguyCharacter::get_weapon_vertical_error()
    • diguyCharacter::set_shader_program()
    • diguyCharacter::get_recommended_appearance_shader_program_name()
    • diguyCharacter::merge_asset()
    • diguyCharacter::set_DIS_smoke_trail_state()
    • diguyCharacter::get_DIS_smoke_trail_state()

DI-Guy Version 125

DI-Guy API

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

Version 12.5.3

  • Fixed a bug in diguyApp::set_num_rendering_passes() where it would not effect rendering in the graphics API.
  • Added support for two pass transparency rendering in the Graphics API
  • Fixed appearances not instantly broadcasting a PDU when character appearance changed.
  • Fixed position pop when character appearance changed.
  • Fixed hard crash when preloading appearances with legacy character types.
  • Fixed bug with handling of uppercase extensions on geometry data.

Version 12.5.2

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:

Version 12.5.0

CRITICAL api changes

  • C++ callback:
    float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z);
    has been replaced with
    float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z, int * valid);
    code will need to be updated before recompiling.
  • Graphics API

New Features

  • 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 adding/deleting/transforming 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.
  • 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()

DI-Guy Scenario

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.

DI-Guy AI

Version 12.5.0

Graphics API Changes

Version 12.5.3

  • Fix for automatic graphics LOD switching not working in graphics api.

Version 12.5.2

  • Fix in OpenSceneGraph implementation for leaking nodes when using variation textures.

Version 12.5.1

Version 12.5.0

DI-Guy Networking

Version 12.5

  • New Custom PDU's ( Note: Functionality currently limited to DIS. )

  • DIGUY_CUSTOM_PDU_ID_SET_CHAR_APPEARANCE Now contains a second optional string for head appearances

DI-Guy Version 12.0

DI-Guy Scenario

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.

DI-Guy API

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

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.

Version 12.0.2

Version 12.0.1

  • Updates to FaceFX sample content.
  • 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.

Version 12.0.0

  • 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()

DI-Guy AI

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

DI-Guy Version 11

DI-Guy API

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

Version 11.6.0

Graphics API Changes

Version 11.6.0

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.

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

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

Version 11.0.1

Version 11.0.0

  • Removed deprecated functions:

    • diguyChainSimulation::set_connection_character()

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()

Version 10.1.7

Version 10.1.6

Version 10.1.4

Version 10.1.3

Version 10.1.1

Version 10.1.0

DI-Guy Scenario

Version 11.5.1

  • Fixed intersection test issue with scene objects
  • Fixed bogus fog changed notification
  • Improved sound history recording and playback

Version 11.0.1

  • Fixed crash with using qt_invoke without lqt loaded.

DI-Guy Motion Editor

Version 11.0.1

  • Fixed Motion Arc extended info handling.
  • Fixed issue with the poser not being available on some skinned character links.

Version 11.0.0

  • Initial support for handling skinned characters.

DI-Guy Character Viewer

Version 11

  • Added Shadow and normal previewer.
  • Added LOD picker.

DI-Guy for Vega Prime

Version 11.5.1

  • Initial support for vegaPrime 5.x.
  • fixed crash on exit using some modules.
  • Changed setScriptPerlEnable default from true to false.

Version 11.0.1

  • Initial support for vegaPrime 4.x.

DI-Guy Networking

Version 11.0.1

  • Fixed a number of bugs with transmitting gazing and aiming behavior over network.
  • Improvements to log messages.

DI-Guy Applications Version 10

DI-Guy API 10

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

Version 10.0.10

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 0, meaning remove the callback when a scenario is loaded.

Version 10.0.6

Version 10.0.5

Version 10.0.4

Version 10.0.3

Version 10.0.1

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.

Version 9.1.5

Version 9.1.4

  • The way that weapon sounds are handled has been changed.

      Previously weapon sounds were largely determined by the
      character's default weapon sound setting, as set by
      set_default_weapon_sound().  Weapon sounds (and other data) are
      now set automatically based on the munition type(s) of the weapon
      the character is carrying.  The default munition type sound can
      be overridden by calling set_weapon_sound_override().  Note that
      existing, deprecated calls to set_default_weapon_sound() will
      have the same effect as calling set_weapon_sound_override().
    
    • The following functions have been deprecated:

      • diguyCharacter::set_default_weapon_sound()
      • diguyCharacter::get_default_weapon_sound()
      • diguyCharacter::set_default_weapon_sound_gain()
      • diguyCharacter::get_default_weapon_sound_gain()
  • 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.

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.

Version 9.1.1

  • 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.

Version 9.1.0

DI-Guy Scenario 10

Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.

Version 10.0.2

  • Fixed the appearance of state functions in the code browser.

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.

Version 9.1.3

  • Improvements to autocomplete, including DIGUY_* constants as well as dynamic analysis of lua objects.

Version 9.1.2

  • Added new documentation viewer, accessible under the help menu.

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.

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.

DI-Guy AI 10

Version 10.0.4

  • Added new AI_Populate SDK example; demonstrates populating the environment with lua minds based Agents via the SDK.

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.

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.

Version 9.1.4

  • Significant improvements to A* path planning performance, 10x speed up in most cases.

Version 9.1.3

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 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.

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()

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.

DI-Guy Character Viewer 10

Version 10.0.0

  • Added "Appearance Wizard" button to make selecting an appropriate character type and appearance easier.

DI-Guy for Vega Prime 10

Version 10.0.4

  • Initial release compiling with vp 3.0.

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)

DI-Guy Networking

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.