Infinity
How do I use Infinity
Below are practical examples compiled from projects for learning and reference purposes
Featured Snippets
File name: PhotonTransformViewPositionModel.cs
Copy
35 public AnimationCurve InterpolateSpeedCurve = new AnimationCurve( new Keyframe[] {
36 new Keyframe( -1, 0, 0, Mathf.Infinity ),
37 new Keyframe( 0, 1, 0, 0 ),
38 new Keyframe( 1, 1, 0, 1 ),
39 new Keyframe( 4, 4, 1, 0 ) } );
File name: PhotonStreamQueue.cs
Copy
74 public void Reset()
75 {
76 m_SampleCount = 0;
77 m_ObjectsPerSample = -1;
78
79 m_LastSampleTime = -Mathf.Infinity;
80 m_LastFrameCount = -1;
81
82 m_Objects.Clear();
83 }
File name: Finder.cs
Copy
8 public static GameObject RayHitFromScreen(Vector3 hitPosition) {
9 Ray ray = Converter.ScreenPointToRay(hitPosition);
10 RaycastHit hit;
11 if (Physics.Raycast(ray, out hit, float.PositiveInfinity, GameManager.Instance.CLickableMask)) {
12 return hit.transform.gameObject;
13 }
14
15 return null;
16 }
File name: Finder.cs
Copy
26 public static IClickable IClickableRayHitFromScreen(Vector3 hitPosition) {
27 Ray ray = Converter.ScreenPointToRay(hitPosition);
28 RaycastHit hit;
29 if (Physics.Raycast(ray, out hit, float.PositiveInfinity, GameManager.Instance.CLickableMask)) {
30 return hit.transform.gameObject.GetComponent(typeof(IClickable)) as IClickable;
31 }
32
33 return null;
34 }
File name: ScrollSnap.cs
Copy
111 public void OnDrag(PointerEventData data) {
112 float dx = data.delta.x;
113 float dt = Time.deltaTime * 1000f;
114 float acceleration = Mathf.Abs(dx / dt);
115 if(acceleration > triggerAcceleration && acceleration != Mathf.Infinity) {
116 indexChangeTriggered = true;
117 }
118 }
File name: AnimationCurveBuilder.cs
Copy
110 public void SetCurveActiveOnly(Transform root, Transform current, float time)
111 {
112 var path = AnimationUtility.CalculateTransformPath(current, root);
113 var obj = GetOrCreateAnimationCurves(path);
114
115 //IsActive curve
116 float val = (current.gameObject.activeInHierarchy) ? 1.0f : 0.0f;
117 obj.Curves[(int)AnimationCurveIndex.IsActive].AddKey(new Keyframe(time, val, float.PositiveInfinity, float.PositiveInfinity) { tangentMode = 0 });
118 }
File name: AnimationCurveBuilder.cs
Copy
128 private void UpdateTransformCurve(ObjectCurves obj, Transform current, float time, TimelineKey lastTimelineKey, int zIndex = -1)
129 {
130 float val;
131 //IsActive curve
132 val = (current.gameObject.activeSelf) ? 1.0f : 0.0f;
133 obj.Curves[(int)AnimationCurveIndex.IsActive].AddKey(new Keyframe(time, val, float.PositiveInfinity, float.PositiveInfinity) { tangentMode = 0 });
134
135 //Position curves
136 obj.Curves[(int)AnimationCurveIndex.LocalPositionX].AddKey(new Keyframe(time, current.localPosition.x) { tangentMode = 0 }, lastTimelineKey);
137 obj.Curves[(int)AnimationCurveIndex.LocalPositionY].AddKey(new Keyframe(time, current.localPosition.y) { tangentMode = 0 }, lastTimelineKey);
138 obj.Curves[(int)AnimationCurveIndex.LocalPositionZ].AddKey(new Keyframe(time, current.localPosition.z, float.PositiveInfinity, float.PositiveInfinity)); //Z value always has instant transition
139
140 //Rotation curves
141 var quat = Quaternion.Euler(current.localEulerAngles);
142 obj.Curves[(int)AnimationCurveIndex.LocalRotationX].AddKey(new Keyframe(time, quat.x) { tangentMode = 0 }, lastTimelineKey);
143 obj.Curves[(int)AnimationCurveIndex.LocalRotationY].AddKey(new Keyframe(time, quat.y) { tangentMode = 0 }, lastTimelineKey);
144 obj.Curves[(int)AnimationCurveIndex.LocalRotationZ].AddKey(new Keyframe(time, quat.z) { tangentMode = 0 }, lastTimelineKey);
145 obj.Curves[(int)AnimationCurveIndex.LocalRotationW].AddKey(new Keyframe(time, quat.w) { tangentMode = 0 }, lastTimelineKey);
146
147 //Scale curves
148 obj.Curves[(int)AnimationCurveIndex.LocalScaleX].AddKey(new Keyframe(time, current.localScale.x) { tangentMode = 0 }, lastTimelineKey);
149 obj.Curves[(int)AnimationCurveIndex.LocalScaleY].AddKey(new Keyframe(time, current.localScale.y) { tangentMode = 0 }, lastTimelineKey);
150 obj.Curves[(int)AnimationCurveIndex.LocalScaleZ].AddKey(new Keyframe(time, current.localScale.z) { tangentMode = 0 }, lastTimelineKey);
151
152 //Sprite Curves
153 var spriteTimelineKey = lastTimelineKey as SpriteTimelineKey;
154 if (spriteTimelineKey != null)
155 {
156 obj.IsSpriteKey = true;
157 obj.Curves[(int)AnimationCurveIndex.ColorR].AddKey(new Keyframe(time, spriteTimelineKey.Tint.r) { tangentMode = 0 }, lastTimelineKey);
158 obj.Curves[(int)AnimationCurveIndex.ColorG].AddKey(new Keyframe(time, spriteTimelineKey.Tint.g) { tangentMode = 0 }, lastTimelineKey);
159 obj.Curves[(int)AnimationCurveIndex.ColorB].AddKey(new Keyframe(time, spriteTimelineKey.Tint.b) { tangentMode = 0 }, lastTimelineKey);
160 obj.Curves[(int)AnimationCurveIndex.ColorA].AddKey(new Keyframe(time, spriteTimelineKey.Tint.a) { tangentMode = 0 }, lastTimelineKey);
161 obj.Curves[(int)AnimationCurveIndex.ZIndex].AddKey(new Keyframe(time, zIndex, float.PositiveInfinity, float.PositiveInfinity));
162 }
163 }
File name: AnimationCurveUtils.cs
Copy
36 public static void AddKey(this AnimationCurve curve, Keyframe keyframe, TimelineKey lastKey)
37 {
38 var keys = curve.keys;
39
40 //Early out - if this is the first key on this curve just add it
41 if (keys.Length == 0)
42 {
43 curve.AddKey(keyframe);
44 return;
45 }
46
47 if (lastKey == null)
48 {
49 Debug.Log(string.Format("ERROR: NULL lastkey passed to AddKey when curve contains {0} keys", keys.Length));
50 return;
51 }
52
53 //Get the last keyframe
54 Keyframe lastKeyframe = keys[keys.Length - 1];
55
56 //If no TimelineKey is supplied, default to Linear curve
57 CurveType curveType = lastKey.CurveType;
58
59 switch (curveType)
60 {
61 case CurveType.Instant:
62 lastKeyframe.outTangent = 0;
63 curve.MoveKey(keys.Length - 1, lastKeyframe);
64
65 keyframe.inTangent = float.PositiveInfinity;
66 curve.AddKey(keyframe);
67 break;
68
69 case CurveType.Linear:
70 var val = (keyframe.value - lastKeyframe.value) / (keyframe.time - lastKeyframe.time);
71 lastKeyframe.outTangent = val;
72 curve.MoveKey(keys.Length - 1, lastKeyframe);
73
74 keyframe.inTangent = val;
75 curve.AddKey(keyframe);
76 break;
77
78 case CurveType.Quadratic:
79 {
80 //Increase to cubic
81 var c1 = (2 * lastKey.CurveParams[0]) / 3;
82 var c2 = 1 - (2 * lastKey.CurveParams[0] + 1) / 3;
83
84 //Convert [0,1] into unity-acceptable tangents
85 c1 *= 3 * (keyframe.value - lastKeyframe.value) / (keyframe.time - lastKeyframe.time);
86 c2 *= 3 * (keyframe.value - lastKeyframe.value) / (keyframe.time - lastKeyframe.time);
87
88 //Set the out tangent for the previous frame and update
89 lastKeyframe.outTangent = c1;
90 curve.MoveKey(keys.Length - 1, lastKeyframe);
91
92 //Set the in tangent for the current frame and add
93 keyframe.inTangent = c2;
94 curve.AddKey(keyframe);
95 break;
96 }
97
98 case CurveType.Cubic:
99 {
100 //Get curve parameters
101 var c1 = lastKey.CurveParams[0];
102 var c2 = 1 - lastKey.CurveParams[1];
103
104 //Convert [0,1] into unity-acceptable tangents
105 c1 *= 3 * (keyframe.value - lastKeyframe.value) / (keyframe.time - lastKeyframe.time);
106 c2 *= 3 * (keyframe.value - lastKeyframe.value) / (keyframe.time - lastKeyframe.time);
107
108 //Set the out tangent for the previous frame and update
109 lastKeyframe.outTangent = c1;
110 curve.MoveKey(keys.Length - 1, lastKeyframe);
111
112 //Set the in tangent for the current frame and add
113 keyframe.inTangent = c2;
114 curve.AddKey(keyframe);
115 break;
116 }
117
118 default:
119 Debug.LogWarning("CurveType " + curveType.ToString() + " not yet supported!");
120 break;
121 }
122 }
Infinity 134 lượt xem
Gõ tìm kiếm nhanh...