using System;

namespace Leap.Unity
{
	public abstract class HandRepresentation
	{
		public HandRepresentation(int handID, Hand hand, Chirality chirality, ModelType modelType)
		{
			this.HandID = handID;
			this.MostRecentHand = hand;
			this.RepChirality = chirality;
			this.RepType = modelType;
		}

		public int HandID { get; private set; }

		public int LastUpdatedTime { get; set; }

		public bool IsMarked { get; set; }

		public Chirality RepChirality { get; protected set; }

		public ModelType RepType { get; protected set; }

		public Hand MostRecentHand { get; protected set; }

		public virtual void UpdateRepresentation(Hand hand)
		{
			this.MostRecentHand = hand;
		}

		public abstract void Finish();

		public abstract void AddModel(IHandModel model);

		public abstract void RemoveModel(IHandModel model);
	}
}
