1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using System;
- using System.Collections.Generic;
- namespace Leap.Unity
- {
- public class HandProxy : HandRepresentation
- {
- public HandProxy(HandPool parent, Hand hand, Chirality repChirality, ModelType repType) : base(hand.Id, hand, repChirality, repType)
- {
- this.parent = parent;
- base.RepChirality = repChirality;
- base.RepType = repType;
- base.MostRecentHand = hand;
- }
- public override void Finish()
- {
- if (this.handModels != null)
- {
- for (int i = 0; i < this.handModels.Count; i++)
- {
- this.handModels[i].FinishHand();
- this.parent.ReturnToPool(this.handModels[i]);
- this.handModels[i] = null;
- }
- }
- this.parent.RemoveHandRepresentation(this);
- }
- public override void AddModel(IHandModel model)
- {
- if (this.handModels == null)
- {
- this.handModels = new List<IHandModel>();
- }
- this.handModels.Add(model);
- if (model.GetLeapHand() == null)
- {
- model.SetLeapHand(base.MostRecentHand);
- model.InitHand();
- model.BeginHand();
- model.UpdateHand();
- }
- else
- {
- model.SetLeapHand(base.MostRecentHand);
- model.BeginHand();
- }
- }
- public override void RemoveModel(IHandModel model)
- {
- if (this.handModels != null)
- {
- model.FinishHand();
- this.handModels.Remove(model);
- }
- }
- public override void UpdateRepresentation(Hand hand)
- {
- base.UpdateRepresentation(hand);
- if (this.handModels != null)
- {
- for (int i = 0; i < this.handModels.Count; i++)
- {
- this.handModels[i].SetLeapHand(hand);
- this.handModels[i].UpdateHand();
- }
- }
- }
- private HandPool parent;
- public List<IHandModel> handModels;
- }
- }
|