-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCustomHyperbeamController.cs
63 lines (54 loc) · 1.49 KB
/
CustomHyperbeamController.cs
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
using System;
using System.Runtime.InteropServices;
using Hyperbeam;
using JetBrains.Annotations;
using UnityEngine;
public class CustomHyperbeamController : MonoBehaviour
{
public GameObject player;
public HyperbeamController controller;
public float resumeDistance;
public float disconnectDistance;
private bool _isDisconnected;
private string _embedUrl = "";
[DllImport("__Internal")]
private static extern void getDemoLink(string objName);
private void Start()
{
StartHyperbeam();
}
private void StartHyperbeam()
{
if (_embedUrl == "")
{
getDemoLink(gameObject.name);
return;
}
_isDisconnected = false;
Debug.Log($"embedUrl: {_embedUrl}");
controller.StartHyperbeamStream(_embedUrl);
Debug.Log("hyperbeam starting...");
}
private void Update()
{
var distance = Vector3.Distance(player.gameObject.transform.position, transform.position);
if (_isDisconnected)
{
if (distance > resumeDistance) return;
StartHyperbeam();
}
else
{
if (distance < disconnectDistance) return;
controller.DisposeInstance();
Debug.Log("Disposing controller hyperbeam instance...");
_isDisconnected = true;
}
}
[UsedImplicitly]
public void OnDemoLink(string demoLink)
{
_embedUrl = demoLink;
StartHyperbeam();
}
}