DI-Guy 9.0 and Earlier
DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 9.0.4
Version 9.0.1
- Added new guide example, see C:/Jenkins/jobs/diguy_apps_13.1_vc10_x64/workspace
- Added the following functions to diguyCharacter API:
- Manually invoking a diguyCharacter perl script callback via diguyCharacter::manually_invoke_event_handler() will now have the $callback_object variable properly set.
- Minor munition system improvements:
- Munitions sound effects now include sound gain.
- Added diguyScenario::trigger_detonation(), a function for creating a detonation at an arbitrary xyz location.
- Fixed bug with location of munition particle effects.
- Added new Munition system demonstration; see AI_Munitions_Demo.dss in scenarios directory.
- Improved default 3d sound behavior; prior default 3d sound falloff was much too aggressive. Future DI-Guy releases will make more of these values tuneable.
Version 9.0.0
- Promoted the following functions from experimental to official status:
- Added functions to allow user to specify custom feeler functions:
- Fixed more issues with recent changes to reduce path memory overhead.
- Changing current appearance will now complain less if the resulting change doesn't require recompilation of path data.
- diguy_dis_constants.h now includes custom PDU enumeration.
- Changes made to aim algorithm 8 parameter functions in an effort to make them more descriptive. Note that only the set functions are listed; the corresponding get functions have changed, too.
Version 8.6.3
- Fixed some issues with recent changes to reduce path memory overhead.
Version 8.6.2
- Changes made to support multiple active formations. New arguments added to diguyCharacter::call_formation() and diguyCharacter::break_formation() to support multiple formations. Default behavior remains the same as before.
- Significant memory savings when dealing with characters with long paths.
- Added new argument to diguyCharacter::set_current_appearance() function: allow_actor_change. Previously changes to a character's appearance that would result in an actor (size of character) change were not allowed. Passing 1 (the default) for this argument now allows such a change.
Version 8.6.1
Version 8.5.0
- Many new function calls available from decisions.
- Changed default aim algorithm from 7 to 8. To change it back to 7, call diguyCharacter::set_aim_algorithm(), passing 7 as the aim_algorithm argument.
- Improved diguyCharacter::check_character_visibility(). Character will now use the cervical joint as the source point, and test multiple positions on the target.
- Promoted diguyCharacter version 8 aim algorithm functions from experimental to official.
- Characters that are flagged as scene object are no longer baked into the world octtree. Editing them no longer requires an expensive octtree rebuild.
- Fixed access bug in diguyScenario::find_path_shape().
- Added functions:
Version 8.1.0
Version 8.0.6
- Fixed issue where turreted vehicles broadcast angle did not match the DIS standard.
- Added experimental aim functions. These functions are for the new DI-Guy version 8 aim algorithm.
Version 8.0.5
- Fixed issue with TXP geometry loader. If external textures are marked as "Unknown" format, the actual format is now derived from the filename extension in the case of .rgb, .rgba, .int, and .inta texture files.
Version 8.0.4
- Improved documentation for function diguyScenario::update().
- Fixed some issues with I-Guy and its use of joystick input. I-Guy input for DI-Guy 8 now more closely matches that of previous versions.
- Fixed some issues with muzzle flashes. In particular, muzzle flashes were not consistently showing up in DI-Guy Scenario, both during initial simulation and during review data playback.
- DI-Guy now includes a DIGuyLicenseTool application that makes it easier to gather the appropriate information needed to request a license from Boston Dynamics. This utility program can be run during Applications installation, or, after installation is complete, from the DI-Guy folder in the Start Menu.
- Fixed a problem with programming examples that used OpenAL with the VC7 static libs (Makefile.vc7_md, for example) would crash when an .ogg file was loaded.
Version 8.0.3
- Fixed some issues with I-Guy:
- Firing the I-Guy's weapon now correctly uses the trajectory to the crosshair, instead of along the weapon barrel.
- Keyboard control of looking up and down now possible; use 'Page Up' and 'Page Down' keys.
- Fixed problem with networked characters climbing hills.
- Fixed problem with networked characters transitioning too quickly.
- Added Visual Studio 7.1 solution for diguy_ogl/simple_playback example.
- Fixed issue with diguyCharacter::stop_all_sounds() and diguyScenario::stop_all_sounds() not saving history events.
Version 8.0.2
- Fixed problem with some textures not loading properly.
- Fixed problem with DirectX examples not shutting down cleanly if there is a license problem.
Version 8.0.1
- Fixed issues with temporary characters not always being destroyed.
- Fixed issues with temporary characters showing up in review playback.
- Fixed issues with appearance effects being recycled properly.
- Fixed problem with eyes not participating in gazing.
- Rework of many examples in the programming_examples directory. Some new examples added, some older ones removed.
- Added README.txt files to diguy_plugin examples that better describe what the examples show, and how to use them in DI-Guy Scenario.
Version 8.0.0
- Initial 8.0 release candidate.
- Setting of tin (T In) and tout (T Out) calls for characters have been tightened up. For example, a character's tin can no longer be set to before the current scenario t. It could be before, but would cause potential problems. Warning messages are printed to the log when improper tin or tout times are attempted.
Version 7.1.20
- Added new diguySignal and diguyScenario functions:
- The signal info_text field allows signals to be tagged in the DI-Guy Scenario Signal Palette with text different than the signal name. The new show all and hide all functions take an optional filter that can be used to make the operation work on a subset of the signals.
Version 7.1.19
- Fixed problem with vehicle_wheels character in which first frame of playback had wheels in incorrect position.
- Improved documentation for diguyCharacter Performance Functions.
- Improved documentation for diguyCharacter functions that deal with enabling and disabling characters in various ways.
- Added functions:
- Added function diguyCharacterGroup::get_is_network_paused(), and deprecated function diguyCharacterGroup::get_paused()
- Added function diguyCharacterGroup::get_visible(), and deprecated function diguyCharacterGroup::get_is_drawn()
- Made the following functions callable from decisions:
Version 7.1.18
- Added functions:
- Changed the name of several experimental functions:
- The following experimental functions were promoted to official API status:
- The ability to change the tin ("T In") time of a scenario has been removed. THIS CHANGE WILL AFFECT SCENARIOS THAT USED THIS FUNCTIONALITY. Setting the tin of a scenario to anything other than 0 has always had unintended side-effects for DI-Guy, which is why this capability has been removed. The functions diguyScenario::set_tin() and diguyScenario::get_tin() are now deprecated as a result. (Note that diguyCharacter::set_tin() has not been changed.)
Version 7.1.16
- Added the following functions:
Version 7.1.14
- Fixed issues with scenario merging. Chain settings and particle systems in particular did not merge well.
Version 7.1.13
- The following experimental functions were promoted to official API status:
- The following deprecated functions were removed:
- diguyApp::set_use_varsets_enabled()
- diguyApp::get_use_varsets_enabled()
- diguyCharacterGroup::set_all_members_t()
Version 7.1.12
Version 7.1.11
- The following functions were added to diguySensorRegion that make it easier to write callback handlers for sensor regions:
- get_autosense_callback_candidate_entered()
- get_autosense_callback_candidate_left()
- Characters now fire live rounds by default when diguyCharacter::fire_weapon() is called. THIS IS A CHANGE FROM PREVIOUS DEFAULT BEHAVIOR. The old behavior can be restored in two ways:
- In DI-Guy Scenario, the Weapon Params tab on the Character Elements palette has a checkbox called "Weapon Fires Live
Rounds". The checkbox can be unchecked, followed by pressing the "Copy to All Characters" button.
- In a program using the DI-Guy API, the function diguyCharacter::set_weapon_fires_live_rounds() can be called.
- Character Labels Visibility is now set to 'None' in the default .dss file.
- Added function to diguyCharacterGuide:
- diguyCharacterGuide::remove_all_disabled_guides()
- Made the following functions available to Decision Beads and Decision Events:
- Removed DI-Guy Graphics API programming example ogl_examples_high_precision/simple_playback_high_precision. Replaced it with streamlined example ogl_examples/simple_playback_far_positions.
- Fixed problem with props/scene objects showing up at origin in after-action review.
Version 7.1.10
- Fixed a problem with the DI-Guy Graphics API that prevented textures on some characters from being correctly bound under certain circumstances.
Version 7.1.9
- The following optional functions were added to plugins:
- void key_press()
- void key_release()
- Added diguyIGuyController class for C++ and script control over the I-Guy character.
- Setting the dead reckoning time threshold is now done by setting the variable time_threshold in the network.cfg file. The variable tick_period has been deprecated and will no longer have any effect. The default value is 5 seconds.
Version 7.1.18
- Added callback and event handling support for scenario variables:
Version 7.1.7
- Added parameters polygon_offset_factor and polygon_offset_units to bdiGraphicsInitOgl structure to allow for better control over subface rendering in OpenGL.
- Addressed some issues with diguyGraphicsLink and far positions.
Version 7.1.6
Version 7.1.5
- Added experimental transformation functions for paths:
- Added experimental performance tuning functions:
- Deprecated experimental performance tuning functions:
- diguyApp::set_use_varsets_enabled()
- diguyApp::get_use_varsets_enabled()
Version 7.1.4
Version 7.1.3
Version 7.1.12
Version 7.1.11
- Added a new experimental character type called "chain_simulation" that can do realtime simulation of chains, ropes, and hoses. The appearance of the chain_simulation character determines its simulation settings. Chain simulation settings are created and on the DI-Guy Scenario Chain Sim Settings page, or via the diguyChainSettings class. Runtime parameters of the chain simulation are set by obtaining a diguyChainSimulation object via the diguyCharacter::get_chain_simulation() call.
- Fixed issues with diguyCharacter::set_current_appearance(). 0 was returned even if appearance change failed; not correctly returns -1 on failure.
- Added new experimental functions to event bead classes. These functions make it possible to specify that event beads should begin and/or when a specific action bead or waypoint is reached. Members are:
- Function diguyApp::load_plugin() has three new optional arguments: required_by_scenario, unload_on_scenario_close, and accepts_mouse_input.
- Added functions to diguyImpact:
- Added functions to diguyScenario:
- Added functions to diguyCharacter:
- Character label information is now saved in the scenario file and restored when the scenario is loaded.
Version 7.1.0
- Added function diguy_get_app(), a cleaner function for retrieving the diguyApp object than diguyApp::get_app().
- Added experimental transformation functions for paths:
- Added functions diguyApp::get_diguy_base_dir() and diguyApp::get_diguy_subdir().
- Added diguyCharacter::get_parent() function.
- Added diguyViewLight::set_shadowmap_size() and diguyViewLight::get_shadowmap_size(); allows setting shadow map resolution. Must be a power of 2.
- Made various internal performance enhancements for scenario updates.
- Fixed a problem with motion LODs updating all links every now and then, even if the current action hasn't changed.
- Made the scenario be able to go past 60000 seconds. Now a scenario tout greater than 60000 seconds is interpreted as unlimited.
- Fixed a problem with motion LODs updating too many links.
- Made various internal performance enhancements for scenario updates.
- Added performance tuning functions:
Version 7.0.9
- Rewrote portions of network mapping code, custom pdus/specialized motions will now work with more characters. This requires a new version of data, but any character that has been properly tagged with variants and postures should transmit better.
- Rewrote speed code, networked characters should scale speed to try and match packets that are coming in.
Version 7.0.8
- Trying to get the position of a invalid link will behave a bit better.
Version 7.0.6
- Creating a path when a character has none will properly set the initial path name.
Version 7.0.5
- Fixed a crash that sometimes happened while reading comments out of texture .attr files.
Version 7.0.3
Version 7.0.2
- Fixed a problem with gazing and aiming not zeroing in on the correct positions when using DI-Guy for Vega.
Version 7.0.1
- Deprecated "named_callback" functions in diguyApp. Event handler functions should be used instead.
- Renamed some diguyViewCamera functions:
- Added function diguyCharacterGroup::update_all_members(), and deprecated function diguyCharacterGroup::set_all_members_t()
- Fixed problem with deleting one scenario and creating another causing a crash.
- Fixed crash problem with function diguy_set_cfg_file().
- Changed the default settings of automatic switching of graphics LODs and motion LODs, as set by diguyScenario::set_automatic_graphics_lod_switching() and diguyScenario::set_automatic_motion_lod_switching(). Previously automatic LOD switching was always enabled unless explicitly disabled by calling the above functions. Now automatic LOD switching will be disabled by default in DI-Guy API applications, but remain enabled by default in DI-Guy Scenario.
- Added the following functions for adding and removing appearances:
- diguyScenario::add_custom_appearance() deprecated; use diguyScenario::add_appearance().
- diguyScenario::add_custom_appearance_based_on_existing_appearance() deprecated; use diguyScenario::add_appearance_based_on_existing_appearance().
- Promoted the following functions from experimental to official status:
- Removed diguyLoadManager camera functions (load manager camera now always tracks the scenario's primary view camera):
- diguyLoadManager::add_camera()
- diguyLoadManager::add_view_camera()
- diguyLoadManager::move_camera()
- diguyLoadManager::change_view_camera_settings()
- diguyLoadManager::remove_camera()
- diguyLoadManager::remove_all_cameras()
Version 7.0.0
Version 6.1.10
- Fixed event propagation bug when event tout is -1 and scenario tout is changed.
- Added optional actor argument to diguyScenario::add_custom_appearance() function. This fixes a problem with characters not being able to switch to custom appearances with diguyCharacter::set_current_appearance() because of actors being different.
- Added simple_playback_high_precision and view_far_position that demonstrate off the use of high precision position values.
Version 6.1.9
- Fixed problem with various diguyWaypoint "get" functions that return angles (e.g., diguyWaypoint::get_yaw_in()); they weren't properly returning angles in degrees.
- Fixed problem with merging scenarios: merged waypoints at the origin were not being rotated correctly.
- Fixed problem with config file appearance syntax. The item "shapeset:shape" format caused a crash; it now works again.
- Fixed problems with required plug-in list not saving or resetting properly.
Version 6.1.8
- Far positions rendering are now off by default, though DI-Guy Scenario and DI-Guy Scenario UI V6 turn them on. Practically this means that while internally things are done at a higher precision format, the render camera being in local space will be a change that needs to be explicitly asked for.
- Added the following functions for controlling far position state:
- Added accessors for setting character and scene object culling on/off.
- Added accessors for setting character and scene object bounding volume visualization on/off. (only works for OpenGL)
- Fixed a bug with diguyCharacter::set_current_appearance().
- Added warning message if a proposed appearance change is null; fixes crash bug.
- diguyScenario::trigger_script_event() deprecated; use diguyScenario::trigger_script().
- Added function diguyScenario::trigger_decision().
Version 6.1.7
- Added new experimental functions. (Experimental functions are typically for probationary features whose final functionality or API has not been fully worked out.)
- Removed the function diguyLoadManager::set_enable_culling().
- Added optional arguments initial_posture and initial_variant to diguyScenario::set_iguy_character().
- Added function diguyScenario::get_time_of_day().
- Fixed bug in diguyCharacter::is_speaking(). It was sometimes improperly returning FALSE.
- Added the following functions that control whether the scenario will be reset (as if diguyScenario::reset() were called) when a merge happens:
- Now incoming XC_MERGE_SCENARIO PDUs do not cause the running scenario to stop and reset.
- Now incoming XC_MERGE_SCENARIO PDUs cause a XC_MERGE_SCENARIO_COMPLETE PDU to be sent when the merge operation is done.
- Now incoming XC_LOAD_SCENARIO PDUs cause a XC_LOAD_SCENARIO_COMPLETE PDU to be sent when the load operation is complete.
- Added the following functions:
- diguyExerciseInterface::send_pdu_xc_eval_script()
- diguyExerciseInterface::send_pdu_xc_time_now()
- Now incoming XC_TIME_NOW messages cause the scenario to chase sync.
- Now incoming XC_EVAL_SCRIPT messages cause the script therein to be evaluated.
- diguyScenario::load() has been changed to not accept .flt filenames. The new function diguyScenario::create_scene_object() should be used instead.
- Added the following functions:
- Fixed problem with DX99 version of the library that prevented gazing from working correctly.
- Added better detection of and error message for missing DI-Guy Data installation.
- Renamed experimental "shot" class, function names, and callback ids to use the more generic term "impact":
- diguyShot
- diguyShot (class name) -> diguyImpact
- get_shooter_name() -> get_attacker_name()
- get_shooter() -> get_attacker()
- get_shot_number() -> get_impact_number()
- set_shot_number() -> set_impact_number()
- get_shot_been_processed() -> get_impact_been_processed()
- set_shot_been_processed() -> set_impact_been_processed()
- diguyCharacter
- CALLBACK_ID_GOT_SHOT -> CALLBACK_ID_IMPACT
- CALLBACK_ID_SHOT_SUCCESS -> CALLBACK_ID_FIRE_WEAPON_SUCCESS
- get_last_shot_record() -> get_last_impact_record()
- get_last_shot_number() -> get_last_impact_number()
- get_last_shot_been_processed() -> get_last_impact_been_processed()
- set_last_shot_been_processed() -> set_last_impact_been_processed()
- get_last_shot_link() -> get_last_impact_link()
- get_last_shot_link_is() -> get_last_impact_link_is()
- set_max_shot_hits() -> set_max_impact_hits()
- diguyScenario
- CALLBACK_ID_ENVIRONMENTAL_DETONATION -> CALLBACK_ID_SCENE_OBJECT_IMPACT
- get_last_env_shot_info() -> get_last_env_impact_info()
- Added function diguyExerciseInterface::send_pdu_xc_time_now().
- Added code to properly respond to incoming XC_TIME_NOW PDUs.
Version 6.1.6
- Added functions and diguyExerciseInterface class for enhanced networking support:
- Added new functions diguyView::get_width() and diguyView::get_height().
- Experimental plugin infrastructure has been reworked a fair amount.
- Function diguyScenario::add_plugin() has been changed to diguyApp::load_plugin().
- Function diguyScenario::remove_plugin() has been changed to diguyApp::unload_plugin().
- The following functions will be imported when a plugin is loaded. Note that not only diguy_version() must be implemented:
- void diguy_version(int* version_major, int* version_minor, int* version_point)
- void initialize_plugin(diguyApp* app)
- void deinitialize_plugin(diguyApp* app)
- void initialize(diguyScenario* s)
- void deinitialize(diguyScenario* s)
- void pre_update(diguyScenario* s)
- void post_update(diguyScenario* s)
- void pre_draw(diguyScenario* s)
- void post_draw(diguyScenario* s)
- void reset(diguyScenario* s)
- diguyPluginMouseCursor get_mouse_cursor(diguyScenario* s)
- void mouse_press(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
- void mouse_drag(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
- void mouse_release(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
- void mouse_move(diguyScenario* s, diguyPluginMouseEvent* mouse_event)
- void save_review_data(diguyScenario* s, const char* filename)
- void load_review_data(diguyScenario* s, const char* filename)
- Added an additional argument, merge_settings, to the diguyScenario::merge() function.
- Added the following functions to enable better control of merging scenarios:
- Added the following functions:
- Added the following functions in support of 3D positional sound:
- Added new optional argument "gain" to diguyCharacter::play_sound() function.
- Made following functions available to Decision Beads and Decision Events:
- Removed unused variable "working_directory" from bdiExFaceInit structure. Replaced with variable "placeholder", leaving the option open for future init variables. Calls passing NULL for the bdiExFaceInit structure to diguy_exface_initialize() will not need to change.
- Fixed problem with Decision Bead that incorrectly put function variable_less_than_string() in variable query functions instead of character query functions.
- Added script_type argument to diguyScenario::eval_script() and diguyScenario::eval_script_file() functions.
Version 6.1.5
- Fixed problem that newly created characters were not appearing until the next scenario tick dt boundary was crossed.
- diguyCharacter::set_t() deprecated; use diguyCharacter::update().
- Added new function diguyCharacterPath::get_length().
- Fixed potential crash from call to function diguyCharacterPath::update().
- Character positions now stored in higher precision format.
- Added new functions:
- New local space camera. DI-Guy can now render in the local space of the camera. This allows DI-Guy to avoid putting large values on the rendering stack, avoiding numerical imprecision on objects that are far from the origin.
Added new local space camera functions:
In OpenGL, use gluLookAt(local_position_x, local_position_y, local_position_z, local_fix_x, local_fix_y, local_fix_z, 0.0, 0.0, 1.0); to emulate the DI-Guy camera.
Version 6.1.4
Version 6.1.3
- Added new utility function diguy_convert_euler_angle_order(). This function should help DI-Guy API users convert the DI-Guy standard Euler angle order of ZXY (yaw then roll then pitch) into other Euler angle orders.
- Added new argument rampup_interval to function diguyCharacter::add_motion_texture(). This function makes it possible to more smoothly enter a motion texture. Previously the rampup was hard-coded to 0.2 seconds. If the function is to end existing motion textures, it also uses the passed rampup interval as the rampdown interval for ending the existing motion textures.
- Fixed annoying error message that was printed when motion textures ended.
- Added new variants that can be added to custom motions:
- DIGUY_MOTION_VARIANT_MISC0
- DIGUY_MOTION_VARIANT_MISC1
- DIGUY_MOTION_VARIANT_MISC2
- DIGUY_MOTION_VARIANT_MISC3
- DIGUY_MOTION_VARIANT_MISC4
- DIGUY_MOTION_VARIANT_MISC5
- DIGUY_MOTION_VARIANT_MISC6
- DIGUY_MOTION_VARIANT_MISC7
- DIGUY_MOTION_VARIANT_MISC8
- DIGUY_MOTION_VARIANT_MISC9
Version 6.1.2
- Changed win32 programming examples so that when examples are compiled for different versions of LIBC (i586_md_debug as opposed to i586_md, for example), the object files will be placed in separate directories.
- Added new function calls that will free memory allocated by the DI-Guy Graphics API loader once platform-specific objects have been created:
- Fixed a problem with gazing in which a character with orientation change enabled would do an extra shuffle to the left and back again when the character was already facing the gaze angle at gaze start.
- Added new side-effects to characters that die, including those for which the diguyCharacter::die_now() function is called:
- all aiming is ended
- all gazing is ended
- all pointing is ended
- head nodding and shaking are stopped
- all gestures are aborted
- all sounds originated by the character are stopped
- Added new function call limitations to dead characters. The following function calls will have no effect on dead characters:
- Added diguyCharacterPath::get_point_at_distance() function that makes it possible to sample path points. The function is very similar to diguyPathShape::get_point_at_distance().
- Changed diguyScenario::create_waypoint() function to take an additional argument. Waypoints created with the function can now have different initial weights for entering and leaving the waypoint.
Version 6.1.1
- Added new member function:
- diguyLoadManager::remove_all_cameras()
- Added new member functions to diguyVariable that allow for setting and getting the initial value of the variable, and for retrieving the scenario and/or character the variable belongs to:
- Added character variables to characters. Character variables are almost exactly like scenario variables but are local to each character instead of being shared across the scenario. For example, all characters in a scenario could be given a variable named "panic_level" that tracks how panicked the character is. Character variables use the same class as scenario variables: diguyVariable. The following functions are available for accessing character variables:
Version 6.1.0
- Added new functions to the DI-Guy Graphics API to make it easier to know which character links or shapes belong to, and to easily get a pointer to the character's base link:
- Added new function diguyGraphicsLink::get_transformation_matrix(). This function provides access to the link transformation in matrix form rather than separate vectors for translation, rotation, etc.
- Added new blend functions "StepHalfway" and "Waver". The "StepHalfway" blend function makes an instant step from 0 to 1 halfway through the blend. The "Waver" blend function wavers from 0 to 1 back to 0 and back to 1 using a three-quarter sine wave.
- Added functions to diguyScenario API:
- Added functions to diguyCharacterGesture API:
Version 6.0.8
- Changed DI-Guy Graphics API to not print a warning if a geometry file is not found. This allows external loaders to load their own version of a geometry file without warnings, and without the file having to be present in $DIGUY/geometry.
- Added function diguyCharacter::is_group_member().
- For Windows, added the DI-Guy version number as a suffix to the .dll that gets installed in the bin directory.
Version 6.0.6
- Changed default for gaze parameter "orientation enabled for
gaze". In DI-Guy 5.x this parameter defaulted to 0 for all characters except the sergeant. In earlier versions of 6.0 this was changed to "1 if character has turning actions, else 0". This change has, however, resulted in too much confusion and user astonishment. The new (and hopefully final) change is to default the parameter to 0 for all characters. This fixes a backwards incompatibility problem where some version 5 characters that were gazing would leave their path on version 6 and thus not complete the actions specified by their path.
- Implemented function diguyCharacter::end_aim(). This function had been omitted from the DI-Guy API.
- Fixed problem with initial value of scenario variables, where the integer value of each variable was initialized to zero, even if the intended initial value was nonzero.
- Fixed problem when merging two scenarios with different values for tick dt. Decision beads, Script event beads, Aim beads and Gaze beads were being improperly scheduled.
Version 6.0.5
Version 6.0.4
Version 6.0.3
- Fixed a problem with DI-Guy Graphics API functions not being correctly declared for DLL use.
- Fixed a problem with calling path edit functions on a path that is in use. The change was not being fully propagated to the character's motions.
- Eliminated GoThere camera instability at low frame rates.
- Eliminated aiming instability at low frame rates and at low desired locate times.
Version 6.0.2
Version 6.0.1
- Fixed problem with motion scaling where the scale factor was being applied twice in some cases. (PR 3029)
- Removed deprecated diguyCharacter functions:
- diguyCharacter::force_action_by_name()
- diguyCharacter::get_desired_action_name()
- diguyCharacter::set_desired_action_by_name()
- diguyCharacter::force_partial_path_by_name()
- diguyCharacter::force_path_by_name()
- diguyCharacter::push_path_by_name()
- diguyCharacter::set_parent_by_name()
- Removed deprecated diguySensorRegion function diguySensorRegion::contains_character_by_name().
- Removed deprecated diguySignal function diguySignal::play_sound().
- Removed deprecated diguyScenario function diguyScenario::find_or_create_face_expression().
Version 6.0.0
- Made aiming precise. Characters now actually aim at the targets specified by aim beads, rather than giving an approximation of proper aim.
- Made aiming dynamic. Character aiming motion is now much more realistic, homing in on the specified target.
- Added new diguyCharacter functions:
- Added diguyLoadManager class. Members are:
- diguyLoadManager::add_camera()
- diguyLoadManager::add_view_camera()
- diguyLoadManager::move_camera()
- diguyLoadManager::change_view_camera_settings()
- diguyLoadManager::remove_camera()
- diguyLoadManager::set_enable_culling()
- diguyLoadManager::set_nonvisible_update_rate()
- diguyLoadManager::set_zone_bounds()
- diguyLoadManager::set_zone_parameters()
- diguyLoadManager::set_max_update_period()
- Added new diguyApp functions:
- diguyApp::create_load_manager()
- diguyApp::get_load_manager()
- diguyApp::destroy_load_manager()
- Added new diguyCharacter functions:
- Added new diguyApp class. There is only one diguyApp object per application. It is available after the diguy_*_initialize() call by calling the static function diguyApp::get_app(). The diguyApp object will hold data that is application-wide, which in the past has been somewhat artificially placed in the diguyScenario class.
- Removed support for character history types DIGUY_HISTORY_TYPE_FIRST and DIGUY_HISTORY_TYPE_LAST. Characters saved using these history types will have their history type set to DIGUY_HISTORY_TYPE_COMPLETE.
- Moved some static functions from diguyScenario to diguyApp:
- Deprecated two diguyCharacterPath callback ids. A decision bead or script bead at the appropriate place in the path should be used instead of the deprecated callbacks:
- CALLBACK_ID_TIME_LEFT has been changed to CALLBACK_ID_TIME_LEFT_DEPRECATED
- CALLBACK_ID_TIME_INTO has been changed to CALLBACK_ID_TIME_INTO_DEPRECATED
- Fixed problem with gestures not range checking stage argument. If 0 was passed as the stage in some functions, memory overwrites could have occurred or garbage results could have been returned. Also updated doc of affected functions to specify that stages are between 1 and 3.
- Added functions to character for manually applying path bead effects:
- Added new diguyCharacterPathDecisionBead class. Members are:
- Added new diguyCharacterPathAimBead class. Members are:
- Added new diguyCharacterPathGazeBead class. Members are:
- Added function diguyCharacter::find_waypoint(). This function finds a waypoint by name.
- Added functions to access new bead types. Also added find functions for action beads and script beads. The following functions have been added to diguyCharacterPath:
- Added functions to diguyCharacterGesture API:
- Added functions for setting initial motion texture parameters:
- Plugins require a license.
- Moved to flexlm 10.1 on Windows for license management.
- Particles now work in locked scenarios.
- Made characters with non default actors display properly in Vega Prime.
- Saving review data now saves all generated data, not just up to the time slider.
- Fixed a bug with history saving.
Version 5.3.5
- Fixed problem with .flt loader not dealing well with .flt files that contain multiple nodes that have the same name. The .flt loader now more vigorously checks for name collisions.
- Removed one unused level of Motion LODs. The unused LOD 6 was not mentioned in documentation nor was it used in motion generation code. This change requires use of DI-Guy Data 5.3.5.
- Worked on diguyCharacterGesture API:
- Worked on diguyCharacterGesture documentation. Added more which functions can be called for which gesture types.
- Added type diguyCharacterGestureType and corresponding function diguyCharacterGesture::get_type().
- New experimental shooting functionality:
- Added callback diguyCharacter::CALLBACK_ID_GOT_SHOT.
- Added callback diguyCharacter::CALLBACK_ID_SHOT_SUCCESS.
- Added new find all hits functionality.
- Added new diguyShot class accessible from scripts, records who got shot and where.
- Characters can now shoot multiple targets; added max_shot_hits to control the maximum number of shots to report. By default scene objects stop bullets.
- Weapon spread shots test against the octtree first (speed up).
- Fixed some bugs with review data.
- Experimental plugin infrastructure:
- Added functions diguyScenario::add_plugin() and diguyScenario::remove_plugin().
- The following functions can be exported from the dll to plug into DI-Guy code:
- void initialize(diguyScenario* s)
- void deinitialize(diguyScenario* s)
- void pre_draw(diguyScenario* s)
- void post_draw(diguyScenario* s)
- void update(diguyScenario* s)
- void reset(diguyScenario* s)
- void save_review_data(const char* filename)
- void load_review_data(const char* filename)
- See Documentation for more information.
Version 5.3.4
- Added new callbacks for use with the diguyCharacter::add_callback() function:
- CALLBACK_ID_CURRENT_APPEARANCE_CHANGED
- CALLBACK_ID_CURRENT_HEAD_APPEARANCE_CHANGED
- Added new gesture type: table gestures. Table gestures are much like character action tables, and allow a single gesture to employ many different motions.
Version 5.3.3
Version 5.3.2
- Added missing initial position and orientation functions to diguyCharacter:
- Added set_name() functions to most DI-Guy API objects.
- Added better access to path data such as waypoints and action beads. The following functions have been added to diguyCharacterPath:
- Added better access to path shape data such as waypoints. The following functions have been added to diguyPathShape:
- Added new diguyCharacterPathActionBead class. Members are:
- Added new diguyCharacterPathScriptBead class. Members are:
- Changed API of diguyWaypoint object to have more intuitive function names. Old function names have been deprecated but will still work.
- Improved behavior of reflected characters when the remote scenario is reset. After remote reset, on remote play, local reflected characters now immediately perform their desired actions rather than gradually transitioning into them.
- Switched to using asynchronous I/O for DIS networking. This improves DI-Guy's robustness on networks with lots of entities.
- Fixed problem with diguyPathShape::get_length(). The diguyPathShape::update() function must be called after waypoints have been added to the path shape for the length to be updated. After the update() call, get_length() will return a valid length. (PR 2852)
- Fixed problem with diguyCharacter::get_current_path_index() function. The value 0 was being returned when the character was not on a path, and when the character was on the first path. The return value for "not on a path" has been changed to -1. (PR 2856)
- Fixed problem with diguyCharacter::get_path_name_at_index() function. An empty string was being returned when the path at the specified index had a zero-length name, and when there was no path at the specified index. The return value for no path at index has been changed to NULL.
- Fixed problem which, under DIS using DI-Guy custom information, caused newly created reflected characters not to receive custom action information for up to five seconds. Now custom action information is sent immediately after the first entity state PDU is sent.
Version 5.3.1
- Added support for "live reckoning". Live reckoning provides more accurate display of the behavior of remote characters, using less networking bandwidth.
- Added network support for multiple concurrent scenario instances. Characters in all scenarios are published to the network. Incoming entities are created in the scenario which is passed to diguy_dis_go_online() or diguy_hla_go_online().
- Improved behavior of reflected entities when the local scenario is reset.
- Removed some options from network.cfg. It is recommended that the current network.cfg be deleted and let DI-Guy recreate it.
- Improved behavior of reflected entities when the remote scenario is paused. Now they can move to their correct location even when paused, rather than staying still in a location that is suboptimal.
- Fixed bug preventing incoming (reflected) non-soldier characters from walking when DI-Guy custom action information is not available.
- Removed Review Data dt data member from diguyScenario objects and from the DI-Guy Scenario UI. Any scenario review data is now recorded at the scenario's tick dt.
- Added access to the DirectX 9 world stack used by DI-Guy through the new function diguy_dx9_get_world_stack(). This allows users of DI-Guy for DirectX 9 to offset the origin used by characters from 0,0,0. Use of the new function is demonstrated in the example program $DIGUY/programming_examples/diguy_dx9/offset_example.
- Made it possible to set the tick dt of a scenario using the function diguyScenario::set_tick_dt(). This was previously possible only in the DI-Guy Scenario UI.
- Made it possible to turn off review data generation for scenarios. By default, scenarios created in the DI-Guy Scenario editor will have review data enabled; scenarios created using the DI-Guy API will have review data disabled. Turning on review data can add significantly to memory usage. Changing review data settings can be done using the function diguyScenario::set_history_type().
- Turned off review data by default for characters created using the DI-Guy API. The significantly reduces the memory overhead of each character. Review data can be re-enabled using the function diguyCharacter::set_history_type().
- Added new callbacks for use with the diguyCharacter::add_callback() function:
- CALLBACK_ID_PRE_DIE
- CALLBACK_ID_POST_DIE
- CALLBACK_ID_PRE_FIRE_WEAPON
- CALLBACK_ID_POST_FIRE_WEAPON
- Fixed problem with setting character's current appearance too soon after the character was created. This caused a crash.
Version 5.2.2
- New function diguyCharacter::set_weapon_fires_live_rounds() sets whether firing causes collision search for characters to be killed. Default is to fire blanks. Old scenarios that used this functionality need to call this function to re-enable firing to kill other characters.
- Fixed problem for expressive faces in Vega. If a model without texture or material was drawn just before the expressive face, the expressive face would inherit its color.
- Fixed various memory leaks.
Version 5.2.1
- Improved DIS/HLA Networking:
- Motion behavior improved when receiving standard PDUs in DIS.
- Motion behavior improved when not using DI-Guy Custom FOM in HLA.
- Improved vpNet/DI-Guy for Vega Prime interaction:
- DI-Guy for Vega Prime now shares the network connection created by vpNet (MaK Technologies networking add-on to MultiGen-Paradigm's Vega Prime product).
- Special programming no longer required to have DI-Guy for Vega Prime/vpNet work together.
- Users need to maintain two separate modelmaps, but mapping to NULL is now implemented for both vpNet and DI-Guy, so that entities being drawn by other modules in Vega will not be drawn a second time by DI-Guy for Vega Prime and vice-versa.
- Programming examples have been expanded to show simple examples of vpNet/DI-Guy for Vega Prime interaction. Note that these programming examples are copied to the samples directory of the Vega Prime installation.
- Added function call diguy_net_get_character_from_id() which returns the diguyCharacter associated with the entity id. Works with both DIS and HLA. (see ref. manual).
- Added option hla_advisories to network.cfg. When using HLA, if the RTI uses advisories, hla_advisories should be set to 1. If not, set this to zero. Mismatch between the settings should be avoided.
- Fixed problem for expressive faces in Vega. The normals on the head were being scaled incorrectly, causing strange shading artifacts.
- Fixed problem for expressive faces in Vega. If more than one expressive face was in a scene, all expressive faces would use the texture of the first expressive face.
Version 5.2.0
- Added dynamic (dll) versions of DI-Guy libraries for win32.
- Discontinued support of MT and MTd versions of DI-Guy libraries for win32.
- Fixed nmake-based makefiles for win32 programming examples so that they'll work if DI-Guy is installed in a directory with spaces.
Version 5.1.25
- Initial release of version 5.1.
Versions 5.1.0 - 5.1.24
- These versions are 5.1 pre-releases.
DI-Guy Scenario Version 9 and earlier
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 9.0
Version 9.1.4
- Scenario can now be stopped, run, and reset in I-Guy Input Mode by hitting Shift-Space (toggle stop and run) an Shift-Ctrl-Space (reset). Keyboard reset can be disabled in I-Guy mode in the I-Guy Page.
Version 9.1.0
- Large rework of Object pages. There is now one Scenario Objects page that contains all of the pages from previous versions' Scenario Elements, Character Elements, View Settings, Event Handlers, and DI-Guy AI Elements. Pages are separated into multiple tab groups.
Version 9.0.2
- Fixed bug where network page wouldn't remember current coordinate converter settings when closed and reopened.
Version 9.0.0
- Near and far parameters of character weapon parameters are now always enabled, and will alway be taken into consideration. Before they only had an effect if the "spread" of a weapon was greater than 0.
- New command line flag added: -runtime_only. If this flag is specified, DI-Guy Scenario will not attempt to check out the development license feature but instead will remain in runtime mode, leaving the development license available to another program.
Version 8.0
Version 8.6.3
- Changing a character's character type no longer deletes all action beads. The actions of the existing beads are changed to the nearest equivalent of the new character type.
- Region/crowd painting now works on scene object grids. delayed loading of grids should be more responsive as well.
- Fixed issues with feelers: changes made via UI now change all crowd members, 3D rep of feelers now updated immediately when changed and on reset.
- Fixed set_playback_mode_play() so that it works in decisions.
- Ctrl-a will now restore previous visibility settings if hit 2 times in a row.
- Added experimental feeler callback option.
- Minor UI preference bug fixes.
Version 8.6.2
- Improved speed of particle system rendering.
- Fixes to scene object grid rendering.
- Fixed problem that character initial path could not be deleted.
- If last character path is deleted, initial position and orientation controls now become enabled as they should.
- Added preference for changing the fast-forward playback factor. Default is 4. Can be changed in the Preferences dialog.
- Symbolic View: Characters merging into a crowd symbol should now work outside of ortho_xy view.
- 3d UI: Added right click pop-up menu to character mode.
- Added smoothing to ground clamp function.
Version 8.6.1
- Added one click movie creation to DI-Guy Scenario.
- More of the UI has up/down sorting arrows.
- Added is_speaking as a decision bead query.
- Fixed bug with "this_character" not properly having sub-objects listed in decision beads.
- Added the ability for labels to reflect character state, accessible in the character label UI.
- Fixed math issues with scene object sub-culling, feature should be significantly more robust with scaled and rotated scene objects.
- Character's added to dynamic octtree and scene object characters should require less memory, and be more efficient.
- Minor improvements to advanced light UI.
- Action bead page now lists the current action's information.
- Fixed bug where 1st person I-Guy could not be killed.
- Better performance when populating or repopulating crowds.
Version 8.5.0
- Initial DI-Guy SAF release.
- Added new SAF Elements palette that provides access to DI-Guy SAF objects.
- Added shortcut ctrl-a: turns off all supplemental visuals, providing better viewing for non-demo scenario run.
- Added "Ortho XY" Projection Mode to Camera settings. This provides an alternative planview that uses an orthonormal projection rather that a perspective-based one.
- Added "Symbolic View" checkbox to Camera settings. When this is checked characters will be represented as flat polygons rather than their full animated graphics. This, along with the Ortho XY Projection Mode, provides a good SAF-like view of a scenario.
Version 8.0.3
- Fixed issue with I-Guy not using a joystick for input, even through the UI says it is enabled.
- Fixed issue with children's bounding volumes not being factored into culling calculation.
- User interface polish:
- Added more context sensitive input mode buttons.
- Labels identifying what character and path is selected have been replaced with combo boxes, allowing for faster editing of complex scenarios.
- Fixed various other small UI issues.
Version 8.0.2
- Fixed issue with sound not playing properly when scenario is fast-forwarded.
- Fixed issues with jittery camera in I-Guy 3rd person mode.
- Multisync masters now send and receive characters over the network.
Version 8.0.0
- Initial 8.0 release candidate.
- Improved plugin interface so that existing plugin name can be changed instead of just being deleted and a new one created.
- DI-Guy plugin libraries can now be browsed for in the Plugins page, instead of just typing in the library name.
- Added limits to the Tick dt parameter in the Performance page. The Tick dt must now be >= 0.01 seconds, and <= 0.1 seconds.
Version 7.0
Version 7.1.19
- Made improvements to DI-Guys sound system, sounds will now pause along with the scenario and can now be fast forwarded and rewound (to a degree).
Version 7.1.16
- Added 'Init. Up Vector' combo box to Character page. Allows user to set the up vector that the character will use. Previously this could only be done via script of decision.
Version 7.1.15
- Added '-safe_mode' flag to command line. Passing this flag on the command line will cause DI-Guy Scenario to start up using default preferences, which may resolve some unexpected issues.
Version 7.1.14
- Added chain settings to Merge Settings UI.
- Fixed issues with selecting a different path by clicking on one of its waypoints in Path Edit Input Mode.
Version 7.1.12
- Review data for new scenarios is now turned off by default.
- New characters created in DI-Guy scenario now have no review data by default. Characters from existing scenarios will not be affected. Note that this removes the ability to rewind scenarios unless some review data is turned back on.
Version 7.1.11
- Sounds now stop when a scenario loops or is rewound. Added a 'Stop All Sounds' button to the Scenario palette Sound page, to make it easier to stop playing long sounds.
- Window menu now always opens UI windows instead of toggling whether they are shown or hidden. If a window is already open, it is brought to the top of the window stack.
- The F-key shortcuts for opening UI windows have changed behavior. Pressing F2 for the Time Control window, for example, will make the Time Control window visible by either opening it or bringing it to the top. Old behavior toggled whether windows were shown or hidden. Use Shift-F-key to use old toggle behavior (hide if showing, show if hidden).
- Character Labels Visibility is now set to 'None' in the default .dss file.
Version 7.1.8
- Fixed problem with restoring all event mappings when reloading a previously saved scenario.
Version 7.1.7
- Switch to new installer setup. Should better detect and remove previous versions, and in general be more stable.
- Added preliminary support for TerraPage .txp files in scene objects.
- Fixed issue with OpenAL not being able to play sounds on some machines.
Version 7.1.6
- Added 3rd Parameter to Decision Beads.
- Added diguyCharacter::create_and_force_bridge_spath() and diguyCharacter::force_local_path to Decision Beads editor.
- Application now asks user to confirm whether an existing file can be overwritten when Save As is selected.
- Added Comment field to Decisions and Decision Beads.
- Added new cursor to represent current input mode.
- Added events page to character as well as signal and sensor region. Same basic functionality as the event mapper but more distributed UI design.
Version 7.1.4
- Added functionality to the character elements page that allows character list to be reordered using up and down arrows next to the list box.
- Character list box will now display disabled characters in gray.
Version 7.1.3
- Added offset XYZ line edits for aiming at characters on Aim Bead page.
Version 7.1.2
- Added new "Character" Input Mode. While in this mode clicks and drags will have the following effects:
- Parameters
-
| click | and drag translate character |
| shift | click and drag - rotate character |
- Made 'Delete' key work on more object types in the 3D window, depending on the current Input Mode:
- Parameters
-
| Character | or PeopleBlitzer delete current character |
| Path | Edit or Path Insert delete current waypoint |
| Action | Edit or Action Insert delete current action bead |
| Sensor | Edit or Sensor Insert delete current sensor region |
| Group | delete current group |
Version 7.1.1
- Added new "Group" Input Mode. While in the mode clicks and drags will have the following effects:
- Parameters
-
| click | and drag translate all group characters |
| shift | click and drag - rotate all group characters |
| ctrl | click - add or remove clicked character to group |
- Added Chain Sim Settings page to the Scenario Elements palette.
- Added edit boxes to event beads (Aim, Decision, Gaze, and Script beads) that allow beginning and end of beads to be tied to specific waypoints or action beads.
- Added ability to set character label colors on the Character page.
- Added optional labels for action beads in the 3D window that show the action name and the time at which the action begins.
- Current selected character index is now saved in .dss file and restored when the scenario is loaded.
- Revamped Plugins page. Each plugin now has these parameters:
- Parameters
-
| Required | By Scenario If checked, this plugin is required for proper execution of this scenario. When the scenario is loaded this plugin will be loaded as well if it is not already active. Default is unchecked. |
| Unload | on Scenario Close If checked, this plugin will be unloaded if this scenario is closed or a new scenario is opened. Default is unchecked. |
| Accepts | Mouse Input If checked, this plugin will receive mouse events via the mouse plugin functions when the input mode is "Plugin". Default is checked. |
Version 7.1.0
- Revamped Cut and Paste operations to use the merge functionality that makes sure objects added to a scenario have unique names.
Version 7.0.8
- Camera speed UI input was broken, should be responsive again
- Hitting cancel in particle system texture map property widget will no longer delete the currently selected texture.
- Fixed Camera Affected by Script events check box; was actually an SDK fix.
Version 7.0.5
- Enhanced character path following so that waypoints that have a roll parameter specified will roll the character as it travels along the path.
- Enhanced character path following so that characters can now pitch "upside-down" along paths.
Version 7.0.3
- Look At button now works for reflected characters.
Version 7.0.1
- Velocity Noise on particles will now get transformed with the parent's orientation.
- Fixed problems with various guide algorithms not working well if the desired z coordinate is not at the same altitude as the character.
- Re-enabled "-C cfg_file" command line flag.
Version 6.0
Version 6.1.10
- Fixed problem that prevented some parameters from being editable in the Decision editor; in particular, when param 2 was an appearance or a string.
- Fixed aim trajectory rendering to more consistently render and use the proper color.
- Fixed problem with I-Guy characters not being able to move forward and back.
- Particles are more aggressive about requesting that octtree is rebuilt.
- High velocity particles, stuck particles and bouncing particles all interact better after colliding with scene geometry.
- BDI_LOG_FATAL errors will behave better in DI-Scenario, giving the option to save before exiting.
- Fixed decision beads pseudocode description crash.
Version 6.1.9
- Fixed problem with OpenGL renderer that prevented objects with subfaces from rendering correctly.
- Fixed problem with Draw Mode radio buttons in the Preferences dialog not having the correct effect on rendering.
- Changed info popups to show up as dialog windows separate from the main window. This prevents the Primary 3D Window from un-maximizing when an info popup pops up.
- Fixed problem that scene objects did not correctly look in custom directory for models.
- Added code to check positions of DI-Guy Scenario windows; if windows will not be visible (are off-screen, etc.), they are moved to screen coordinate 0,0.
- Updated Networking Settings page to be consistent with V6 UI.
- Numerous fixes to Networking Settings page.
- Added About box with version information.
- Fixed bug that preferences weren't correctly saved if app was closed by clicking 'X' button in upper right corner.
- Fixed various problems with values entered into edit boxes being clobbered.
- Added plugins page to DI-Guy Scenario to match page from V6 UI.
Version 6.1.8
- Fixed world space collisions for particles, functionality was temporally broken.
- Particle UI should be now be almost entirely working in DI-Guy Scenario.
- Added load particle descriptions button to UI.
- Added collision plane rendering check box to UI.
- Added check box to particle page that optionally turns off placeholders.
- Added orientation flag to particles, useful for parented emitters.
- Renaming particles should validate names and echo to other appearance menus.
- Adding or removing particle descriptions now properly updates the appearance section of the character page and people blitzer.
- Particle manager was getting updated unnecessarily causing particles to playback 2x as fast.
- Fixed a focus out problem that yielded a hard lock up if a load manager error message was produced.
- Waypoints and sensor regions visuals weren't being properly updated when data changed.
- Editing a Scene object triggers the unsaved flag more often.
- Fixed a glitch where shadows and the profiler wouldn't work together.
- Added UI for setting character and scene object culling active.
- Added UI for setting character and scene object bounding volume visualization active.
Version 6.1.7
- Added UI for setting the character's label text and controlling whether the label is visible to the Character page.
- Added new visibility option for Character Labels on the Visibility page: Per Object.
- Major reworking of the DI-Guy Scenario user interface in preparation for the DI-Guy 7 release. A version of the program with the old interface (henceforth called the V6 UI) will be available in releases for awhile with a different filename. As time goes on new features that appear in DI-Guy Scenario may not appear in the V6 UI.
- Changed the sound module of DI-Guy Scenario to be based on OpenAL. This fixed a problem with sounds playing back too fast on certain systems, and allows for 3D position sounds.
Version 6.1.6
- Added "+plugin <plugin_name>" command line argument. This will load the specified plugin as the application is starting up. This is essentially the same as calling diguyApp::load_plugin() before the initial scenario is created.
- Added "Plugin" page. This allows a scenario designer to specify which plugins are required for proper execution of the scenario.
- Fixed crash bug that occasionally occurred when the "Trigger Now" button was clicked on the Script and Decision pages.
- Added UTM Coordinates to the Networking page.
- Added "Decisions", which are similar to Script Events but have a UI for constructing logic similar to Decision Beads.
Version 6.1.4
- Fixed minor problems with decision bead page. The parameters for the sensor region function contains_character_by_type_and_appearance() did not include quotes and were not alphabetized.
- Added buttons "Add All" and "Remove All" to Group page.
Version 6.1.1
- Added Load Manager page to the Scenario window. Now users can enable load management, and adjust load management parameters from within DI-Guy Scenario.
- Particle warm up time should now work properly on reset.
- Added particle system life time, after which it will no longer emit particles.
- Added new Particle position and velocity noise options, should allow for better control and movement options.
- Added character variable querying to decision beads, can now query variables with: variable_equal_to_(float, int, string), variable_less_than_(float, int, string) and variable_greater_than_(float, int, string).
- Added character variable actions to decision beads, can now have actions that affect variables, using variable_set_value_as_(float, int, string) and variable_increment and decrement. string) and variable_greater_than_(float, int, string).
- Can now use decision beads to check whether someone's been shot, as well as where the shot hit.
- Changed how decision beads get pointers to objects; previously if an object was referenced multiple times in a decision bead (e.g., multiple queries were made of character "soldier-1" in the if clauses), the same object was searched for multiple times. Now a pointer to the object is just searched for once.
- Added Variable page to Character window. This page allows for creation, deletion, and editing of character variables. Character variables are almost exactly the same as scenario variables, but are private to each character instead of being shared across the entire scenario.
Version 6.1.0
- Ctrl-'u' now pushes a scenario undo onto the undo stack.
- Space bar toggles between play and pause; Ctrl-space bar does a reset.
Version 6.0.8
- DI-Guy Scenario now properly sets the network Force ID for outgoing entities based on group membership. Groups net_friendly, net_opposing, and net_neutral should be used to indicate the Force ID of outgoing entities.
- DI-Guy Scenario now assigns incoming entities to group net_friendly, net_opposing, or net_neutral based on the incoming Force ID.
- Incoming entities cannot now be assigned to or removed from groups. As well, groups to which incoming entities belong cannot be deleted.
Version 6.0.2
- Fixed problem with "Deflate" compression method for movie frame capture.
- Changed label of "Reset" button on Movie Settings page to "Reset
Next Frame Number", to differentiate it from the Reset button on the Control palette.
Version 6.0.1
- Added setting of Scenario Review Data on Scenario Performance page to .dss file. It was not being saved and restored as scenarios were saved and loaded.
- Changed scenario "Loop" functionality. If no characters have review data, the scenario will reset and play rather than rewind and show review data.
- Removed unused "Altitude" edit box from Networking property page. (PR 3002)
- Changed gaze bead logic so that faster gazes are possible. The desired locate time for gaze beads was effectively limiting the maximum angular velocity. Now if a gaze bead overrides gaze parameters, it also turns off use of the desired locate time for each link. (PR 3030)
Version 6.0.0
- Added "GoThere" camera movement. In Camera mode, if there is neither a Look At character nor a Look From character selected and the camera projection mode is "free camera", if you hold the Shift key and left-click on anything in the scene, the camera will rapidly travel to what you Shift+clicked on and turn around to face the location from which the camera came. This also works from modes other than camera mode, if you press and hold Alt+Shift while left-clicking.
- Changed Aim Bead UI to match Gaze Bead UI. Note that now aiming is also precise, and dynamic. See DI-Guy aiming change above.
- Fixed problem with current light and fog settings being overwritten when a .dss file was loaded. (PR 2019)
- Fixed problem with primary view of scenario returning 0 when diguyScenarioView::is_showing() was called on it. The correct value is now returned. (PR 2954)
- Added ability to change window title of primary view using the call diguyView::set_window_title(). (PR 2953)
- Fixed problem with looking at scene objects that are translated away from the origin. (PR 2722)
- Fixed problem for character paths on load. Paths that weren't the initial path of the character weren't being fully initialized until they were used by the character. Now all paths receive an initial update call on load. (PR 2791)
- Added new command line argument: -no_info_popup_server. Adding this argument to the command line causes DI-Guy Scenario to not attempt to start the program DIGuyInfoPopupServer. If the server is not started, info popup windows will not appear.
- Fixed problem that if the Initial Script Filename on the Script Event property page specified a script that didn't exist, no warning was given. Now a log message at Warn level is printed for a missing script file. (PR 2826)
- Fixed problem that prevented Performance settings from taking effect unless the scenario was saved and reloaded.
- Added edit box for setting character's initial motion texture gain. (PR 2845)
- Added UI preference for turning off the "DI-Guy Scenario by
Boston Dynamics" overlay.
Version 5.0
Version 5.3.5
- Changed edit box for setting character's initial motion texture into a combo box that shows which motion textures are available.
Version 5.3.2
- Small improvement to particle system UI, fixed outstanding issues with texture map browser widget. Color Widgets go right to a color picker. Clicking on static text opens subitems.
- Particle Systems now populate better between ticks, i.e. release intervals smaller then the update time now work.
- Performance improvements to the particle systems.
Version 5.3.1
- Removed Review Data dt data member from diguyScenario objects and from the DI-Guy Scenario UI. Any scenario review data is now recorded at the scenario's tick dt.
- Split Visibility / Performance page into two separate pages named Visibility and Performance.
Version 5.3.0
- Made it possible to turn off review data generation for scenarios. By default, scenarios created in the DI-Guy Scenario editor will have review data enabled; scenarios created using the DI-Guy API will have review data disabled. Turning on review data can add significantly to memory usage. Changing review data settings can be done using the function diguyScenario::set_history_type(), or using the Review Data Type radio buttons on the Visibility / Performance page of the DI-Guy Scenario editor.
Version 5.2.3
- Added joystick gain settings to Preferences. The gains allow DI-Guy Scenario users to adjust how sensitive the joystick will be. Gains of 1.0 retain previous behaviors. Gains less than 1.0 make joystick control less sensitive; i.e., it will take a larger movement to achieve a response. Gains more than 1.0 make joystick control more sensitive; i.e., it will take a smaller movement to achieve a response.
Version 5.2.1
- Special Effects: DI-Guy Scenario now offers a new add-on option for particle-based special effects. Examples of particle effects include smoke, fire, debris, missile trails, rotor wash, explosions, and dust trails. A Particles tab is now available in the Scenario palette for easy control of effects parameters include size, number, color, texture map, velocity, wind effect, and gravity.
- Fixed crashing bug when undoing path changes.
- Fixed minor issues with using soldier character backward actions and companion waypoints.
- Fixed problem where character sounds were not consistently playing when a scenario looped.
- Fixed problem where path shapes were not always being drawn when they should have been.
- Fixed problem where having path shapes in a scenario caused the program to crash on exit.
- Fixed crashing bug when shutting down a scenario that contains characters with guides.
Version 5.2.0
- Added ability to show character names as floating labels next to the character in the 3D window. Name labels can be shown for current character only, all characters, or no characters. Access via the Scenario | Visibility / Performance property page.
- Added "Look At" buttons for characters, waypoints, and path beads on respective Elements pages.
- Added special effects such as smoke and fire.
- Fixed perl script interpreter so that it will work if DI-Guy is installed in a directory with spaces.
- Fixed problem where LOD range scale factors weren't taking effect for scene objects.
DI-Guy AI 9.0 and earlier
Version 9.0.x
Version 9.0.1
- Fixed bug where characters were improperly going through walls.
- Fixed a number of minor crashes with creating behavior paths.
Version 9.0.0
- To enable DI-Guy AI in programs using the DI-Guy SDK, the header file "diguy_ai.h" must be included, and the functions diguy_ai_initialize() and diguy_ai_deinitialize() must be called at the appropriate times.
- New command line flag added to DI-Guy Scenario for optionally. disabling DI-Guy AI. By default DI-Guy Scenario will look for the diguy_ai license feature and check it out if it is present. By putting "-module diguy_ai" on the command line, DI-Guy Scenario will not attempt to enable DI-Guy AI.
- Fixed problem with DI-Guy AI agents having trouble killing animals.
- Painting a non-continuous region will be more likely to successfully create a behavior path, the longest path from the start point to the mouse up location is used.
- Fixed issues with feelers: changes made via UI now change all crowd members, 3D rep of feelers now updated immediately when changed and on reset.
- Fixed problem that agent feeler collide distance could not be greater than turn distance.
- It is now possible to add a feeler callback to enable DI-Guy AI agents to interact better with static geometry in the SDK. See the following functions for more details:
- Crowds and agents can now flee a group. Accessed via:
Version 8.6.3
- Crowd UI Improvements:
- Selected member will now only show postures and variants that it has available.
- Selected edit mode with display better visual cues indicating which crowd members will be affected by changes
- Added look at member button.
- Crowd Blitzing: Blitzing a crowd into an area that is non-contiguous will now attempt to find the longest path from the start point to the end point, This should fix a frequent failure case with the Blitzer.
Version 8.6.1
- DI-Guy SAF references changed to DI-Guy AI.
Version 8.6.0
- New DI-Guy SAF functions:
Version 8.5.0
- Initial DI-Guy SAF release.
- Added/updated DI-Guy SAF classes:
- New DI-Guy SAF functions:
DI-Guy Motion Editor 9.0 and earlier
Version 9.0.x
Version 9.0.1
- Added sample bvh file to motions directory, should help document how DI-Guy expects bvh files to be structured.
Version 9.0.0
- If motions are added to an action table, the proper default actor is now set automatically.
- Improved support for editing offset poses, should be much easier, and not cause abrupt joint behavior.
- Changing the actor of a motion arc now immediately applies the new scale to the motion, improvements to actor choosing, motion scaling, and importing code.
- Fixed a number of action table editing issues: including hard crash with undo, "remove unused motions" causing corrupted action tables.
- General UI improvements:
- +/- keys behave more intuitively with regards to the yaw/pitch/roll of the poser.
- Shift key alters magnitude of +/- change.
- Poser editing gizmo now auto-scales based on camera distance.
- Editing mode is now displayed in 3D window title bar.
- Initial directories for me project, importing motions and saving motions are now set to expected values.
Version 8.6.3
- Fixed issue with zero length animations causing div by zero.
- Fixed minor bug with action tables not properly updating when unused motions were removed.
Version 7.1.11
- Fixed problem that many error messages would appear when saving action tables.
Version 7.1.0
- Fixed various problems with setting variants and angle extents for 2-axis motions in the Action Table Editor.
- Added sliders for testing aim actions in the Action Table Editor.
Version 6.1.9
- Fixed a number of bugs introduced with the upgrade to high precision positions.
6.1.0
- Added new gesture table editor, allows for the modification of the action tables of table gestures.
- Null motion arcs are now editable, with blend type and duration as parameters.
Version 6.0.6
- BVH file import now supports joint translations in addition to rotations.
- Resultant BDM files contain only relevant variables.
Version 6.0.0
- Initial 6.0 DI-Guy Motion Editor release.
DI-Guy Character Viewer 9.0 and earlier
Version 8.0.x
Version 8.0.2
- Added view selection buttons that load new camera settings.
Version 6.1.9
- Fixed a number of bugs introduced with the upgrade to high precision positions.
- Fixed character transparency.
- Fixed selecting the default appearance.
Version 6.0.x
Version 6.0.2
- Added default settings file that shows Character Type / Appearance / Action selection page.
Version 6.0.1
- Fixed problem where appearances that used a different actor than the default actor for a character did not correctly display.
Version 6.0.0
- DI-Guy Character Viewer added to DI-Guy Applications Suite. Allows quick review of character types, appearances, and actions.
DI-Guy for Vega Prime Version 5.2 - 9.0
Version 9.0
Version 9.0.3
- vpNet 2.2 should now be enabled.
- Fixed issue with skyLight lighting and shaders not being properly applied.
- Fixed Memory leak when characters were unrefed to zero. Note a slight change to the basics example.
Version 9.0.1
- Fixed issue with new vpDiguys not having their locations properly set when reading out of an acf.
- Fixed issue with vpDiguyCharacters parented to vpTransforms not being properly created.
Version 9.0.0
- DI-Guy for Vega Prime now works with VP 2.2.
Version 8.0
Version 8.6.3
- Fixed crash on exit when a vpDiguyCharacter parent was not a scenario.
- Fixed bug where characters would multiply render if they were parented to a vpObject
- parented and translated characters will should start broadcasting over the network with proper values.
Version 8.0.3
- Moved example_acfs to their own subdirectory instead of in simple_playback directory.
- Added warning about setting channel LOD scale to zero, can cause character to not draw.
- Fixed an issue where not having a valid license could cause vp applications to crash.
- Fixed licensing issue effecting vpDiguy/vpNet/HLA/stealth.
- Basics Programming example now demonstrates ground clamping. As well as some other polish to programming examples.
Version 8.0.2
- Improved reporting of version information during installation.
Version 8.0.0
- Initial 8.0 release candidate.
- vpDiguy using vpNet should now support all coordinate conversion routines that vpNet supports.
- Memory usage and rendering performance improvements.
Version 7.0
Version 7.0.8
- Fixed HLA networking licensing issue. Shouldn't need explicit hla license with vpNet.
- Added new autogenerated vpDiguy SDK docs.
- Added code to basics example that demonstrates creating a character after configure.
- Added documentation about vpDiguy openAL audio module's incompatibility with vpAudio module.
- Added static versions of vpDiguy libraries, updated autolinking code in vpDiguyCpp.cpp.
Version 7.0.7
- Fixed a number of vpNet related bugs.
- NOTE: In order to make vpNet interaction more solid reading of UTM coordinates out of Scenario Objects in vpDiguy has been disabled. UTM coordinates should be specified explicitly in the Net Connection gcf panel and the DI-Guy Scenario Network Page.
Version 7.0.6
- Fixed a number of recreation/looping related bugs.
Version 7.0.3
- Turned on vpNet/vpDiguy networking.
- Updated all the acfs to be vp 2.0 compliant.
- Updated vpDiguy gcf to include new 7.0 content.
- Fixed bug in UTM support.
- Fixed problem if multiple diguy particles attempt to instantiate the same type of vpFX. Fixed memory leak as well.
- Fixed divide by zero bug in networking code, could cause 0th character to never show up.
- Fixed bug where a character with an appearance change would not be recreated properly if a scenario was looping.
Version 7.0.0
- Fixed a couple of vpDiguyScenario function calls to print a warning if the functions are called before configure, instead of crashing.
- diguyCharacter's position syncs with vpDiguyCharacter on creation.
- Distributed rendering should now support mapping from DI-Guy particles.
Version 6.0
Version 6.1.11
- Consolidated networking examples, moved vpnet_(send/receive)_(dis/hla).acf into simple_playback because they didn't have unique c++ code.
- Added postLoad function to vpDiguyCharacter building code to try and enable sensor prime.
- Added vpDiguyScenario::set_time_independant_of_vp_sim_time() and vpDiguyScenario::get_time_independant_of_vp_sim_time() Allows time to be disconnected from sim time.
Version 6.1.10
- Renamed vpDiguyScenario::SetSyncCameraEnable() to vpDiguyScenario::setSyncCameraEnable().
Version 6.1.9
- Added per scenario time offset code.
Version 6.1.8
- Code now compiles against Vega 2.0 libraries:
- Added 2.0 style copy constructor for diguyCharacters to use in cloning.
- Fixed a bug where locked off joints issued warnings.
- Fixed a bug where some dynamic matrixes weren't being properly updating, fixes gazing inside Vega.
- Altered how diguyScenarios get loaded to accommodate new merging code.
- Unsupported Vega sound module now uses openAL.
Version 6.1.1
- gcfs and xsd no longer use "DI-Guy" in the naming convention; instead "Diguy" is now used. This avoids uncompilable code generated from lynxPrime's export .cpp functionality, as well as being more consistent with Vega conventions.
Version 6.0.8
- Fixed serious bug affecting HLA networking in DI-Guy for Vega Prime. This bug was causing various problems, ranging from missing or extra apparent network entities, to entities appearing at the wrong location.
Version 6.0.7
- Changed all Vega Prime code/acfs that specify "DI-Guy" to "Diguy". This should allow cpp exports to work better.
- Renamed vpDiguy.h/cpp to vpDiguySettings to better match acf info.
- Added Vega Prime view settings example that shows off camera sync code.
- Added Vega Prime simple example that shows how to initialize and run with no acf or dss.
Version 6.0.6
- Fixed problem which inadvertently disabled standard Vega Prime "X" key functionality (enable / disable the position strategy for all observers) in a vpDiguy application.
Version 6.0.5
- Fixed problems preventing DI-Guy for Vega Prime from working with DIS/HLA for Vega Prime. DI-Guy for Vega Prime now works with Vega Prime 1.2.2 from MultiGen Paradigm and vpNet 1.2.2 from MAK Technologies. Prior versions of vpNet are not supported.
Version 6.0.2
- Switched bdiString to bdiString* in vpDiguyCharacter.h, to remove a dependency on a header file that is not distributed.
Version 6.0.1
- Fixed problem in vpDiguy DIS networking. Outgoing entities were being published with entity numbers which conflicted with those being used by Vega Prime entities. On the receiving end, this would cause characters to pop from place to place.
Version 5.0
Version 5.3.4
- Added a circle example program to programming_examples/vpdiguy.
Version 5.3.3
- DI-Guy characters types are now listed in a Character Type combo box.
- A character type sensitive list of appearances are now listed in an Appearance combo box.
- A character type sensitive list of actions are now listed in an Action combo box.
- A character type sensitive list of head appearances are now listed in a Head Appearance combo box.
- Altering the xyz position, heading or scale factor of a character now reflects on the character immediately.
- Adding a ground clamp to a DI-Guy Scenario node now adds the ground clamp to all of its children that don't currently have a ground clamp.
- Added new DI-Guy Settings functionality, including turning on/off scripting, sound effects, facial expressions, and the mapping of DI-Guy particles to Vega particles.
- Added new options to DI-Guy Scenario panel.
- Added toggle for showing scene objects found in the scenario file.
- Added Sync Camera option that will slave the observer/motion controls to the DI-Guy camera.
- Adding a DI-Guy character directly to a scene now creates one without a scenario being necessary.
- DI-Guy characters dropped into a vpNet model map are now correctly cloned. (Requires the latest version of vpNet.)
Version 5.2.1
- Better integration with MaK's vpNet module (see above).
- Installation now occurs as a separate module on the DI-Guy CD.
- Installation now automatically copies samples, documents to the Vega Prime installation as well as registering the DI-Guy for Vega Prime module.
DI-Guy Data, 9.0 and Earlier
Version 9.0
Version 9.0.1
- Added character soldier_sa80, a British soldier with desert and temperate appearances using a sa80, based on the soldier_07 character. Available appearances:
- uk_desert_sa80
- uk_temperate_sa80
- Added character "projectile" with meters per second motions. Character projectile appearances:
- rpg_fired
- sa7_fired
- stinger_fired
- javelin_fired
- 120mm_tank_round_fired
- at4_fired
- 40mm_fired
- Added sound files: m203_hit.wav, fire_m203.wav, arabic_street_sounds.wav sa7_flight.wav, sa7_fired.wav, stinger_fired.wav, stinger_flight.wav, javelin_flight.wav, javelin_impact.wav, at4_fired.wav, at4_flight.wav at4_impact.wav, javelin_fired.wav, pk74_fired.wav, m1a1_fired.wav
Version 9.0.1
- Some character types have been made deprecated, and made "legacy" character types. If these character types are used in an existing .dss file or are created by a diguyScenario::create_character() call they will be created, but by default they will not show up in any DI-Guy Scenario character type selection controls. The legacy character types are:
- soldier_m249
- soldier_m4
- soldier_qk
- soldier_signals
- soldier_fire
- soldier_pistol
- soldier_melios
- afghan_child_crowd
- male_pedestrian3
- mped_sweeper
- mped1_misc
- mped2_misc
- mped3_misc
- mped5_crowd2
- mped5_crowd3
- mped5_crowd4
- mped5_crowd5
- mped5_crowd6
- fped2_misc
- fped3_crowd2
- suspect3
- marshaller
- esil
- soldier_precise
- launcher
- suspect
- suspect2
- fped_mother
- sergeant
Version 8.0
Version 8.0.0
- New character types:
- chain_simulation
- civilian_cc
- soldier_cc
- soldier_at4
- soldier_javelin
- soldier_m249
- soldier_m9
- soldier_m4
- train
- New human appearances:
- 3 Security Guards
- Hazmat Suits level A B and C
- Assortment of Hazmat props
- 10 different Close Combat civilians
- Close Combat BDU and DCU with M9, M249, M240, M60, AT4, Javelin M4 with M203, M16 with M203 Stinger weapons
- Close Combat Opfor with SA16, RPG7, AK47 and PK74 weapons
- 3 Iraqi Insurgents
- 2 Iraqi Soldier
2 Iraqi Police
The following soldier appearances can have M9, M249, M240, M60, AT4, Javelin M4 with M203 and M16 with M203 weapons:
- 4 BDU with IBA
- 4 ACU with IBA
- 4 USMC with IBA
- 4 USMC desert with IBA
- New turret vehicle and technical vehicle appearances:
- gaz_truck_w_ZSU23_turret
- gaz_truck_w_ZSU23_turret_blown
- toyota_pickup_tech_turret
- toyota_pickup_tech_turret_blown
- humvee_50cal_grn_turret
- humvee_50cal_grn_turret_blown
- humvee_50cal_des_turret
- humvee_50cal_des_turret_blown
- m1a2_abrams_grn_turret
- m1a2_abrams_grn_turret_blown
- m1a2_abrams_des_turret
- m1a2_abrams_des_turret_blown
- t72_tank_grn_turret
- t72_tank_grn_turret_blown
- t72_tank_des_turret
- t72_tank_des_turret_blown
- m2a3_bradley_grn_turret
- m2a3_bradley_grn_turret_blown
- m2a3_bradley_des_turret
- m2a3_bradley_des_turret_blown
- leclerc_tank_descamo_turret
- leclerc_tank_descamo_turret_blown
- leclerc_tank_camo_turret
- leclerc_tank_camo_turret_blown
- Added Motions to Soldier and Soldier2 characters:
- stand_ready_8th_turn_left
- stand_ready_8th_turn_right
- stand_ready_qtr_turn_left
- stand_ready_qtr_turn_right
- stand_aim_extreme
- kneel_aim_extreme
- walk_aim
- walk_aim_back
Version 7.0
Version 7.0.0
- New character types:
- chem_bio_pedestrian
- fdc_chock_and_chains
- fdc_fuelman
- fdc_grounding
- fdc_pallet
- fdc_pedestrian
- firefighter
- fireman_silver
- vehicle_technical
- vehicle_turret
- vehicle_wheels
Version 6.0
Version 6.1.2
- Vehicles and props now have more accurate bounding volumes.
- Fixed problem with config file appearance syntax. The item "shapeset:shape" format caused a crash; it now works again.
- Replaced default scene object (sets/default_stage/default_stage.flt) with new default (sets/default_stage7/flt/default_stage7.flt). The new default_stage7.flt scene object has a number of different areas in which example scenarios can be placed.
Version 6.1.1
- Added new appearance "invisible_human"; Using this appearance for a human character will remove all geometry from the character, effectively making it invisible.
Version 6.1.0
- Added ability to specify in config files how long a null transition should take, and which blend function it should use.
Version 6.0.2
- Modified stroll motions of female_pedestrian character to move hands further away from body.
- Fixed some facing issues for soldier-type characters in transition motions between stand_aim and kneel_aim actions.
Version 6.0.1
- Added particle_puff.rgba to list of effects textures.
- Fixed the standing hip height of actor greg. It had been mistakenly changed to match that of actor bill. This caused problems for motion scaling for some actor / appearance combinations. (PR 3029)
Version 6.0.0
- Initial 6.0 DI-Guy Data release.
Version 5.0
Version 5.3.5
- Removed one unused level of Motion LODs from data loaders config entries. The removed LOD 6 always had 0 variables in it, which wasn't useful for anything. This change requires use of DI-Guy Applications 5.3.5.
Version 5.3.2
- Changed format of Motion Texture (motex) entries in DI-Guy config files. The new format gives motion textures their own config entry keyword, separate from motion arcs. This allows DI-Guy to know exactly which motions are going to be used as motion textures. Custom motion textures using the old format need to be updated.
- Changed format of gesture entries in DI-Guy config files. Custom gestures using the old format need to be updated.
Version 5.3.1
- Fixed problem with airport_crowd character selecting wrong action for default moving action.
- Added sergeant2 character, which is similar to the sergeant character but better deals with transitions between actions.
- Added fped_mother2 character, which is similar to the fped_mother character but better deals with transitions between actions.
Version 5.2.2
- Running motion has been improved for the following characters: afghan_fighter, cbd, soldier, soldier2, soldier_precise, soldier_qk. Scenarios from previous revisions using these motions may behave slightly differently.