Package: inexor-rgf Priority: optional Installed-Size: 15925 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-22 Depends: libc6:armhf (>= 2.31) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-22_armhf.deb Size: 5024452 MD5sum: bcaa584d2aa9716629085921aea64d03 SHA1: 5d269e51e75d3cb8f6dea4cef05e906e7968be40 SHA256: 18366a0b0ad18d4875206644b08ca7ad275f735301f3e3cc43586ab416e27e0b SHA512: aaf090ad9991229d87ff2bd14c7e2f5531523aa02c011414b3ccb89db2ac8314bf8f6a2601ca32383a7366cedab7e3b4f3c7afc904c1dbb54584305c822625d7 Description: Inexor - Reactive Graph Flow - Runtime - Standalone
. .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-application/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-application) . [](https://discord.com/invite/acUW8k7) .
. .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Plugins

.
. [The Plugin System](https://inexorgame.github.io/inexor-rgf-application/book/Plugin_System.html) . [List of Plugins](https://inexorgame.github.io/inexor-rgf-application/book/Plugins.html) . [Plugins Repository](https://github.com/inexorgame/inexor-rgf-plugins) .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

GraphQL Type System

. . . .

Flow Editor

.
. Coming soon. .
. .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-application Vcs-Git: https://github.com/inexorgame/inexor-rgf-application Package: inexor-rgf Priority: optional Installed-Size: 15925 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libc6:armhf (>= 2.31) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-21_armhf.deb Size: 5026412 MD5sum: 2e0eaa5743b1610acce76f36a5c3a600 SHA1: 4e30b19346084539d6157a354b042cf64256ba54 SHA256: 9f474ac4967809d51e78f118b63440c0bebd6f42fba2c6d572859748fc8b903f SHA512: 02b19a12d3aac51065a2af2a81cbe72435c6697dc7a7e5a268f342f1d4fb104942466ffb00d77b7550db010b5d5b2c55ef06bffd8d75b1567ef1550d87f13674 Description: Inexor - Reactive Graph Flow - Runtime - Standalone
. .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-application/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-application/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-application) . [](https://discord.com/invite/acUW8k7) .
. .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Plugins

.
. [The Plugin System](https://inexorgame.github.io/inexor-rgf-application/book/Plugin_System.html) . [List of Plugins](https://inexorgame.github.io/inexor-rgf-application/book/Plugins.html) . [Plugins Repository](https://github.com/inexorgame/inexor-rgf-plugins) .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

GraphQL Type System

. . . .

Flow Editor

.
. Coming soon. .
. .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-application Vcs-Git: https://github.com/inexorgame/inexor-rgf-application Package: libinexor-rgf-plugin-arithmetic Priority: optional Installed-Size: 2841 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-arithmetic/libinexor-rgf-plugin-arithmetic_0.9.1-21_armhf.deb Size: 897244 MD5sum: 5ff6478b231e3cd15b0c516e0d23b5d8 SHA1: 2f52c95986ccb992acd5be3819f79d27758544da SHA256: ff6780c051b13969aef17176444617eff8bd2a9142235d57f284089244998647 SHA512: f4e8257266ca3737ddee0e154a3224fea658c473c3c34cc5110518eb1b5a8d37488bd9df7026f6e0f79e674edfdcfe84cb5712ca7222ea6bf798bcc5f73fa493 Description: Inexor - Reactive Graph Flow - Plugin - Arithmetic
. .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-arithmetic Priority: optional Installed-Size: 2841 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-result, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-arithmetic/libinexor-rgf-plugin-arithmetic_0.9.1-18_armhf.deb Size: 896756 MD5sum: 923f5df097b74789f278d1b7277e4ba4 SHA1: db728955b3e405d00e6cbbdfcb0777885dce4851 SHA256: 82f99f8dc5eb27561e9fc0b1ac7a95478d5fb5765586d2f2ed84f20f1d214e3c SHA512: 15fd5deea1bd5bb3952f2220bb72dbd12f162428fa34eb372121528ff17a138e8e7ece26cda654807cfc6152b86040cfe5f6cce4583ff05a22f6b8d69f07a3cc Description: Inexor - Reactive Graph Flow - Plugin - Arithmetic
. .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-base Priority: optional Installed-Size: 2489 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-21_armhf.deb Size: 795692 MD5sum: 07809387e378a2d2b8579f5fd37a2ef3 SHA1: 9a78da52b1b47a483fc850e754145f63cccdc9f3 SHA256: 4eeb50e8c034287406f9c9af5e892954acbc83ba2ef4853f31512522f498a4ec SHA512: 346e0762007b2cb7520d55c484f1bd315707a22ba7bcc7de2bf88b99bb355c9525063ca1dda9f813840de8f3d2cb5d826ffc1573b5954952f5c1113139ba2c91 Description: Inexor - Reactive Graph Flow - Plugin - Base . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-base Priority: optional Installed-Size: 2485 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-18_armhf.deb Size: 795216 MD5sum: 4ade2c99ad9590a24182a415f1d36a3a SHA1: 831c53bb7922590f6c31313f6521340a1f10df63 SHA256: 35096fc1429e93afc4fc51ed1b4285c7f8648d1ff417ef649b3a1bdb4bbb1a5f SHA512: d6cf3a8a899029e9df698615b2d11dfb7099b2787f3a1866660260c19ff57968b4e6d42a61a4c0208db5c4216cfc8746c974ea64fc480b3458fa980b48c2ebf9 Description: Inexor - Reactive Graph Flow - Plugin - Base . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-binary Priority: optional Installed-Size: 2941 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-file, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-21_armhf.deb Size: 932588 MD5sum: 0050bbc88891e82e1521b849db2af76b SHA1: 01a95153288513b31980465e28e2fddb8dc5d21b SHA256: 2d2bfa20c150def38d7d14635958dea8eb74a6b5bc7a63509be84c40586206ff SHA512: 3f4c7eb35899b871b2a0e8f2606a1b9fefa9024de70eb224d45a1d40825da62187debb7c7f5c7c1a76d59791af3a4d7a60c79fc3cfc69dde52bd7cb3457b9928 Description: Inexor - Reactive Graph Flow - Plugin - Binary . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-binary Priority: optional Installed-Size: 2933 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-file, libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-18_armhf.deb Size: 931516 MD5sum: 605c0690281efe0bb706dec9199e9e93 SHA1: 9e96ecfad2af4520d9a281772d6a77ca7b3e3474 SHA256: 413c4154d49481d900fd3a8cd93ac332f23869d2e052ebb9995c9af76978b44d SHA512: 7bc8038a9c308e2ee224e5ce6520e4041cd74a2cf97c33d749684956d4e787a02207d0cba72f07db1a8ebe07a240fd2af899e2d7209f7d391e87a71f5312c338 Description: Inexor - Reactive Graph Flow - Plugin - Binary . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-color Priority: optional Installed-Size: 2733 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-color/libinexor-rgf-plugin-color_0.9.1-21_armhf.deb Size: 871196 MD5sum: 318441c37ce511a4a9002e324b090611 SHA1: 9f9a70240afc8cc3fd76fb2693b9d5bac50ea398 SHA256: 4b03fec9a712ff572144b336fd210da14b4098724c08ac35ad3f98e026847ba5 SHA512: d80f87ce79211cf4e65eac53c210a842d7edad4924bcd9b814c8d2af07c997d473588d36cb03db816934676b02621f9499095edc9e429bb0ab91b4bd5d9b64fe Description: Inexor - Reactive Graph Flow - Plugin - Color . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-color Priority: optional Installed-Size: 2725 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-color/libinexor-rgf-plugin-color_0.9.1-18_armhf.deb Size: 870928 MD5sum: 98637c1e04ed4de11541a49195ac746e SHA1: 773909f854f81f12c0dad0f692df06d64b3ff739 SHA256: 3369c8dcf452a65f833348ff96ec0ee638e1cc897452c86df22c7270a3357070 SHA512: eb875539c1b983deeee44a479b3c8cb20d5a7b073f1aad33d5de5dec1b4933b9e60799008665256b954e4be9b254201d8ea1c0aaed73468b7b9a54756d08aa30 Description: Inexor - Reactive Graph Flow - Plugin - Color . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-comparison Priority: optional Installed-Size: 2717 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-comparison/libinexor-rgf-plugin-comparison_0.9.1-21_armhf.deb Size: 872380 MD5sum: 97bb29e6c0f6ee4704700a36591441d5 SHA1: 257d1f08335d8c048b88952449cef10a5c2b9c07 SHA256: adf6b3cf84e7978ec0e62de31d389720723531b1fe491622549161535d860547 SHA512: 0c6690c2e27541d028b4d0f0404409972e87a0cb40f0ffd4476a64c912a1773cade099f3717fa2b9cfae497f06baa676dc2d160199c220e3083293a258507cde Description: Inexor - Reactive Graph Flow - Plugin - Comparison . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-comparison Priority: optional Installed-Size: 2713 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-comparison/libinexor-rgf-plugin-comparison_0.9.1-18_armhf.deb Size: 872268 MD5sum: 885325d072aa746f3a163af3a69978ca SHA1: fd030f8ae7c2dc522141c572eda217ddf6169c5c SHA256: e87d484c30612dd17bea1c0a6aa3db32a4c7bf1174c0cba3df35fddb549a5d01 SHA512: d34a8446af2748e668269e5b8519a7328018e16f3304398415bd1220985f531f9ad19da2a9a68f438cb887776e3c71513f62e741161da74860b393b288859407 Description: Inexor - Reactive Graph Flow - Plugin - Comparison . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-config Priority: optional Installed-Size: 2877 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-file, libinexor-rgf-plugin-result, libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-21_armhf.deb Size: 933332 MD5sum: 75f61eb72522039c6c59354932e42936 SHA1: 7984298115a2379a5fcb11ecabbeab3b4d24a4f8 SHA256: bc67ced00e9d8a5c1cd8ded4092c611dcc93bc371d1bb765d9ba95d102e72983 SHA512: 23d80a233b6b06773e098276f4d972746ef02f5e4fde61cda936364712e702f10ad4a7b80244af2dd2e5ae5341663c384ee45e063fdc885d6dd0e44f5a7bb8d4 Description: Inexor - Reactive Graph Flow - Plugin - Config . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-config Priority: optional Installed-Size: 2869 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-file, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-18_armhf.deb Size: 934024 MD5sum: 48cef2f446d47fe00665ab1efa061b61 SHA1: d0064b19044b6603e322b46be712046648883ce7 SHA256: c792c2ce80c27e436f5c0906cbd620541e6097537ee934f5ff66918e7e50bcb5 SHA512: 20ebe10aa791e540d6e7089b9ee811241cfcbb3e655b8b2c73d16c2869db38e8483ca8eca4186bd4ff7401f444f4b9aad7bf3f7996fd5df5aca16616e0c9c6de Description: Inexor - Reactive Graph Flow - Plugin - Config . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-connector Priority: optional Installed-Size: 2813 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-connector/libinexor-rgf-plugin-connector_0.9.1-21_armhf.deb Size: 906960 MD5sum: f304f4e7e294f051ae60e90fc38ff9f3 SHA1: 343a19b1e1b8898943012710a12d9e15a544fa94 SHA256: c8d0df3fd6cc578639a808f637dd99194a2c02ad79411c6921a7d2b2db745da1 SHA512: e3a5beae1f4063ceae2650cd9b687d1f3c4fd6538489151001997fdc985e0d62bbaec1bff099949b53e539e0b08411f45803c766d7cbc074c219cd5536a38008 Description: Inexor - Reactive Graph Flow - Plugin - Connector . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-connector Priority: optional Installed-Size: 2809 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-connector/libinexor-rgf-plugin-connector_0.9.1-18_armhf.deb Size: 909024 MD5sum: b50970e1735245bbd1e8d6dc9fd6fad7 SHA1: 2698700f5ec9317f926a0e5eef21a69a5aad4355 SHA256: 2828e99bfafd24baca846aabb855ad41642a854c88bc509eec42155b38d8328f SHA512: f593a08e2e7ffe1032b834fc2feeeb5196a70cc68951b915977407378a22f9c5b8b8740343f89560d5ebfb157184b9d4cd1fc4f1db9dc9bf3b1be6f0fd4f6f86 Description: Inexor - Reactive Graph Flow - Plugin - Connector . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-date-time Priority: optional Installed-Size: 2941 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-date-time/libinexor-rgf-plugin-date-time_0.9.1-21_armhf.deb Size: 940980 MD5sum: cfded5d251a641b76dc5f3726b32571e SHA1: d55fc31d6f41a39110e16b8fb49f0493aa2bb04f SHA256: ad5f7888a190ddae4e01c2b2c0911b67a86bf45c890de829514c0d15d7665e25 SHA512: 583a53be0f7ebf581c69d2c3bd33bf090434e7dbd2162f1ec49bd9133ae99a485e641cb0af898e96462954c988dde704c12044b7c827efc8ec153b4dd08ce5bd Description: Inexor - Reactive Graph Flow - Plugin - Date Time . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-date-time Priority: optional Installed-Size: 2937 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-date-time/libinexor-rgf-plugin-date-time_0.9.1-18_armhf.deb Size: 940660 MD5sum: d80a4663aef47f1bb0125f0874da0e7b SHA1: 0809ea40a9509b8e93ea7fd172303e93e803eec3 SHA256: cc5499dbd84b3bfb12cbf09cd6e306c6a30fb0ecf26ea60b7759505ad17e56db SHA512: acb4967ee425081af74ad40238235de1f33dcd8ce042f6295287c26966014861fd1be7c879c44f3152a5263bb4a309a8d4bebcbbf03dce83cc769bfa597200bb Description: Inexor - Reactive Graph Flow - Plugin - Date Time . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-file Priority: optional Installed-Size: 2613 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-file/libinexor-rgf-plugin-file_0.9.1-21_armhf.deb Size: 838644 MD5sum: 0c6cbd97c3de51187450cd3f4b33b41b SHA1: 2c738ea169123135b2a23008c51c2993a5680b0e SHA256: 0f94e745c35918babe96540cb74fac13979ac15da464b803c6b97f059bb1fd91 SHA512: f5c047ee615f861142afc7c8ad49357789a62ebb8dc4500c56e400dd8951da667ce216fb4e6cca712a7f22e27860e3923563f4900e5e726940677a23794735dd Description: Inexor - Reactive Graph Flow - Plugin - File . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-file Priority: optional Installed-Size: 2609 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-file/libinexor-rgf-plugin-file_0.9.1-18_armhf.deb Size: 838060 MD5sum: 7083674f83e3246d5a6e69c0edd614e4 SHA1: abd8b9b58aed221f0f8c039abbe68e8589147897 SHA256: d9d7004bce67aec27104204c62d71fc7c9a92fd5f96262996385290045f68934 SHA512: 69875f7be1a168a342660cfe8d2ffc53b52297f62ac8575985b0d735d3704ca3e687c771d000ccb29009618131038ad4e8f99569977a234a54815d7cd85f2ee6 Description: Inexor - Reactive Graph Flow - Plugin - File . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-flow Priority: optional Installed-Size: 2545 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-flow/libinexor-rgf-plugin-flow_0.9.1-21_armhf.deb Size: 814540 MD5sum: 262de07ebc9f2388f54b0755bd735051 SHA1: f2f0711405b341cb0dbca33ee14ce0d08f12400b SHA256: ad14b513ea27be7c86d0faa410b6e9f978d7b496ea9339d88cef44695ef4c822 SHA512: 306c6f2b5bad3dfea0b5dadf6d3ec937ce30cb7db1b6a9b94748ef6bccdfa99739f405377187da585a426da4eaeeb02e37d33d90aaed75635ec9fc7d3ce279a7 Description: Inexor - Reactive Graph Flow - Plugin - Flow . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-flow Priority: optional Installed-Size: 2537 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-flow/libinexor-rgf-plugin-flow_0.9.1-18_armhf.deb Size: 813176 MD5sum: 61111d0f908893e4b91c5ebf5e55338e SHA1: 4cede09b4d03c05f2aeda2feb5059f4a751fe938 SHA256: c0e319b363891d10c7e8cbd36b3065e601e3ee928cba1eb296d6bc047fc622ca SHA512: 612c679a7efc4d02c87d5cad70c166fd70725d13d6efc18195dc8061839d98b4b6a26aafdcd9a14c2c45d3c2694776e6ac1352ea514e490a9785b79672c4dc15 Description: Inexor - Reactive Graph Flow - Plugin - Flow . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-git Priority: optional Installed-Size: 4814 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-http, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-21_armhf.deb Size: 2045468 MD5sum: a6a960ca64ba0692b031f705fdfd5d57 SHA1: c2a53899de90f23cdb8d90961b2fd308cdf7ae3c SHA256: df9fc128a1d177217078c94e0ac2452d7fd00c19a9493d2a8556e5a51d0ada39 SHA512: 72b5abe3592f7692749d75c29ed49ecc2b0b1674a53e3d47f522ba5b93068567bc409deb96403b81dea7bf2546bdddaf8e336c01a2232356642e7812b928c685 Description: Inexor - Reactive Graph Flow - Plugin - GIT . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-git Priority: optional Installed-Size: 4810 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-http, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-18_armhf.deb Size: 2045216 MD5sum: 6327754c78ac7a80e953e9899b05bed6 SHA1: db4d88b79a4d5288a4d3752a34d7c47a801fbf74 SHA256: 7a06f71d5275dc0a59aea00c25913fdb4f73b74a642702bccb1543782a9c7e1f SHA512: e64ecaa4a7e3ddb2beda9de51f40537dfe5a1e19f349854d2425142cfaa6eca8f265969fb0d7101600821444de211cb2fc2383e5096dd6a63e09e6b3a2d7fe43 Description: Inexor - Reactive Graph Flow - Plugin - GIT . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-graphql-client Priority: optional Installed-Size: 5045 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-graphql-client/libinexor-rgf-plugin-graphql-client_0.9.1-21_armhf.deb Size: 3189564 MD5sum: e682cbd1332e29ee9fdc32719800fc38 SHA1: 336253c0a8e23cb178ec9099cd927fc21da00711 SHA256: 1baf238256d5d3618afb2155e78965a65987690a75fc78aa707a7a68b9b5b648 SHA512: 6e9b3403044e3adc5f4fe3967573330a237b6e64c7983a64b7fa95da2231b25c3d48dea84423611bdf817285e1d053010f0de402b8cfcd16fa61dff8dcaa6dd4 Description: Inexor - Reactive Graph Flow - Plugin - GraphQL Client . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-graphql-client Priority: optional Installed-Size: 5037 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-graphql-client/libinexor-rgf-plugin-graphql-client_0.9.1-18_armhf.deb Size: 3189548 MD5sum: 6479e6e63d27730d132defb8c6b2cded SHA1: 44672781f94dabc913d9475aab429bc4a399ce36 SHA256: a119a74464a1c5bd4869434f3ba8827d281c68d41338349cbfb9e6b43ffcc247 SHA512: cc61aa3fafa40c09316fac3b1474991a3e60386760bac5fd587619b8d9f0544309ff336775add256009ae107814a94f88af0050456548fa7d5f66586a28900b2 Description: Inexor - Reactive Graph Flow - Plugin - GraphQL Client . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-graphql-schema-visualization Priority: optional Installed-Size: 5545 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-graphql-schema-visualization/libinexor-rgf-plugin-graphql-schema-visualization_0.9.1-21_armhf.deb Size: 3866296 MD5sum: d4f699381d4e0a0933b8dc1571ce5323 SHA1: 91ebe619724bec58ca75a2bb4b0f959e4edacb11 SHA256: 65f3dc3374b9ae2e2e8ef1cd69c2793a27214470d765924d78d1e7acb8d3eb53 SHA512: cbf03e2d18893b567119604f7361082d715229db5a685ad32f21465b9a04958f00aafaa76e58abcce9443e1e6b3cee3594d25cb145ea9e958f6752c74b1b484e Description: Inexor - Reactive Graph Flow - Plugin - GraphQL Schema Visualization . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-graphql-schema-visualization Priority: optional Installed-Size: 5541 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-graphql-schema-visualization/libinexor-rgf-plugin-graphql-schema-visualization_0.9.1-18_armhf.deb Size: 3865744 MD5sum: 513fd42cc19b2436e6a0295b0bf29d3e SHA1: 224b3eead454405c2bf243231444761abfb23b26 SHA256: f1193ff6c4fdbf01e9354917b013518b6ef515749ea767a254d33c18c2e73476 SHA512: 1defad1b08d0238ea562af1fcbff49ed187c1413a93859e79c1dda3436ba7ffc052d56e755a95f25ebb54c182524e6adacbe22878ea15fe2f645602f9bbaee61 Description: Inexor - Reactive Graph Flow - Plugin - GraphQL Schema Visualization . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-http Priority: optional Installed-Size: 3889 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-http/libinexor-rgf-plugin-http_0.9.1-21_armhf.deb Size: 1344904 MD5sum: 4170e6dfa3d0f892e7ebed7e7e86ef03 SHA1: 5385f7b72419f8b64d1ce736220959c1587bdbed SHA256: 1066c769d90ed29d550409addce939339f2dfefcc77b38bec172bb54fb7c98b9 SHA512: 603c2848de8d3866dca5803d559ffcd60b142d5cec85cdfc12c529743929156707b02fd0c7d3d228c2c67556ca9f9ac77d2900be3829b2a317cf8508cbc5d965 Description: Inexor - Reactive Graph Flow - Plugin - HTTP . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-http Priority: optional Installed-Size: 3889 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-http/libinexor-rgf-plugin-http_0.9.1-18_armhf.deb Size: 1343948 MD5sum: e64c9cde4b2db20aceab783f79cd3d02 SHA1: 1abf22c86a270e0bba500c252163ad35854d8a67 SHA256: 46ea4ef43078006ed5bda56534852f6e31c51ca68acdd12e59bd862ac3c7841e SHA512: d32c0bb2f35d7b1a91fa9c94d44539113ce57c93002bb28e53e3d09a05ab5ac82087e73399b36d5aec4e9d72df017d7e70668a4d2d1b3320d06fd50f9a1e2e40 Description: Inexor - Reactive Graph Flow - Plugin - HTTP . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-json Priority: optional Installed-Size: 2973 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-file, inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-21_armhf.deb Size: 928676 MD5sum: ad8b2b40d3347e3087b665310fec2e06 SHA1: 747f1df6aa0fa410152f6a1a671c50fec80c572e SHA256: f6e9d6771881fd05a52e1f4e5145d17d92e9b56526e421364e4b2fe7e257d616 SHA512: c98c4fa13aa88a193cc80c8c4f27a501b384daa8aa08ad395e86a79810b920584c3b637bcee42fb046444055ce45e4e5f192e3088cb1226ffc11f8d49fe2e9d1 Description: Inexor - Reactive Graph Flow - Plugin - JSON . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-json Priority: optional Installed-Size: 2969 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-file, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-18_armhf.deb Size: 929412 MD5sum: c4ad2d2867b9a98ebeabe0d159bb50dd SHA1: 52056f461f2a5b911cfd36ba99d7a6df4c859232 SHA256: c68112c21222cc3413199eea5ee90e044a441e9b34c82583d8c936ff783fb4ec SHA512: 668a3dbf0fb78d352ee179a62bd2993862862f7d6960294d4b85ce29746f4a37fcc4324c8e55577234198832d32476cfcecac8ed8b2651eb1547d7c9c4e42d45 Description: Inexor - Reactive Graph Flow - Plugin - JSON . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-logical Priority: optional Installed-Size: 2829 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-result, libinexor-rgf-plugin-connector Filename: pool/main/libi/libinexor-rgf-plugin-logical/libinexor-rgf-plugin-logical_0.9.1-21_armhf.deb Size: 901952 MD5sum: 16644583efa7c2194397bf709557c434 SHA1: 7ae39900a7c9554b96e789822e89c86408aeb1b2 SHA256: 00f8ae669578a14c03b726c75bcdac585ead5c75049df382667c73c1e2d2b574 SHA512: bc386f630f96c3f573b45f301eb730710d3ea6d22168995f858524769bd14ee241844b3398de29ad340d728ecf4eaa0a5f98412ba78d6fd90e2ba2d88d0b2492 Description: Inexor - Reactive Graph Flow - Plugin - Logical . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-logical Priority: optional Installed-Size: 2825 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result, libinexor-rgf-plugin-connector Filename: pool/main/libi/libinexor-rgf-plugin-logical/libinexor-rgf-plugin-logical_0.9.1-18_armhf.deb Size: 901164 MD5sum: 3a9e0c639e86b13644529640748cd0e0 SHA1: 8dce35d19f5857f490040843582126fa8cbc5ae0 SHA256: b920af74b78c09f4fe1b6498f44771a027e7838fdf7c82b0f3bb42c63c5f8d28 SHA512: 4fe1cee7b1727cb74327d8d800e3dd1bcde24140f297a354ab5932780c2ab63b105db3f5489c99a95a9eeb52a20220551c04f7d67bbaa3bc9af9db4a70c584ae Description: Inexor - Reactive Graph Flow - Plugin - Logical . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-metadata Priority: optional Installed-Size: 2485 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-taxonomy Filename: pool/main/libi/libinexor-rgf-plugin-metadata/libinexor-rgf-plugin-metadata_0.9.1-21_armhf.deb Size: 796008 MD5sum: 499ced05a4f9302e4e6134a15dfd12bc SHA1: bbde2c6af37981adf107abc2e4ab2590ab47caf4 SHA256: a10ad459b27857da7048b5dfbdba5011c036954ab08fe13d7f5e2e8603c1e31a SHA512: fa5398deff4cfb57e74164ea36e9033e5f6286c2f1b04f80baddcbbd3688be95149f63275ce664d41bb24f0ed3b77dbd1f751d080e0ddcc65f88c45a4968081b Description: Inexor - Reactive Graph Flow - Plugin - Metadata . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-metadata Priority: optional Installed-Size: 2485 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-taxonomy, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-metadata/libinexor-rgf-plugin-metadata_0.9.1-18_armhf.deb Size: 795328 MD5sum: ab313de28fafa15533b64338dcde3fdd SHA1: 67bc73428745d0aa19ea62e7585265494b01436f SHA256: b089ba071ac83ec63b3906b96a50629a5855f1c27fa7a84dc99ad5c80fa7fa24 SHA512: 8c4471591da80a48e863658ea915706e8c10414104593fc97fde6b9687e09d3ecfb919893915d363a39351eaf757bea1abc206a6bebeca685e59c986b3e4cad1 Description: Inexor - Reactive Graph Flow - Plugin - Metadata . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-numeric Priority: optional Installed-Size: 2809 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-value, libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-numeric/libinexor-rgf-plugin-numeric_0.9.1-21_armhf.deb Size: 896056 MD5sum: 951448453888cbe783fa42c98b867ce1 SHA1: dde4b3f8bc83e491fac4308e3a58f6782bd71b1a SHA256: 1e3f2d8080039cf75c34b77d0aae105fbdebd474192bafa4c62e8c3e5670c587 SHA512: a35469ad0c5347b2d53f7daf26b63b1021ca7baa266d6f0585b917d2591b11e109e29b22784091216a468150790bd75b721e645a0bc96bb5f83241b7244044c4 Description: Inexor - Reactive Graph Flow - Plugin - Numeric . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-numeric Priority: optional Installed-Size: 2805 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-value, inexor-rgf, libinexor-rgf-plugin-result, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-numeric/libinexor-rgf-plugin-numeric_0.9.1-18_armhf.deb Size: 895100 MD5sum: de57cc52e083a61defeeceb803e1950c SHA1: 94f79b24c6302a483a6de028e59eb86f68bb4d08 SHA256: 29420b12dbbe4a6d990206b559d316d537d1bc330550e7c9a88d7c22defa7330 SHA512: 2f5a88df0b330a788c29a1677118fcbdb1ec1beae88c6dbe98ea7e2b024b256351c676c8b932e8437836fdc6103344ce723ba6b38463c8a616c1b9e71500c1ea Description: Inexor - Reactive Graph Flow - Plugin - Numeric . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-random Priority: optional Installed-Size: 2893 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-random/libinexor-rgf-plugin-random_0.9.1-21_armhf.deb Size: 894592 MD5sum: 1a7f7f1a9ae71fd3e0a5689583944cdf SHA1: ebcad938d32e233911f11e59ac78404613df47f1 SHA256: adf1874543bdf817079d78044c5673bdba485dfa0ea1ae4515cb420bf39b1fac SHA512: c10f2612aeb1fb3a18c5a3a5cb70563b8d05578b892843725e1ef4acc04b8fe1f8b6ce397f51a07419147bcfa7e94f4f180aca08f847e4bcc66588d4ff42f697 Description: Inexor - Reactive Graph Flow - Plugin - Random . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-random Priority: optional Installed-Size: 2885 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-random/libinexor-rgf-plugin-random_0.9.1-18_armhf.deb Size: 892824 MD5sum: 0dc716c826987afd3a94caa3e673fb0a SHA1: f17e9338cdb5d98a3ad97c05a0de61056473a752 SHA256: 80ec8af46c48d210e86421f5d07efa600ecc8019fea96313f693ace129134d7a SHA512: 2e0cd5e20985c478ffb022918dae628b303a69ae0f3d89836aad39eceafc420acfc423c8735fef71e6814bc1a065ac8364689ef0dde2e13ae070835f8ead1bd6 Description: Inexor - Reactive Graph Flow - Plugin - Random . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-result Priority: optional Installed-Size: 2489 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-result/libinexor-rgf-plugin-result_0.9.1-21_armhf.deb Size: 796756 MD5sum: 0bb740d3ed519d510b2bd8382cadc4b0 SHA1: 1ee0f244882e37eb3bfb2eabdbf97334cf062e62 SHA256: ced01a6435c31bfe91983cf8a514eea9187151f35b5f70c5791150157602faca SHA512: b351f3f425c2982f299c0e1e5641dd41981e71fa91d1f0554fb2e43f1a42248b5fbb1ed7e723e9025066f1f4c2dfd51a366e97715ae7faf655a9d56fd74b414b Description: Inexor - Reactive Graph Flow - Plugin - Result . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-result Priority: optional Installed-Size: 2485 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-result/libinexor-rgf-plugin-result_0.9.1-18_armhf.deb Size: 795900 MD5sum: 94431a118366c42baf2b9a8e62cc9668 SHA1: e7403d758d45fe7adaf06b399d3dfbe5f546b972 SHA256: 6d7c65dcbf19e258a9d2712d6726d64702239ac1d89abc82bfd0d30e469a07ac SHA512: 8df0843384b53dcdd8681d0ed8359548de3b2040d1737bf69a72129df4b26c2110202289e20a494b13e8b2a42a8ef4a10ed447dbdb8e559969d6f18ab6371452 Description: Inexor - Reactive Graph Flow - Plugin - Result . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-state Priority: optional Installed-Size: 2761 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-value Filename: pool/main/libi/libinexor-rgf-plugin-state/libinexor-rgf-plugin-state_0.9.1-21_armhf.deb Size: 890392 MD5sum: 5242819342c2a9ffc20e34e258e0ef06 SHA1: 0349023293c9d9b30e474ab992b064d37a4f9f95 SHA256: f114eb57e18455694e2c6e9f2cdd2c5301ac5d7e71460400d3dd5102f4789a80 SHA512: ef870f620d97d9b4986140feb5c95eb9ae97c3818f1fe42df2e142567b224a64cec6c37ea8c063c37642350805ffa75b738660e5855f3dccaafd773aceb4f1a6 Description: Inexor - Reactive Graph Flow - Plugin - State . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-state Priority: optional Installed-Size: 2757 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-value Filename: pool/main/libi/libinexor-rgf-plugin-state/libinexor-rgf-plugin-state_0.9.1-18_armhf.deb Size: 889216 MD5sum: 1f93afed5cc9273f574a277773764edd SHA1: 1121aa7fa0e89edb3576dc14bc32d892c267da77 SHA256: 2d9640d79ef25985e0f59b54b231f4c9257f9395e144e58c93c06365db45efac SHA512: 01c0ff3f623bcfd34ed13578a7681c23fe50d7d205f41a7744ddbb8efd49b88d23027cc17754f7a4a1653b200f35d41b21d5d5825ec41fc484673069cd510f75 Description: Inexor - Reactive Graph Flow - Plugin - State . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-string Priority: optional Installed-Size: 5773 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-string/libinexor-rgf-plugin-string_0.9.1-21_armhf.deb Size: 1372928 MD5sum: 63e8958091c9ba29ee172e21949b2488 SHA1: ef4439c568ec6286b15f887a8e06d852a011ee95 SHA256: 161ab1df0d7dae866cd72749e46b1056cd8a976f38ceeb7f18bbbd5aa3e4e4de SHA512: 96e155228f84fdf0657083902fad4b5f5cf142fbc33faebcebe7637ea55c8f0ecb74c299509b29cfe3547eda92fb8752dcc4c58aaaf0debc39761bc7f5bfe4f1 Description: Inexor - Reactive Graph Flow - Plugin - String . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-string Priority: optional Installed-Size: 5765 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-string/libinexor-rgf-plugin-string_0.9.1-18_armhf.deb Size: 1363288 MD5sum: 6fe23b0474cdfc2be742d0116540b29c SHA1: 191c5b68ec77d69b31f5ba28f1653ae64988f700 SHA256: 46fa495e5cc71f33eccbee00261082f55b0b3406333f1de7d272d344400b2bb9 SHA512: 0af2008d97f819cf2a69a9b40b0eb78140f1fef5d70ac16545770942014b419f2bde24596bcda34e8d3f7560e8fe1bddc113df7a3a3045d020bc6da5d0b475f5 Description: Inexor - Reactive Graph Flow - Plugin - String . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-system-environment Priority: optional Installed-Size: 2529 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-value Filename: pool/main/libi/libinexor-rgf-plugin-system-environment/libinexor-rgf-plugin-system-environment_0.9.1-21_armhf.deb Size: 810592 MD5sum: ceafcdbf9b329f1d3d2ab7ed38d4003c SHA1: b2a0ad34808be00709e02bef9769658516c3f8cd SHA256: 4902490fc79b4cd8d8abecdd2b4540c6ad077488f162b40e89135e17bcc7ba76 SHA512: f08a3836a2a6a7fc6fe10148d8eae5f4e1624333d457ee233e0801f2f7de11986a44cd8f86157c3ed474d070bd15af94801248a61ef3e8095f6050c05ac29453 Description: Inexor - Reactive Graph Flow - Plugin - System Environment . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-taxonomy Priority: optional Installed-Size: 2517 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-taxonomy/libinexor-rgf-plugin-taxonomy_0.9.1-21_armhf.deb Size: 805960 MD5sum: df4220df7c65ed86b6d93a4e302c1b79 SHA1: 189ca6158f919df3f5013da7ac630b41546cc8a3 SHA256: ef1aa35fde9fe56752f75559fa661508ec4e31af3a33760aa8a58f1f6b382c95 SHA512: bdbdfa88edbe71f163b6263561561d0d4479867da4849e40428b09d978bbcc5b93a1fb20e2bebe11e45dbbe6efdef7a8e54c4ecb5bbeb77b53130cc5af9ab819 Description: Inexor - Reactive Graph Flow - Plugin - Taxonomy . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-taxonomy Priority: optional Installed-Size: 2513 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-taxonomy/libinexor-rgf-plugin-taxonomy_0.9.1-18_armhf.deb Size: 805012 MD5sum: 97219665845b0e7958a65e59b1389516 SHA1: 58ea73f5f5c9904d090ffadc1b7aee6982aa1723 SHA256: bc29df773c39e773c7f270676cce02bd95975af562d15ec0869d403545298799 SHA512: 7d5d633b2955bb05462d574410f55fd50b7cc8afb495b3d61b1b3c98e08c4d7b39f2e7080322b4bb6a4c6ac2fd8af9fdfeeb04d8cfffde29560d0f1ad483e8f1 Description: Inexor - Reactive Graph Flow - Plugin - Taxonomy . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-trigger Priority: optional Installed-Size: 2485 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-trigger/libinexor-rgf-plugin-trigger_0.9.1-21_armhf.deb Size: 795840 MD5sum: 84ab4467c0a240e06bb2e5d77161ae0a SHA1: 58c74525741cb38bc292515687b79b5bf194340d SHA256: 1087903a58388f3e4b3620d92ce30f743834fc3806c41faf5bffab709e7d7603 SHA512: 412e1c3bdf5aac2cd50732b0a7543353c2826c0db559cf43ad66343644ea3fbc0bba56f8fed8d057df52699cfad5b6e60cafb1ef352bf1b194a0fd0d078d41ad Description: Inexor - Reactive Graph Flow - Plugin - Trigger . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-trigger Priority: optional Installed-Size: 2481 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-trigger/libinexor-rgf-plugin-trigger_0.9.1-18_armhf.deb Size: 794752 MD5sum: 1093a57d46dcb3ae6ac9918d6d76d606 SHA1: b6aa70c72ae1ca50a6d1e6bc115760705a21f159 SHA256: 23f726c182c33f2019e9d3ce918d81a30b9e19386ed8964dcb0bdd41b2be3727 SHA512: 18cf7ee496741162453117f56907d35f12f6d51551a227a04b6095adec5b68ba3148abb231b0933a37ea2925a4f0b96a6ebc5c8cf50a2d8acdd01f53d39a3d54 Description: Inexor - Reactive Graph Flow - Plugin - Trigger . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-value Priority: optional Installed-Size: 2737 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-value/libinexor-rgf-plugin-value_0.9.1-21_armhf.deb Size: 886032 MD5sum: ddad8d5f33a03bcbc6929546aeb8881f SHA1: b510092c61aca37b21ef130981a2b1451db55239 SHA256: ffe0190cbb1fff97a1c75b3b0996f877638a2e8b9f4e149b2c20d0aa619f5f20 SHA512: 8a32d5fec5027e10e63277461c12d363b042e51f48fc3e6589848628718d83d3234727b94ba1202b668fbf117c0da463fafd1ba4033346f162ff5b2f1cfa22ee Description: Inexor - Reactive Graph Flow - Plugin - Value . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins Package: libinexor-rgf-plugin-value Priority: optional Installed-Size: 2733 Maintainer: Andreas Schaeffer Architecture: armhf Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-value/libinexor-rgf-plugin-value_0.9.1-18_armhf.deb Size: 887068 MD5sum: a7e5fde1468d01577fbca4c3d7bda89d SHA1: d2aa3bce63a6fd71256cb89026757eacd5d81686 SHA256: ecefb3c387e4e708962af3db82706b551f7ffb846ed50db36c0e7b5f0360e72e SHA512: 3cc4ceaa5784cb5b4e011b6c59176702f4f389dc7a89147a4998c8f8e1624fd36d27c06fc8619eacc60d4e909b8dea50059d217883321cc45a83387660a6c1a3 Description: Inexor - Reactive Graph Flow - Plugin - Value . .

Inexor Reactive Graph Flow

.
. [](https://inexorgame.github.io/inexor-rgf-application/book/) [](https://inexorgame.github.io/inexor-rgf-application/docs/) . [](https://www.rust-lang.org/) []() [](https://github.com/inexorgame/inexor-rgf-plugins/blob/main/LICENSE) . [![Build](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/rust.yml) [![Formatting](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/fmt.yml) [![Clippy](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml/badge.svg)](https://github.com/inexorgame/inexor-rgf-plugins/actions/workflows/lint.yml) [](https://app.codecov.io/gh/inexorgame/inexor-rgf-plugins) . [](https://discord.com/invite/acUW8k7) .
. .

List of Plugins

.
. In this repository you'll find the essential plugins which are necessary or useful for all use cases. . | Name | Description | |-----------------------------------------------------------------------------------|--------------------------------------------| | [Arithmetic](./plugins/arithmetic/README.md) | Provides arithmetic gates and operations | | [Base](./plugins/base/README.md) | Provides basic components and entity types | | [Binary](./plugins/binary/README.md) | Handles binary data | | [Color](./plugins/color/README.md) | Colors and colorspace transformations | | [Comparison](./plugins/comparison/README.md) | Provides comparison gates | | [Config](./plugins/config/README.md) | Load configuration files | | [Connector](./plugins/connector/README.md) | Provides property connectors | | [Date Time](./plugins/date-time/README.md) | Date and Time, Durations and calculation | | [File](./plugins/file/README.md) | File representation | | [Git](./plugins/git/README.md) | Git VCS operations | | [GraphQL Client](./plugins/graphql-client/README.md) | GraphQL client | | [GraphQL Schema Visualization](./plugins/graphql-schema-visualization/README.md) | Visualization of the GraphQL schema | | [HTTP](./plugins/http/README.md) | HTTP and JSONRPC | | [JSON](./plugins/json/README.md) | Handles JSON arrays and objects | | [Logical](./plugins/logical/README.md) | Provides logical operations | | [Meta Data](./plugins/metadata/README.md) | Meta Data - Dublin Core, EXIF | | [Numeric](./plugins/numeric/README.md) | Numeric operations | | [Random](./plugins/random/README.md) | Generate random numbers | | [Result](./plugins/result/README.md) | Result components | | [State](./plugins/state/README.md) | Debounced states | | [String](./plugins/string/README.md) | Provides string operations | | [System Environment](./plugins/system-environment/README.md) | Provides environment variables | | [Taxonomy](./plugins/taxonomy/README.md) | Taxonomy - categories and tags | | [Trigger](./plugins/trigger/README.md) | Triggers and actions | | [Value](./plugins/value/README.md) | Values and state management | .
. .

Local Build + Local Deployment

.
. #### Setup deployment directory in `.deployment.toml` . ```shell target_dirs = [ "../inexor-rgf-application/plugins/deploy" ] ``` . #### Install a specific plugin . ```shell cargo build cargo post build --package=inexor-rgf-plugin-date-time ``` . #### Install all plugins of this repository at once . ```shell cargo build cargo post build --package=deployment-all ``` .
. . .

What is this?

.
. ➔ The `Reactive Graph Flow` is a **graph database** . ➔ The `Reactive Graph Flow` is a **document store** . ➔ The `Reactive Graph Flow` is a **flow control** runtime . ➔ The `Reactive Graph Flow` is a **web server** . ➔ The `Reactive Graph Flow` is **pluggable** and **extensible** . ➔ The `Reactive Graph Flow` is **fast**, **secure** and **small** .
. .

What is it for?

.
. ➔ Game Entity Component System (ECS) - especially for [Inexor](https://inexor.org/) . ➔ Smart Home and Internet of Things . ➔ Data Conversion Tools . ➔ Flow Control System for card size computers and embedded devices . ➔ Desktop Automation . ➔ Content Management System . ➔ Knowledge Graphs and Knowledge Processing .
. .

Graph

.
. A **graph** organizes highly interconnected data. The state of an `Entity Component System` can be ideally represented with the help of the graph. Inexor is the first game engine to introduce a graph as a basis. . The main benefits of a graph are: . * A universal data structure for everything * Relations are first class citizens * Benefit from types and instances which makes things intuitive * Benefit from navigation which is fast and intuitive * Benefit from the semantics of highly connected, intuitive data * Properties can store not only certain primitive data but complete documents .
. .

Reactive

.
. Now that we understand how data is stored, here's how data interacts. The approach is that the data itself is "alive". To do this, Inexor adopts a concept from reactive programming. . In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. . It is the ingenious combination of a graph with reactive programming. The property instances are not static and only contain data. Rather, they are streams of data. If you change the value of a property instance, you fill the data stream of this property instance. Data streams are linked together. For example, if the stream of one property instance is linked to the stream of another property instance and you change the value of the first property instance, the value of the second property instance will automatically change as well. Data is thus propagated from one station to the next, triggering a cascade of propagations. . In addition, Inexor remembers the last value in each property instance. This is done by subscribing to your own data stream and caching it. This allows subsequent querying of the value of a property instance. . Remember this basic concept: . * Every property is a stream not only data * Property streams can be subscribed and published * The streams of two properties can be connected and changes will be propagated (cascade) .
. .

Behaviour driven design

.
. The data flow is therefore automatic. Building on this, Inexor applies the concept of behaviour-driven design. The goal is to use these data streams to simulate behaviour. . Behaviors can be implemented on components, entities and relations. To do this, one or more incoming data streams are combined, calculations are performed and written to one or more outgoing data streams. . For example, the entity type "AND gate" implements a behavior by subscribing to the two input properties, combining them into a combination data stream and performing an AND operation on the incoming pairs of values. The result of the AND operation is itself a data stream and this is linked to the output property. . This example shows how an entity type is wired internally. They are all data streams that are cleverly combined with one another and thus depict behavior. . It is interesting that this behavior also works for relations. For example, connectors are also implemented behaviors of streams. It is interesting that connectors connect the data stream from a property instance of the outgoing entity instance with the data stream from a property instance of the incoming entity instance. . For example the AND-Gate accepts inputs at the properties lhs and rhs. Both streams are subscribed and zipped. The zipped stream is calculated with a function - in this case the AND-Operator. This results in another (invisible) stream which is connected with the property result. The entity type AND-Gate defines that the properties lhs, rhs and result have to exist. Furthermore, the socket types are defined: lhs and rhs are Input-Sockets and result is a Output-Socket. The behaviour is like the internal wiring of entity instances and of relation instances. A behaviour can be added to entity instances and removed from entity/relation instances. .
. .

Flow

.
. Control flows can be implemented based on the graph, the data streams and the behavior-driven design. It is important here that the available modules that implement the behavior are linked with connectors. . For example, a flow can consist of a logic that links several AND gates with each other using connectors. Both the AND gate and the connector are behaviors. But the arrangement of these behaviors within a flow makes them powerful. . Entire game modes can be implemented with the help of flows. Or just parts of it that are used in multiple game modes, such as a mechanism to pick up, drop, and score flags. . Flows are also useful for making maps more interactive. With the help of flows and behaviors, it can be ensured that a door opens in a map when you press switch 1 and switch 2. Or you determine the color of your own team's base based on the current score. Or you control particle emitters, depending on how many players are near the emitter. The possibilities for this are endless and want to be used! .
. .

Inexor

.
. * Inexor will be a new first-person shooter game which is based on a new octree-based game engine. * Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series. * Inexor will be written from ground up new in C++20 and Rust. * You can contribute anything you want: code, content, ideas.. * Inexor and all its content is 100% open source! .
. .

Development

.
. [Build Instructions](https://inexorgame.github.io/inexor-rgf-application/book/Development_Build.html) . [Data Model](https://inexorgame.github.io/inexor-rgf-application/book/Model.html) . [GraphQL API](https://inexorgame.github.io/inexor-rgf-application/book/GraphQL_API.html) . [Dynamic Graph API](https://inexorgame.github.io/inexor-rgf-application/book/Dynamic_Graph_API.html) .
. .

Configuration

.
. [Configuration](https://inexorgame.github.io/inexor-rgf-application/book/Configuration.html) .
. .

Further Plugins

.
. | Name | Description | State | |--------------------------------------------|----------------------------|------------------------------------| | [Scheduler](./plugins/scheduler/README.md) | Timers and scheduled jobs | TODO: upgrade to newest plugin API | . #### `inexor-rgf-plugins-network` . | Name | Description | |----------------------------------------|----------------------------| | [AMQP](./plugins/amqp/README.md) | AMQP client integration | | [GraphQL](./plugins/graphql/README.md) | GraphQL client integration | | [MQTT](./plugins/mqtt/README.md) | MQTT client integration | . ### `inexor-rgf-plugins-game` . | Name | Description | |------------------------------------|---------------------------------| | [Audio](./plugins/audio/README.md) | Integrates with an audio system | | [Asset](./plugins/asset/README.md) | Download and update assets | . #### `inexor-rgf-plugins-smart` . | Name | Description | |------------------------------------------------------|--------------------------------------------| | [Input Device](./plugins/input-device/README.md) | Input device handling | | [System Command](./plugins/system-command/README.md) | Executes OS commands | . #### `inexor-rgf-plugins-desktop` . | Name | Description | |--------------------------------------------------|------------------------------| | [DBUS](./plugins/dbus/README.md) | Integrates with linux dbus | | [Free Desktop](./plugins/free-desktop/README.md) | Integrates with free desktop | | [Notification](./plugins/notification/README.md) | Create desktop notifications | | [Tray](./plugins/tray/README.md) | Integrates with the tray | .
. . .

Sponsors

.
. . _Special thanks to JetBrains for providing us with CLion licenses!_ .
Vcs-Browser: https://github.com/inexorgame/inexor-rgf-plugins Vcs-Git: https://github.com/inexorgame/inexor-rgf-plugins