-
Notifications
You must be signed in to change notification settings - Fork 0
/
planeManager.cs
65 lines (52 loc) · 1.98 KB
/
planeManager.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
64
65
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using TMPro;
public class planeManager : MonoBehaviour
{
// Start is called before the first frame update
ARPlaneManager pm;
ARPlane myPlane;
public GameObject cubePrefab;
AudioSource aud;
bool firstPlane;
ARSessionOrigin sessionOrigin;
ARRaycastManager raycastManager;
GameObject myCube;
public TextMeshProUGUI planeDetectGUI;
void Awake()
{
sessionOrigin = GetComponent<ARSessionOrigin>();
raycastManager = GetComponent<ARRaycastManager>();
firstPlane=false;
}
void Start()
{
aud=GetComponent<AudioSource>();
pm=GetComponent<ARPlaneManager>();
}
// Update is called once per frame
void Update()
{
if(pm.trackables.count>0&&!firstPlane){
foreach (var plane in pm.trackables)
{
if(!firstPlane){
myPlane=plane;//Get the first plane Generated
firstPlane=true;
}
}
planeDetectGUI.text="Plane Detected!";//Updates GUI
planeDetectGUI.color=Color.green;
myCube=Instantiate(cubePrefab,new Vector3(0f,cubePrefab.transform.localScale.y,0f),Quaternion.identity);
aud.Play();
sessionOrigin.MakeContentAppearAt(myCube.transform, myPlane.center, Quaternion.identity);//Places cube at centre of the found plane
myPlane.boundaryChanged+=UpdateCube;//Repositions the cube whenever the plane is resized
}
}
void UpdateCube(ARPlaneBoundaryChangedEventArgs args){
sessionOrigin.MakeContentAppearAt(myCube.transform, myPlane.center, myCube.transform.rotation);//Repositions the cube whenever the plane is resized
}
}