Package: inexor-rgf Priority: optional Installed-Size: 19901 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-22 Depends: libc6 (>= 2.28) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-22_amd64.deb Size: 5644088 MD5sum: 0d1e9636be1c2713de2ee603743d518e SHA1: 3535f8a61439368f21442628645b9b3fee654a67 SHA256: cb7c0cef631201d0f41ce0e81073e77339bb893bf8cc130eb3ed6581f602e2de SHA512: 1afc4254507d6e8615c4a529a48ea08371995a5c22604158c9e70d0f393397f5bb4b5a9c8fa627c74f0327a8014933a691ef3bf7029ebc47ca2a565f79fbbcfb 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: 19901 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libc6 (>= 2.28) Filename: pool/main/i/inexor-rgf/inexor-rgf_0.9.1-21_amd64.deb Size: 5643744 MD5sum: d78ebf506066651d07c40751f8a8ba09 SHA1: cd1c9b39cc088810b36586aac5a0eea5f8b311f2 SHA256: 87ed6518e323bd60622f22883a66438c01bb4d8700ec155407980f539f285c58 SHA512: cb7606e6a00b0f1c8ccf1b6b1043e014da1900a6a2d7fc6c2d7a44ceaaf7d446e8fd3821b5b9bd49b102116c03f54c5b11919e0fcd08263fea7ae559eee6b56a 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: 3434 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-arithmetic/libinexor-rgf-plugin-arithmetic_0.9.1-21_amd64.deb Size: 1037584 MD5sum: 03bd565f47304790d1f838893a0e5876 SHA1: e1624f59399301fc181e799811b4a662ae9230f4 SHA256: 130b08c37ce074a4410bbd413866b78d82098b20a043fa881a6d8d2f83671b0d SHA512: 7fb48e08ed57b0cc29955c9540236382e7804d0b351c87572c7708f4216fe403f0a535036ac4e024404784b39c09dfe27b94d102d387ba1dd3c6e61d614e969f 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: 3434 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 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-18_amd64.deb Size: 1037780 MD5sum: f8a14bef408bcf3d85c13018aa1b3736 SHA1: 0c620c75852d6314b719a4f0ff689578ccd7c769 SHA256: bc026d3185f9725c185beabfffd5ebb0df9e8da42636fa468e5f6600ee651ef0 SHA512: 64729b82344bb74807c4b5919cfca71946d5627dacde749ac9111689d9b46d133096548de1b65272d5befa868b5eda2a15dd6e5c427131aa90b42e705aa520b1 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: 3054 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-21_amd64.deb Size: 929980 MD5sum: f7e0162f0cd0284d47f7a30f4e98929e SHA1: df10d356efba208e7af3ae0329fa08e02575ce2f SHA256: 2aed8b3d3b8e145a3bf77bced1cdf90ed8623d22274bb48efc0c81e9c2642d49 SHA512: 390c5d862e1e21d62a8270b5b4bbe0e78c63b7a8e51cb2c5286864dbf5aad09efe5625f400f68c930421abae5a380fc5435fffbcda9bc8d02337cdba40891ae7 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: 3050 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-base/libinexor-rgf-plugin-base_0.9.1-18_amd64.deb Size: 928620 MD5sum: ea4618b3a135669eda37efebf60fd6e3 SHA1: 4612a7660996d759bb8ea6f968d5ac2dd8a61f6c SHA256: 029f5ae148e6eb3519f4147963924c8842bfa64a96b2de4bec1d86ecae32e48e SHA512: 216a976b668c363ee44724ba3a6de3a270fe1cd27ff8ea8e7dfdd7f90c4ce632e30664d3d6682ec826a2c5df72c7a56e8f795cc05b992c61f2326b1e1445247f 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: 3630 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-21_amd64.deb Size: 1082384 MD5sum: 847ab042df3da3c8dd32302d7ee1f982 SHA1: 302b405a7e008645fec2d4559c6776a2f236132e SHA256: 89235e6df99cce341ee0219ac9ff06ea84377c735d90522bfe874b250b2b3869 SHA512: 6c95a956389a4c6c2bf048acddb4a83bb866eff2ca2505c5fb65e19227e3ae2d00539b15dfad24898b0a3f02cdf4ebab9e6f0ab5ba303ac169d20e78a4a5f89a 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: 3622 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-binary/libinexor-rgf-plugin-binary_0.9.1-18_amd64.deb Size: 1083220 MD5sum: fd58911b9fa3e9da5213000c30b7f23d SHA1: 13c3e2b80014f9956cdfa01658877f336ea21ce7 SHA256: b87172eaac42bee9931154d0b7664c64586c23bf679e3c787bb2ad8c196c9626 SHA512: 418f312c4b0ae5dab7c540fe2b76dd62a0619c0a84239c8a45f3f18d181a298bf5068a55f74a55493c7bd152ec58e96f294677bcff0297f77ecc10a0bc885714 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: 3310 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 1008960 MD5sum: fbc45c5086a0eb8b8de18fca981de590 SHA1: 7d149b6e38518067164d63ecaf01274d1b980d38 SHA256: d3bf60124b50f48dad649c920fa1eaf03c595db763b3052de1550453b4e2d768 SHA512: aa2ae6442be2918ded8ecc184126fb7715bf449cfacad44781a5df435be7a7b0d21b952608efa673f9c3289b7681d19b5aa8966467d889c966511be703b0a60b 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: 3306 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 1008704 MD5sum: 39c7ceb931c1b6fe5e78a4db75fdadf0 SHA1: e15c9cc5358e173f7231df59fbc804c245fd510b SHA256: 7592f3803f8a41a028a6a5a8cd28b8589e4273d8b2b297356d616bf9990ea0b8 SHA512: 6c2ddff3fee04ffbae9f17d0a6433a6249e1b3a985a9425dea232bb25d574e4cdfa0f8013802e656c7926bc7c380a6fe361c36f9f509f97ab22820248728cbab 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: 3290 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-comparison/libinexor-rgf-plugin-comparison_0.9.1-21_amd64.deb Size: 1009492 MD5sum: f7cd31f26a78939584d692baec805c16 SHA1: 1beb9cc4c6b8700fbcde75191d21175cda6a4181 SHA256: a803169d170986a7960f46ea7ae2cc1da983f8b628d5c5d54c72eb9a915f2746 SHA512: 4b80a31b89b38a0cdd6c364cd70d82d406a8e30eec21fd71f1390d22ab94783429a76cb31bb4925109c7df1930cac425eb1d907c802d6efcd385b32e52ae39ae 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: 3290 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-comparison/libinexor-rgf-plugin-comparison_0.9.1-18_amd64.deb Size: 1010288 MD5sum: 1660586b38183b535a54b6ea70eb53e1 SHA1: 9ae10aa05cb3c337c6ee87d6ea6d2a497ae3329d SHA256: 4bb66d4b365f13bc8c1f8c778cbcae8155d3cc367cc0c5a33735d1e00ced453b SHA512: b700c3f4f2c1b813a3932ba10eb0fa269859bf2dbfbe028150306dbd2b62ce506fcb9f280176905f94267f67bc9731552f5e21c7cff81cc7e4f84672341757f8 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: 3502 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result, libinexor-rgf-plugin-file, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-21_amd64.deb Size: 1078108 MD5sum: 469e06c3d59234d424df0835ff444e8a SHA1: 0336035c0663683679e1141eb127e86e77667257 SHA256: cc58c5359bb48b081a34444a8d5634cde4a74d833fe34e46ee0d1ad63c529335 SHA512: fce702b4b68b7a953ec03d53912daa791870b1ff1e380887d193a0c6e2390a11ae0ac13d4e449986c924c1d9c250e5290a3d6ff40575471dc16dc9431f0e35cd 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: 3494 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-file, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-config/libinexor-rgf-plugin-config_0.9.1-18_amd64.deb Size: 1076924 MD5sum: 284d304b5921445ab8326337c00dd06f SHA1: 880013e7aae2df5676b34dee1f82b5d591d1c21f SHA256: 5f2eba6a1b0bd10f0c68163e3272d8fc55359d27a4be8c5308d22f01a0937302 SHA512: ae865bb09880423880bdd83877738d7ad273719853f0fb998ca1103d7c78ede1e79334f39e1780a0b40ec89fe09531b326461e82fc2a84f21643bea9a79dcd48 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: 3390 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-connector/libinexor-rgf-plugin-connector_0.9.1-21_amd64.deb Size: 1042516 MD5sum: 508c170ac96dbbbf95a7c3bbe1253f66 SHA1: 66753dc5847d0955a6407a41125a2ed45acc03e4 SHA256: f168d4a983909b15d02e5282b00c74917e76a662746d0273428eccb963322d93 SHA512: b152a81427ced18442027d61aca05830c21778cc0059cca3b70f41f2aa44692bc2c4434f9153db8f38977b117f87194869f023f2e6116feaab07292196252505 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: 3390 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 1044152 MD5sum: 6ceb9818734fedcdcd3a2201984db003 SHA1: 41839182e39fd11a22ed99580f895d08d69af1ce SHA256: 5512889b7d4fadf9e7118d0ded11d1d52018b07ecf06ecc8dcfa7ab58d96c463 SHA512: 6e933da6752c59d73bb6670471fd915f85daca24b1a5fd3af25ee4e372e95cde718e27a1fd2e233c033af1daddabc961dc00bc495c6ef391f596906cc65ff718 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: 3534 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 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-21_amd64.deb Size: 1085220 MD5sum: 21aacbca6a8824dc1b54ddf081b04080 SHA1: 20f795e94c0aea7ffd81c004007d8e33b89cf73c SHA256: dbaead8a2e07745d4cef16509b8747b66f82b4e0dc003db9a28763975a11d3eb SHA512: 386ee8df38e0596827493018fb3019a723b7ff6a46a1fd0e89ad6d614ea662f938eaf9f09ea446ca29fdd26144737cfa339ea10a427003c104e57dc7587cc2b1 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: 3530 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-result, libinexor-rgf-plugin-trigger, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-date-time/libinexor-rgf-plugin-date-time_0.9.1-18_amd64.deb Size: 1084108 MD5sum: 1bc83c1b31ddf5a4d361dd908aa2bc40 SHA1: 9d2a37fb86d67fe8acecdd7e495990f83c633460 SHA256: 3090ed1f1db459c5138803e8657b41b30bb5c40d582fe0fbbc9e84b035ef5740 SHA512: da9f73959f231410fd7d8520d03710fc79d8aa84e60930faaf407656066735a76448f99d2ad25c70b90e6db18d277438f9cd1fbcfdfe1a2dc859c14a4b4940b8 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: 3178 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-file/libinexor-rgf-plugin-file_0.9.1-21_amd64.deb Size: 974584 MD5sum: f46f867bcde78a8054f0de901cacf0e4 SHA1: 41fa357a748a5584894a3c50401324590f5bdada SHA256: 59c2a4698dd80aebf1dd8169ab81f3e69b3225f4e05307d0d6848bd5f496e4c6 SHA512: d66a13bfd40c58abbf0a1430160310de1f50919d412a9937bed2b65717f8eef1b06a933d83a4920932380d12c198189e036b43d91b8569fdaac855714888a6ba 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: 3174 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-file/libinexor-rgf-plugin-file_0.9.1-18_amd64.deb Size: 974176 MD5sum: 4d914426070fc74578d253ee47ed30be SHA1: d8ba68085d0d97b308dd8c9b69c4f2a7f183f4a2 SHA256: 87fbe8041c4255560bc65bd33d0c0619abbb5c9bb010f7b5acdf4611992beba7 SHA512: 158f7333057f2290338dbd4678377784e6c85954dccbff242c62e8897740ed375841650a71e22404965d99e96380ae60aaaa32f5d4dd9dbd2255540d8f2f59e2 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: 3114 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 950588 MD5sum: 75c102e961f2c1ed00bed25b9fa36a0e SHA1: 3d55ffb08c3ead29a367571cc791ed350b05208f SHA256: 1082f34fc7de6b4fc833d645776d3beed7e867d614850cb94643c21ec9b983c0 SHA512: 8adf22efa1309489192b3f898019f251fa1bea767307dede6e4916add57b4a4bc888c54a9b4b91d6be4826cef665550588704140ca5ad758b8c2ad7992c6e65b 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: 3114 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 950696 MD5sum: b8bbd3177cae880b4089c2098400bb85 SHA1: 35e049a479c22002d1f0428145b70e82e17a424d SHA256: cdda5e6fd75f5985181785bacb3f281593b54c469c9ca3f7851b7d4dd97c802c SHA512: 8888cc6b7c067eddcf41014e57a9faa961351a5e8d2142d02ff04e64148ce37a7a6d64fffb067db2e42bf9c83258da50f1cf2114590e2e8d3dc57c08a8388d8d 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: 6762 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-http, libinexor-rgf-plugin-file, inexor-rgf, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-21_amd64.deb Size: 2362552 MD5sum: a296fe4e7aa5754454b5b1eabafb6087 SHA1: ad202047784e5f62514fe384d9f5f88a1deb5d5f SHA256: 76a8dcf7b43f676afc468cf81437dcf2088cefb7e3b86d7bb82b2c79de8f8a8c SHA512: 4947f047ca3981b25dd2c4ea629a5fab7ce029d2084e812c13de316e73938cbd4fc475c0dc78970c0b1334c687dcd87bbd034eb0dd0f322e1220a5855403e96c 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: 6750 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-http, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-file Filename: pool/main/libi/libinexor-rgf-plugin-git/libinexor-rgf-plugin-git_0.9.1-18_amd64.deb Size: 2361580 MD5sum: d275fdb34529bae5232871addb20058d SHA1: 573713a7f8ca4233366feb0d5b5a58998c20c5c3 SHA256: 166cbccbdc6b927fd67ce5023a86ea45d0a9d6f5e7b01188dec9559b8d3f5d76 SHA512: ff0230648bd9132a59971e3230452348a25788cfcb2956f8af28fe42295548ecbf86aa852fd2faac7c476800d7d499ce7c613d35b07ccb11fa4ccad091661b49 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: 5690 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 3329648 MD5sum: 9ba9c845d7a794758d4be1e27b5e1fc5 SHA1: 32aa42b3d324c5e124899a1fa0914ebab8a5253e SHA256: 439fc572233ea9ef0fa0f4f496ed3e82f3df26664c95f237d6cc29b03bde1c6d SHA512: be06ed232c86515060d54832fc44fe628cadaa65b4d6951cc06f19dbf880ef0a76dfce53f3563b5771fb89429558ace40f67969521d5ce46ab6a20fba032110f 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: 5682 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 3329920 MD5sum: e0ab9a4d373a9bfa894218269aabdedb SHA1: a12dc28f5511aaaaca1b785a348621dc398bb81c SHA256: 32e901eac59e30825c4a6078b1e233805abf73fe203505b6c6f3c61364289db3 SHA512: d99f2493a2776affe2a9ad5e78235b5908d2323ea3a8346f0b01fa121cb3ec4507f697bfc8da178978b01676fecef369fdd37c5b271da16b8c4e5f63ad8186ca 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: 6194 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 4005924 MD5sum: f2cf25ce28a14e2cc735bc4a3ca9d4bd SHA1: d94b4ec096b9679197edc2793a0337a0589b743f SHA256: 8527f3a44654bb4b66f272ca33b205db27abed7f1dd51a1b5293bbf7ddcf1bb1 SHA512: 813216f9f2d1e48e649d09e58f0f41f507357e6f766ee5b5023a8c3290c1b797b6ea49d3ce75b1bece5fef81ba1eb93cb43162e6c67230d432e935690dce580a 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: 6190 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 4004976 MD5sum: 9ca488496a1146635e7e5c91ae8173df SHA1: c2e4bbaa1052eae2270d154018be946fd8f5562b SHA256: 2590e2625bb599ec8078f8a93b520125241d01f1db7c0a82a316f13634a84cd0 SHA512: b42fd6824ac347543001d07f3a383238ba7cfa22379fe10e967c356d46a87561223fed30741ba48f147f3c45f247e8627bc2d9666cdc8fc50fce19b8eb49802c 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: 4882 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-http/libinexor-rgf-plugin-http_0.9.1-21_amd64.deb Size: 1683436 MD5sum: 22db0e69d8301cd49feedfb9c5494be1 SHA1: 223066a08b30a7745f7fc544c717660a2f1e61f8 SHA256: ec0301496d52ac2a2832fd5a1551586bf1c26e89f3b900daebbbd69835d3c4be SHA512: 007b84e17c6f163e68b4f9257fd7525f8d3243a870e0f965ce7ca5962021955791eb5869a2e165ab231f9bb6692cae410314b1d67bdeb09ab9f9af5991b18685 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: 4870 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-http/libinexor-rgf-plugin-http_0.9.1-18_amd64.deb Size: 1682968 MD5sum: 2602f6e2e32350555b441c535a5bd327 SHA1: 4d0a72f7e75d6a1af2b679578f43528e90f4a6d6 SHA256: 629077626efb277385fcb25eb6a4beac6cb27c76d888e2a4a08bada240b3e781 SHA512: 6bb63e403fdebfffe678cd58e34abaf74c239045ee1e945952fcdd5fb483a2ebea0c2b07165834a92b333d9bd4965339c5d0d9376d95747f41532e2f8814c2be 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: 3574 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-file, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-21_amd64.deb Size: 1073516 MD5sum: 90dc2712e190c573e0a8c39207676383 SHA1: 1eb983b472d383a8931c90a4cd9755f317d9b553 SHA256: bdbd1dc85ce4a849bb84fdb4ab42109e2f92f9f0fe4112ecc8054c1347d1eb89 SHA512: 557c4916887e50829e3b2a35139aa49221ff0ae70610580eef98911a7f872b39ebe2d814eb546cd5bc4b3ea38aea80df1ac234a3f733ed1d2f39d387c1c1b279 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: 3566 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-trigger, inexor-rgf, libinexor-rgf-plugin-result, libinexor-rgf-plugin-file, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-json/libinexor-rgf-plugin-json_0.9.1-18_amd64.deb Size: 1075380 MD5sum: 7a13e2ef4667404ff09bedfd1ae560d5 SHA1: 5be9ff655920a5ad7fe1037e163d125c5cf6023e SHA256: 6d5ffd54f6cc3acc482f836d9a860ed0cca8aae1e62f1b8ed4272bd274445a32 SHA512: 3455fa5304f1080f23e405f332a306523c4b4904b49247a4258e0890bce47dfb2b73273cb0f7c20614b01d2e65117051381002a6427fc1ae0b00ba684d3c2863 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: 3418 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-connector, libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-trigger Filename: pool/main/libi/libinexor-rgf-plugin-logical/libinexor-rgf-plugin-logical_0.9.1-21_amd64.deb Size: 1045160 MD5sum: 82d92697ce86945895e7443b7112d94c SHA1: 312c76a75a4b64de56abc883c53b6a35fb7d159f SHA256: dcd8b2222f0f18e6304faeb455d9aca5c86c8c85186c7adb026e5509982c36f6 SHA512: 9f0d14a242a174f338c238b618a3db8d8edcc7443cbe2b2a6afd0d75d1cf8d9efd4d9bb2975e67c3cd4279632cb37b6fddb5aa65492be0c1dc9dac99d1415fc6 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: 3414 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-connector, libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-logical/libinexor-rgf-plugin-logical_0.9.1-18_amd64.deb Size: 1045592 MD5sum: 35382cd0f64088d823cbb6b546919d8c SHA1: c937526c5893552cc7cf2f6846236cd1aff3723a SHA256: 9c1fffad5d451aa6c9e6d1c479f965fd75cf34ce2fdf4a06732272d56fad2829 SHA512: b6a09d5ab055e68dcf39d636011437700657408f9fc34b24dc57c6efde9b97ed092a7e7c8c073a9b41878ba184c149e7e55ff55289034570f29c78bd2bb28b65 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: 3050 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 928448 MD5sum: 02911f1961a9562ae2209d944bed91ca SHA1: 5429185b89c0de0909a58400abe808773def830a SHA256: 1f8140cae54ae109ead93b772dda5f26d261330467cf111210a9863981b0284f SHA512: 683cb32ca6391e9e738e0a7b72f0da5d26fbfb9d424c01481429496c77ab89bbd971bbbe8c308e82d9419326951d08538f0190c9aedf8e83bc6787539056e55d 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: 3042 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-taxonomy Filename: pool/main/libi/libinexor-rgf-plugin-metadata/libinexor-rgf-plugin-metadata_0.9.1-18_amd64.deb Size: 927916 MD5sum: b7450faad4ac21d5ea021189d169802f SHA1: c6b938df43b665712526c2a17bcc50e71abcfd31 SHA256: 61e8b3f3fdcab80198b41edb151e13d78d536d073c8839e3a41cc42fc1615f76 SHA512: f1fafe6051d889b705c4a609f479809967a08c4cfe1f0f9b8aa294b92428fd4ff71333f169d6d7029e1796abfaeb1c38e5f56b17e918fda07d194ec0f02ff13e 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: 3398 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 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-21_amd64.deb Size: 1036764 MD5sum: 9b8e608e6bf9b155137f282606e44912 SHA1: eff76fd502f19ab7e39e62fa1fe392d1ad73c4c0 SHA256: f98c9e18cd536064d59bbfadf22db8c04ae322305b12a587adcf059b3da4d616 SHA512: 57b7fe1aa2d1d54dd83b264cb5f8b6c72507c8172645a7e40a125cde34682ceee9a643776caadaba2dfd4c583482d5ac53f8eab597f37fb4e06f65d6f8d2bd1d 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: 3394 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-value, libinexor-rgf-plugin-result, libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-numeric/libinexor-rgf-plugin-numeric_0.9.1-18_amd64.deb Size: 1035376 MD5sum: 97332f28a8b5def499218f79d6ec1d76 SHA1: 8ae4b3c2b3f835e3a40a6d5cef7f599dc986ea10 SHA256: e92d2ea32557e6e3b51289cd15093ced36a3b09b69fd2e70e005d6a5e6522384 SHA512: 6e2b8fe12cda31f92bce9883f715045b31590206e2536d707ff247117684768a580b69fbaa1f6b7ddef40d0c97f7c59e2ba0dbdee0876b409014d8a1e38f26fd 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: 3482 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-result, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-random/libinexor-rgf-plugin-random_0.9.1-21_amd64.deb Size: 1035768 MD5sum: 294b34744cef693771e5694e44e178dc SHA1: c17245dafe65282396dccd981d2b19b11227d4e3 SHA256: 7e34960b912589bc41393bfa35f9ab4736d92bffe71533ed8a3d71f22a44ff1b SHA512: 638445f4e219f29d077b842c4ebcabfa63d239374b939835aea40bd4e3900687c088aa7f552e8e84490fa3681afd6954228d240a33fa2867fe55dd300e2798c1 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: 3474 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-trigger, libinexor-rgf-plugin-base, libinexor-rgf-plugin-result Filename: pool/main/libi/libinexor-rgf-plugin-random/libinexor-rgf-plugin-random_0.9.1-18_amd64.deb Size: 1034304 MD5sum: 7a11e5437b0b37dee303134932031150 SHA1: 14e33ecac9a0be549fd1551511e0434b5f78b7f1 SHA256: 03807548bda8a1b66e31f0847a65a0bc74697ab8f6752031bab20eead86ef448 SHA512: 81fad05292b186faa6623e3dcfa8a3f49915e0a08f20d1cfe7d1a5867ea7e5caf91707d880613e49d097024cf1f0aaa92f248f93e7fb793629320ffab988b8ed 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: 3050 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-result/libinexor-rgf-plugin-result_0.9.1-21_amd64.deb Size: 929080 MD5sum: 42ae0e6e73483e15c233aabb50a84365 SHA1: 300facdc4176d0d8046815f9061c498e5b16c494 SHA256: ba73fca6cab39c508735f6b0826dc634ce85d9945a14f322e4f1142b6cd1ecea SHA512: 5634cf375cc7c5fa2301a16d30ab61b35d56e88ade57288463e6facb7186f0444162a334bf40131aef8cc78b4863a017453050c5f2490698f9eccc64a9c5b9d2 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: 3050 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-result/libinexor-rgf-plugin-result_0.9.1-18_amd64.deb Size: 928844 MD5sum: 51b5c339e1ba4924d02ea24f63da9d09 SHA1: e727c65cceb664724e517f4284c2e857bab2d1ca SHA256: cf75435e1ed9ce1adc42abd91ff5fe9215168c51d50c42b37198d4de062c00ae SHA512: e89deb68d39d57733589c9fda8aefb990097d4fc8cbb4d2ed695881adf0f6d3cfd5160a4715167461c24d24d11e014005e7c0b3185aca6c7b8099a7e562d5ba8 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: 3334 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-value, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-state/libinexor-rgf-plugin-state_0.9.1-21_amd64.deb Size: 1024636 MD5sum: 07d232d4dd0f6390462e3f0ab98340fa SHA1: 11960a753ccd0d1876c92102a03721b03361a4a3 SHA256: 51f13e6f22bee99f0f49fab8f2fbcf1b105b65bc821ce2d5b659c084efca819e SHA512: 3dc9d6c2feb158ba38aff72251624211d2b6970ba6711e6eb9218f6b99f6d0486d707a8ea3932d9a9c43259831929a1aa5d856bb1bfe4bd77d3d02e99bad2a44 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: 3326 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 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-18_amd64.deb Size: 1025308 MD5sum: bb4d9fb79d7feac87bfa8f2338ee3270 SHA1: a3d733227685516178c20a963464281f831bc728 SHA256: f4a1c22e44e2e54082146f628c7f85974d48ec5920a83edc52620f826802e8b0 SHA512: d96e50ca9129ed6bd0ce47429ff356d0a6567a54f12dd6ef2114c84d74a231a55dc1efa1e24299dca77bfadc6bdb21e62b4be845edebe6d1968bb0ff8c746c94 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: 7542 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-string/libinexor-rgf-plugin-string_0.9.1-21_amd64.deb Size: 1553664 MD5sum: e26b332eba3cbd8eba0448389cfacd12 SHA1: d9b105bca99c80df92a1cfd48e8149f14018c38f SHA256: 2a3d7f3b2ac7a4bb4c37afb215f8d56b07cc3f98c70e2a0197547c481af04c6c SHA512: 99060eddf3494e85c33c91e3736f74ffacfefb0b0a3e439aadc091b216f825601671d19cb5da47eef197fb9b2ccc1dfe39c4a8ce63325de649fc75af98d5c1fb 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: 7526 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: libinexor-rgf-plugin-result, inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-string/libinexor-rgf-plugin-string_0.9.1-18_amd64.deb Size: 1551572 MD5sum: 9fc2a015595d97235c173995d7389e51 SHA1: aad4bb36e08204a3352b624275ea010946b3fb1e SHA256: 840f5f50ec7677043d3c7bd3ce80d786993b03f5c998df1bfe41bfa8b2a465ac SHA512: 1c68004ac0271fec233c8a05421c2e661d5b658b2f2d9d714256cbcb436f3c1bce4b685516bcfac6c60007ddeb02579cf22ae538eb5172320e4330134d9f1e20 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: 3098 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf, libinexor-rgf-plugin-value Filename: pool/main/libi/libinexor-rgf-plugin-system-environment/libinexor-rgf-plugin-system-environment_0.9.1-21_amd64.deb Size: 947096 MD5sum: c84d9bca1860de0cf2f027ff0cb68302 SHA1: 74c3466b44cd49bb75152c54f653e041458c94cc SHA256: 81df3443eae234388994442fc41bddf79e0391b264e60c188bbfb7875765fbef SHA512: cdc369004d07cbeeb2bf14b934172fb9f9a94c653cfb952f0b16c50b8a516224c8745e400abe37941dfc10332a6d9097ffe1f8c43c2d04bd90ef183d3b7403c0 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: 3082 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: libinexor-rgf-plugin-base, inexor-rgf Filename: pool/main/libi/libinexor-rgf-plugin-taxonomy/libinexor-rgf-plugin-taxonomy_0.9.1-21_amd64.deb Size: 938372 MD5sum: 59b3a19ff18ace006ae40b299c0ee4e4 SHA1: 7a9f7279bf06ba28c803cda80a825a5060d0cc22 SHA256: 43bd5fcc1740ce0e88cbf8995cb64d079dd2d330018640e78a3f3d4c29371bdc SHA512: 4369762db334bf9a6c3051576e57175d6d558b43f77e6d7c4c18bfb63b36a4686b21579ad2606d174a32d8a793472ae5614d0892b8378120d076a3547ec5835a 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: 3078 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 938592 MD5sum: 6ea27190270eab18460d6f808d0a291f SHA1: c04027f56cfa0d2b814da1805f6d6317d216099e SHA256: e183e81d9f207ddf2f16aab0f510d877d7269a2a3cbd9baaa0ef2624e9dc1cbf SHA512: cdc554a0d8b75d7e8632115d557b0d734ef8cbdd45b4200a89d6b0f346ce57c5b9a50f15839ea674489a012439c8d8c915aabab9bf7eadaf847f592c71712127 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: 3046 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1-21 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-trigger/libinexor-rgf-plugin-trigger_0.9.1-21_amd64.deb Size: 927764 MD5sum: 6fb3b2997cb0bcd20ea5cd0536bbc665 SHA1: 24180225cd5538a85495d8202efec519717372b8 SHA256: 796c3701ecdb88fec3d4ce99c04056f7a0bc181929f453c5e01be12cf71b3d30 SHA512: 18583aa4ba16ae75939f9ef9cc68baa5169265a64f0d2875a6dae4c0075b698625086c11ca624556ba309ca38fa266815c25620d1ae10e248e3a0b88f974a6ac 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: 3042 Maintainer: Andreas Schaeffer Architecture: amd64 Version: 0.9.1 Depends: inexor-rgf, libinexor-rgf-plugin-base Filename: pool/main/libi/libinexor-rgf-plugin-trigger/libinexor-rgf-plugin-trigger_0.9.1-18_amd64.deb Size: 927196 MD5sum: 05b50afa95edc619acb7c822902c6277 SHA1: 223f006b891039452414d9a716f630686e394099 SHA256: 48851b2835572b5b76abfb1e6361a9e536cfd2c232760a69154306428edf58f3 SHA512: 73f7b4f41c834be986ca0038abbb6f5ddad08dde0b1fd27a46456303a20be475d58f7ea3c5ecfdfd1f5c30f7b8cc2e96ec02d4f9d49e6da1d77c4919f75e5497 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: 3310 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 1019636 MD5sum: f5494973d8cb4414699561d03931f45f SHA1: be41450c2a52f6531a63b948ff83a2052fbc0a21 SHA256: f1a8d0d2b42c0f497c8a2a203859988df1534b730c474ed219ac5e055aeafbe3 SHA512: 9e0ea72af2ac95473c6d0a1664f681da38f6f46b1b66c16c97d5753b2c2ab611957d193e3825d51ca5a9a22aeb8315c2bb738b2af8e85094b4d091090f02f02d 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: 3306 Maintainer: Andreas Schaeffer Architecture: amd64 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_amd64.deb Size: 1020204 MD5sum: 461b8efdb090d595b9eefb01623c0236 SHA1: 45364ca7cbde354113b83df9a3efd23250ff9217 SHA256: dd6cd700be36a70984b2b79b72c0af3d52b40b4084a726acb09975d3d81b138f SHA512: 1dd00f73ede57cc7af8d7dfe00811744b7afac9c38c5f975f8b57eb10495c38d6a33480676f4fd86fa757b2c95665cdba146fce4b27ac10ce4ab36943f6e0540 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