Component

Advanced Control Point Component     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 PlayWhether should start working in the Advanced Control Points System instantly on Begin Play.
Otherwise we have the following options to start the Component:
  • Manually run event Component->External Called Events->Control Points System Start.
  • It can be also started by Trigger with task Start Control Points System.
  • Also Action Trigger to Start/Stop Control Points System has possibility to start Component.
Is Should ValidateWhether 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 OrderSpecial function that determines in which order Control Points will be selected.

There are two default functions you can choose:
  • Sequentially – will select next Control Point according to the filling of the Control Points array in Component.Randomly – will select next Control Point random from the Control Points array.
Move Order function is designed to be easly created for your needs. To create new kind of Move Order which cover your needs, simply create child from CP_MoveOrder_Base or duplicate one of existing Move Order objects and modify. Its structure is simple and intuitive.

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 ProcedureSpecial 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:
  • Stay Occupied until Reach Next CP – current Control Point remain occupied until Actor start occupating Control Point it is going to.Stop Occupied when Start Moving to Next CP – current Control Point will stop being occupied as soon as the Actor starts his movement to the next Control Point.Stop Occupied when Really Leave CP Range or Reach Next CP – current Control Point will stop being occupied when Actor whose going to the next Control Point really leave the Range (Control Point parameter) of current Control Point.
Occupied Procedure function is designed to be easely created for your needs. To create new kind of Occupied Procedure which cover your needs, simply create child from CP_Occupied_Procedure_Base or duplicate one of existing Occupied Procedure objects and modify. Its structure is simple and intuitive.

More specific information of Occupied Procedure and more about create your own Occupied Procedure you can find in Occupied Procedure page.
Rotation ProcedureSpecial 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:
  • Ignore Rotation – leave rotation as it was when movement start. If Actor has its own rotation support this is the best choice.
    Look Instantly in the Custom Direction – actor instanly looks at the selected rotation.
    Look Instantly in the Direction of Movement – actor instantly looks at vector from last frame position to current frame position. You can also lock selected axis of rotation and choose rotation offeset relative to direction of movement.
    Look Instantly in the Direction of Object – actor instantly looks at the selected object, also when object is in move.
    Look Smoothly in the Custom Direction – actor smoothly with selected rotation rate looks at the selected rotation.
    Look Smoothly in the Direction of Movement – actor smoothly with selected rotation rate looks at vector from last frame position to current frame position. You can also choose rotation offset relative to direction of movement.
    Look Smoothly in the Direction of Object – actor smoothly with selected rotation rate looks at the selected object, also when object is in move.
Rotation Procedure function is designed to be easly created for your needs. To create new kind of Rotation Procedure which cover your needs, simply create child from CP_RotationProcedure_Base or duplicate one of existing Rotation Procedure objects and modify. Its structure is simple and intuitive.

More specific information of Rotation Procedure and more about create your own Rotation Procedure you can find in Rotation Procedure page.
Control PointsControl 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 ActionsSequentially 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:
  • Character – whose name starts with “[Character]…” and should only be used for children of the class “Character” because they use character specific functions and variables.Pure Actor – whose name start with “[Pure Actor]…” can be used on any kind of Actors also on Characters, Pawn, Emitters, Static Meshes, etc. These Actions don’t use specific functions or variables. In most cases you don’t want to use them for characters because they are designes specially for pure Actors.General – whose name don’t have any prefix. These Actions can be used on any Actor. Some of them have special function which don’t affect on Actor who owns this component e.g. “Back to Action”.
Actions are designed to be easly created for your needs. To create new kind of Action which cover your needs, simply create child from CP_Action_Base or duplicate one of existing Action objects and modify. Its structure is simple and intuitive.

More specific information of Action and more about create your own Action you can find in Action page.
Button ValidateButton 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.
Button Visualize Control PointsButton fired visualization showed position of all Control Points listed in this Advanced Control Points Component.
Visualization proceeds in the order of occurrence Control Points in the array.
Duration in seconds of visualizing each individual Control Point can be modified through Global Manager->General->Visualizers Duration.
Visualization has special material, which should be visible through most of the other object on the scene.
SplineSpline 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 (, , ). If you wish to modify Spline tangent you can select them manually on spline, but after that use only button when refreshing to not loose your tangent modification.

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.
In most cases is highly recommended to first remove old Spline, by button, before create new one.
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 StartEvent fired when next Action start.
As output variable you get Action which is reference to started Action.
Action FinishEvent fired when current Action finish.
As output variable you get:
  • Action which is reference to just finished Action
  • Is Action Executed Succesfully ? which is an information whether Action finished succesfully
All Action FinishedEvent fired when all Actions of current Control Point (or Begin Actions) finish.
As output variable you get:
  • Is Concerned Begin Actions which is an information whether finished Actions are Begin Actions.
  • Actor Component Control Point which hold reference to this Component.
  • Control Point Concerned which hold reference to Control Point who is concerned by this Actions. If Is Concerned Begin Actions variable is true, this value will be null.
Reached Next Control PointEvent fired when concerned actor reach next Control Point.
As output variable you get:
  • Actor Concerned which hold reference to Actor owning this Component.
  • Control Point Index which hold reached Control Point array index (concerned “Control Point” array variable in Configuration category). You can get Control Point reference by call Get Control Point pure function.
System StartEvent fired when this Component start working.
As output variable you get Control Point Component which hold reference to this Component.
System StopEvent 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.

Control Points System StartEvent 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.
Control Points System StopEvent Control Points System Stop gives you possibility to stop this Component manually.
Action StopEvent 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.
Action Concurrent StopEvent 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.