Raven Engine v0.1
A modern 3D Game Engine
Loading...
Searching...
No Matches

Core components of the Raven engine. More...

Files

file  Engine/src/Raven/Core/Concepts.h
 Provides various type concepts for the Raven engine.
file  Engine/src/Raven/Core/Types.h
 Fundamental type definitions and alignment utilities for Raven Engine.
file  Engine/src/Raven/Raven.h
 Centralized access to core subsystems of the Raven Engine.

Classes

struct  Raven::ScopedBuffer
 A wrapper around Buffer that ensures automatic release of memory when it goes out of scope. More...
struct  Raven::function_traits< ReturnType(ClassType::*)(Args...) const >
 Specialization of function_traits for const (non-mutable) lambdas and functors. More...
struct  Raven::function_traits< ReturnType(ClassType::*)(Args...)>
 Specialization of function_traits for mutable lambdas and functors. More...
struct  Raven::function_traits< ReturnType(*)(Args...)>
 Specialization of function_traits for raw function pointers. More...
struct  Raven::CacheKey< Callable, ParamsTuple >
 Determines the cache key type for a given callable and parameter tuple. More...
struct  Raven::has_type_in_tuple< T, Tuple >
 Checks whether a type T appears anywhere in a std::tuple type list. More...
class  Raven::function_cache< Callable >
 Memoization wrapper for a stateless callable. More...
struct  Raven::Hardware::Capabilities
 Instruction-set capabilities. More...
struct  Raven::Hardware::HardwareInfo
 Overall hardware info: CPU, cores, RAM, caps. More...
struct  Raven::SystemVTable
 A static vtable holding function pointers for system operations. More...
struct  Raven::SystemHolder
 Holds all necessary data for managing a system instance. More...
class  Raven::SystemManager
 Manages the registration, update, and shutdown of systems. More...
struct  Raven::TimerData
 Stores metadata for recorded timing sessions. More...
class  Raven::Timer
 High-resolution manual stopwatch. More...
class  Raven::ScopedTimer
 Scoped RAII timer that automatically records and stores timing data. More...
class  Raven::Time
 Global static time utility for frame-based timing. More...
class  Raven::Timestep
 A class representing a time step. More...
class  Raven::UUID
 A class representing a Universally Unique Identifier (UUID). More...
struct  Raven::WindowProps
 Struct to hold window properties. More...
class  Raven::Window
 Class representing a window. More...
struct  Raven::Buffer
 A simple container for a raw memory buffer. More...
class  Raven::DeferredExecutionQueue
 Manages deferred execution of callbacks. More...
class  Raven::FixedFunction< Signature, StorageSize >
 Type-erased callable wrapper with small buffer optimization (SBO). More...

Macros

#define RV_BIND_EVENT_FN(fn)
 Generates a lambda that binds a member function to this instance, forwarding all arguments.

Functions

Capabilities Raven::Hardware::QueryCapabilities () noexcept
 Query the CPU for instruction-set support.
HardwareInfo Raven::Hardware::QueryHardwareInfo () noexcept
 Query overall hardware: brand string, cores, RAM, caps.
void Raven::Hardware::LogHardwareInfo () noexcept
 Log out the hardware info at Info level.
bool Raven::Hardware::HasRequiredCapabilities () noexcept
 Verifies that all required caps are present.
template<typename T>
const SystemVTableRaven::GetSystemVTable ()
 Retrieves a static vtable for the specified system type T.

Detailed Description

Core components of the Raven engine.

Macro Definition Documentation

◆ RV_BIND_EVENT_FN

#define RV_BIND_EVENT_FN ( fn)
Value:
[this](auto&&... args) -> decltype(auto) { return this->fn(std::forward<decltype(args)>(args)...); }

Generates a lambda that binds a member function to this instance, forwarding all arguments.

Expands to a generic lambda which captures this and invokes the member function fn on the current object, perfectly forwarding any parameters.

Typical usage: someEventDispatcher.Bind(RV_BIND_EVENT_FN(OnEvent));

Parameters
fnThe member function name to bind (must exist on this class).

Function Documentation

◆ GetSystemVTable()

template<typename T>
const SystemVTable * Raven::GetSystemVTable ( )

Retrieves a static vtable for the specified system type T.

This templated function generates a static SystemVTable instance for type T. The returned vtable contains lambda functions that cast a void pointer to T and invoke its OnInit, OnUpdate, and OnShutdown methods.

Template Parameters
TThe system type.
Returns
const SystemVTable* Pointer to the system's static vtable.

◆ HasRequiredCapabilities()

CORE_API bool Raven::Hardware::HasRequiredCapabilities ( )
noexcept

Verifies that all required caps are present.

Required: SSE4.1, FMA3, AVX, AVX2. Logs a critical error if any are missing.

◆ LogHardwareInfo()

CORE_API void Raven::Hardware::LogHardwareInfo ( )
noexcept

Log out the hardware info at Info level.

Note
Calls QueryHardwareInfo() internally.

◆ QueryCapabilities()

CORE_API Capabilities Raven::Hardware::QueryCapabilities ( )
noexcept

Query the CPU for instruction-set support.

Returns
A Capabilities struct with flags indicating support.

◆ QueryHardwareInfo()

CORE_API HardwareInfo Raven::Hardware::QueryHardwareInfo ( )
noexcept

Query overall hardware: brand string, cores, RAM, caps.

Returns
A HardwareInfo struct filled in.