Skip to content

Source Structure

Viktor Kovacs edited this page May 20, 2020 · 41 revisions

Main Folders

The source contains the following folders:

  • Documentation: Here you can find some documentation related stuff, like images.
  • Sources: The source code. See the following sections for details.
  • Tools: Various tools for the project.

Source Modules

You can find some subfolders under the Sources folder. Every folder contains a separate compilation unit (module).

Core Modules

  • NodeEngine: This module contains the code for the main engine. It implements the main logical and persistence layer of the application.
  • NodeUIEngine: This module is responsible for User Interface and Event handling. This is a platform independent layer, every platform specific operation is handled by interfaces.
  • BuiltInNodes: This is an optional module which contains some basic functionality. It is highly recommended to use this module in your application because it contains implementations for the most common use cases.

Test Modules

  • TestFramework: This is a very simple unit testing framework used by the tests.
  • NodeEngineTest: This is a platform independent automated test executable for all of the core modules.

Application Modules

  • WindowsAppSupport: This module contains some windows implementations of the required interfaces. If you would like to use the engine on windows, these codes can help you a lot.
  • WindowsEmbeddingDemo: This is a minimal test application which embeds the engine. This is a good starting point to understand how embedding works.

NodeEngine

The NodeEngine module is responsible for storing the graph and do basic operations on it.

Module responsibilites:

  • Node graph operations:
    • Add/Delete nodes.
    • Connect/Disconnect nodes.
    • Merge graphs (support for copy/paste and undo/redo).
  • Node graph evaluation:
    • Calculate and cache node values.
    • Invalidate node values automatically on any change.
    • Detecting cycles in graph.
  • Serialization.
  • Localization.
Clone this wiki locally