LeapProvider.cs
2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/******************************************************************************
* Copyright (C) Leap Motion, Inc. 2011-2017. *
* Leap Motion proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Leap Motion and you, your company or other organization. *
******************************************************************************/
using UnityEngine;
using System;
using System.Collections;
namespace Leap.Unity {
/// <summary>
/// Provides Frame object data to the Unity application by firing events as soon
/// as Frame data is available. Frames contain all currently tracked Hands in view
/// of the Leap Motion Controller.
/// </summary>
public abstract class LeapProvider : MonoBehaviour {
public TestHandFactory.TestHandPose editTimePose = TestHandFactory.TestHandPose.PoseA;
public event Action<Frame> OnUpdateFrame;
public event Action<Frame> OnFixedFrame;
/// <summary>
/// The current frame for this update cycle, in world space.
///
/// IMPORTANT! This frame might be mutable! If you hold onto a reference
/// to this frame, or a reference to any object that is a part of this frame,
/// it might change unexpectedly. If you want to save a reference, make sure
/// to make a copy.
/// </summary>
public abstract Frame CurrentFrame { get; }
/// <summary>
/// The current frame for this fixed update cycle, in world space.
///
/// IMPORTANT! This frame might be mutable! If you hold onto a reference
/// to this frame, or a reference to any object that is a part of this frame,
/// it might change unexpectedly. If you want to save a reference, make sure
/// to make a copy.
/// </summary>
public abstract Frame CurrentFixedFrame { get; }
protected void DispatchUpdateFrameEvent(Frame frame) {
if (OnUpdateFrame != null) {
OnUpdateFrame(frame);
}
}
protected void DispatchFixedFrameEvent(Frame frame) {
if (OnFixedFrame != null) {
OnFixedFrame(frame);
}
}
}
public static class LeapProviderExtensions {
public static Leap.Hand MakeTestHand(this LeapProvider provider, bool isLeft) {
return TestHandFactory.MakeTestHand(isLeft, Hands.Provider.editTimePose)
.Transform(UnityMatrixExtension.GetLeapMatrix(Hands.Provider.transform));
}
}
}