# Overview

This is a general overview that explains and connects the major projects of Raumgleiter.  

If it is not exact enough, feel free to create or request additional files in which you go more into details.

#### Legend

``` plantuml
@startuml

left to right direction

030 --* 040 : Contains (A project usually uses a plugin)
101 .. 201 : x | Dotted lines with a "x" will be removed
010 .. 020 : Dotted lines mean connections that will be established
000 --> 001 : Arrows means dataflow.  

@enduml
```
---
## Connections

``` plantuml
@startuml


'******************************************************************************
'Connections

Unity.ArchScape ..> Unreal.CustomProject : starts
Unity.RGDK <--> Web.ArchNet : same database
Unity.RGDK ..> Web.ToggleTool : creates config

Unity.ArchScape --* Unity.RGDK

Unreal.ArchInteraction --> Web.ToggleTool : creates config
Unreal.ArchInteraction --> Web.ZKB_DxfConverter : starts

Unreal.CustomProject --* Unreal.ArchInteraction


'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------

@enduml
```

---
## Common

``` plantuml
@startuml

left to right direction

'******************************************************************************
'Common

namespace Common {
  class CodingConventions {
    Defines a common pattern for coding.
  }

  class RaumgleiterInstaller {
    Runs on:
     - Windows
    ---
     - Creates a signed Installer for Windows
    ---
    [[https://git.raumgleiter.com/Raumgleiter/raumgleiter-installer Project]]
  }
}

@enduml
```

---
## Unity

``` plantuml
@startuml

left to right direction

'******************************************************************************
'Unity

namespace Unity {
  class ArchScape {
     Runs on:
      - Windows
     ---
     - Upload Architecture
     - Edit Architecture
     - Experience Architecture
    ---
    [[https://git.raumgleiter.com/Raumgleiter/ArchScape ArchScape]]
  }

  class BundlerScape {
    Converts 3D files to AssetBundles.
    ---
    Runs on:
     - Unity Editor
    ---
     - Process Architecture
    ---
    [[https://git.raumgleiter.com/Raumgleiter/BundlerScape Project]]
  }

  class EditScape {
    DEPRECATED
    Will be replaced by ArchScape.
    ---
    Runs on:
     - Windows
    ---
    - Upload Architecture
    - Edit Architecture
    - Experience Architecture
    ---
    [[https://git.raumgleiter.com/Raumgleiter/EditScape Project]]
  }


  ArchScape <.. EditScape :x
  ArchScape <..> BundlerScape
  BundlerScape <..> EditScape :x

  '-----------------------------------------------------------------------------

  class RGDK {
    The collection of our Plugins for Unity.
    To check which Plugins are used inside a project,
    check out the plugins directory of the particular project.
    ---
     - BaseRGDK
     - ArchStructureRGDK
     - ArchRGDK
     - InterfaceRGDK
     - WebAssetRGDK
     - Surfaces/Scarif (ArchNet)
     - ArchBundler
    ---
    [[https://git.raumgleiter.com/Raumgleiter/RGDK/tree/develop/Conzept/Architecture Documentation]]
  }

  class MapsDK {
    A Plugin for Maps
    ---
    Runs on:
     - Windows
     - Windows Universal Platform
     - iOS
     - OSX
     - Android
    ---
     - Display Maps
     - Cutout
     - Placing Objects
    ---
    [[https://git.raumgleiter.com/Raumgleiter/MapsDK Project]]
  }

  '-----------------------------------------------------------------------------

  class ArchViewer {
    Runs on:
     - Windows
     - Windows Universal Platform
     - iOS
     - OSX
     - Android
    ---
     - Experience Architecture
    ---
    Not on GitLab
  }

  class ArchBundler {
    Converts 3D files to AssetBundles.
    ---
    Runs on:
     - Unity Editor
    ---
     - Process Architecture
    ---
    Not on GitLab
  }

  class ArchEditor {
    Runs on:
     - Windows
    ---
     - Upload Architecture
     - Edit Architecture
    ---
    Not on GitLab
  }


  ArchViewer <-- ArchEditor
  ArchEditor <--> ArchBundler
  RGDK <-- MapsDK

  namespace CustomProjects {
    class Schindler {
      Runs on:
       - WebGL
      ---
      Uses:
       - BaseRGDK
       - InterfaceRGDK
       - WebAssetRGDK
      ---
       - Experience Elevators
      ---
      [[https://git.raumgleiter.com/Raumgleiter/SchindlerKonfigurator Project]]
    }
  }
}

'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------

@enduml
```

---
## Unreal

``` plantuml
@startuml

left to right direction

'******************************************************************************
'Unreal

namespace Unreal {
  class ArchInteraction {
    Runs on:
     - Unreal Engine
    ---
     - Connects input to action
     - Pano Capturing with ToggleTool
     - Save System
    including useful tools.
    ---
    Custom License
    ---
    [[http://git.pillars.ch:30000/simongloor/ArchInteraction Project]]
  }

  class VaRest {
    Runs on:
     - Unreal Engine
    ---
     - WebRequests in Blueprints
     - Json in Blueprints
    ---
    MIT License
    ---
    [[http://git.pillars.ch:30000/simongloor/VaRest Project]]
  }

  class RGFloorPlanner {
    Runs on:
     - Unreal Engine
    ---
     - Import of Furniture with SpreadSheet
     - Editor user interface
     - Pixelstreaming
     - Upload of DXF, Panos
    ---
    Not yet on GitLab
  }

  class RGInteraction {
    Runs on:
     - Unreal Engine
    ---
     - Customization of ArchInteraction
     - More Tools not suited for ArchInteraction
    ---
    [[https://git.raumgleiter.com/Raumgleiter/RGInteraction Project]]
  }

  class RGSound {
    Runs on:
     - Unreal Engine
    ---
     - Sound assets and components
    ---
    [[https://git.raumgleiter.com/Raumgleiter/RGSound Project]]
  }

  namespace CustomProjects {
    class ZKB {
      Runs on:
       - PixelStreaming
      ---
      Uses:
       - ArchInteraction
       - RGFloorPlanner
      ---
      Only temporarily on GitLab
    }
  }

  class UE4_Library_WIP {
    [[https://git.raumgleiter.com/francinerotzetter/UE_LIB_WIP Project]]
  }

  ArchInteraction <-- VaRest
  ArchInteraction --> RGFloorPlanner
  RGInteraction --> ArchInteraction
  RGSound --> ArchInteraction
}


'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------

@enduml
```

---
## Web

``` plantuml
@startuml

left to right direction

'******************************************************************************
'Web

namespace Web {

  class ArchNet {
    Account System
     - Manages Permissions
    ---
    Metadata of Projects
    ---
    Data of Apps:
     - ArchScape
     - more coming soon
    ---
    [[https://git.raumgleiter.com/Raumgleiter/RGDK/tree/develop/Conzept/ArchNet Documentation]]
  }

  '-----------------------------------------------------------------------------

  class KRPano {
    [[https://krpano.com/ Website]]
  }

  class ToggleTool {
    Allows to configure a pano.
    ---
    Not yet on GitLab
  }

  KRPano <-- ToggleTool

  '-----------------------------------------------------------------------------

  class ZKB_DxfConverter {
    Converts savegames to dxf
    ---
    Not yet on GitLab
  }
}

'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------

@enduml
```
