Package: inexor-rgf Priority: optional Installed-Size: 16988 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-22 Depends: libc6:arm64 (>= 2.31) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-22_arm64.deb Size: 5173784 MD5sum: 5f03240cea3efd482c5e0aa552836cd2 SHA1: c89d2c98ae67bd352424eaf149d138d597c2ff6c SHA256: e5c90eed2f1b94e50b0b5c5d1e08091abbccc5923b39329715aa1ca5a8a86848 SHA512: fad8cc0b07d6aac561b63087bc1b68d257c60db9ad807d8d9b4032c0d0f2dd82923c00dc36668586868d8c7b8b21e6fabeb8cd1b68112df8a2bfc2efd6c5890d 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: 16988 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libc6:arm64 (>= 2.31) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-21_arm64.deb Size: 5174028 MD5sum: e4f166530420608fd35cdc46d81d6422 SHA1: fac6422b2013079d8a47db81eef98855e08463c2 SHA256: 9dfaa2b4e318f2a27e182394f1ea82cf0030e63b5dfbe02476c479e4c8c7333b SHA512: 95d00be4e3e3962684634eab77d1b0ce092cec29202af3c1f36aeb954fd1cb5e907df757ae6c8f7fa2216f5b117858ab31e6e457964d335f8f53dbed8be5d057 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: 3070 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-arithmetic/libinexor-rgf-plugin-arithmetic_0.9.1-21_arm64.deb Size: 911868 MD5sum: 00d7abd011173ff2a2b8259ab2dc59ff SHA1: 86247f45d192ca4b9287c3924e4eb2e205e13de2 SHA256: 69459596ba6b70f6d150d96809391977f741be5545750110c64d799fa64a98b1 SHA512: 101e11c249d20494cd37db819b870c5f78cad04b34c2b19c956da2683b93b993704c21e9fa946117593ec2507423b9e5b07218b5953786e063b34572d91132b1 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: 3078 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-arithmetic/libinexor-rgf-plugin-arithmetic_0.9.1-18_arm64.deb Size: 913352 MD5sum: 1e4bb09fa08230f420809622954f5476 SHA1: a13879aa19226dd47a55a87b7c429d1a0e711d1d SHA256: b1c45bc88c972e9c12eb3e6a6ec4b63c49625d08f48c82313184f3330b0d06ee SHA512: 7623c878b3b6264dc900fe1914532b60a28462858be6302a5ea6d7c4b493fcc4d1c18a3dbb0874cd7a24bb679e272e64351bb98ec62bce921dfc67fdc510a786 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: 2714 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-21_arm64.deb Size: 812852 MD5sum: 50f4f3424d4d12d177dab1f6c753a3dc SHA1: a893f4d740229794299379ec5ceba3c1e93786bf SHA256: e15db7be3057cbff55591522cd278cf0ae5fa6eb25a2fbe36ecb3daa35177043 SHA512: 48f83c5a572f0102de0a16c7dee693b07e09b227cff0fd53d34490dcd10d972c18d27066eba44b81f9ceadaccda30b87e417a11b206afd4bca84df3bf05027f1 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: 2718 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-18_arm64.deb Size: 812780 MD5sum: b8fd2032eb9887545549299627606520 SHA1: b3001633077785cc872ae28fd109ef9519a0a9fd SHA256: 45947ab2977c957d9552759d19574fcdf7ab616908a06f394aa15613904b9dd4 SHA512: 721df4413407a47c540372e5d189f56898c5f6392c0f83964efad5735b084cd0ce427f3a8afa26c7d874a9505f98db800034364a42fb4c1e9ef7cf7cb6372fc6 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: 3262 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-file, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-21_arm64.deb Size: 955748 MD5sum: a99f0c336b5da2bc679d3713feec33cb SHA1: 14b8c5d2ccc698cb7e4ef1c3c87e8a33780bb473 SHA256: 952401e3cf7f6b876bbca5a551b818149a9ea2b90663212503c5a3bf4e3f9689 SHA512: bef8d192649012a5ff5408846d9f2bb0a5bfdd6c83d3ed8f510003104814dff8617d6b326d246badad4d10733b35be40010274e0f29cbed9cc96e0c15188597c 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: 3258 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-18_arm64.deb Size: 955356 MD5sum: 18b49d9c8f2d6d85d9fcd796a1c304bc SHA1: 4d50b99d04c144fbbaff0b4f2111eab4a9f6d17a SHA256: 1d0b066f69e0780a1bf8e7045873c69ce3c1fa53494c955a5e9007e331b445b2 SHA512: d75719abae760d464bd06a05e5f7970a67cc5d877ec6576664a35f18babb6887ea5a50bfae4fd99f01de1b875dd13d3c9239f250b5808ce2551e4e7ef2995bd2 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: 2950 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-color/libinexor-rgf-plugin-color_0.9.1-21_arm64.deb Size: 885448 MD5sum: fe297830173961b869eb6a184f9ba433 SHA1: 7af3c0a7172ffc1d6336cde143d5368089410338 SHA256: ba2547b0f7b25fb3d3e94a9930b596d1a65ed360a437e77b68ec399d5dffcd73 SHA512: 9c14dcf69832f6f6a76bd0680a2fd1776599d10f73615004cdb6bd06c59aa74d90fa7ac9319eb2be5d1200f11e1a8c0e17c8529024a452e385768618351f8dc2 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: 2950 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 884832 MD5sum: e7557f456109bab3c0be60dfd5a8e6b4 SHA1: eda3fb5a03ada7620929be3b55d2f1bae3685385 SHA256: 9d025d39f2e43189679bd23fd74b80cb7f7765ad43d75dce571edd12b3cffe93 SHA512: db2ed50350e19ce98b822db3e2e1f2dfa9651bbde5a4f63d6865ca438f08a46a270574da18c878dc5b43c06cbd6eecd5efa4ebd8a952f1298f085d19c10a5dad 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: 2934 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-comparison/libinexor-rgf-plugin-comparison_0.9.1-21_arm64.deb Size: 885848 MD5sum: 6c419ee20ff8edd9eae120f30c0d7254 SHA1: 6e0d86a71828bea4f93b4575fb0c70d556fb1d11 SHA256: 8e622df4a37a6269c96ca644a30ca62a3982412c188f9ce489a0910ae4e6525b SHA512: 35a75e04926837fe38249616c6a93dae2f70bdd5a715141ccc896138a1205bc7cd6602c02d3697bfb94a659cbb4457ce2befdcad9f0ff4c53a97c2d48ea5f10b 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: 2938 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 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-18_arm64.deb Size: 886600 MD5sum: acb8b9178a55b5907fe142de4f9c24e5 SHA1: 8a8cae43081d71306873a833efc12afac83230ad SHA256: 2f80c11209f5d7daece457c6de51fcda4b7b60fa9b364d4a06266bbd030e03ae SHA512: 594b8f732278072b628e93ab70f4d5801b233499aa2b3b2a2701230a0b319c6f8038636dedd2287d36c2e5007b61ccce13b051692e30b5a32f5a8adb66a072ee 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: 3102 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-file, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-21_arm64.deb Size: 944844 MD5sum: 35db9a1e6f3d218b3f2b34355d5c6f23 SHA1: a53a6779947bf66cfcc8b0b2cedaa8c1551a0c4a SHA256: 27735b7ef81dde4838af1c374a58cf2f09dbd7484cd3f78f8ce2e9a935932848 SHA512: dce9733d55472600b53629e31ea8aab9f7e0d83cddb6e822c35e8711b1ac57c5f8eb9ef3daa2d719de08a8b8e81a459af9646c82c9dd47d0b3cd27164a255edf 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: 3086 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-18_arm64.deb Size: 943296 MD5sum: 95b92d2c8c1c1b92500fe012d8b2cf9a SHA1: f98ef3deca5e945c145dcaedf179889f53a0ecce SHA256: dedf1c867a7155f6513115f4dd86084fd3469e3355a02b4c61a281067ecc947e SHA512: 7b605fbec6c1e90423ace3ea89602c5c56bdfd3621537e8d29e711f8ab02b9e46b2ce7ae88016c7f15c77ab71543354629955ca45d608070382d4c3afdb31b37 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: 3026 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 917260 MD5sum: 78d1ba58bfca7fd65e8797c0e46eea17 SHA1: 4570a9204050f742439301435324eab0b486bcda SHA256: 6692cbe93a80e2b4f4a1c63a116228dd2200a99460b29683d2015279e9f1d0c6 SHA512: 2136ba11a1069c690c90732873ad0fc5897a974e298214693a769fe476f68799a06a70350eced54d49ed9e2d2734e4ee1b53b89d1df26452c320305f3a07365c 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: 3030 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-connector/libinexor-rgf-plugin-connector_0.9.1-18_arm64.deb Size: 917176 MD5sum: b53f4e652b663528a1d3d5478717760f SHA1: 0e29c27ed2dbfa79f0ca2efb2d766caae4e4bda6 SHA256: e963d74650ee1a5bf303bf70582dd375871608d37ee72fa68ab32510a2d3bbb4 SHA512: b383af0c3b9a02bc292ed21fe768a8ff251a6b52cf29a3748c826d47781637f40eba1a1ffc7a2ec4a53c19dac3dac87d8b5957477a22db4e07015d9169e85907 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: 3158 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-date-time/libinexor-rgf-plugin-date-time_0.9.1-21_arm64.deb Size: 954832 MD5sum: 1f5346afae869242e85ae5efc40296f0 SHA1: 963199a8b3fa96fa207bd44ac5ca4bb9ee5fc697 SHA256: 7d6806de6a47aad9aca9f2e6c137f7bc3f2db8f3fdfbe2c3966db3dda4552075 SHA512: 72f81c091abd0c95ebb6f7bebdc4383106ffce7559332c50b454e365bf5a3457063a19292acc5a45882bf073972664a7a03d141104f007bedaa6befb73eecbbc 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: 3162 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-date-time/libinexor-rgf-plugin-date-time_0.9.1-18_arm64.deb Size: 954228 MD5sum: 99760071cf7ba51aa91faf03088f79a7 SHA1: 931cd885dc178f351d51c9d3081e04499454ae92 SHA256: b45e79ba0af448d9301da3abd5c6114c1b71fc42002d357156a8d55e439ca09b SHA512: 230be96d246302aeae9b4340ab5cb71947f0ee2138cb533503a4d82c6f563413dd11ede3f438675959df90910ce8daec4461ce72bc3dad39874ddbd82c790cba 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: 2838 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 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-21_arm64.deb Size: 853852 MD5sum: 1bc0cb63697b350bf7c7a32d3ce15748 SHA1: db2858d608dbeba5f4be80f58e1bdfab43041e9f SHA256: 059162d68ad31fcd55e312857cc2fc9eac8897bde21c989257e9c17bf0f3d4bb SHA512: ec9efaa8658d956a113df7b2ce7945766de5fd4ffd8bbe092922930223f4f5002cf381dde34ccb8552ff5be61f2f37a8b01944cd257f02f71a1fed633ed0004b 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: 2834 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 853224 MD5sum: e4f7622138986ee143ecfa6f39060cc4 SHA1: e17ca7dfe3b65aeaedb54c9e63191bcbe826b81b SHA256: 43ab3d65e04a5871a4927bccfc058f6626bef35a793f810c65c9a0207a20f250 SHA512: db61c41ab3721098b2187baad1f66e6fcd0740062441b2e3f918c459ea8a83168e516ab98407f05e9943a593a68e644e496c4b5642993315e99ded42a7aa43bf 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: 2774 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-flow/libinexor-rgf-plugin-flow_0.9.1-21_arm64.deb Size: 833780 MD5sum: ae2d661c1e6a8d5e7aecafffae2aa008 SHA1: 7dd2ebcf60c44d604077cdc137de671829df7e19 SHA256: 2f033fc1f8a3133b922111622db74c7e5c01f591d072a9e3021718d81732cbce SHA512: 86b187da0b9c8a9bac2a7acfa7f365d8522476e7e444412f2a73912352fc8895db989ccb0f2a333e59a61f18f1a62f04a806eb29c1f1b478cf5f8c454f5ac012 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: 2778 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-flow/libinexor-rgf-plugin-flow_0.9.1-18_arm64.deb Size: 834384 MD5sum: 7f5aa9ff4918f633bd9f27873b3a2964 SHA1: 6ffe418ba38698f3cd37dcf86dffd7c8fa4ce468 SHA256: 66c8944ad6896db2e2698ae31c8c346dafa62a093347feda230f6fe52b69a169 SHA512: e7072f178871d0c731eb383f51e9c1f6b8c5209195d3ca9ded6fbb15dcab31266116113a3ab4a20196742bfe002c7a73f995eac4152e6f2e7df75dea99f1a828 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: 6149 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-http, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base, libinexor-rgf-plugin-file, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-21_arm64.deb Size: 2124660 MD5sum: f1935ba73c2501e22546d6abb8000656 SHA1: 072f6c2f1253185557db46611dba43f9b7998379 SHA256: d925b31865102c182a2dedf2c2321c6358c798859b8aa409c8ace863eb8360ef SHA512: 072b2329ebeadd557ef6231a3a79b1f4523f284ded1f9fd3b9048551de9582627ba1c1a3afcf6ff4130fa31d978d64872610d3f0422df472c94c9f8d7c80f7c0 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: 6149 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-file, libinexor-rgf-plugin-http, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-18_arm64.deb Size: 2124072 MD5sum: 1f4d53dfd54059e566f80c059dcf3f17 SHA1: c1eb256220fb070d1e7de12733dafcc8153e8f97 SHA256: ead0116a74829a9eda3224dc6732d871155de19a929f70771a3793978abe1579 SHA512: 7e6e50c300c421b475d8afdb2ceed3fac570f73977d8150a645c2d2d392cd97766978c0bf2528dec4cddbf392bfdd5ec1668131217b0526b283d5c4506ae51f4 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: 5354 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 3215684 MD5sum: bd4d7bae4df5c75dbe9263c42b32bc65 SHA1: 9aaaca11537f1b72bc2bf2ee787111edb1acefcd SHA256: 347a9b492049e330bb99bb22df9e7d376424e5e87493cd9804394adbd777a27a SHA512: 15ddeafb82ed9550615311646099e55f604b57ad538e131e0c54b8310aa64e75bb84f69e205ef73fc2756776806ab09732dac3f4ce409ca8d812d99243de577d 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: 5346 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 3214344 MD5sum: 110ce4db4e6f8a4cffc8b50042ce0747 SHA1: d15f7090b93045430a3c281a9ab0ce5233ddfaa8 SHA256: a72ba97ffbddfdeb599f9cd577d442b57497dd6529e8e5477165597a0e5a468c SHA512: 393b4233c2e3d8d29da97c61e650cd1649ae7870ca9660d1acc543ca26f05b5f73d3b81c72274ab1fef306e89bb42ff6692cc73ce5d675b010525884a77e2aef 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: 5862 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 3889444 MD5sum: 56a91cad0b76dda73a978302e6cd4276 SHA1: 1bfe682839024519093a451a8302a07311a57354 SHA256: 775c2ab38dd4707df53a1b784ca396e817daef753aaf961aa939af0977bdb987 SHA512: dbb0a9540a5572480ae496528af81f20309b9702fed3cd9bdc3d2bb0fffd0ba3ff2a62f1ba72a057c94c829ce32e04199de0e9ac89d4b7b98f17c3486533630c 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: 5854 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 3889496 MD5sum: 08af0118c18d0980ec820d2a6e8c9ef5 SHA1: 4baf9bd9204386c795386ec6c04067db45adec0c SHA256: 6aa3fae336161a1eeca12973781ad7556d0379043bcf6559fc25b8f8ffa40457 SHA512: 7bbd4d0af778a82fead22cc2d6ccc36b1ee994ff9e2b362da0f64bf4660d0e0ca89b4debc65e28cbf5662f84b0b46b02cb981b237c223478bffb05d2548e9085 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: 4306 Maintainer: Andreas Schaeffer Architecture: arm64 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-http/libinexor-rgf-plugin-http_0.9.1-21_arm64.deb Size: 1501008 MD5sum: 16419a37007b2f4fc4badabe578ade2b SHA1: b3dfcd0690d0de379e414ab148bd38bb33bf59a3 SHA256: ffd26c33fb09bc4cdb774561441fa632266f96eedfb9de870064c031ef56741d SHA512: 7cd72276d58f82b0f257ff8363e87df24713f8745cd6b69754f1c2dbafbc5571af2623e53636d0ef88cde67f647552264b9927a202177ab4aba10d2260e6aed3 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: 4306 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-http/libinexor-rgf-plugin-http_0.9.1-18_arm64.deb Size: 1500224 MD5sum: 1151e7413a76fd927eab92c87754975e SHA1: 8134dc6f77fb59cd54fd489e5c5e48533ea39795 SHA256: 1f09d630a7f775843bb7b16f6cc5a8412079b68f1a144fd9ca4f32ea1572e466 SHA512: 4832824b5a1b3dc48e3d4cd8391b471f1827eb7690629f4ad67aee822a104344660837faef4e45dc19fd2f2dd0276cf99f727ccc93fcb02a86fcb720e9d33dfd 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: 3186 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-21_arm64.deb Size: 944752 MD5sum: de7f3892f0596fb085480901ae84c9fd SHA1: 8cfa3fafb530b657f7ff2ac8778473635cb6c7da SHA256: 87a9333ac0eb51422fad2d571c2da400a1dc5c7935910429efb3b7bf218b33b5 SHA512: f1a311a6f9f8b66d817f5e6a5e972242c0a6fea09fa3489c310eb5dc1ec9a72295ec76bdd759cee8422e564181a3692c38bb2a0bf0682a757703a388013fa1db 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: 3186 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-18_arm64.deb Size: 943900 MD5sum: 8fecab3283b843639cf408788911c888 SHA1: 2a2f361c98c2d7a4a114a697fb1428bf06b35bef SHA256: 0ce482264915134964724dc5041496713191ed75e431f35c22190f09392706c4 SHA512: 7b1fef256f0972c1cda4f68c2b4b00ad0457a49fb8cc925b256eeed8ccc4fd16ce0f0b32721a97d11c61415141a48f67a3f574ae03f78a057e9f83f7aaa73759 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: 3058 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result, libinexor-rgf-plugin-connector, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-logical/libinexor-rgf-plugin-logical_0.9.1-21_arm64.deb Size: 919908 MD5sum: 65b0d110480d3f4d8b0537b683554fa9 SHA1: 459fdb21e8502ca58fecf1cade7ef11c1756e498 SHA256: 66c709e5bb9e60c2093e27935b2af565a25b20491c5bf460c057b04d43023003 SHA512: 64aeebfc017f70105cdb22c15300a8593d52990173db0f909c2e9037a23409c3655357657bb29096409617084fcf3b378fd1ef4661438c0af55eb29f94f57a98 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: 3054 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 919432 MD5sum: d391f05eaa544f636a368b51b9fc5ab0 SHA1: cf6f75600ce47fa8ea8341ab6e46b541238df91a SHA256: 7813f5e01ddd43e633ec3c4868b4a929043604b79f2937c383ded36a69d20243 SHA512: faf6ad8819494027531cb7301db56397c42a9dcd31db4cf899751d5355a09b3643ec5224db41320c8307ac615cb6b4201f19164cedf4e4af3ccb904e88ab6703 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: 2718 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-taxonomy, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-metadata/libinexor-rgf-plugin-metadata_0.9.1-21_arm64.deb Size: 812544 MD5sum: 86324b7ac41d6a0d0d4c8ea82c216566 SHA1: bf01de39e6314a0de7b324b3195c9dc1e37ff1e8 SHA256: 9f9502bba156a58e27bcd4c3ee6a8f1d1072e9362af9839420f5f794a88b6e8d SHA512: 2726edda1a98996ca74ab4a91e6ed6c2d4f401c8e5958e80185941f7305370ba0f4196a3091c9bc9b84a60599eacd4bd49a6a3c42a6054904ae2a2a4f043346e 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: 2710 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 812080 MD5sum: 9a7b889baa293c565968511370485eb7 SHA1: 029f3d4d26975f410deab208a0cfbd62447a1156 SHA256: af931a51a316f59bc5c608ce583c678f00215b42f06a9b15f0419637efb605f3 SHA512: 30dc5b1adff483e15cb6947012b1acf2a6c448c338aeef4d8240d368d1ca2c70ccec3e6690dfc6fc255973bb2b9bc659b40469f87dbd2ac8c1af230902af309c 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: 3030 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-value, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-numeric/libinexor-rgf-plugin-numeric_0.9.1-21_arm64.deb Size: 911992 MD5sum: e416655d7f03e8d9ae72c9d118f89b89 SHA1: e6cccd5ae0816b9d277ce0968bbfcce75f32ed71 SHA256: 89ecc86259837dfe661e08eca0bc12aad764a415d5cc426283085d4d94dd14cc SHA512: f85185bcdc3bdf0f7d1ab6a2c4e215a63b38aefaa509af08f1c18741464b208880f5cc83ce7f1df817d77816fbbf894a28a7173847c82caba0958e790abdf09f 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: 3026 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-value, libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-numeric/libinexor-rgf-plugin-numeric_0.9.1-18_arm64.deb Size: 911108 MD5sum: e6dd5d7cb2abd88b62bab7c6f02e1618 SHA1: 1525a35b76b7523c5e6b832d136eb817cf0385d4 SHA256: 8a06f5782296c31dc3144bfd445946ea5eb4d260d5d3a94a517ff5428a865288 SHA512: 17139f2bd1ded849c7492c4bb774ef61bd501748c31f8a30930548011ed3b2ae696308d654943ac07254c6b30e189d8781a166b34e634affcfcfbe37816f5497 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: 3118 Maintainer: Andreas Schaeffer Architecture: arm64 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-random/libinexor-rgf-plugin-random_0.9.1-21_arm64.deb Size: 914152 MD5sum: eaac252849af8013f71a4df10664763a SHA1: 97f1034a6a7c0a66f7a6426be09c2740d3e7c56b SHA256: 3c667b7dec8a829df51cf746d8e030b4c54adb88a2e6fc24655e6ad68435c926 SHA512: aa89a230536a4d69ef15835f69379e6c784cfd2384b4e6df86295eb1ea63e50c70f24c58fd2fef9c269318863448dc7b392bc5aaeb3c141549c6ed83e9ec2848 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: 3114 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-random/libinexor-rgf-plugin-random_0.9.1-18_arm64.deb Size: 912880 MD5sum: 580c68e185803abdbdb332e7c0c6e163 SHA1: 00f1c0a677aaa85f39aba384ca135f69c6474d5d SHA256: 325f2824b21705059b31298a2a814251d736f5dad2667f86dabd71aaa0edcedb SHA512: 61102bc360aa093af7c64f4f929e1107972a0d206677b6306e16b26afd9693d681c9ec8fdea0379fe33adc39f033c543d471387fbd7e1086d49f06074e8e7e47 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: 2714 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 813156 MD5sum: ee2b4bd25e5e59bdbde38cec6d8d8e49 SHA1: 41ba98bb8a5193f198be95b6e1887959571ec057 SHA256: 7eba3b9d2359d664b391a66d854e917c1898deab0f7e7f431c70c6c1d7515e55 SHA512: 489271448e58fbec61702205e2b05401e4013b33b3dbeb8f4ec1574112543fcc23291af532500b681164cb5a232acd5feb505d7ab9a8413ffc29befe4c292956 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: 2714 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-result/libinexor-rgf-plugin-result_0.9.1-18_arm64.deb Size: 813684 MD5sum: 60cf0882aa240481fd26ca8c6053965f SHA1: 4695724e346e55df11e0e81cced88cbc99114b61 SHA256: 5fd92c37cfa00e470a1762337dc3add978a73261748cd7cedf2a66a60136b14e SHA512: 80080cd71af3f8336684d9336b23a9520bdab704197c07fd360221800d8e3c6a9ddf8c5870325e33842d5d095efa81c9f4f0edb0c2db83b70e8671fd1835670a 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: 2974 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-value, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-state/libinexor-rgf-plugin-state_0.9.1-21_arm64.deb Size: 902016 MD5sum: 8b387a329a6a029e6f83eaa8db3e052d SHA1: 237ac6327fb5013e2b19f7a15a92033bbc6d4252 SHA256: 6de8a5ac590e18f92e4d51e733bb3c2b418e1e1fa8cc026168fff55d209dc235 SHA512: 9c88def18d64942dff3987e4be664e8d6778db9acbe9691d02d3e8e3c7f64193a3a65a8ad2b6903e42b6b0990b5deb2a1f6163b3a93d63397d300602957793b3 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: 2974 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-value, libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-state/libinexor-rgf-plugin-state_0.9.1-18_arm64.deb Size: 902360 MD5sum: c0816d7af5a4808ef0acb008c64d0050 SHA1: 5d02b9f717e17369ee147ce2a7e4c9ff80ff402d SHA256: a7a71da105f1633efa07ce109881579fe867bc654f1c894032dd46e389f6f9fa SHA512: b3b120b67775790ed78817af43f6a3f38cc4fb5e3071c6e9bcbc2a85fab3abba9ad92e1d478a296a8372e2ae5f04bb0ee89739edc23358b862340e36b95e4432 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: 7042 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 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-21_arm64.deb Size: 1379560 MD5sum: d3f1a5223ad6b8ef26ac7a4401d9aa4d SHA1: 98de942f9c93f78ff8cb470b2c237357ff0f5750 SHA256: 7e7d3355e81e4c083e5571de813de7be20521dd3bf911f9cf9f9f24eefea7447 SHA512: c3fe46d11cd2b43a7e509b9b39c3d4119632933a8a38bda3db3d18d76db2b79b4528b223d3b50ef6b5e55b0b535d9a7aae6245a5042d572ec728db4e57e0c79b 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: 7026 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 1377684 MD5sum: 64f176baf7a4f0772bd73ec4b8fb8b7b SHA1: 3d30b4cdbf55d0db7bd69e60bce0c384c9effc24 SHA256: 50ddeed7c2e03f2168b5a1506905e9e3c8cbb4089034de8b216598fbf806d856 SHA512: a209725342f35aee35bec7a3c0aa2360dce10a13e36bf3c469327de600c72e760d1a66c8c9ad92be1e825ece72ec755e1692aef6c6929c9819799a99c2fcdb75 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: 2754 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-value, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-system-environment/libinexor-rgf-plugin-system-environment_0.9.1-21_arm64.deb Size: 829824 MD5sum: 131636e3f341764e6729cca89b036ec0 SHA1: 2c41e3319b8b4fb9f515245256b79e0f09ecdfbd SHA256: 634567f8585d2e02de3533e3c6bfce34402ccbc6d3fe4eaf80ef6f9e5725ca1e SHA512: 634d046761845b62d25279f7e8489a354e0e36bdbdbb14392319628239df71b36b7131912e6bdb7b10c723a07c490965b467e596357555f36f71d5754dc02f1b 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: 2742 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 823052 MD5sum: 3a90abb402774fcb76171aedd7978acd SHA1: 3b38fe29394441e458ab119db494cd27dddb509b SHA256: 649e1523f74622db88977ec6c83d26b3c35a5a1e3f42a37478443e0b0599941a SHA512: c6166b16c20180dc71aa9d8fc98d16c2bd082f46ad68884b313b3bb50845440d1dbff4941d12c39241185c5d193359617abd533e39d6044fe4a9343499ca0915 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: 2742 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-taxonomy/libinexor-rgf-plugin-taxonomy_0.9.1-18_arm64.deb Size: 822488 MD5sum: 2094c085f16efb53011c65b602d5a9df SHA1: 8e26bc5815e859d574f8da48dce99bc9ee37871e SHA256: 77b94e3207ee974d6aea907499a9960dc62c0b54da4aa5de0ce7d7fd7979abd3 SHA512: 06d59aaca0378945f2d4a50b3292950d075eae24b56c4cbc5ada7704ab20929706c8935c02a0ff792a4e6279aecfd98f14aff15c07f3d3e84d93e93e175d2d99 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: 2718 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 812036 MD5sum: 36dd73532639eadc141f4e1484b27d46 SHA1: ee2c793f39b84f11ae2bf9e925c478a0e87d733b SHA256: ca59bb9cb3a3221b50215e9d39d54ebd24a7b3eb48cff5d923cdd6f90e1e0a0e SHA512: 9594b4df77d354de8c437ed75b17d11a97fe4a42287312c42301c57dcd8a999c6d9ecfa8deb73edd6d0c1dac6fc346135842adced16f8b17b2e02bace765bb74 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: 2710 Maintainer: Andreas Schaeffer Architecture: arm64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-trigger/libinexor-rgf-plugin-trigger_0.9.1-18_arm64.deb Size: 811972 MD5sum: 6ebb750281756102c4a811304773ccfd SHA1: c950b9940a9f227c10653353cb6ba3a93cacf557 SHA256: 4c8cded32ba8c44d090e1b2a60e0ce498285443870a3ffca1b895d903f1e6235 SHA512: bdd30357c7d719038c8bbc84a6a37044b7da28d3fad416bb194c5ac329cecde39d6ad96097618dfd0ea3062db02b6a38f094cea5f5f0916a3cfeb1641926b52d 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: 2950 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 896744 MD5sum: 13ab9810492bee838e4b3a49fac7585d SHA1: 0c6bdab33b720bb31328ec004ca63b4a7734cb7a SHA256: 010c60d16ecef065f3dd650dd14de6f8b013654fc35ba7bc379ac1ed902900c3 SHA512: 8348c423fb59e156f78cc06e44197c60365bd8905b6b11981a06068f41dee222aacc3b43c4189ee9a18dcb7dd566b0e830861c671d5be6f185a9789982bb3521 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: 2954 Maintainer: Andreas Schaeffer Architecture: arm64 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_arm64.deb Size: 896108 MD5sum: 934dd4de668238e108b0668afc8880dc SHA1: ba61126a0885b15ce4644571983347f5ce9a654d SHA256: bd04e9b730345e2df025da0ff92032eeb832fba1ffc8966870288d41353bd186 SHA512: 57985aef9c8428e7cd359c05852244e8b0916233e79cc82edd76009e479265ec33f1bbfc403b8b42f5dfce17285847bf80705c6e2a09943f827b2b6f2c193749 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