Initial commit

This commit is contained in:
HussienX72u
2026-07-21 08:56:10 +03:00
commit 4017028111
9410 changed files with 2150500 additions and 0 deletions
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,4 @@
@startuml
interface IInteractable {
}
@enduml
@@ -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
@@ -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
@@ -0,0 +1,5 @@
@startuml
class TestCommandInteractor {
}
MonoBehaviour <|-- TestCommandInteractor
@enduml
@@ -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
@@ -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
@@ -0,0 +1,6 @@
@startuml
class FreeMoveStrategy {
+ UpdateMovement(ctx:GhostMovementContext) : void
}
IGhostMovementStrategy <|-- FreeMoveStrategy
@enduml
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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