🔸Warp Providers
In this section you will learn about warp providers.
Technical Aspects
Warp Providers are components that provide active interaction with target points.
Example: the built-in MantleComponent will search for the climbable obstacle point, and then pass it to the Motion Warping component.
This plugin offers a common interface - IWarpProvider - that can be used to create custom Warp Providers. This interface contains a single method called Interact that returns the result of a check:
public struct WarpInteractionResult
{
public WarpPoint[] points; // Target points.
public MotionWarpingAsset asset; // Warping asset with settings.
public bool success; // If the interaction can be started.
public bool IsValid()
{
return success && points != null && asset != null;
}
}
public interface IWarpPointProvider
{
public WarpInteractionResult Interact(GameObject instigator);
}
The plugin supports both moving and static obstacles out of the box. Here is how to correctly pass the data for each obstacle type:
Example
Here is how to use a Warp Provider in code. We are going to use VaultComponent in this example:
public class YourController : MonoBehaviour
{
//...
private MotionWarping _warpingComponent;
//...
//...
private VaultComponent _vaultComponent;
//...
private void Start()
{
//...
_warpingComponent = GetComponent<MotionWarping>();
//...
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
_warpingComponent.Interact(_vaultComponent);
}
}
//...
}
It is also possible to pass the gameObject as a parameter in the Interact method:
_warpingComponent.Interact(gameObject);
In this case, the Motion Warping will try to get the first component that implements the IWarpProvider interface and interact with it.
Last updated