Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2020-065
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2020-065
2020-065
Commits
8fb7a7cb
Commit
8fb7a7cb
authored
Nov 06, 2020
by
Fonseka W.M.D.R
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Delete SceneController.cs
parent
9e86ffad
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
232 deletions
+0
-232
IT17160926/Measure/Assets/Scripts/SceneController.cs
IT17160926/Measure/Assets/Scripts/SceneController.cs
+0
-232
No files found.
IT17160926/Measure/Assets/Scripts/SceneController.cs
deleted
100644 → 0
View file @
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment