Initial commit
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
@startuml
|
||||
class FolderIconConstants <<static>> {
|
||||
+ {static} <<readonly>> ASSET_DEFAULT_PATH : string
|
||||
+ <<const>> FOLDER_TEXTURE_PATH : string = "Assets/ColouredFolders/Folders"
|
||||
+ <<const>> ICONS_TEXTURE_PATH : string = "Assets/ColouredFolders/Icons"
|
||||
+ <<const>> PREF_FOLDER : string = "FolderPlus_ShowCustomFolders"
|
||||
+ <<const>> PREF_OVERLAY : string = "FolderPlus_ShowCustomIcons"
|
||||
+ <<const>> MAX_TREE_WIDTH : float = 118f
|
||||
+ <<const>> MAX_PROJECT_WIDTH : float = 96f
|
||||
+ <<const>> MAX_TREE_HEIGHT : float = 16f
|
||||
+ <<const>> MAX_PROJECT_HEIGHT : float = 110f
|
||||
}
|
||||
FolderIconConstants o-> "SelectedColor" Color
|
||||
FolderIconConstants o-> "BackgroundColour" Color
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class FolderIconGUI <<static>> {
|
||||
+ {static} DrawFolderPreview(rect:Rect, folder:Texture, overlay:Texture) : void
|
||||
+ {static} DrawFolderTexture(rect:Rect, folder:Texture, guid:string) : void
|
||||
+ {static} DrawOverlayTexture(rect:Rect, overlay:Texture) : void
|
||||
+ {static} IsSideView(rect:Rect) : bool
|
||||
+ {static} IsTreeView(rect:Rect) : bool
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,13 @@
|
||||
@startuml
|
||||
class FolderIconSettings {
|
||||
+ showOverlay : bool = true
|
||||
+ showCustomFolder : bool = true
|
||||
}
|
||||
class FolderIcon {
|
||||
}
|
||||
ScriptableObject <|-- FolderIconSettings
|
||||
FolderIconSettings +-- FolderIcon
|
||||
FolderIcon --> "folder" DefaultAsset
|
||||
FolderIcon --> "folderIcon" Texture2D
|
||||
FolderIcon --> "overlayIcon" Texture2D
|
||||
@enduml
|
||||
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class FolderIconSettingsEditor {
|
||||
+ <<override>> OnInspectorGUI() : void
|
||||
}
|
||||
Editor <|-- FolderIconSettingsEditor
|
||||
@enduml
|
||||
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class FolderIconsReplacer <<static>> {
|
||||
+ {static} showFolder : bool
|
||||
+ {static} showOverlay : bool
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,11 @@
|
||||
@startuml
|
||||
abstract class Block {
|
||||
+ {abstract} setupBlock() : void
|
||||
+ {abstract} simulate() : void
|
||||
+ getBlockData() : BlockData
|
||||
+ SetBlockData(BD:BlockData) : void
|
||||
+ setBlockId(id:string) : void
|
||||
+ getBlockId() : string
|
||||
}
|
||||
MonoBehaviour <|-- Block
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class BlockData {
|
||||
+ blockName : string
|
||||
}
|
||||
ScriptableObject <|-- BlockData
|
||||
BlockData --> "blockPrefab" GameObject
|
||||
BlockData --> "associatedCategory" CategoryData
|
||||
BlockData --> "icon" Texture2D
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class BlockFactory {
|
||||
+ {static} getInstance() : BlockFactory
|
||||
+ createblock(prefabId:string, position:Vector3, rotation:Quaternion, id:string, layerDiff:bool) : GameObject
|
||||
}
|
||||
MonoBehaviour <|-- BlockFactory
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class CategoryData {
|
||||
+ ID : string
|
||||
}
|
||||
class "List`1"<T> {
|
||||
}
|
||||
ScriptableObject <|-- CategoryData
|
||||
CategoryData --> "blocks<BlockData>" "List`1"
|
||||
CategoryData --> "icon" Sprite
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class CodingBlock {
|
||||
+ <<override>> setupBlock() : void
|
||||
+ <<override>> simulate() : void
|
||||
}
|
||||
Block <|-- CodingBlock
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class ElectricalBlock {
|
||||
+ <<override>> setupBlock() : void
|
||||
+ <<override>> simulate() : void
|
||||
}
|
||||
Block <|-- ElectricalBlock
|
||||
@enduml
|
||||
@@ -0,0 +1,18 @@
|
||||
@startuml
|
||||
class Environment {
|
||||
+ {static} getInstance() : Environment
|
||||
+ getBlockRegistry() : Dictionary<String, Block>
|
||||
+ addBlock(block:Block, existingUUID:string) : void
|
||||
+ removeBlock(uuid:string) : void
|
||||
+ applyChanges() : void
|
||||
+ completeDestroyBlock(block:Block) : void
|
||||
+ getBlock(uuid:string) : Block
|
||||
+ clearEnvironment() : void
|
||||
}
|
||||
class "UnityEvent`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- Environment
|
||||
Environment --> "onBlockAddedEvent<Block>" "UnityEvent`1"
|
||||
Environment --> "onBlockRemovedEvent<Block>" "UnityEvent`1"
|
||||
Environment --> "onChangeEvent" UnityEvent
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class MechanicalBlock {
|
||||
+ <<override>> setupBlock() : void
|
||||
+ <<override>> simulate() : void
|
||||
}
|
||||
Block <|-- MechanicalBlock
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class MechanicalJoint {
|
||||
+ <<override>> setupBlock() : void
|
||||
+ <<override>> simulate() : void
|
||||
}
|
||||
Block <|-- MechanicalJoint
|
||||
@enduml
|
||||
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
class CameraControl {
|
||||
+ panSpeed : float = 0.5f
|
||||
+ rotateSpeed : float = 5.0f
|
||||
+ zoomSpeed : float = 5.0f
|
||||
+ minZoom : float = 2.0f
|
||||
+ maxZoom : float = 50.0f
|
||||
+ enableSmoothing : bool = true
|
||||
+ smoothTime : float = 0.1f
|
||||
+ isInputLocked : bool = false
|
||||
+ SnapToDirection(direction:Vector3) : void
|
||||
}
|
||||
MonoBehaviour <|-- CameraControl
|
||||
CameraControl --> "pivotPoint" Transform
|
||||
CameraControl --> "obstacleLayer" LayerMask
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class ViewCubeController {
|
||||
}
|
||||
MonoBehaviour <|-- ViewCubeController
|
||||
ViewCubeController --> "mainCam" Camera
|
||||
ViewCubeController --> "viewCubeCam" Camera
|
||||
ViewCubeController --> "viewCubeImage" RawImage
|
||||
ViewCubeController --> "viewCubeLayer" LayerMask
|
||||
@enduml
|
||||
@@ -0,0 +1,15 @@
|
||||
@startuml
|
||||
class CommandDTO {
|
||||
+ CommandName : string <<get>>
|
||||
+ converToCommand() : ICommand
|
||||
}
|
||||
class "Dictionary`2"<T1,T2> {
|
||||
}
|
||||
class CommandDTOBuilder {
|
||||
+ SetCommandName(name:string) : CommandDTOBuilder
|
||||
+ AddParameter(key:string, value:object) : CommandDTOBuilder
|
||||
+ Build() : CommandDTO
|
||||
}
|
||||
CommandDTO --> "Parameters<string,object>" "Dictionary`2"
|
||||
CommandDTO +-- CommandDTOBuilder
|
||||
@enduml
|
||||
@@ -0,0 +1,14 @@
|
||||
@startuml
|
||||
class CommandHandler {
|
||||
+ {static} getInstance() : CommandHandler
|
||||
+ createBlock(prefabId:string, position:Vector3, rotation:Quaternion) : void
|
||||
+ moveBlock(blockId:string, prePosition:Vector3, newPosition:Vector3, preRotation:Quaternion, newRotation:Quaternion) : void
|
||||
+ removeBlock(blockId:string) : void
|
||||
+ removeGroup(blockIds:List<string>) : void
|
||||
+ rotateBlock(blockId:string, newRotation:Quaternion) : void
|
||||
+ undoAction() : void
|
||||
+ redoAction() : void
|
||||
+ clearHistory() : void
|
||||
}
|
||||
MonoBehaviour <|-- CommandHandler
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class CommandManager {
|
||||
+ {static} getInstance() : CommandManager
|
||||
+ setMaxCapacity(capacity:int) : void
|
||||
+ executeCommand(command:ICommand) : void
|
||||
+ undo() : void
|
||||
+ redo() : ICommand
|
||||
+ clearHistory() : void
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class CreateBlockCommand {
|
||||
+ CreateBlockCommand(prefabId:string, position:Vector3, rotation:Quaternion, LayerDiff:bool)
|
||||
+ CreateBlockCommand(commandDTO:CommandDTO)
|
||||
+ execute() : void
|
||||
+ undo() : void
|
||||
+ toDTO() : CommandDTO
|
||||
}
|
||||
ICommand <|-- CreateBlockCommand
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class DeleteBlockCommand {
|
||||
+ DeleteBlockCommand(blockId:string)
|
||||
+ DeleteBlockCommand(commandDTO:CommandDTO)
|
||||
+ execute() : void
|
||||
+ undo() : void
|
||||
+ toDTO() : CommandDTO
|
||||
}
|
||||
ICommand <|-- DeleteBlockCommand
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class DeleteGroupCommand {
|
||||
+ DeleteGroupCommand(blocksId:List<string>)
|
||||
+ DeleteGroupCommand(commandDTO:CommandDTO)
|
||||
+ execute() : void
|
||||
+ undo() : void
|
||||
+ toDTO() : CommandDTO
|
||||
}
|
||||
ICommand <|-- DeleteGroupCommand
|
||||
@enduml
|
||||
@@ -0,0 +1,4 @@
|
||||
@startuml
|
||||
interface ICommand {
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class MoveBlockCommand {
|
||||
+ MoveBlockCommand(blockId:string, previousPosition:Vector3, newPosition:Vector3, previousRotation:Quaternion, newRotation:Quaternion)
|
||||
+ MoveBlockCommand(commandDTO:CommandDTO)
|
||||
+ execute() : void
|
||||
+ undo() : void
|
||||
+ toDTO() : CommandDTO
|
||||
}
|
||||
ICommand <|-- MoveBlockCommand
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class RotateblockCommand {
|
||||
+ RotateblockCommand(blockId:string, newRotation:Quaternion)
|
||||
+ RotateblockCommand(commandDTO:CommandDTO)
|
||||
+ execute() : void
|
||||
+ undo() : void
|
||||
+ toDTO() : CommandDTO
|
||||
}
|
||||
ICommand <|-- RotateblockCommand
|
||||
@enduml
|
||||
@@ -0,0 +1,25 @@
|
||||
@startuml
|
||||
abstract class BaseInputProvider {
|
||||
+ <<virtual>> Enable() : void
|
||||
+ <<virtual>> Disable() : void
|
||||
}
|
||||
class "UnityEvent`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- BaseInputProvider
|
||||
BaseInputProvider --> "OnCursorMoved<Vector2>" "UnityEvent`1"
|
||||
BaseInputProvider --> "OnCursorDelta<Vector2>" "UnityEvent`1"
|
||||
BaseInputProvider --> "OnPanStart<Vector2>" "UnityEvent`1"
|
||||
BaseInputProvider --> "OnPanEnd" UnityEvent
|
||||
BaseInputProvider --> "OnRotateStart" UnityEvent
|
||||
BaseInputProvider --> "OnRotateEnd" UnityEvent
|
||||
BaseInputProvider --> "OnZoom<float>" "UnityEvent`1"
|
||||
BaseInputProvider --> "OnRotate" UnityEvent
|
||||
BaseInputProvider --> "OnPlace" UnityEvent
|
||||
BaseInputProvider --> "OnDraggingEnd" UnityEvent
|
||||
BaseInputProvider --> "OnSelect" UnityEvent
|
||||
BaseInputProvider --> "OnEnableMultiSelect" UnityEvent
|
||||
BaseInputProvider --> "OnDisableMultiSelect" UnityEvent
|
||||
BaseInputProvider --> "OnCancel" UnityEvent
|
||||
BaseInputProvider --> "OnDelete" UnityEvent
|
||||
BaseInputProvider o-> "OnChangeAttachPoint<int>" "UnityEvent`1"
|
||||
@enduml
|
||||
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
enum InputMode {
|
||||
Camera,
|
||||
ObjectDragging,
|
||||
UI,
|
||||
Gizmo,
|
||||
}
|
||||
class InputModeManager {
|
||||
+ {static} Push(mode:InputMode) : void
|
||||
+ {static} Pop(mode:InputMode) : void
|
||||
+ {static} Has(mode:InputMode) : bool
|
||||
+ {static} Is(mode:InputMode) : bool
|
||||
+ {static} debugCurrentList() : void
|
||||
}
|
||||
InputModeManager --> "Current" InputMode
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class InputProviderManager {
|
||||
+ {static} getInstance() : InputProviderManager
|
||||
+ getCurrentInputProvider() : BaseInputProvider
|
||||
}
|
||||
MonoBehaviour <|-- InputProviderManager
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class MobileInputProvider {
|
||||
}
|
||||
BaseInputProvider <|-- MobileInputProvider
|
||||
@enduml
|
||||
@@ -0,0 +1,18 @@
|
||||
@startuml
|
||||
class PCIntputProvider {
|
||||
}
|
||||
BaseInputProvider <|-- PCIntputProvider
|
||||
PCIntputProvider --> "mousePosition" InputAction
|
||||
PCIntputProvider --> "mouseDelta" InputAction
|
||||
PCIntputProvider --> "scrollAction" InputAction
|
||||
PCIntputProvider --> "panAction" InputAction
|
||||
PCIntputProvider --> "orbitAction" InputAction
|
||||
PCIntputProvider --> "rotateAction" InputAction
|
||||
PCIntputProvider --> "placeAction" InputAction
|
||||
PCIntputProvider --> "EndDraggingAction" InputAction
|
||||
PCIntputProvider --> "selectAction" InputAction
|
||||
PCIntputProvider --> "cancelAction" InputAction
|
||||
PCIntputProvider --> "deleteAction" InputAction
|
||||
PCIntputProvider --> "enableMultiSelectAction" InputAction
|
||||
PCIntputProvider --> "disableMultiSelectAction" InputAction
|
||||
@enduml
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
class BaseInteractable {
|
||||
+ <<virtual>> onHoverEnter() : void
|
||||
+ <<virtual>> onHoverExit() : void
|
||||
+ <<virtual>> onSelectEnter() : void
|
||||
+ <<virtual>> onSelectExit() : void
|
||||
+ <<virtual>> highLightOn() : void
|
||||
+ <<virtual>> highLightOff() : void
|
||||
}
|
||||
MonoBehaviour <|-- BaseInteractable
|
||||
IInteractable <|-- BaseInteractable
|
||||
BaseInteractable --> "onSelectEnterEvent" UnityEvent
|
||||
BaseInteractable --> "onSelectExitEvent" UnityEvent
|
||||
BaseInteractable --> "onHoverEnterEvent" UnityEvent
|
||||
BaseInteractable --> "onHoverExitEvent" UnityEvent
|
||||
@enduml
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
@startuml
|
||||
class GrabInteractable {
|
||||
+ alignToSurfaceNormal : bool = true
|
||||
+ alignmentSpeed : float = 15f
|
||||
+ snapRotation : bool = false
|
||||
+ followSpeed : float = 20f
|
||||
+ heightOffset : float = 0f
|
||||
+ GetAttachPoint() : Transform
|
||||
+ SetAttachPoint(attachPoint:Transform) : void
|
||||
+ GetValidator() : IValidator
|
||||
}
|
||||
MonoBehaviour <|-- GrabInteractable
|
||||
GrabInteractable o-> "validTint" Color
|
||||
GrabInteractable o-> "invalidTint" Color
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class HoveredUI {
|
||||
+ OnPointerEnter(eventData:PointerEventData) : void
|
||||
+ OnPointerExit(eventData:PointerEventData) : void
|
||||
}
|
||||
MonoBehaviour <|-- HoveredUI
|
||||
IPointerEnterHandler <|-- HoveredUI
|
||||
IPointerExitHandler <|-- HoveredUI
|
||||
@enduml
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@startuml
|
||||
interface IInteractable {
|
||||
}
|
||||
@enduml
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
class UIInteractable {
|
||||
+ <<override>> onSelectEnter() : void
|
||||
+ <<override>> onSelectExit() : void
|
||||
+ setBlockData(blockData:BlockData) : void
|
||||
+ OnPointerDown(eventData:PointerEventData) : void
|
||||
}
|
||||
BaseInteractable <|-- UIInteractable
|
||||
IPointerDownHandler <|-- UIInteractable
|
||||
@enduml
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class DeleteInteractor {
|
||||
+ DeleteObjects() : void
|
||||
}
|
||||
MonoBehaviour <|-- DeleteInteractor
|
||||
@enduml
|
||||
@@ -0,0 +1,13 @@
|
||||
@startuml
|
||||
class RayInteractor {
|
||||
+ {static} getInstance() : RayInteractor
|
||||
+ GetHitInfo(hitInfo:RaycastHit) : bool
|
||||
+ GetCurrentGizmo() : GameObject
|
||||
+ GetHitPosition() : Vector3
|
||||
}
|
||||
class "UnityEvent`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- RayInteractor
|
||||
RayInteractor --> "OnWorldClick" UnityEvent
|
||||
RayInteractor o-> "OnSelectEvent<IInteractable>" "UnityEvent`1"
|
||||
@enduml
|
||||
@@ -0,0 +1,11 @@
|
||||
@startuml
|
||||
class SnapSystem {
|
||||
+ {static} getInstance() : SnapSystem
|
||||
+ UpdateSockets(detectionPoint:Vector3, ghostRoot:Transform) : void
|
||||
+ ClearHighlights() : void
|
||||
+ Clear() : void
|
||||
+ GetNearbySockets() : List<SocketPoint>
|
||||
+ GetClosestSocket() : SocketPoint
|
||||
}
|
||||
MonoBehaviour <|-- SnapSystem
|
||||
@enduml
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class TestCommandInteractor {
|
||||
}
|
||||
MonoBehaviour <|-- TestCommandInteractor
|
||||
@enduml
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class AxisMoveStrategy {
|
||||
+ AxisMoveStrategy(lockedRotation:Quaternion, clampMin:float, clampMax:float)
|
||||
+ BeginDrag(axisDirection:Vector3, ghostPosition:Vector3) : void
|
||||
+ EndDrag() : void
|
||||
+ UpdateMovement(ctx:GhostMovementContext) : void
|
||||
}
|
||||
IGhostMovementStrategy <|-- AxisMoveStrategy
|
||||
@enduml
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
@startuml
|
||||
class AxisRotateStrategy {
|
||||
+ OverridesSurfaceTracking : bool <<get>>
|
||||
+ Sensitivity : float = 0.4f
|
||||
+ AxisRotateStrategy(localAxis:LocalAxis, lockedPosition:Vector3)
|
||||
+ BeginRotate() : void
|
||||
+ EndRotate() : void
|
||||
+ UpdateMovement(ctx:GhostMovementContext) : void
|
||||
}
|
||||
enum LocalAxis {
|
||||
Up,
|
||||
Forward,
|
||||
Right,
|
||||
}
|
||||
IGhostMovementStrategy <|-- AxisRotateStrategy
|
||||
AxisRotateStrategy +-- LocalAxis
|
||||
@enduml
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class FreeMoveStrategy {
|
||||
+ UpdateMovement(ctx:GhostMovementContext) : void
|
||||
}
|
||||
IGhostMovementStrategy <|-- FreeMoveStrategy
|
||||
@enduml
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
@startuml
|
||||
struct GhostMovementContext {
|
||||
+ <<readonly>> FollowSpeed : float
|
||||
+ <<readonly>> HeightOffset : float
|
||||
+ <<readonly>> AlignToSurfaceNormal : bool
|
||||
+ <<readonly>> SnapRotation : bool
|
||||
+ GhostMovementContext(ghostTransform:Transform, surfacePoint:Vector3, surfaceNormal:Vector3, mySocket:SocketPoint, targetSocket:SocketPoint, attachPoint:Transform, followSpeed:float, heightOffset:float, alignToSurfaceNormal:bool, snapRotation:bool)
|
||||
}
|
||||
GhostMovementContext --> "GhostTransform" Transform
|
||||
GhostMovementContext --> "SurfacePoint" Vector3
|
||||
GhostMovementContext --> "SurfaceNormal" Vector3
|
||||
GhostMovementContext --> "MySocket" SocketPoint
|
||||
GhostMovementContext --> "TargetSocket" SocketPoint
|
||||
GhostMovementContext --> "AttachPoint" Transform
|
||||
GhostMovementContext --> "RotationAxis" Vector3
|
||||
@enduml
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
@startuml
|
||||
class GhostStrategyHandler {
|
||||
+ {static} getInstance() : GhostStrategyHandler
|
||||
+ StartDraggingRight() : void
|
||||
+ StartDraggingUp() : void
|
||||
+ StartDraggingForward() : void
|
||||
+ EndDragging() : void
|
||||
+ StartRotatingRight() : AxisRotateStrategy
|
||||
+ StartRotatingUp() : AxisRotateStrategy
|
||||
+ StartRotatingForward() : AxisRotateStrategy
|
||||
+ StartRotation() : void
|
||||
}
|
||||
MonoBehaviour <|-- GhostStrategyHandler
|
||||
@enduml
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
@startuml
|
||||
class GhostStrategyTester {
|
||||
+ ClampMin : float
|
||||
+ ClampMax : float = 5f
|
||||
+ RotateSensitivity : float = 0.4f
|
||||
}
|
||||
enum Mode {
|
||||
None,
|
||||
AxisMove,
|
||||
AxisRotate,
|
||||
}
|
||||
MonoBehaviour <|-- GhostStrategyTester
|
||||
GhostStrategyTester --> "TestTarget" GameObject
|
||||
GhostStrategyTester +-- Mode
|
||||
@enduml
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@startuml
|
||||
interface IGhostMovementStrategy {
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
class GhostManager {
|
||||
+ {static} getInstance() : GhostManager
|
||||
+ SetMovementStrategy(strategy:IGhostMovementStrategy) : void
|
||||
+ setDrag(drag:bool) : void
|
||||
+ ForcePlace() : void
|
||||
+ SetupBlock(blockData:BlockData) : void
|
||||
+ SetupExistingBlock(sourceObject:GameObject, strategy:IGhostMovementStrategy) : void
|
||||
+ HasActiveGhost() : bool
|
||||
+ isGhost(obj:GameObject) : bool
|
||||
+ ClearGhost() : void
|
||||
+ ClearGhostData() : void
|
||||
+ onClearAddListener(action:UnityAction) : void
|
||||
+ setupBlock(blockData:BlockData) : void
|
||||
+ clearGhost() : void
|
||||
+ clearGhostData() : void
|
||||
}
|
||||
MonoBehaviour <|-- GhostManager
|
||||
GhostManager --> "GhostTransform" Transform
|
||||
@enduml
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class InteractionManager {
|
||||
+ {static} getInstance() : InteractionManager
|
||||
}
|
||||
MonoBehaviour <|-- InteractionManager
|
||||
@enduml
|
||||
@@ -0,0 +1,12 @@
|
||||
@startuml
|
||||
class SelectionManager {
|
||||
+ {static} getInstance() : SelectionManager
|
||||
+ GetCurrentSelections() : List<IInteractable>
|
||||
+ ClearSelection() : void
|
||||
+ HasOneSelection() : bool
|
||||
}
|
||||
class "UnityEvent`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- SelectionManager
|
||||
SelectionManager --> "SelectionEvent<IInteractable>" "UnityEvent`1"
|
||||
@enduml
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class SocketManagerChecker {
|
||||
}
|
||||
MonoBehaviour <|-- SocketManagerChecker
|
||||
@enduml
|
||||
@@ -0,0 +1,11 @@
|
||||
@startuml
|
||||
class UIManager {
|
||||
+ {static} getInstance() : UIManager
|
||||
+ selectUIInteractable(uiInteractable:UIInteractable) : void
|
||||
+ deselectUIInteractable() : void
|
||||
}
|
||||
class "UnityEvent`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- UIManager
|
||||
UIManager --> "onSelectEvent<BlockData>" "UnityEvent`1"
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class BlockNode {
|
||||
+ BlockNode(blockData:BlockData, position:Vector3, rotation:Quaternion)
|
||||
}
|
||||
BlockNode --> "blockData" BlockData
|
||||
BlockNode --> "position" Vector3
|
||||
BlockNode --> "rotation" Quaternion
|
||||
BlockNode --> "matchedNode" BlockNode
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class BlocksGraph {
|
||||
}
|
||||
ScriptableObject <|-- BlocksGraph
|
||||
@enduml
|
||||
@@ -0,0 +1,17 @@
|
||||
@startuml
|
||||
class BlocksMap {
|
||||
+ calcTotalNodes() : long
|
||||
+ init(blocksMap:BlocksMap) : void
|
||||
+ setRootNode(node:BlockNode) : void
|
||||
+ {static} RoundPosition(position:Vector3, precision:float) : Vector3
|
||||
+ {static} RoundRotation(rotation:Quaternion, precision:float) : Quaternion
|
||||
}
|
||||
class "Dictionary`2"<T1,T2> {
|
||||
}
|
||||
class "List`1"<T> {
|
||||
}
|
||||
ScriptableObject <|-- BlocksMap
|
||||
BlocksMap o-> "blocks<string,Dictionary<Vector3, BlockNode>>" "Dictionary`2"
|
||||
BlocksMap o-> "allNodes<BlockNode>" "List`1"
|
||||
BlocksMap --> "rootNode" BlockNode
|
||||
@enduml
|
||||
@@ -0,0 +1,14 @@
|
||||
@startuml
|
||||
class ModelCheckManager {
|
||||
+ {static} getInstance() : ModelCheckManager
|
||||
+ newMapName : string = "NewBlocksMap"
|
||||
+ setBlockMap(map:BlocksMap) : void
|
||||
+ Initialize() : void
|
||||
+ addNode(node:BlockNode) : void
|
||||
+ removeNode(blockName:string, position:Vector3) : void
|
||||
}
|
||||
MonoBehaviour <|-- ModelCheckManager
|
||||
ModelCheckManager --> "OnAllValidEvent" UnityEvent
|
||||
ModelCheckManager --> "OnValidNodeEvent" UnityEvent
|
||||
ModelCheckManager --> "OnInvalidNodeEvent" UnityEvent
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class GizmoFMoveElement {
|
||||
}
|
||||
MonoBehaviour <|-- GizmoFMoveElement
|
||||
@enduml
|
||||
@@ -0,0 +1,14 @@
|
||||
@startuml
|
||||
enum GizmoDirection {
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
}
|
||||
class GizmoMoveElement {
|
||||
+ getDirection() : GizmoDirection
|
||||
+ onSelectEnter() : void
|
||||
+ onSelectExit() : void
|
||||
+ ResetMat() : void
|
||||
}
|
||||
MonoBehaviour <|-- GizmoMoveElement
|
||||
@enduml
|
||||
@@ -0,0 +1,8 @@
|
||||
@startuml
|
||||
class GizmoRotateElement {
|
||||
+ onSelectEnter() : void
|
||||
+ onSelectExit() : void
|
||||
+ ResetMat() : void
|
||||
}
|
||||
MonoBehaviour <|-- GizmoRotateElement
|
||||
@enduml
|
||||
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class MultiSelectValidationCheck {
|
||||
+ SelectedItem(interactable:IInteractable) : void
|
||||
}
|
||||
MonoBehaviour <|-- MultiSelectValidationCheck
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class TransformManager {
|
||||
}
|
||||
MonoBehaviour <|-- TransformManager
|
||||
@enduml
|
||||
@@ -0,0 +1,12 @@
|
||||
@startuml
|
||||
class CommandSaveHandler {
|
||||
+ {static} getInstance() : CommandSaveHandler
|
||||
+ setFileName(fileName:string) : void
|
||||
+ saveCommands() : void
|
||||
+ loadCommands() : void
|
||||
+ excuteAllCommands(action:Action) : IEnumerator
|
||||
+ addLastCommand(command:CommandDTO) : void
|
||||
+ removeLastCommand() : void
|
||||
+ clearCommandList() : void
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,8 @@
|
||||
@startuml
|
||||
class CommandSaveUtil <<static>> {
|
||||
+ {static} saveLinkedList(list:LinkedList<CommandDTO>, saveFilePath:string) : bool
|
||||
+ {static} loadLinkedList(saveFilePath:string) : LinkedList<CommandDTO>
|
||||
+ {static} deleteSaveFile(saveFilePath:string) : void
|
||||
+ {static} hasSaveFile(saveFilePath:string) : bool
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class EnvironmentObserver {
|
||||
+ save() : void
|
||||
+ load() : void
|
||||
}
|
||||
MonoBehaviour <|-- EnvironmentObserver
|
||||
@enduml
|
||||
@@ -0,0 +1,19 @@
|
||||
@startuml
|
||||
class AttachableBlock {
|
||||
+ GetConnectedBlocks() : List<AttachableBlock>
|
||||
+ GetAttachedJoints() : List<JointBlock>
|
||||
+ SetBlockType(BlockType:BlockType) : void
|
||||
+ DisconnectFrom(otherBlock:AttachableBlock) : void
|
||||
+ UnregisterJoint(joint:JointBlock) : void
|
||||
+ GetSocketContainer() : SocketContainer
|
||||
+ ConnectTo(otherBlock:AttachableBlock, mySocket:SocketPoint, theirSocket:SocketPoint) : void
|
||||
+ RegisterJoint(joint:JointBlock) : void
|
||||
}
|
||||
enum BlockType {
|
||||
Regular,
|
||||
Link,
|
||||
Gear,
|
||||
Structural,
|
||||
}
|
||||
MonoBehaviour <|-- AttachableBlock
|
||||
@enduml
|
||||
@@ -0,0 +1,4 @@
|
||||
@startuml
|
||||
interface BlockContainerInit {
|
||||
}
|
||||
@enduml
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@startuml
|
||||
class SimpleLinkContainerInit {
|
||||
+ InitBlockContainer(sockets:List<SocketPoint>) : List<SocketPoint>
|
||||
}
|
||||
MonoBehaviour <|-- SimpleLinkContainerInit
|
||||
BlockContainerInit <|-- SimpleLinkContainerInit
|
||||
@enduml
|
||||
@@ -0,0 +1,10 @@
|
||||
@startuml
|
||||
interface ISocket {
|
||||
}
|
||||
enum SocketType {
|
||||
Regular,
|
||||
JointHost,
|
||||
JointEnd,
|
||||
Universal,
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,20 @@
|
||||
@startuml
|
||||
class JointBlock {
|
||||
+ TryPlaceJoint(targetSockets:List<SocketPoint>, isGhost:bool) : bool
|
||||
+ CreatePhysicsJoint(targetObj:GameObject, socket:SocketPoint) : void
|
||||
+ RemoveJoint() : void
|
||||
+ GetJointType() : JointBlockType
|
||||
+ GetSocketEnd1() : SocketPoint
|
||||
+ GetSocketEnd2() : SocketPoint
|
||||
+ IsPlaced() : bool
|
||||
}
|
||||
enum JointBlockType {
|
||||
FixedPivot,
|
||||
HingePivot,
|
||||
ConfigurablePivot,
|
||||
}
|
||||
class "List`1"<T> {
|
||||
}
|
||||
MonoBehaviour <|-- JointBlock
|
||||
JointBlock o-> "connectedBlocks<AttachableBlock>" "List`1"
|
||||
@enduml
|
||||
@@ -0,0 +1,8 @@
|
||||
@startuml
|
||||
class JointPlacementHandler {
|
||||
+ {static} getInstance() : JointPlacementHandler
|
||||
+ FindAllSocketsAlignedBetween(start:SocketPoint, end:SocketPoint) : List<SocketPoint>
|
||||
+ FindTargetSocketsForJoint(jointBlock:JointBlock, searchPosition:Vector3) : List<SocketPoint>
|
||||
}
|
||||
MonoBehaviour <|-- JointPlacementHandler
|
||||
@enduml
|
||||
@@ -0,0 +1,25 @@
|
||||
@startuml
|
||||
class SocketContainer {
|
||||
+ GetActiveSocket() : SocketPoint
|
||||
+ CycleToNextSocket() : void
|
||||
+ CycleToPreviousSocket() : void
|
||||
+ SetActiveSocketByIndex(index:int) : void
|
||||
+ SetActiveSocket(socket:SocketPoint) : void
|
||||
+ ResetToFirstSocket() : void
|
||||
+ GetAllSockets() : List<SocketPoint>
|
||||
+ GetAvailableSockets() : List<SocketPoint>
|
||||
+ GetOccupiedSockets() : List<SocketPoint>
|
||||
+ FindNearestCompatibleSocket(worldPosition:Vector3, sourceSocket:SocketPoint) : SocketPoint
|
||||
+ FindSocketsInRadius(worldPosition:Vector3, radius:float, onlyAvailable:bool) : List<SocketPoint>
|
||||
+ GetSocketsByType(type:SocketType) : List<SocketPoint>
|
||||
+ HighlightAllSockets(state:HighlightState) : void
|
||||
+ ClearAllHighlights() : void
|
||||
+ AddSocket(socket:SocketPoint) : void
|
||||
+ RemoveSocket(socket:SocketPoint) : void
|
||||
+ GetSocketCount() : int
|
||||
+ HasSockets() : bool
|
||||
+ GetCurrentSocketIndex() : int
|
||||
+ FindSocketsCompatibleWithJoint(jointBlock:JointBlock) : List<SocketPoint>
|
||||
}
|
||||
MonoBehaviour <|-- SocketContainer
|
||||
@enduml
|
||||
@@ -0,0 +1,9 @@
|
||||
@startuml
|
||||
class SocketIterator {
|
||||
+ {static} getInstance() : SocketIterator
|
||||
+ SetActiveContainer(container:SocketContainer) : void
|
||||
+ GetCurrentActiveSocket() : SocketPoint
|
||||
+ ClearActiveContainer() : void
|
||||
}
|
||||
MonoBehaviour <|-- SocketIterator
|
||||
@enduml
|
||||
@@ -0,0 +1,27 @@
|
||||
@startuml
|
||||
class SocketPoint {
|
||||
+ CanAccept(otherSocket:ISocket, isJoint:bool) : bool
|
||||
+ GetNormal() : Vector3
|
||||
+ Highlight(state:HighlightState) : void
|
||||
+ GetTransform() : Transform
|
||||
+ GetSocketType() : SocketType
|
||||
+ GetSocketRadius() : float
|
||||
+ SetSocketRadius(radius:float) : void
|
||||
+ IsOccupied() : bool
|
||||
+ IsJointOccupied() : bool
|
||||
+ GetOccupyingObject() : GameObject
|
||||
+ GetJointObject() : GameObject
|
||||
+ SetOccupied(obj:GameObject) : void
|
||||
+ SetJointOccupied(jointObject:GameObject) : void
|
||||
+ ReleaseJoint() : void
|
||||
+ Release() : void
|
||||
}
|
||||
enum HighlightState {
|
||||
Default,
|
||||
Active,
|
||||
Compatible,
|
||||
Incompatible,
|
||||
}
|
||||
MonoBehaviour <|-- SocketPoint
|
||||
ISocket <|-- SocketPoint
|
||||
@enduml
|
||||
@@ -0,0 +1,6 @@
|
||||
@startuml
|
||||
class CategoryInherit {
|
||||
+ UpdateCategory(category:CategoryData) : void
|
||||
}
|
||||
MonoBehaviour <|-- CategoryInherit
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class DropdownCategories {
|
||||
}
|
||||
MonoBehaviour <|-- DropdownCategories
|
||||
@enduml
|
||||
@@ -0,0 +1,4 @@
|
||||
@startuml
|
||||
interface IValidator {
|
||||
}
|
||||
@enduml
|
||||
@@ -0,0 +1,8 @@
|
||||
@startuml
|
||||
class PlacementValidator {
|
||||
+ SetLayerMask(cLayerMask:LayerMask) : void
|
||||
+ IsValidPlacement(objToPlace:GameObject) : bool
|
||||
}
|
||||
MonoBehaviour <|-- PlacementValidator
|
||||
IValidator <|-- PlacementValidator
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class CanvasPlatformUI {
|
||||
}
|
||||
MonoBehaviour <|-- CanvasPlatformUI
|
||||
@enduml
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
@startuml
|
||||
enum PlaneAxis {
|
||||
XZ= 0,
|
||||
XY= 1,
|
||||
YZ= 2,
|
||||
}
|
||||
class VirtualPlane {
|
||||
}
|
||||
class CanvasVirtualPlatformManager {
|
||||
+ {static} getInstance() : CanvasVirtualPlatformManager
|
||||
+ RegenerateColliders() : void
|
||||
+ SwitchToPlane(plane:PlaneAxis) : void
|
||||
+ TogglePlatformVisibility(visible:bool) : void
|
||||
+ ToggleGridVisibility(visible:bool) : void
|
||||
+ GetCurrentPlane() : PlaneAxis
|
||||
+ IsPlatformVisible() : bool
|
||||
+ GetCurrentCollider() : GameObject
|
||||
+ GetCurrentCanvas() : GameObject
|
||||
+ SetCanvasSize(planeAxis:PlaneAxis, width:float, height:float) : void
|
||||
+ SetCurrentCanvasSize(width:float, height:float) : void
|
||||
+ GetCurrentCanvasSize() : Vector2
|
||||
}
|
||||
VirtualPlane --> "planeAxis" PlaneAxis
|
||||
VirtualPlane --> "canvasGrid" GameObject
|
||||
VirtualPlane --> "colliderObject" GameObject
|
||||
MonoBehaviour <|-- CanvasVirtualPlatformManager
|
||||
@enduml
|
||||
@@ -0,0 +1,5 @@
|
||||
@startuml
|
||||
class PlatformUI {
|
||||
}
|
||||
MonoBehaviour <|-- PlatformUI
|
||||
@enduml
|
||||
@@ -0,0 +1,18 @@
|
||||
@startuml
|
||||
enum BuildAxis {
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
}
|
||||
class VirtualPlatformManager {
|
||||
+ {static} getInstance() : VirtualPlatformManager
|
||||
+ SwitchToAxis(axis:BuildAxis) : void
|
||||
+ MovePlatform(delta:float) : void
|
||||
+ SetPlatformDistance(distance:float) : void
|
||||
+ ToggleGridVisibility(visible:bool) : void
|
||||
+ GetCurrentAxis() : BuildAxis
|
||||
+ GetCurrentDistance() : float
|
||||
+ GetPlatformPosition() : Vector3
|
||||
}
|
||||
MonoBehaviour <|-- VirtualPlatformManager
|
||||
@enduml
|
||||
Reference in New Issue
Block a user