Professional Documents
Culture Documents
Content
1. INTRODUCTION ..................................................................................................................................... 2
1.1 Purpose of the Document: .............................................................................................................. 2
1.2 Repository Information ................................................................................................................... 2
2. Summary of changes ............................................................................................................................. 2
2.1 Project Structure Improvement....................................................................................................... 2
2.2 Challenges with Previous Yoozoo Code........................................................................................... 2
2.3 High-Level Overview of Changes Made ........................................................................................... 3
2.4 Summary of New Features .............................................................................................................. 3
Real-Time Location System (RTLS): ................................................................................................... 3
Compass Feature:.............................................................................................................................. 3
Mapbox Integration:.......................................................................................................................... 3
ASTAR Enhancement: ........................................................................................................................ 3
3. Coding Guidelines .................................................................................................................................. 3
3.1 Folder Structure............................................................................................................................... 3
3.2 Script Structure:............................................................................................................................... 3
3.3 Coding Standards............................................................................................................................. 4
4. Appendix ............................................................................................................................................... 4
1. INTRODUCTION
Branch: feature-direct-ar
2. Summary of changes
• The lack of clear structure made the codebase difficult to maintain and extend. Any
modifications or additions to the code often resulted in unintended consequences due to
the intricate dependencies between different modules.
• Debugging issues was a significant challenge. Identifying the root cause of bugs or errors was
time-consuming and often required tracing through multiple layers of code, further
exacerbated by the tangled nature of the codebase.
• The unsustainable nature of the codebase became increasingly apparent as the project grew
in complexity. As new features were added and requirements evolved, the lack of
organization made it difficult to scale the codebase effectively.
• Additionally, the pathfinding algorithm relied on Unity's built-in functionality, which may not
provide the desired level of accuracy, especially in real-world scenarios. Furthermore, the 3D
models created had issues with exact scaling to the real world, impacting the accuracy and
effectiveness of augmented reality (AR) functionality.
2.3 High-Level Overview of Changes Made
• Implemented a clear and distinct project structure using an entity-data-system model for
better organization and maintainability.
• Added Real-Time Location System (RTLS) to recognize user start locations using AI.
• Integrated a compass feature to enhance RTLS accuracy.
• Replaced 2D maps and path generation with Mapbox integration for accurate real-world
scaling and obstacle avoidance.
• Enhanced ASTAR functionality to provide precise location coordinates based on real-time
photo submissions.
Compass Feature:
Utilizes the device's built-in compass to enhance orientation accuracy in conjunction with RTLS.
Mapbox Integration:
Provides accurate real-world scaling institution maps and handles path generation, eliminating the
need for manual map and path setup within Unity.
ASTAR Enhancement:
Allows users to submit real-time photo locations, returning precise location coordinates.
This summary encapsulates the major changes made to the project structure, as well as the
introduction of new tasks and features aimed at enhancing navigation accuracy and user experience.
3. Coding Guidelines
Script Structure
Variables Contains fields and properties used in the script.
Lifecycle Flow This section contains methods related to the basic flow of the script.
Public Access Includes publicly accessible elements like methods, fields, or properties.
Modules Contains methods responsible for handling script operations.
Callbacks Contains methods responsible for handling script event callback functions.
By following this folder structure, developers can easily locate and manage scripts, assets, and
configurations within the project. It promotes organization and clarity, facilitating efficient
development and maintenance workflows.
4. Appendix
Overview of Tasks
# Summary Description
1 Task: Create AR Destination Canvas Added the following features:
* On quit AR
* -On AR tracking-
# Summary Description
** -Display dragging mini map to allow simultaneous usage of both mini map and AR
tracking-
4 Task: Ensure all loading/info boxes have the same width All pop up messages/error/loading info boxes should retain same width/height for UI
and height consistency
6 Task: Ensure project sustainability Previous behaviour: Project is too messy with no possible further sustainability.
Fixed by
7 Task: Create Path Rendering Entities Create path rendering entities and assets for both 2d map and AR mode
2D map
* -Animated line-
* -Animated points-
AR mode
* -Animated line-
** -Replace long animated line with arrows in between each points instead-
* -Animated points-
** -Replace with a better start and end marker just for AR (TBD)-
* -Enabled/Disabled mode-
* End
** Reached destination
** Particle effect?
# Summary Description
8 Task: Integrate new mapbox sdk for 2d maps Integrate new mapbox sdk
9 Task: Integrate RTLS to output path module Integrate RTLS image capture module
* Success
* Fail
Rework current path manager and path renderer manager to account for more than 1 path
11 Task: Pan map to start location once path is generated Pan camera and map to a path’s start location once a path has been generated
12 Task: Create redo path module Create a redo functionality to reset path once
13 TASK: AR - User should be set to the rotation value of User rotation value should be set to RTLS rotation output once AR is triggered
RTLS rotation output
15 Task: AR - Add info messages Add info messages for the following
* When AR loses track, inform user of track lost reason and what to do
17 Task: Complete camera permission module # -Add permission check to allow camera usage-
# Add permission check to allow camera usage again if previous permission check was
disabled
# Summary Description
## Check on first app launch if permission was granted, stored permission granted or not
under settings template
# Show error message and close web cam canvas if permission was denied
# {color:#ff5630}-Complete SessionManager’s-{color}{color:#ff5630}
{color}{{CheckDevicePermissions}}{color:#ff5630} {color}{color:#ff5630}-for ios. Currently
only implemented for android (see SS)-{color}
18 Task: Create UI menu for POI selection -Create UI menu for poi selection-
19 Task: Migrate floor level int to floor level enum Deprecate floor level int
20 Task: Build for ios successfully List down precise steps to solving any errors/issues that arise from building an ios app
successfully on both Unity and XCode
22 Task: Create UI menu for institution selection Display list of institutes for selection
23 Task: Integrate event calls for AR Manager Trigger appropriate event calls for AR manager
24 Task: Create generic logger and folder structures Create generic scripts
* logger
* session manager
* event manager
25 Task: include complete poi data Create and assign poi data and display name for Sembawang polyclinic
Use display name instead of poi data string for users to view
26 Task: Create events for setting map zoom and pan speed Create event calls to allow different scripts to invoke and set map zoom and pan speed
# Summary Description
27 Task: Integrate all mini map functionalities
28 Task: AR Player top down camera to be centered at AR -AR mini map’s canvas should always display AR play at the center of the map-
mini map at all times
30 Task: Create custom monobehaviour note Create custom editor inspector for all monobehaviour for documentation purposes
31 Task: Write class notes on all monobehaviours Reference Main Camera Manager
* Rules
* Folder structure
* Program Flow
Clean up
Comment
34 Task: Create custom property drawer for fields and # -Create custom property drawer for fields for documentation-
properties
36 Task: Create prefab of all popup dialogs Create prefab of popup dialogs.
42 Task: Create AR Tracking animation using reference Create new AR tracking animation using reference video
video
43 Task: Create AR Tracking animation using reference Create new AR tracking animation using reference video
video
46 Task: Create prefab of all popup dialogs Create prefab of popup dialogs.
52 Task: Create AR Tracking animation using reference Create new AR tracking animation using reference video
video
53 Task: Create AR Tracking animation using reference Create new AR tracking animation using reference video
video
57 Task: Add comments, notes, class notes in all scripts Start from Institution folder in rider
60 Task: Create new AR Path Point Assets * -Deprecate previously created AR Path Point Asset-
61 Task: Create arrow to remind player to get back on track * Fix intermittent rotation issues
if veering off path
* Compass Circle
63 Task: Add request time out for network path return Do not want users to wait endlessly for network call return
Add message “network took too long to respond” for error canvas if error canvas does not
appear after timeout (Ensure error canvas appears if timeout fails)
Coroutine {{RequestPathDataCo}} under network manager should implement the time out.
Set acceptable timeout delay
64 Task: Reduce AR Path Point distance Current behaviour: AR Path Point distance switches to activated state at 10 meters or less
Script : ARPathPointEntity
65 Task: Scale AR Path Assets relative to player's distance To be tested at sembawang to fine tune scale factor
67 Task: Clean up AR Direction Canvas * Make into prefab, similar to other sibling canvases
* Move script location to appropriate folder (follow siblings' folder locations and structure)
70 Task: Upgrade path reminder arrow art asset Use latest art asset
* Models
* Prefabs
# Summary Description
* Scripts
* TEMP
73 Task: Come up with a way to not display multiple AR should be dynamic and display 1 by 1 following its index
Path Point Entities at the same time
74 Task: Replace Path Line Renderer with custom -To test actual new assets-
gameobject line renderer
75 Task: Profile App Take screenshots of each screens and corresponding draw calls via frame debugger
!image-20240202-062002.png|width=1001,height=712!
!image-20240202-062352.png|width=1001,height=712!
!image-20240202-062426.png|width=1001,height=712!
!image-20240202-064442.png|width=1001,height=712!
!image-20240202-062840.png|width=1001,height=712!
!image-20240202-063506.png|width=1001,height=712!
!image-20240202-063534.png|width=1001,height=712!
!image-20240202-064154.png|width=1001,height=712!
!image-20240202-064320.png|width=1001,height=712!
!image-20240202-065005.png|width=1001,height=712!
!image-20240202-065258.png|width=1001,height=778!
!image-20240202-065410.png|width=1044,height=778!
ICanvasBase
IRectTransformBase
IGameObjectBase
* AR
82 Task: Set Proper Prefab for AR Direction Canvas Follow Sibling prefab style
83 Task: Clean up ARMiniMap Canvas * Complete all todo in ARMiniMapUIManager (see ss)
85 Task: Check if animator module is still in use Check if any scripts in the Animator folder is still being used elsewhere. List down what is
used and what is not and where it’s used. see SS.
** Line
** Marker
** Point
* Path Manager
87 Task: Create user feedback upon reaching destination in * Particle System (Done by Klaus)
AR mode
** Delay timer before closing all AR stuffs (timer delay to be determined by Marcus)
89 Task: POI Menu Enhancement * Remove poi from display list once a poi has been selected (Prevents users from accidentally
selecting same start and end point)
# Summary Description
* Ensure any previously removed poi is no longer removed once reset journey button has
been pressed