Skip to content

Commit 2ff7bce

Browse files
committed
Merge branch 'develop' into hotfix-warnings
2 parents 9a0d878 + 6a23d28 commit 2ff7bce

File tree

4 files changed

+224
-16
lines changed

4 files changed

+224
-16
lines changed

Config.json.enc

64 Bytes
Binary file not shown.

Scripts/Camera/CameraTarget.cs

Lines changed: 148 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
using UnityEngine;
2020
using IBM.Watson.DeveloperCloud.Logging;
21+
using System.Collections.Generic;
2122

2223
namespace IBM.Watson.DeveloperCloud.Camera
2324
{
@@ -44,6 +45,15 @@ public class CameraTarget : MonoBehaviour
4445
private bool m_UseTargetObjectToRotate = false;
4546
[SerializeField]
4647
private GameObject m_CustomTargetObjectToLookAt = null;
48+
[SerializeField]
49+
private GameObject m_CameraPathRootObject = null;
50+
[SerializeField]
51+
private float m_RatioAtCameraPath = 0.0f;
52+
[SerializeField]
53+
private Vector3 m_DistanceFromCamera = Vector3.zero;
54+
[SerializeField]
55+
private SplineInterpolator m_SplineInterpolator;
56+
private Transform[] m_PathTransforms;
4757

4858
[SerializeField]
4959
private bool m_TextEnableCamera = false;
@@ -88,6 +98,74 @@ public bool UseCustomRotation
8898
}
8999
}
90100

101+
/// <summary>
102+
/// Gets or sets the ratio at camera path. It is used if there is path root object assigned to the system
103+
/// </summary>
104+
/// <value>The ratio at camera path.</value>
105+
public float RatioAtCameraPath
106+
{
107+
get
108+
{
109+
return m_RatioAtCameraPath;
110+
}
111+
set
112+
{
113+
m_RatioAtCameraPath = Mathf.Repeat(value, 1.0f);
114+
}
115+
}
116+
117+
/// <summary>
118+
/// Gets or sets the camera path root object.
119+
/// </summary>
120+
/// <value>The camera path root object.</value>
121+
public GameObject CameraPathRootObject
122+
{
123+
get
124+
{
125+
return m_CameraPathRootObject;
126+
}
127+
set
128+
{
129+
m_CameraPathRootObject = value;
130+
}
131+
}
132+
133+
public Vector3 OffsetPosition
134+
{
135+
get
136+
{
137+
return m_OffsetPosition;
138+
}
139+
set
140+
{
141+
m_OffsetPosition = value;
142+
}
143+
}
144+
145+
public Vector3 DistanceFromCamera
146+
{
147+
get
148+
{
149+
return m_DistanceFromCamera;
150+
}
151+
set
152+
{
153+
m_DistanceFromCamera = value;
154+
}
155+
}
156+
157+
public Quaternion OffsetPositionRotation
158+
{
159+
get
160+
{
161+
return m_OffsetPositionRotation;
162+
}
163+
set
164+
{
165+
m_OffsetPositionRotation = value;
166+
}
167+
}
168+
91169
/// <summary>
92170
/// Gets or sets the target position.
93171
/// </summary>
@@ -96,8 +174,41 @@ public Vector3 TargetPosition
96174
{
97175
get
98176
{
177+
if (m_CameraPathRootObject != null)
178+
{
179+
if (m_PathTransforms == null)
180+
{
181+
List<Transform> childrenTransforms = new List<Transform>(m_CameraPathRootObject.GetComponentsInChildren<Transform>());
182+
183+
childrenTransforms.Remove(m_CameraPathRootObject.transform);
184+
childrenTransforms.Sort(delegate(Transform t1, Transform t2)
185+
{
186+
return t1.name.CompareTo(t2.name);
187+
});
188+
189+
m_PathTransforms = childrenTransforms.ToArray();
190+
191+
if (m_SplineInterpolator == null)
192+
{
193+
m_SplineInterpolator = this.gameObject.GetComponent<SplineInterpolator>();
194+
if (m_SplineInterpolator == null)
195+
m_SplineInterpolator = this.gameObject.AddComponent<SplineInterpolator>();
196+
}
197+
198+
m_SplineInterpolator.SetupSplineInterpolator(m_PathTransforms);
199+
}
200+
201+
if (m_OffsetPosition != Vector3.zero)
202+
{
203+
return m_SplineInterpolator.GetHermiteAtTime(m_RatioAtCameraPath) + (TargetRotation * m_OffsetPosition) + DistanceFromCamera;
204+
}
205+
else
206+
{
207+
return m_SplineInterpolator.GetHermiteAtTime(m_RatioAtCameraPath) + DistanceFromCamera;
208+
}
99209

100-
if (m_UseCustomPosition)
210+
}
211+
else if (m_UseCustomPosition)
101212
{
102213
return m_CustomPosition;
103214
}
@@ -298,6 +409,42 @@ public void SetTargetPositionWithOffset(Vector3 offsetPosition)
298409
}
299410

300411
#endregion
412+
413+
void OnDrawGizmos()
414+
{
415+
if (m_CameraPathRootObject != null)
416+
{
417+
List<Transform> childrenTransforms = new List<Transform>(m_CameraPathRootObject.GetComponentsInChildren<Transform>());
418+
419+
childrenTransforms.Remove(m_CameraPathRootObject.transform);
420+
childrenTransforms.Sort(delegate(Transform t1, Transform t2)
421+
{
422+
return t1.name.CompareTo(t2.name);
423+
});
424+
425+
m_PathTransforms = childrenTransforms.ToArray();
426+
427+
if (m_SplineInterpolator == null)
428+
{
429+
m_SplineInterpolator = this.gameObject.GetComponent<SplineInterpolator>();
430+
if (m_SplineInterpolator == null)
431+
m_SplineInterpolator = this.gameObject.AddComponent<SplineInterpolator>();
432+
}
433+
434+
m_SplineInterpolator.SetupSplineInterpolator(m_PathTransforms);
435+
436+
Vector3 prevPos = m_PathTransforms[0].position;
437+
for (int c = 1; c <= 100; c++)
438+
{
439+
float currTime = c * 1.0f / 100;
440+
Vector3 currPos = m_SplineInterpolator.GetHermiteAtTime(currTime);
441+
float mag = (currPos - prevPos).magnitude * 2;
442+
Gizmos.color = new Color(mag, 0, 0, 1);
443+
Gizmos.DrawLine(prevPos, currPos);
444+
prevPos = currPos;
445+
}
446+
}
447+
}
301448
}
302449

303450
}

Scripts/Utilities/TouchEventManager.cs

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,15 @@ public override int GetHashCode()
275275
return base.GetHashCode();
276276
}
277277

278+
/// <summary>
279+
/// Returns a <see cref="System.String"/> that represents the current <see cref="IBM.Watson.DeveloperCloud.Utilities.TouchEventManager+TouchEventData"/>.
280+
/// </summary>
281+
/// <returns>A <see cref="System.String"/> that represents the current <see cref="IBM.Watson.DeveloperCloud.Utilities.TouchEventManager+TouchEventData"/>.</returns>
282+
public override string ToString()
283+
{
284+
return string.Format("[TouchEventData: GameObjectAttached={0}, Collider={1}, Collider2D={2}, RectTransform={3}, ColliderList={4}, ColliderList2D={5}, RectTransformList={6}, IsInside={7}, TapCallback={8}, DragCallback={9}, SortingLayer={10}, CanDragObject={11}]", GameObjectAttached, Collider, Collider2D, RectTransform, ColliderList, ColliderList2D, RectTransformList, IsInside, TapCallback, DragCallback, SortingLayer, CanDragObject);
285+
}
286+
278287
}
279288

280289
#region Private Data
@@ -383,7 +392,7 @@ public UnityEngine.Camera MainCamera
383392
{
384393
get
385394
{
386-
if (m_mainCamera == null)
395+
if (m_mainCamera == null || !m_mainCamera.transform.CompareTag("MainCamera"))
387396
m_mainCamera = UnityEngine.Camera.main;
388397

389398
return m_mainCamera;
@@ -1154,7 +1163,9 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
11541163
}
11551164
else
11561165
{
1157-
Log.Warning("TouchEventManager", "There is no 3D collider of given gameobjectToTouch");
1166+
#if ENABLE_DEBUGGING
1167+
Log.Debug("TouchEventManager", "There is no 3D collider of given gameobjectToTouch");
1168+
#endif
11581169
}
11591170

11601171
if (!success)
@@ -1182,7 +1193,9 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
11821193
success = true;
11831194
} else
11841195
{
1185-
Log.Warning ("TouchEventManager", "There is no 2D collider of given gameobjectToTouch");
1196+
#if ENABLE_DEBUGGING
1197+
Log.Debug ("TouchEventManager", "There is no 2D collider of given gameobjectToTouch");
1198+
#endif
11861199
}
11871200
}
11881201
#if UNITY_4_6 || UNITY_5 || UNITY_5_3_OR_NEWER
@@ -1211,7 +1224,9 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
12111224
success = true;
12121225
} else
12131226
{
1214-
Log.Warning ("TouchEventManager", "There is no Rect Transform of given gameobjectToTouch");
1227+
#if ENABLE_DEBUGGING
1228+
Log.Debug ("TouchEventManager", "There is no Rect Transform of given gameobjectToTouch");
1229+
#endif
12151230
}
12161231
}
12171232
#endif
@@ -1258,15 +1273,19 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
12581273
foreach (Collider itemCollider in colliderList)
12591274
{
12601275
int numberOfRemovedCallbacks = m_TapEvents[layerMaskAsKey].RemoveAll(
1261-
e =>
1262-
e.Collider == itemCollider &&
1263-
e.TapCallback == callback &&
1264-
e.SortingLayer == SortingLayer &&
1265-
e.IsInside == isTapInside);
1276+
e =>
1277+
e.Collider == itemCollider &&
1278+
e.TapCallback == callback &&
1279+
e.SortingLayer == SortingLayer &&
1280+
e.IsInside == isTapInside);
12661281

12671282
success &= (numberOfRemovedCallbacks > 0);
12681283
}
12691284
}
1285+
else
1286+
{
1287+
success = false;
1288+
}
12701289

12711290
if (!success)
12721291
{
@@ -1286,7 +1305,13 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
12861305
success &= (numberOfRemovedCallbacks > 0);
12871306
}
12881307
}
1308+
else
1309+
{
1310+
success = false;
1311+
}
12891312
}
1313+
1314+
12901315
#if UNITY_4_6 || UNITY_5 || UNITY_5_3_OR_NEWER
12911316
if (!success)
12921317
{
@@ -1306,6 +1331,10 @@ private void TwoFingerTransformedHandler(object sender, System.EventArgs e)
13061331
success &= (numberOfRemovedCallbacks > 0);
13071332
}
13081333
}
1334+
else
1335+
{
1336+
success = false;
1337+
}
13091338
}
13101339
#endif
13111340
}
@@ -1392,16 +1421,16 @@ private void TapGesture_Tapped(object sender, System.EventArgs e)
13921421
{
13931422
TouchEventData tapEventData = kp.Value[i];
13941423

1395-
if (kp.Value[i].Collider == null && kp.Value[i].Collider2D == null && kp.Value[i].RectTransform == null )
1424+
if (kp.Value[i].Collider == null && kp.Value[i].Collider2D == null && kp.Value[i].RectTransform == null && kp.Value[i].RectTransformList == null )
13961425
{
1397-
Log.Warning("TouchEventManager", "Removing invalid collider event receiver from TapEventList");
1426+
Log.Warning("TouchEventManager", "Removing invalid collider event receiver from TapEventList from {0}", kp.Value[i].ToString());
13981427
kp.Value.RemoveAt(i--);
13991428
continue;
14001429
}
14011430

14021431
if (string.IsNullOrEmpty(tapEventData.TapCallback))
14031432
{
1404-
Log.Warning("TouchEventManager", "Removing invalid event receiver from TapEventList");
1433+
Log.Warning("TouchEventManager", "Removing invalid event receiver from TapEventList {0}", kp.Value[i]);
14051434
kp.Value.RemoveAt(i--);
14061435
continue;
14071436
}
@@ -1801,6 +1830,10 @@ private void TapGesture_Tapped(object sender, System.EventArgs e)
18011830
success &= (numberOfRemovedCallbacks > 0);
18021831
}
18031832
}
1833+
else
1834+
{
1835+
success = false;
1836+
}
18041837

18051838
if (!success)
18061839
{
@@ -1820,6 +1853,11 @@ private void TapGesture_Tapped(object sender, System.EventArgs e)
18201853
success &= (numberOfRemovedCallbacks > 0);
18211854
}
18221855
}
1856+
else
1857+
{
1858+
success = false;
1859+
}
1860+
18231861
}
18241862
#if UNITY_4_6 || UNITY_5 || UNITY_5_3_OR_NEWER
18251863
if (!success)
@@ -1840,6 +1878,10 @@ private void TapGesture_Tapped(object sender, System.EventArgs e)
18401878
success &= (numberOfRemovedCallbacks > 0);
18411879
}
18421880
}
1881+
else
1882+
{
1883+
success = false;
1884+
}
18431885
}
18441886
#endif
18451887
}
@@ -1927,7 +1969,7 @@ private void DoubleTapGesture_Tapped(object sender, System.EventArgs e)
19271969
{
19281970
TouchEventData tapEventData = kp.Value[i];
19291971

1930-
if (kp.Value[i].Collider == null && kp.Value[i].Collider2D == null && kp.Value[i].RectTransform == null )
1972+
if (kp.Value[i].Collider == null && kp.Value[i].Collider2D == null && kp.Value[i].RectTransform == null && kp.Value[i].RectTransformList == null)
19311973
{
19321974
Log.Warning("TouchEventManager", "Removing invalid collider event receiver from DoubleTapEventList");
19331975
kp.Value.RemoveAt(i--);

Scripts/Utilities/Utility.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,12 +278,22 @@ public static string StripString(string s)
278278
/// Gets the EPOCH time in UTC time zome
279279
/// </summary>
280280
/// <returns>Double EPOCH in UTC</returns>
281-
public static double GetEpochUTC()
281+
public static double GetEpochUTCMilliseconds()
282282
{
283283
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
284284
return (DateTime.UtcNow - epoch).TotalMilliseconds;
285285
}
286286

287+
/// <summary>
288+
/// Gets the epoch UTC seconds.
289+
/// </summary>
290+
/// <returns>The epoch UTC seconds.</returns>
291+
public static double GetEpochUTCSeconds()
292+
{
293+
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
294+
return (DateTime.UtcNow - epoch).TotalSeconds;
295+
}
296+
287297
/// <summary>
288298
/// Gets the date time from epoch.
289299
/// </summary>
@@ -293,7 +303,16 @@ public static double GetEpochUTC()
293303
public static DateTime GetLocalDateTimeFromEpoch(double epochTime)
294304
{
295305
DateTime dateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
296-
dateTime = dateTime.AddMilliseconds(epochTime).ToLocalTime();
306+
try
307+
{
308+
dateTime = dateTime.AddSeconds(epochTime).ToLocalTime();
309+
}
310+
catch (ArgumentOutOfRangeException ex)
311+
{
312+
Log.Debug("Utility", "Time conversion assuming time is in Milliseconds: {0}, {1}", epochTime, ex.Message);
313+
dateTime = dateTime.AddMilliseconds(epochTime).ToLocalTime();
314+
}
315+
297316
return dateTime;
298317
}
299318

0 commit comments

Comments
 (0)