https://github.com/karljj1/kdis
A complete open source C++11 implementation of DIS (Distributed Interactive Simulation, IEEE 1278.1). The 1278.1-2012 ("DIS7"), 1278.1A-1998 ("DIS6"), and 1278.1-1995 ("DIS5") versions of the standard are fully implemented including enumerations and utilities to guide your DIS app development.
https://github.com/karljj1/kdis
cpp data-formats dis kdis networking protocols simulation
Last synced: about 1 year ago
JSON representation
A complete open source C++11 implementation of DIS (Distributed Interactive Simulation, IEEE 1278.1). The 1278.1-2012 ("DIS7"), 1278.1A-1998 ("DIS6"), and 1278.1-1995 ("DIS5") versions of the standard are fully implemented including enumerations and utilities to guide your DIS app development.
- Host: GitHub
- URL: https://github.com/karljj1/kdis
- Owner: karljj1
- License: bsd-2-clause
- Created: 2022-02-13T11:41:22.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-03-21T07:02:10.000Z (about 1 year ago)
- Last Synced: 2025-03-28T22:25:09.668Z (about 1 year ago)
- Topics: cpp, data-formats, dis, kdis, networking, protocols, simulation
- Language: C++
- Homepage:
- Size: 3.8 MB
- Stars: 32
- Watchers: 5
- Forks: 12
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# KDIS
[](https://github.com/karljj1/kdis/releases/latest)
[](https://github.com/karljj1/kdis/actions/workflows/release.yaml)
[](https://codecov.io/gh/karljj1/kdis)
Open source implementation of `DIS` (_Distributed Interactive Simulation_) `IEEE 1278.1`
## Contributing
I would love to see your contribution :heart:
See [CONTRIBUTING](./CONTRIBUTING.md) guidelines
## Development
### Requirements
| **Name** | **Homepage** | **Required** | **Notes** |
| :------------- | :--------------------------------------------- | :----------------: | :---------------------------- |
| `CXX Compiler` | | :heavy_check_mark: | _`>= C++11`_ |
| `CMake` | | :heavy_check_mark: | _`>= 3.14`_ |
| `Clang Format` | | :x: | |
| `Clang Tidy` | | :x: | |
| `cmake lang` | | :x: | `pip install cmakelang[YAML]` |
| `Doxygen` | | :x: | Documentation |
### Build Options
| **Name** | **Description** | **Type** | **Default** | **Notes** |
| :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| `DIS_VERSION` | `DIS` version:
- `5`
_IEEE 1278.1-1995_ - `6`
_IEEE 1278.1A-1998_ - `7`
_IEEE 1278.1x-2012_
| `KDIS_USE_ENUM_DESCRIPTORS` | Enumeration descriptors.
Allow `enum` values to be turned into their text labels.
:warning: Increase the memory footprint of the library | `BOOL` | `ON` | |
| `KDIS_BUILD_INSTALL` | Build install | `BOOL` | [PROJECT_IS_TOP_LEVEL](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html) | |
| `KDIS_BUILD_DOCS` | Build documentation | `BOOL` | [PROJECT_IS_TOP_LEVEL](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html) | [`Doxygen`](https://www.doxygen.nl) is required |
| `KDIS_BUILD_EXAMPLES` | Build examples | `BOOL` | [PROJECT_IS_TOP_LEVEL](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html) | |
| `KDIS_BUILD_TESTS` | Build tests | `BOOL` | [PROJECT_IS_TOP_LEVEL](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html) | |
| `KDIS_BUILD_TESTS_COVERAGE` | Build tests coverage | `BOOL` | [PROJECT_IS_TOP_LEVEL](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html) | Build option `KDIS_BUILD_TESTS` must be `ON`.
[`LCOV`](https://github.com/linux-test-project/lcov) is required |
| `BUILD_SHARED_LIBS` | Build shared library | `BOOL` | `ON` | See [BUILD_SHARED_LIBS](https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html) documentation for more information |
### Build
1. Generate project
> [!TIP]
> Change build options' values as needed
```sh
cmake \
-S . \
-B ./build \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DDIS_VERSION:STRING=7 \
-DKDIS_USE_ENUM_DESCRIPTORS:BOOL=ON \
-DKDIS_BUILD_INSTALL:BOOL=OFF \
-DKDIS_BUILD_DOCS:BOOL=OFF \
-DKDIS_BUILD_EXAMPLES:BOOL=OFF \
-DKDIS_BUILD_TESTS:BOOL=OFF \
-DKDIS_BUILD_TESTS_COVERAGE:BOOL=OFF \
-DBUILD_SHARED_LIBS:BOOL=ON
```
1. Build project
> [!NOTE]
> Change value of `--config` to match value of `CMAKE_BUILD_TYPE`
```sh
cmake \
--build ./build \
--config Release
```
## Documentation
> [!IMPORTANT]
> `KDIS_BUILD_DOCS:BOOL=ON` required
File `index.html` available under [`build/html`](./build/html) directory
```sh
cmake \
--build ./build \
--target KDIS_docs
```
## Examples
> [!IMPORTANT]
> `KDIS_BUILD_EXAMPLES:BOOL=ON` required
More information can be found in [`examples/README.md`](./examples/README.md)
## Tests
> [!IMPORTANT]
> `KDIS_BUILD_TESTS:BOOL=ON` required
> [!NOTE]
> Change value of `--build-config` to match value of `CMAKE_BUILD_TYPE`
More information can be found in [`tests/README.md`](./tests/README.md)
```sh
ctest \
--verbose \
--test-dir ./build/tests \
--build-config Release
```
### Coverage
> [!IMPORTANT]
> `KDIS_BUILD_TESTS_COVERAGE:BOOL=ON` required
File `index.html` available under [`build/kdis_coverage`](./build/kdis_coverage) directory
```sh
cmake \
--build ./build \
--config Debug \
--target KDIS_coverage
```
More information can be found in [`tests/README.md`](./tests/README.md)
## Scripts
More information can be found in [`scripts/README.md`](./scripts/README.md)
## License
This project is licensed under the [BSD 2-Clause](https://opensource.org/license/bsd-2-clause) "Simplified" License \
See [LICENSE](./LICENSE) file for details