Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Controler Speed from metadata
#1
I as trying to modify the height metadata script to control the speed, without success. How can I accomplish this? Thanks.
Reply
#2
Hi,

Code:
using FluffyUnderware.Curvy;
using UnityEngine;

public class SpeedMetaData : CurvyInterpolatableMetadataBase<float>
{
    [SerializeField]
    private float m_Speed;

    public override float MetaDataValue => m_Speed;

    public override float Interpolate(
        CurvyInterpolatableMetadataBase<float> nextMetadata,
        float interpolationTime)
    {
        if (nextMetadata == null)
            return MetaDataValue;

        return Mathf.Lerp(
            MetaDataValue,
            nextMetadata.MetaDataValue,
            interpolationTime
        );
    }
}

Code:
using FluffyUnderware.Curvy.Controllers;
using UnityEngine;

public class TestSplineController : SplineController
{
    /// <summary>
    /// This is called just after the SplineController has been initialized
    /// </summary>
    protected override void UserAfterInit() =>
        SetSpeed();

    /// <summary>
    /// Called after the controller has updated it's position or rotation
    /// </summary>
    protected override void UserAfterUpdate() =>
        SetSpeed();

    private void SetSpeed()
    {
        // Get the interpolated Metadata value for the current position (for SplineController, RelativePosition means TF)
        // If values can't be interpolated (no next value), current value (if present) or default type value (for float that's 0) is returned
        Speed = Spline.GetInterpolatedMetadata<SpeedMetaData, float>(RelativePosition);
        Debug.Log(Speed);
    }
}

I hope this helped.
If and when you feel like it, please leave a review for the asset, that helps a lot.
Have a nice day
Please consider leaving a review for Curvy. This will help a lot keeping Curvy relevant in the eyes of the Asset Store algorithm.
Reply
#3
Thank you for your reply! Is there an easy way to add the SpeedMetaData component the control points automatically while the spline is being created?
Reply
#4
Thank you for your reply! Is there an easy way to add the SpeedMetaData component the control points automatically while the spline is being created?
Reply
#5
I see different ways, one of them being to create a script that would listen to the OnRefresh event of active splines in the scene, and on each refresh to make sure that all the splines` control points have a SpeedMetaData component attached to them.
The main members to use:
CurvySpline.OnRefresh
CurvySpline.ControlPointsList
Did this help?
Please consider leaving a review for Curvy. This will help a lot keeping Curvy relevant in the eyes of the Asset Store algorithm.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  "MetaData" Of Entire Spline Heightmap SAMYTHEBIGJUICY 3 6 10-16-2023, 08:42 AM
Last Post: _Aka_
  Metadata interpolation tairoark 3 10 10-17-2022, 01:07 PM
Last Post: _Aka_
  Proper metadata usage tairoark 2 8 10-01-2022, 12:04 PM
Last Post: _Aka_
  Accessing Metadata from CG hucota7 1 8 02-16-2022, 08:49 PM
Last Post: _Aka_

Forum Jump: