Files
U10-MobileGame/Assets/Scripts/OrbitalPosition.cs

53 lines
1.5 KiB
C#

using UnityEngine;
public partial class OrbitalBehaviour : MonoBehaviour
{
[Header("Orbital Information")]
[SerializeField] private int m_AttachedRing;
[SerializeField] private float m_DistanceAlongCircumference;
[SerializeField] private float m_ObjectRadius = 0.1f;
[SerializeField] private float m_SpinSpeed = 0.1f;
[SerializeField] private float m_DistanceFromCentre;
[field: SerializeField] protected bool IsAttachedToRings { get; set; } = true;
protected void RegisterObject(OrbitalInitializer init)
{
BehaviourManager.RegisterOrbitalInstance(this);
m_DistanceAlongCircumference = init.DistanceAlongCircumference;
m_ObjectRadius = init.ObjectRadius;
m_SpinSpeed = init.SpinSpeed;
}
private Vector3 TranslateToVector3() => new
(
x: m_DistanceFromCentre * Mathf.Cos(m_DistanceAlongCircumference),
y: m_DistanceFromCentre * Mathf.Sin(m_DistanceAlongCircumference),
z: 0
);
protected virtual void OnOrbitalCollision(OrbitalBehaviour other) { }
protected virtual void OnSimulationRestart() { }
protected virtual void OnReachCentre() { }
protected void AdvanceRing()
{
m_AttachedRing++;
}
}
public class OrbitalInitializer
{
public float DistanceAlongCircumference { get; set; }
public float ObjectRadius { get; set; }
public float SpinSpeed { get; set; }
}
public class Ring : MonoBehaviour
{
public int m_ID;
}