Commit 8fb7a7cb authored by Fonseka W.M.D.R's avatar Fonseka W.M.D.R

Delete SceneController.cs

parent 9e86ffad
using System.Collections.Generic;
using UnityEngine;
using GoogleARCore;
using TMPro;
//added sccreenshots
public class SceneController : MonoBehaviour
{
[SerializeField] Camera firstPersonCamera = null;
[SerializeField] GameObject marker = null;
[SerializeField] GameObject anchorMarker = null;
[SerializeField] GameObject meterText = null;
[SerializeField] GameObject editBtn;
[SerializeField] GameObject drawBtn;
[SerializeField] GameObject addBtn;
List<DistanceMarker> distanceMarkers;
AppMode appMode;
LineRenderer lineR;
Pose currentPose;
#region Enum and class
public enum AppMode
{
edit,
draw
}
public class DistanceMarker
{
public Anchor anchor;
public GameObject anchorMarker;
public GameObject distanceDisplayInstance;
}
#endregion
#region Toggle app mode methods
public void EditMode()
{
appMode = AppMode.edit;
drawBtn.SetActive(true);
editBtn.SetActive(false);
addBtn.SetActive(false);
marker.SetActive(false);
}
public void DrawMode()
{
appMode = AppMode.draw;
drawBtn.SetActive(false);
editBtn.SetActive(true);
addBtn.SetActive(true);
marker.SetActive(true);
}
#endregion
void Start()
{
Screen.autorotateToLandscapeLeft = false;
Screen.autorotateToLandscapeRight = false;
Screen.autorotateToPortraitUpsideDown = false;
distanceMarkers = new List<DistanceMarker>();
appMode = AppMode.draw;
CreateLineRenderer();
}
void Update()
{
if (Session.Status != SessionStatus.Tracking) return;
if (distanceMarkers == null) distanceMarkers = new List<DistanceMarker>();
ControlMarker();
RotateDistances();
DisplayGizmos();
UpdateAnchorPosition();
if (distanceMarkers.Count < 1)
{
lineR.enabled = false;
return;
}
DrawLines();
if (distanceMarkers.Count < 2) return;
UpdateDistances();
}
private void ControlMarker()
{
TrackableHit hit;
TrackableHitFlags filter;
filter = TrackableHitFlags.PlaneWithinBounds | TrackableHitFlags.PlaneWithinPolygon; //| TrackableHitFlags.FeaturePoint ;
if (Frame.Raycast(Screen.width * 0.5f, Screen.height * 0.5f, filter, out hit))
{
marker.transform.position = hit.Pose.position;
currentPose = hit.Pose;
}
}
#region Render markers and lines
private void RotateDistances()
{
foreach (DistanceMarker marker in distanceMarkers)
{
if (marker.distanceDisplayInstance == null) continue;
marker.distanceDisplayInstance.transform.LookAt(firstPersonCamera.transform);
}
}
private void DrawLines()
{
lineR.enabled = true;
lineR.alignment = LineAlignment.View;
lineR.positionCount = appMode == AppMode.draw ? distanceMarkers.Count + 1 : distanceMarkers.Count;
for (int i = 0; i < distanceMarkers.Count; i++)
{
var position = distanceMarkers[i].anchorMarker.transform.position;
lineR.SetPosition(i, position);
}
if (appMode == AppMode.edit) return;
lineR.SetPosition(lineR.positionCount - 1, marker.transform.position);
}
public void UpdateDistances()
{
for (int i = 1; i < distanceMarkers.Count; i++)
{
var instance = distanceMarkers[i].distanceDisplayInstance;
var distance = Vector3.Distance(distanceMarkers[i].anchor.transform.position, distanceMarkers[i - 1].anchor.transform.position);
var text = instance.GetComponentInChildren<TextMeshPro>();
var displayPosition = (distanceMarkers[i].anchor.transform.position + distanceMarkers[i - 1].anchor.transform.position) / 2;
displayPosition.y += 0.2f;
instance.transform.position = displayPosition;
text.text = string.Format("{0:#.00} m", distance);
}
}
public void UpdateAnchorPosition()
{
//if (appMode == AppMode.draw) return;
foreach (var distanceMarker in distanceMarkers)
{
distanceMarker.anchor.transform.position = distanceMarker.anchorMarker.transform.position;
}
}
private void CreateLineRenderer()
{
lineR = this.gameObject.AddComponent<LineRenderer>();
lineR.startColor = Color.green;
lineR.endColor = Color.green;
lineR.startWidth = 0.05f;
lineR.endWidth = 0.05f;
}
#endregion
#region ScreenshotMethods
#endregion
#region Marker removal methods
public void UndoLast()
{
if (distanceMarkers.Count - 1 < 0) return;
RemoveMarker();
}
public void ClearAll()
{
if (distanceMarkers.Count - 1 < 0) return;
while (distanceMarkers.Count > 0)
{
RemoveMarker();
}
}
public void RemoveMarker()
{
Destroy(distanceMarkers[distanceMarkers.Count - 1].distanceDisplayInstance);
Destroy(distanceMarkers[distanceMarkers.Count - 1].anchorMarker);
Destroy(distanceMarkers[distanceMarkers.Count - 1].anchor);
distanceMarkers.RemoveAt(distanceMarkers.Count - 1);
}
#endregion
public void DisplayGizmos()
{
if (distanceMarkers.Count < 1) return;
bool gizmosEnabled = false;
gizmosEnabled = appMode == AppMode.draw ? false : true;
foreach (var distanceMarker in distanceMarkers)
{
distanceMarker.anchorMarker.transform.GetChild(0).gameObject.SetActive(gizmosEnabled);
}
}
public void AddToList()
{
var dMarker = new DistanceMarker();
dMarker.anchor = Session.CreateAnchor(currentPose);
dMarker.distanceDisplayInstance = Instantiate(meterText);
dMarker.anchorMarker = Instantiate(anchorMarker);
dMarker.anchorMarker.transform.position = dMarker.anchor.transform.position;
distanceMarkers.Add(dMarker);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment