Project Structure

.
├── cmake
├── docs/
│   ├── cmake
│   ├── doxygen
│   └── sphinx
├── examples
├── extern
├── src/
│   └── obscura/
│       ├── application/
│       ├── core/
│       ├── events/
│       ├── exceptions/
│       ├── logging/
│       ├── renderer/
│       ├── scheduler/
│       ├── timer/
│       └── window/
└── ...

cmake

Contains all functions and macros that we use in our CMake files.

docs

Contains all documentation related files.

  • docs/cmake contains the CMake functions that we require to build the docs.

  • docs/doxygen contains the configuration for generating the doxygen docs. They are only used for breathe and sphinx and are not meant as a standalone documentation.

  • docs/sphinx contains the configuration for generating the sphinx docs.

examples

Contains example code on how to use Obscura

extern

Contains all external dependencies. The folder is being created during configuration. It should not be added to the repository.

src

Contains all source code of Obscura.

application

Contains code for the entry point into Obscura. If you are new to the project, this is the best place to start.

core

Contains core functionality of Obscura. If something is in here, it is used by almost every other part of Obscura. That includes the core.hxx that includes all used std headers and Obscura headers that are regularly used. The core header is pre-compiled.

events

Contains code for the event system of Obscura. That includes a dispatcher and several event classes.

exceptions

Contains code for the exceptions that are used in Obscura.

logging

Contains code for the logging system of Obscura. That includes a logger and several log levels.

renderer

Contains code for the renderer of Obscura.

scheduler

The scheduler is a high-level wrapper to interact with the event system. It allows a user to to emit events.

timer

Timings are important in games. This module contains a timer and adjacent functions that can be used to measure time or to pace frames. You will also find code for anything related to FPS measurements in here.

window

Responsible for creating and managing the window.