67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public enum FishingLineNodeType
|
|
{
|
|
Start,
|
|
Float,
|
|
Weight,
|
|
Terminal,
|
|
Normal
|
|
}
|
|
|
|
[Serializable]
|
|
public class FishingLineLogicalNodeDefinition
|
|
{
|
|
[SerializeField] private string id = "Node";
|
|
[SerializeField] private FishingLineNodeType nodeType = FishingLineNodeType.Normal;
|
|
[SerializeField] [Min(0f)] private float distanceFromPrevious = 1f;
|
|
[SerializeField] [Min(0)] private int virtualNodeCount = 3;
|
|
[SerializeField] [Min(0f)] private float gravityScale = 1f;
|
|
[SerializeField] [Range(0f, 1f)] private float damping = 0.04f;
|
|
[SerializeField] private Color debugColor = Color.white;
|
|
|
|
public string Id => id;
|
|
public FishingLineNodeType NodeType => nodeType;
|
|
public float DistanceFromPrevious => distanceFromPrevious;
|
|
public int VirtualNodeCount => virtualNodeCount;
|
|
public float GravityScale => gravityScale;
|
|
public float Damping => damping;
|
|
public Color DebugColor => debugColor;
|
|
|
|
public void ConfigurePrototype(
|
|
string newId,
|
|
FishingLineNodeType newNodeType,
|
|
float newDistanceFromPrevious,
|
|
int newVirtualNodeCount,
|
|
float newGravityScale,
|
|
float newDamping,
|
|
Color newDebugColor)
|
|
{
|
|
id = newId;
|
|
nodeType = newNodeType;
|
|
distanceFromPrevious = Mathf.Max(0f, newDistanceFromPrevious);
|
|
virtualNodeCount = Mathf.Max(0, newVirtualNodeCount);
|
|
gravityScale = Mathf.Max(0f, newGravityScale);
|
|
damping = Mathf.Clamp01(newDamping);
|
|
debugColor = newDebugColor;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class FishingLineAttachmentBinding
|
|
{
|
|
[SerializeField] [Min(0)] private int logicalNodeIndex;
|
|
[SerializeField] private List<Transform> targets = new List<Transform>();
|
|
[SerializeField] private bool alignToLine = true;
|
|
[SerializeField] private Vector3 localForwardAxis = Vector3.forward;
|
|
[SerializeField] private Vector3 upAxis = Vector3.up;
|
|
|
|
public int LogicalNodeIndex => logicalNodeIndex;
|
|
public IReadOnlyList<Transform> Targets => targets;
|
|
public bool AlignToLine => alignToLine;
|
|
public Vector3 LocalForwardAxis => localForwardAxis;
|
|
public Vector3 UpAxis => upAxis;
|
|
}
|