RAIN{one} v1.2.1

Patch Notes:

Minor bug fix patch

  • see notes for v1.2.0 for compatibility changes

1.2.1 Release notes:

  •  Fixed issues with Goal Oriented Behavior
  •  Updated AI initialization
  •  Fixed refresh issues with BT Editor
  • Fixed issue with Mac compatibility (BT Editor crash)



RAIN{one} v1.2.0

Patch Notes:

    There have been a number of significant changes and upgrades to 1.2.0 from the prior 1.1.4 build. Please note that if you run into any trouble upgrading a prior RAIN project, you may be able to fix any problems by going to the RAIN->Help menu and choosing the “Rebind RAIN Components” option. We advise you to make a copy of your project before upgrading.

  • Added support for using custom waypoint graphs
  • PathManager is now an abstract class
  • RAINPathManager replaces PathManager in most cases (Use the “Rebind RAIN Components” option to convert old PathManager components into RAINPathManagers. This may not copy all values.)
  • CustomPathManager supports creating custom path movement
  • Added support for script rebinding when updating RAIN
  • Added new Behavior Tree nodes:
  • Timer node sets a delay, returns SUCCESS after
  • Random node chooses a single child node at random to execute
  • Yield node pauses the behavior tree at the yield point for a single frame
  • Reorganized Behavior Tree menus
  • Removed the “Generate Default Behavior Tree XML” button from the BehaviorTreeMind component. Behavior trees can still be created in the Behavior Tree Editor.
  • Move primitive now supports animation layers
  • Move primitives now have a field for selecting the animation wrap mode.
  • Detect primitive now returns failure when nothing is detected, instead of running. (To achieve the previous behavior, set repeat to RepeatUntilSuccess.)
  • Animation primitive now supports layers
  • Animation primitives now always stop when the node exits
  • Setting animation wait time <= 0 will allow it to run indefinitely (To achieve the previous behavior of looping animation during execution of other nodes, place the animation primitive in a parallel with other nodes.)
  • Animations now support fading
  • Fixed misc. minor Recast bugs
  • Fixed issues calculating path neighbors on some navigation graphs
  • You may now add a GraphModifier component to dynamic objects that impact the navigation grid. Especially useful for turn-based games.

RAIN{one} v1.1.3

Patch Notes:

  • Added public accessor for PathManager in Agent
  • Fixed issue with adding multiple Aspects to a Sensor
  • Fix for blurry textures in some Behavior Trees
  • Improved waypoint pathfinding performance
  • NavGrid-based movement will no longer attempt to move directly to a target if a path can’t be computed
  • Fixed issues with serialization and saving in the Behavior Tree Editor
  • Misc. fixes to Recast Nav Grid generation
  • Added Reset to BTActivationManager for restarting the behavior tree
  • Misc. other minor bug fixes

RAIN{one} v1.1.2

Bug Fixes:

  • Fixed bug with AIKinematicController not properly finding a collider for obstacle avoidance.
  • Fixed issue with separate move/look targets in MoveAction primitive.
  • Fixed issue with NestedActionContext causing GOB expressions to sometimes compute incorrectly.
  • Fixed sensor loading to start at the root of the Avatar.
  • Fixed issue with renaming variables in BTs.
  • Fixed issue with rotation speed not being calculated or applied properly.

Feature Changes:

  • Added animation support in all AIControllers.
  • Added IAnimationRequestHandler interface and AnimationRequestHandler class.
  • Removed applyGravity from controllers. Corrected the move call on CharacterControllers.
  • Reduced overhead in pathfinding, added support for lazy array init.
  • Added synchronization between update and apply steps for position/orientation and Avatars.

Other Notes:

  • Updated API comments

RAIN{one} v1.1.1

Welcome to RAIN{one} v1.1.1. The 1.1.1 release contains a few bug fixes outlined below. Please review the notes to familiarize yourself with the changes.

Bug Fixes:

  • Removed “Apply Gravity” from AICharacterController. Gravity is now applied normally by the CharacterController.
  • Fixed bug when Recasting large meshes.
  • Partial fix to Recast ignoring max slope. Max slope may still be ignored on bounding volumes, but will apply to terrain and mesh colliders.
  • Fixed problem with spawning AI at origin.
  • Fixed issue with animations requiring a broadcast message receiver.
  • AI will no longer attempt to move when a path cannot be found.
  • Fixed bug with multiple AI sharing navigation files.

RAIN{one} v1.1.0

Welcome to RAIN{one} 1.1.0. The 1.1.0 release contains a ton of new and revamped features, upgrades, and fixes. Please review these notes to familiarize yourself with the changes.


  • RAIN menus now appear under the Component menu.


  • Added AIAnimationController and AIAnimationExtender for general purpose extensibility of animations.
  • Added MixamoAIAnimationExtender as a replacement for AIMixamoAnimationController. The new setup requires a user to add an AIAnimationController and then the MixamoAIAnimationExtender to enable support for Mixamo’s new AnimationStateMachineController.
  • NOTE: The MixamoAIAnimationExtender requires users to uncomment the Script file located in the RAIN/Scripts folder.


  • One way waypoints are now supported
  • Users can cycle waypoint connections when 2 waypoints are selected
  • AI can now use a waypoint collection directly without requiring a saved file.
  • Users can now change the look of waypoints by adjusting both inner and outer sphere size


  • The path manager is no longer used to generate Recast navigation. Use the new Recast Object for that.
  • Navigation can be set to use either a Navigation Grid File, Waypoint File, or Waypoint Collection
  • Close Enough Distance and Close Enough Angle and Face Before Move Angle have been added to adjust path following parameters
    • close enough distance specifies how close the AI must get to its destination before stopping
    • close nough radius specifies how close the rotation angle of the AI must be before stopping turning
    • face before move angle specifies how close the AI must be facing to its target before beginning linear movement
  • Nav Path Find Steps Per Frame is used to throttle pathfinding activity to conserve frame rate.
  • Move Target and Look Target can be used for automatic movement. Specify a Transform (game object) or a vector position. When used with SimpleMind, this provides automatic movement, follow behavior, etc.
  • Allow 3D look indicates whether the Look behavior should allow x/z rotations. For most characters, this should be off. For cameras, on.


  • Now contains checkboxes for AutoLook, AutoMove. When combined with PathManager’s MoveTarget and LookTarget this provides automatic movement behavior.


  • Sensors now throttle their sensing for objects that remain within a collider bounds.
  • Sensors now support Raycasting to avoid “seeing through walls”. Raycasts can be visualized in the Editor.

Recast and Navigation Grids:

  • The Recast system has been overhauled. Navigation grid regions are now used instead of quad fields.
  • Add a Recast Object to your scene to use Recast Nav Grid generation.
  • Recast can be performed based on distance from the Recast Object or based on an attached GameObject with colliders.
  • New visualization options show a tile-based representation of the recast, either showing spans or individual regions. This also includes neighbor arrow markers.
  • Recast parameters have been simplified.


  • New primitives have been added to simplify generation of behavior in behavior trees without the need for code.
  • New primitives include Move, Animate, Play Audio, Detect (sensors), and Assign Variable


  • Speed improvements and optimizations throughout.
  • actionContext has been made available directly through the Agent to simplify code access to Behavior Tree variables.
  • GOB utility and Insistence/Importance expressions now include a Min and Max. This helps to create non-linear functions for behavior.
  • Many classes, especially in the Path code, are now publicly accessible.
  • Path graphs are now shared between AI when loaded through PathManager, reducing memory usage.
  • Fixed a bug with AssignmentExpressions not assigning variables correctly in all cases

RAIN{one} v1.0.4


You can now access Goal Oriented Behavior through the Behavior Tree Mind. Goal Oriented Behavior is implemented as Behavior Tree Nodes and can be accessed and edited from within the new Behavior Tree Editor. Goal-Action Mind has been removed from 1.0.4.

Our apologies to those who have developed systems using the prior implementation. Because of the prior version’s reliance on serialization, we could not provide an upgrade path. The new implementation stores data in files that will be upgradeable when needed in future releases.

Bug Fixes:

  • Updated AICharacterController to separate Y axis when calculating velocities
  • Updated AICharacterController to make addition of Gravity optional.
  • BehaviorTree condition nodes now support the repeatuntil attribute

Feature Changes:

  • New Behavior Tree Editor can be used to visually create and edit behavior trees from within Unity
  • Goal Oriented Behavior is now implemented through the Behavior Tree System.
  • RAINAgent is now the container for Personality Traits. These work with the GOB system to influence Goal importance.
  • Added new AvatarController “AIMixamoAnimationController” for managing AI that use Mixamo Root Motion Computer and Mixamo animations
  • Reorganized Component menu so that RAIN scripts appear under a RAIN menu.
  • Variables in behavior trees and Actions are no longer accessed through a Variable list. All Variables are managed through the actionContext.
  • PreAction() no longer accepts List as a parameter. Use actionContext directly to read/write variables.
  • PathManager now makes “closeEnoughDistance” publicly available for tweaking how close an AI needs to get to a destination target on MoveTo.

Known Issues:

  • There are known issues in generating good navmeshes from the recast system. We are aware of these issues and are working to resolve them ASAP as part of patch 1.0.5.
  • Once you generate per-waypoint navmesh files, the pathfollowing system will always use them. If you want to just use waypoints (and stop using the recast navmeshes) then delete all WaypointXXXX resources from the Assets/AI/Resources/Navigation folder.

RAINone v1.0.3


To all users of v1.0.2 and previous - We have made significant changes to how certain save files are stored. In particular:

Save file locations for navigation and behavior trees have changed. RAIN now forces these files to appear in
Assets/AI/Resources/BehaviorTree and Assets/AI/Resources/Navigation

The editor windows will force any filename/path entered to originate in one of the above folders. For example if you enter a path to your waypoint graph file, the editor will create a relative path and place it in the special Resources folder.

Your file extensions may be replaced with Resource friendly file extensions. For example, navigation graph files now are forced to a “.bytes” extension. If you save a file called “waypoints.nav” it will be saved as “waypoints.bytes”.

To fix any existing projects, do the following:

  1. For nav files, simply regenerate the files as you did previously. When you do so, RAIN should move the file locations and update your AI. You can strip any path information and just specify the filename if desired.
  2. For Behavior Tree xml, type in the name of your xml file and click Generate Default Behavior Tree XML. Once the new file is generated, either copy the contents of your old file into the new one, or overwrite the old file with your new file.

Bug Fixes:

  • Fixed deployment issues. RAIN can now be built and deployed in Win, Mac, Web, iOS, and Android.
  • Fixed Recast generation issue in Mac
  • Fixed an issue related to following paths on sloped terrain.

Feature Changes:

Added support for Obstacle Avoidance

  • You must rerig your AI. Simply go to Create AI in the RAIN menu and choose the option for Mind you already have set up. This will add an ObstacleAvoidanceCollider to your AI.
  • Checkbox added to PathManager to enable/disable avoidance
  • Avoidance Smoothing Time field in PathManager is used to smooth out jitter. Smaller values produce more responsive avoidance. Larger values reduce jitter effects.
  • Avoidance Checks Per Second field in PathManager is used to reduce computational cost. Smaller values produce less responsive avoidance. Larger values increase computational overhead.
  • Avoidance Strength field in PathManager is used to increase the weight of Avoidance with respect to path following. Larger values increase avoidance at the expense of path following. Smaller values support path following over avoidance.

Developers may now create their own AvatarControllers. See the API docs for more info.

Known Issues:

  • There are known issues in generating good navmeshes from the recast system. We are aware of these issues and are working to resolve them ASAP.
  • Once you generate per-waypoint navmesh files, the pathfollowing system will always use them. If you want to just use waypoints (and stop using the recast navmeshes) then delete all WaypointXXXX resources from the Assets/AI/Resources/Navigation folder.

RAIN{one} v1.0.2

Bug Fixes:

  • Fixed variable loading in behavior trees
  • Expanding box sensor no longer resets when it detects an Aspect
  • Improved recast in certain geometries
  • Removed extraneous logging messages, especially around “Failed to load QuadFieldGraph”

Feature Changes:

  • Added repeatuntil attribute to behavior tree nodes
  • Added base behavior tree xml file creation
  • Behavior tree now takes a root node name to start from
  • Behavior tree variables are now accessible through actionContext (you can use as the type)
  • Behavior tree node names can now be blank (root node should have a name)
  • Sensors now default to the layer of the object to which they are attached
  • Added SphereSensor
  • Added support for graph wireframe to path manager for whole scene recast