Advanced Control Points Component is the core of the system. Component manages other elements in most cases.
Advanced Control Points Component is an Actor Component which we need add to Actors which we want to use in Advanced Control Points System.

Advanced Control Points Component can be added inside Blueprint Editor.

Advanced Control Points Component can be added directly to Actor instance on the level.

Spawn Point detect whether spawned Actor has Advanced Control Points Component or no. If no then Component is automatically added to spawned Actor.
Advanced Control Points Component has parameters in two categories Configuration and Configuration Spline.
Is Start On Begin Play | Whether should start working in the Advanced Control Points System instantly on Begin Play. Otherwise we have the following options to start the Component:
|
Is Should Validate | Whether do validation or not. Validation is done recursively. Every variable in Configuration and Configuration Spline categories are validated. Control Points listed in this particular Component are validated recursively. All Control Point in the list run it’s own Validation function which check his variables Actions which recursively run their Validation function. So at the very end of the validation process we are sure – every elements connected to this particular Component has fulfilled every mandatory fields and variable are not fulfilled badly in the most obvious way. Begin Actions array is also validated recursively, so we are sure, every Actions has fulfilled all mandatory fields and their variable are set well in the most obvious way. Validation impact on performance – so this functionality is very useful during level design to catch every obvious mistakes and oversights. But when we want to build project and need to get the highest performance – this variable should be set to FALSE. It is safe to leave this value always TRUE. It take a little impact on performance – but if we have reserve e.g. our project is small, we can simply leave this value TRUE (by default). BEWARE: When this variable is set to FALSE and we forget to fulfill some variables or set them badly then Component can work unpredictely or even crash !! |
Move Order | Special function that determines in which order Control Points will be selected. There are two default functions you can choose:
More about configuration of Move Order which is specific for every function and more about create your own Move Order you can find in Move Order page. |
Occupied Procedure | Special function that determines the start and the end of the Occupation of a current Control Point. Occupation is special state of Control Point. It inform that some specific Actor staying in the Control Point. Is useful when the same Control Point is used by more than one Actor. Control Point has Max Actors parameter which determines maximum Actor concurrently be in the same time on it. When you have a group of Actors using same Control Points path or paths intersect sharing some Control Points – you can decide how to choose next Control Point or how to behavior when some Actor(s) occupied Control Point to which it is currently going. Deciding about behavior when chosen Control Point is occupied – you can do in Move Order in configuration parameter Bypass. There are three default functions you can choose:
More specific information of Occupied Procedure and more about create your own Occupied Procedure you can find in Occupied Procedure page. |
Rotation Procedure | Special function which determines the rotation of an Actor during a movement. Rotation procedure adapt every frame direction. It can be instant or smooth, depends on function. In case of characters, Rotation Procedure can be ignored because Character Movement Component has its own Rotation Procedure which is equivalent to “Look Smoothly in the Direction of Movement”. Also, if our custom Actor/Pawn has built-it rotation, we can safely set Ignore Rotation. There are seven default function you can choose:
More specific information of Rotation Procedure and more about create your own Rotation Procedure you can find in Rotation Procedure page. |
Control Points | Control Points between which the actor moves. Every Action start by “Go Next…” or “Teleport Next…” use Control Points as destination targets. The order of Control Points has the meaning depends on the Move Order Procedure. Control Points are objects you should place on the level. Configuration of Control Points is set inside themselves after you click their instance on the level. If you leave Control Points array empty – only Begin Actions will be launched for the Actor who owns this component. More specific information of Control Point you can find in Control Point page. |
Begin Actions | Sequentially launched Actions when this component start (see Is Start on Begin Play). Every Action has its own specific configuration when you add it to the list. Default Actions can be divided into three categories:
More specific information of Action and more about create your own Action you can find in Action page. |
![]() | Button for Validate all parameters and functions recursively in this Component. Validation is useful for check whether parameters and functions are setup well in most obvious way. The validation result will be shown in the Output Log. Every objects which has its own parameters are validated recursively for to be sure everything will be checked. This mean that any number of Begin Actions of any kind you setup in this Component – all of them will be Validated according to their internal protocol. The same happen with Move Order, Occupied Procedure, Rotation Procedure, Control Points and all particular parameters in this Component. This button is for manually run Validation function on this Component. If you set parameter “Is Should Validate” to true – Validation function will run on this Component when it start working. Also click on this Button Validate will do normal Validation process. If you set parameter “Is Should Validate” to false – Validation function will not run on this Component when it start working. Also click on this Button Validate always show “Validate passed successfully !” because Validation function will not be fired. |
Spline | Spline can be used to move an Actor along it. Currently two Actions use Spline for movement. But nothing prevents you to create your own Action for movement or for any other reason using spline. Adding spline reference to your component does not obligate you to use it. For example in some Control Points you can move along Spline and on another Control Points you can Teleport or Move normally. Spline is generated along provided Control Points with additional Spline Points between them. Control Points order in an array is crucial. After Spline is generated, you can modify it by moving both Control Points or Spline Points, and then refresh it by special Button available in Spline itself, concerned Control Points and Spline Points ( ![]() ![]() ![]() ![]() It is also possible to use variable Is Auto Update Spilne which is available in concerned Control Points and Spline Points. Then any move of them enforce soft refreshing only positions of spline points. This is very useful option but its maintance is inside Construction Script what impact a little in performance. Suggest you use this Auto Update Spline option during spline design but after that turn off this functionality by deselect this value. If any of Begin Actions or any Action in provided Control Points use Spline and you don’t have any in “Spline” field – you will see Validation error when try to start this Component. It is safe to leave Spline empty if you don’t want to use it. More specific information of Spline you can find in Spline page. |
![]() | Button for creating new Spline based on provided Control Points in this Component. Between every provided Control Points one Spline Point is created. A reference to a freshly created spline is used to fill in the “Spline” field. |
![]() | Button for removing Spline and all its Spline Points. After removing, field “Spline” is clearing. |
Event Dispatchers
Component has event dispatchers you can bind when need to design some special functionality.
Action Start | Event fired when next Action start. As output variable you get Action which is reference to started Action. |
Action Finish | Event fired when current Action finish. As output variable you get:
|
All Action Finished | Event fired when all Actions of current Control Point (or Begin Actions) finish. As output variable you get:
|
Reached Next Control Point | Event fired when concerned actor reach next Control Point. As output variable you get:
|
System Start | Event fired when this Component start working. As output variable you get Control Point Component which hold reference to this Component. |
System Stop | Event fired when this Component stop working. As output variable you get Control Points Component which hold reference to this Component. |
External Called Events
Component has dedicated Graph External Called Events which hold events for managing selected Component manually.
![]() | Event Control Points System Start gives you possibility to start this Component manually. Parameter Is First Start when is set to true then Component will start from Begin Actions. It is safe to always set this parameter true. But sometimes you would continue movement or Actions where they finished before – in this case set this parameter as false. |
![]() | Event Control Points System Stop gives you possibility to stop this Component manually. |
![]() | Event Action Stop gives you possibility to stop current Action immediately. Sometimes you want to ingerate in Actions array manually. With this event you can stop Action before it finish. |
![]() | Event Action Concurrent Stop gives you possibility to stop actual concurrent Action immediately. Concurrent Action you can only run manually. With this event you can stop concurrent Action before it finish. |