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.