Aeon Engine c550894
AeonGames Open Source Game Engine
Loading...
Searching...
No Matches
AeonGames Namespace Reference

<- This is here just for the literals More...

Namespaces

namespace  to_string_namespace
 Internal namespace for ADL-based to_string resolution.

Classes

class  AABB
 Axis Aligned Bounding Box class. More...
class  Animation
 Stores skeletal animation data including keyframes and bone transforms. More...
class  Archive
 Key-value archive that owns stored objects of type T, keyed by K. More...
class  ArchiveAny
 Type-erased key-value archive that stores UniqueAnyPtr values. More...
class  Buffer
 Abstract interface for GPU/memory buffer operations. More...
class  BufferAccessor
 Provides access to a region within a memory pool buffer. More...
class  Clock
 High-resolution clock for timing and frame rate management. More...
class  Component
 Abstract base class for node components. More...
class  Container
 Owning container that stores uniquely-owned objects of type T. More...
class  DependencyMap
 A dependency-aware associative container that stores elements in topologically sorted order. More...
class  FlyWeight
 Flyweight pattern implementation that stores shared objects keyed by a unique identifier. More...
class  FrameBuffer
 Abstract interface for off-screen render target (frame buffer) resources. More...
class  Frustum
 View frustum defined by six clipping planes, extracted from a projection (or view-projection) matrix. More...
class  Material
 Represents a surface material with uniform properties and texture samplers. More...
class  Matrix3x3
 3 by 3 matrix in colum mayor order. More...
class  Matrix4x4
 4 by 4 matrix in colum mayor order. More...
class  MemoryPool
 This is a modification of the implementation in the "Fast Efficient Fixed-Size Memory Pool" paper by Ben Kenwright. More...
class  MemoryPoolBuffer
 Abstract interface for a pool-based buffer allocator. More...
class  Mesh
 Represents a polygon mesh with vertex attributes and index data. More...
class  Model
 Represents a 3D model composed of assemblies (pipeline, material, mesh), a skeleton, and animations. More...
class  Node
 Scene graph node representing an entity in the game world. More...
class  Octree
 Spatial partitioning data structure that organizes nodes in 3D space. More...
struct  PKGHeader
 Header for PKG Files. More...
struct  PKGDirectoryEntry
 Directory entry describing a single file within a PKG package. More...
class  Package
 Package Class. Implements PKG file handling routines and management. More...
class  Pipeline
 Rendering pipeline resource. More...
class  Plane
 Plane class. More...
class  BufferInputStream
 Zero-copy input stream that reads from a raw memory buffer. More...
class  Quaternion
 Quaternion class. More...
class  Renderer
 Abstract base class for rendering backends. More...
class  Resource
 Base class for loadable engine resources. More...
class  ResourceId
 Identifies a resource by its type and path CRC32 hashes. More...
class  Scene
 Scene class. Scene is the container for all elements in a game level, takes care of collision, rendering and updates to all elements therein. More...
class  Skeleton
 Skeletal animation resource containing a hierarchy of joints. More...
class  Sound
 Abstract base class representing a decoded sound resource. More...
class  SoundSystem
 Abstract interface for a platform sound system back-end. More...
class  StringId
 CRC-based compile-time string identifier. More...
class  Texture
 Represents a 2D texture image resource. More...
class  Transform
 Component class for any object that requires space transformations. More...
class  UniqueAnyPtr
 A type-erased owning smart pointer with unique ownership semantics. More...
class  OptionHandler
 Command-line option handler. More...
class  Vector2
 2D vector class. More...
class  Vector3
 3D vector class. More...
class  Vector4
 4D vector class. More...
class  Camera
 Camera component providing perspective projection parameters for a scene node. More...
class  ModelComponent
 Component that attaches a 3D model with skeletal animation support to a scene node. More...
class  PointLight
 Point light component representing an omnidirectional light source. More...
struct  always_false
struct  png_read_memory_struct
 Helper struct for reading PNG data from memory. More...
class  Configuration
 Loads and stores engine configuration from a protobuf file. More...
class  Decoder
 Template class that dispatches decoding of binary data to registered format-specific decoders. More...
class  Factory
 Generic factory that registers and invokes named constructors for a given type. More...
class  OpenGLBuffer
 OpenGL GPU buffer wrapper implementing the Buffer interface. More...
class  OpenGLFrameBuffer
 OpenGL framebuffer object for off-screen rendering. More...
class  OpenGLMaterial
 OpenGL material binding handler for shader uniforms and textures. More...
class  OpenGLMemoryPoolBuffer
 OpenGL memory pool buffer for transient per-frame uniform allocations. More...
class  OpenGLMesh
 OpenGL mesh wrapper managing vertex and index buffers. More...
class  OpenGLPipeline
 OpenGL shader program pipeline with attribute and uniform reflection. More...
class  OpenGLRenderer
 OpenGL rendering backend implementing the Renderer interface. More...
class  OpenGLTexture
 OpenGL texture resource wrapper. More...
struct  OpenGLUniformBlock
 Describes an OpenGL uniform block with its binding and member variables. More...
struct  OpenGLVariable
 Describes an OpenGL shader variable with its location and type. More...
struct  OpenGLSamplerLocation
 Maps a sampler name hash to its OpenGL uniform location. More...
class  OpenGLWindow
 OpenGL per-window rendering context and state. More...
class  CompilerLinker
 Compiles and links GLSL shaders into SPIR-V bytecode. More...
class  VulkanBuffer
 Vulkan GPU buffer wrapper implementing the Buffer interface. More...
struct  VulkanDescriptorSetInfo
 Holds Vulkan descriptor set layout metadata for pipeline reflection. More...
class  VulkanFrameBuffer
 Vulkan framebuffer object for off-screen rendering. More...
class  VulkanMaterial
 Vulkan material binding handler for descriptor sets and uniforms. More...
class  VulkanMemoryPoolBuffer
 Vulkan memory pool buffer for transient per-frame uniform allocations. More...
class  VulkanMesh
 Vulkan mesh wrapper managing vertex and index buffer resources. More...
class  VulkanPipeline
 Vulkan graphics pipeline with descriptor set and push constant reflection. More...
class  VulkanRenderer
 Vulkan rendering backend implementing the Renderer interface. More...
class  VulkanTexture
 Vulkan texture resource wrapper with image and descriptor management. More...
class  VulkanWindow
 Vulkan per-window swapchain, render pass, and rendering state. More...
class  OggSound
 Sound implementation for OGG Vorbis audio files. More...
class  PortAudioSoundSystem
 Sound system implementation using the PortAudio library. More...
class  Base64
 Tool for Base64 encoding and decoding of files. More...
class  CodeFieldValuePrinter
 Custom protobuf field value printer for code-formatted text output. More...
class  VertexBufferFieldValuePrinter
 Custom field value printer for vertex buffer data. More...
class  IndexBufferFieldValuePrinter
 Custom field value printer for index buffer data. More...
class  Convert
 Tool for converting between binary and text asset formats. More...
class  Pack
 Tool for packing and unpacking game asset packages. More...
class  PipelineTool
 Tool for processing pipeline asset files. More...
class  Tool
 Abstract base class for command-line tools. More...
class  CameraSettings
 Dialog for adjusting camera projection settings. More...
class  PropertyDelegate
 Custom item delegate for editing component properties in views. More...
class  EngineWindow
 Rendering window that hosts the engine viewport. More...
class  MainWindow
 Main window of the world editor application. More...
class  ComponentListModel
 List model that enumerates the components attached to a node. More...
class  ComponentModel
 Item model for editing a single component's properties. More...
class  ListModel
 Abstract list model base class associated with a scene node. More...
class  PropertyModel
 Abstract item model base class for property editing views. More...
class  SceneModel
 Item model representing a scene's node tree for Qt views. More...
class  NodeView
 Custom widget for visual node graph editing. More...
class  NodeWindow
 Widget for displaying and editing node properties. More...
class  RendererSelectDialog
 Dialog for selecting a rendering backend. More...
class  SceneWindow
 Widget for editing and managing a scene and its node hierarchy. More...
class  SettingsDialog
 Dialog for configuring application settings. More...
class  WorldEditor
 Main application class for the world editor. More...

Typedefs

using NodeParent = std::variant<Node*, Scene*>
 Variant type representing a node's parent (either a Node or a Scene).
using Property
 A variant type that can hold any commonly used property value.

Enumerations

enum class  LogLevel {
  Debug = 0 , Info , Performance , Warning ,
  Error
}
 Severity levels for engine log messages. More...
enum  PKGCompressionTypes { NONE = 0 , ZLIB }
 Compression types supported by PKG packages. More...
enum  Topology {
  UNDEFINED = 0 , POINT_LIST , LINE_STRIP , LINE_LIST ,
  TRIANGLE_STRIP , TRIANGLE_FAN , TRIANGLE_LIST , LINE_LIST_WITH_ADJACENCY ,
  LINE_STRIP_WITH_ADJACENCY , TRIANGLE_LIST_WITH_ADJACENCY , TRIANGLE_STRIP_WITH_ADJACENCY , PATCH_LIST
}
 Primitive topology types for rendering. More...
enum  ShaderType {
  VERT = 0 , FRAG , COMP , TESC ,
  TESE , GEOM , COUNT
}
 Shader stage types. More...

Functions

DLL bool InitializeGlobalEnvironment (int argc=0, char *argv[]=nullptr)
 Initialize the global engine environment.
DLL void FinalizeGlobalEnvironment ()
 Shut down the global engine environment and release resources.
DLL std::vector< std::string > GetResourcePath ()
 Get the list of resource search paths.
DLL void SetResourcePath (const std::vector< std::string > &aPath)
 Set the list of resource search paths.
DLL size_t GetResourceSize (uint32_t crc)
DLL size_t GetResourceSize (const std::string &aFileName)
DLL std::string GetResourcePath (uint32_t crc)
DLL void LoadResource (uint32_t crc, void *buffer, size_t buffer_size)
DLL void LoadResource (const std::string &aFileName, void *buffer, size_t buffer_size)
DLL std::string Base64Encode (const uint8_t *aData, size_t aDataSize, bool aSplit=true)
 Encode a binary string.
DLL std::string Base64Decode (const uint8_t *aData, size_t aDataSize)
 Decode a base64 string.
DLL std::string Base64Encode (std::string_view aData)
 Encode a string_view as base64.
DLL std::string Base64Decode (std::string_view aData)
 Decode a base64 string_view.
std::ostream & operator<< (std::ostream &os, LogLevel level)
 Inserts a color-coded log level tag into an output stream.
DLL size_t GetUniformValueSize (const Material::UniformValue &aValue)
 Get the byte size of a uniform value.
DLL const void * GetUniformValuePointer (const Material::UniformValue &aValue)
 Get a pointer to the raw data of a uniform value.
DLL const Matrix3x3 operator* (const Matrix3x3 &lhs, const Matrix3x3 &rhs)
 Multiplies two 3x3 matrices. Multiplies two 3x3 matrices.
DLL const Vector3 operator* (const Matrix3x3 &lhs, const Vector3 &rhs)
 Multiply a 3x3 matrix by a 3D vector.
DLL const bool operator== (const Matrix3x3 &lhs, const Matrix3x3 &rhs)
 Compare two 3x3 matrices for equality.
DLL const Matrix3x3 Abs (const Matrix3x3 &aMatrix3x3)
 Compute the element-wise absolute value of a matrix.
DLL const Matrix4x4 operator* (const Matrix4x4 &lhs, const Matrix4x4 &rhs)
 Multiplies two 4x4 matrices. Multiplies two 4x4 matrices.
DLL const Vector3 operator* (const Matrix4x4 &lhs, const Vector3 &rhs)
 Multiply a 4x4 matrix by a 3D vector.
DLL const bool operator== (const Matrix4x4 &lhs, const Matrix4x4 &rhs)
 Compare two 4x4 matrices for equality.
DLL const Matrix4x4 Abs (const Matrix4x4 &aMatrix4x4)
 Compute the element-wise absolute value of a matrix.
DLL std::ostream & operator<< (std::ostream &os, const Matrix4x4 &aMatrix)
 Stream output operator for a 4x4 matrix.
constexpr const std::size_t operator""_kb (unsigned long long int aKyloBytes)
 User-defined literal for kilobytes.
constexpr const std::size_t operator""_mb (unsigned long long int aMegaBytes)
 User-defined literal for megabytes.
constexpr const std::size_t operator""_gb (unsigned long long int aGigaBytes)
 User-defined literal for gigabytes.
DLL size_t GetAttributeTotalSize (const Mesh::AttributeTuple &aAttributeTuple)
 Compute the total byte size of a single vertex attribute.
NodeGetNodePtr (const NodeParent &aNodeParent)
 Extract the Node pointer from a NodeParent variant.
SceneGetScenePtr (const NodeParent &aNodeParent)
 Extract the Scene pointer from a NodeParent variant.
constexpr uint64_t operator""_mgk (const char *literal, const std::size_t) noexcept
 User-defined literal operator that converts an 8-character string to a uint64_t magic number.
template<class T>
void LoadProtoBufObject (T &t, const void *aData, size_t aSize, uint64_t aMagick)
 Loads a Protocol Buffer Object from a meory buffer into the provided reference.
template<class T>
LoadProtoBufObject (const void *aData, size_t aSize, uint64_t aMagick)
 Loads a Protocol Buffer Object from a memory buffer.
template<class T>
void LoadProtoBufObject (T &t, const std::string &aFilename, uint64_t aMagick)
 Loads a Protocol Buffer Object from an AeonGames file into the provided reference.
template<class T>
LoadProtoBufObject (const std::string &aFilename, uint64_t aMagick)
 Loads a Protocol Buffer Object from an AeonGames file.
template<class T, class U, uint64_t Magick>
void LoadFromProtoBufObject (T &aTarget, const void *aBuffer, size_t aBufferSize)
 Loads a Protocol Buffer message from a buffer and populates a target object.
DLL uint32_t GetReferenceMsgId (const ReferenceMsg &reference_buffer)
 Retrieve the identifier from a ReferenceMsg.
DLL uint32_t GetAttributes (const PipelineMsg &aPipelineMsg)
 Get the packed attribute flags from a pipeline message.
DLL std::string GetAttributesGLSL (const PipelineMsg &aPipelineMsg)
 Generate GLSL attribute declarations from a pipeline message.
DLL std::string GetPropertiesGLSL (const PipelineMsg &aPipelineMsg)
 Generate GLSL property/uniform declarations from a pipeline message.
Vector3 GetVector3 (const Vector3Msg &aVector3)
 Convert a Vector3Msg protobuf message to a Vector3.
Quaternion GetQuaternion (const QuaternionMsg &aQuaternion)
 Convert a QuaternionMsg protobuf message to a Quaternion.
Transform GetTransform (const TransformMsg &aTransform)
 Convert a TransformMsg protobuf message to a Transform.
Property GetProperty (const ComponentPropertyMsg &aComponentPropertyMsg)
 Convert a ComponentPropertyMsg protobuf message to a Property.
size_t GetUniformBufferSize (const PipelineMsg &aPipelineMsg)
 Calculate the uniform buffer size required by a pipeline.
DLL Material::UniformKeyValue PropertyToKeyValue (const PropertyMsg &aProperty)
 Convert a PropertyMsg to a Material uniform key-value pair.
DLL const Quaternion operator* (const Quaternion &lhs, const Quaternion &rhs)
 Multiply two quaternions.
DLL const Vector3 operator* (const Quaternion &lhs, const Vector3 &rhs)
 Rotate a 3D vector by a quaternion.
DLL bool operator== (const Quaternion &lhs, const Quaternion &rhs)
 Compare two quaternions for equality.
DLL const Quaternion LerpQuats (const Quaternion &q1, const Quaternion &q2, double interpolation)
 Linearly interpolate between two quaternions.
DLL const Quaternion NlerpQuats (const Quaternion &q1, const Quaternion &q2, double interpolation)
 Linearly interpolate between two quaternions return the normalized result.
DLL const Quaternion SlerpQuats (const Quaternion &q1, const Quaternion &q2, float interpolation)
 Spherical Linear interpolation between two quaternions.
DLL size_t GetNextConsecutiveId ()
 Returns the next available consecutive resource identifier.
DLL void ClearAllResources ()
 Remove all resources from the cache.
DLL void EnumerateResources (const std::function< bool(uint32_t, const UniqueAnyPtr &) > &aEnumerator)
 Enumerate all cached resources.
DLL const UniqueAnyPtrStoreResource (uint32_t aKey, UniqueAnyPtr &&pointer)
 Store a resource in the cache.
DLL UniqueAnyPtr DisposeResource (uint32_t aKey)
 Remove and return a resource from the cache.
DLL const UniqueAnyPtrGetResource (uint32_t aKey)
 Retrieve a cached resource by key.
DLL const UniqueAnyPtrGetResource (const ResourceId &aResourceId)
 Retrieve a cached resource by ResourceId, constructing it if absent.
DLL UniqueAnyPtr ConstructResource (const ResourceId &aResourceId)
 Construct a resource identified by a ResourceId.
DLL const UniqueAnyPtrGetDefaultResource (uint32_t aType)
 Get the default resource for a given type.
DLL bool RegisterResourceConstructor (uint32_t aType, const std::function< UniqueAnyPtr(uint32_t) > &aConstructor, UniqueAnyPtr &&aDefaultResource=nullptr)
 Register a constructor for a resource type.
DLL bool UnregisterResourceConstructor (uint32_t aType)
 Unregister a resource constructor.
DLL void EnumerateResourceConstructors (const std::function< bool(uint32_t) > &aEnumerator)
 Enumerate all registered resource constructors.
template<class T>
std::string to_string (T &&t)
 Generic to_string using ADL to find the best overload.
template<class T>
std::string ToString (const T &t)
 Convert an arbitrary type to its hex byte string representation.
template<>
std::string ToString (const int &t)
 Specialization of ToString for int.
template<>
std::string ToString (const long &t)
 Specialization of ToString for long.
template<>
std::string ToString (const long long &t)
 Specialization of ToString for long long.
template<>
std::string ToString (const unsigned &t)
 Specialization of ToString for unsigned int.
template<>
std::string ToString (const unsigned long &t)
 Specialization of ToString for unsigned long.
template<>
std::string ToString (const unsigned long long &t)
 Specialization of ToString for unsigned long long.
template<>
std::string ToString (const float &t)
 Specialization of ToString for float.
template<>
std::string ToString (const double &t)
 Specialization of ToString for double.
DLL const Transform operator* (const Transform &lhs, const Transform &rhs)
 Combine two transforms.
DLL const AABB operator* (const Transform &lhs, const AABB &rhs)
 Transform an axis-aligned bounding box.
DLL const bool operator== (const Transform &lhs, const Transform &rhs)
 Compare two transforms for equality.
DLL const Transform Interpolate (const Transform &aTransform0, const Transform &aTransform1, const Transform &aTransform2, const Transform &aTransform3, double aInterpolation)
 Interpolate transforms using spline and mlerp methods.
template<typename T, typename... Ts>
UniqueAnyPtr MakeUniqueAny (Ts &&... params)
 Creates a UniqueAnyPtr owning a new instance of T.
DLL const std::string GetFileExtension (const std::string &aFilePath)
 Extract the file extension from a file path.
DLL bool FileExists (const std::string &aFilePath)
 Check whether a file exists at the given path.
constexpr uint32_t ffs (uint32_t value)
 Find the index of the first set bit using a De Bruijn sequence.
constexpr uint32_t popcount (uint32_t v)
 Count the number of set bits in a 32-bit unsigned integer.
template<class T, class U>
const T Concatenate (const T &aFirst, U &aSecond)
 Concatenate two containers.
DLL void ProcessOpts (int argc, char *argv[], const OptionHandler *aOptionHandler, size_t aOptionHandlerCount)
 Process command-line options.
DLL bool operator== (const Vector2 &aLhs, const Vector2 &aRhs)
 Equality comparison operator.
DLL const Vector3 operator- (const Vector3 &aLhs, const Vector3 &aRhs)
 Subtraction operator.
DLL const Vector3 operator+ (const Vector3 &aLhs, const Vector3 &aRhs)
 Addition operator.
DLL const Vector3 operator* (const Vector3 &aLhs, const float aRhs)
 Scalar multiplication operator (vector * scalar).
DLL const Vector3 operator/ (const Vector3 &aLhs, const float aRhs)
 Scalar division operator.
DLL const Vector3 operator* (const float aLhs, const Vector3 &aRhs)
 Scalar multiplication operator (scalar * vector).
DLL const Vector3 operator* (const Vector3 &aLhs, const Vector3 &aRhs)
 Component-wise multiplication operator.
DLL bool operator!= (const Vector3 &aLhs, const Vector3 &aRhs)
 Inequality comparison operator.
DLL bool operator== (const Vector3 &aLhs, const Vector3 &aRhs)
 Equality comparison operator.
DLL const Vector3 Cross (const Vector3 &aLhs, const Vector3 &aRhs)
 Compute the cross product of two vectors.
DLL const float Dot (const Vector3 &aLhs, const Vector3 &aRhs)
 Compute the dot product of two vectors.
DLL const Vector3 Normalize (const Vector3 &aVector)
 Return a normalized (unit length) copy of the vector.
DLL const Vector3 Abs (const Vector3 &aVector)
 Return a vector with all components replaced by their absolute values.
DLL const Vector3 Spline (const Vector3 &p0, const Vector3 &p1, const Vector3 &p2, const Vector3 &p3, double interpolation)
 Catmull-Rom spline interpolation between four control points.
DLL bool operator== (const Vector4 &aLhs, const Vector4 &aRhs)
 Equality comparison operator.
 FactoryImplementation (Component)
 Factory implementation for Component.
uint32_t crc32i (const char *message, size_t size, uint32_t previous_crc)
 Compute the CRC32 of a given message, continuing from a previous CRC value.
uint64_t crc64i (const char *message, size_t size, uint64_t previous_crc)
 Compute the CRC64 of a given message, continuing from a previous CRC value.
 LoopTraverseDFSPreOrder (const) LoopTraverseDFSPreOrder() Node *Node
 Const version generated by LoopTraverseDFSPreOrder macro.
 FactoryImplementation1Arg (Renderer, void *)
 Factory implementation for Renderer with a window argument.
bool DecodeSound (Sound &aSound, const void *aBuffer, size_t aBufferSize)
 Decode sound data from a memory buffer.
 FactoryImplementation (SoundSystem)
 Factory implementation for SoundSystem.
bool DecodePNG (Texture &aTexture, size_t aBufferSize, const void *aBuffer)
 Decodes PNG image data from a memory buffer into a Texture.
template<class T, typename... Types>
std::unique_ptr< T > Construct (uint32_t aIdentifier, Types... args)
 Free function template that constructs an object by numeric identifier.
template<class T, typename... Types>
std::unique_ptr< T > Construct (const std::string &aIdentifier, Types... args)
 Free function template that constructs an object by string identifier.
template<class T, typename... Types>
std::unique_ptr< T > Construct (const StringId &aIdentifier, Types... args)
 Free function template that constructs an object by StringId.
template<class T, typename... Types>
bool RegisterConstructor (const StringId &aIdentifier, const std::function< std::unique_ptr< T >(Types... args) > &aConstructor)
 Free function template that registers a constructor.
template<class T, typename... Types>
bool UnregisterConstructor (const StringId &aIdentifier)
 Free function template that unregisters a constructor.
template<class T, typename... Types>
void EnumerateConstructors (const std::function< bool(const StringId &) > &aEnumerator)
 Free function template that enumerates all registered constructors.
template<class T, typename... Types>
std::vector< std::string > GetConstructorNames ()
 Free function template that returns all registered constructor names.
bool LoadOpenGLAPI ()
 Load all OpenGL function pointers and log driver information.
bool operator!= (const VkDescriptorSetLayoutBinding &a, const SpvReflectDescriptorBinding &b)
 Compare a VkDescriptorSetLayoutBinding with a SpvReflectDescriptorBinding for inequality.
const char * GetVulkanResultString (VkResult aResult)
 Convert a VkResult code to a human-readable string.
VKAPI_ATTR VkBool32 VKAPI_CALL DebugCallback (VkDebugUtilsMessageSeverityFlagBitsEXT aMessageSeverity, VkDebugUtilsMessageTypeFlagsEXT aMessageTypes, const VkDebugUtilsMessengerCallbackDataEXT *aCallbackData, void *aUserData)
 Vulkan debug messenger callback.
VkDescriptorPool CreateDescriptorPool (const VkDevice &aVkDevice, const std::vector< VkDescriptorPoolSize > &aVkDescriptorPoolSizes)
 Create a Vulkan descriptor pool from the given pool sizes.
void DestroyDescriptorPool (const VkDevice &aVkDevice, VkDescriptorPool aVkDescriptorPool)
 Destroy a Vulkan descriptor pool.
VkDescriptorSet CreateDescriptorSet (const VkDevice &aVkDevice, const VkDescriptorPool &aVkDescriptorPool, const VkDescriptorSetLayout &aVkDescriptorSetLayout, uint32_t aDescriptorSetCount)
 Allocate a Vulkan descriptor set from the given pool and layout.
bool DecodeOGG (Sound &aSound, size_t aBufferSize, const void *aBuffer)
 Decodes OGG Vorbis audio data from a memory buffer into a Sound.
uint32_t GetStride (const MeshMsg &aMeshMsg)
 Compute the stride in bytes for a single vertex.
std::string GetVertexBufferRegexPattern (const MeshMsg &aMeshMsg)
 Build a regex pattern string matching a single vertex.
template<class T>
const uint8_t * Print (const uint8_t *cursor, std::ostringstream &stream, uint32_t count)
 Print vertex attribute values from a raw byte cursor.
template<class T>
size_t Parse (size_t index, const std::smatch &match_results, std::string &vertex_buffer, size_t count)
 Parse attribute values from regex match results into a vertex buffer string.
std::string ParseVertexBuffer (const MeshMsg &aMeshMsg)
std::string ParseIndexBuffer (const MeshMsg &aMeshMsg)
 Parse an index buffer from a mesh message.
int write_deflated_data (FILE *source, FILE *dest, int level, uint32_t &compressed_size)
 Compress data from source file to dest file using deflate.
template<class T>
QWidget * BuildSpinboxEditor (QWidget *parent)
 Build a QSpinBox editor widget configured for type T.
template<class T>
void SetSpinboxEditorValue (QWidget *editor, const QVariant &value)
 Set the value of a QSpinBox editor from a QVariant.
template<class T>
void SetSpinboxModelData (QWidget *editor, QAbstractItemModel *model, const QModelIndex &index)
 Commit a QSpinBox editor value to the item model.
Factory Functions
DLL std::unique_ptr< ComponentConstructComponent (uint32_t aIdentifier)
 Construct a component from a numeric identifier.
DLL std::unique_ptr< ComponentConstructComponent (const std::string &aIdentifier)
 Construct a component from a string name.
DLL std::unique_ptr< ComponentConstructComponent (const StringId &aIdentifier)
 Construct a component from a StringId.
DLL bool RegisterComponentConstructor (const StringId &aIdentifier, const std::function< std::unique_ptr< Component >() > &aConstructor)
 Registers a Component loader for a specific identifier.
DLL bool UnregisterComponentConstructor (const StringId &aIdentifier)
 Unregisters a Component loader for a specific identifier.
DLL void EnumerateComponentConstructors (const std::function< bool(const StringId &) > &aEnumerator)
 Enumerates Component loader identifiers via an enumerator functor.
DLL std::unique_ptr< RendererConstructRenderer (uint32_t aIdentifier, void *aWindow)
 Constructs a Renderer identified by a numeric identifier.
DLL std::unique_ptr< RendererConstructRenderer (const std::string &aIdentifier, void *aWindow)
 Constructs a Renderer identified by a string name.
DLL std::unique_ptr< RendererConstructRenderer (const StringId &aIdentifier, void *aWindow)
 Constructs a Renderer identified by a StringId.
DLL bool RegisterRendererConstructor (const StringId &aIdentifier, const std::function< std::unique_ptr< Renderer >(void *) > &aConstructor)
 Registers a Renderer loader for a specific identifier.
DLL bool UnregisterRendererConstructor (const StringId &aIdentifier)
 Unregisters a Renderer loader for a specific identifier.
DLL void EnumerateRendererConstructors (const std::function< bool(const StringId &) > &aEnumerator)
 Enumerates Renderer loader identifiers via an enumerator functor.
DLL std::vector< std::string > GetRendererConstructorNames ()
 Returns the names of all registered Renderer constructors.
DLL std::unique_ptr< SoundSystemConstructSoundSystem (const StringId &aIdentifier)
 Construct a SoundSystem back-end for the given identifier.
DLL bool RegisterSoundSystemConstructor (const StringId &aIdentifier, const std::function< std::unique_ptr< SoundSystem >() > &aConstructor)
 Registers a SoundSystem loader for a specific identifier.
DLL bool UnregisterSoundSystemConstructor (const StringId &aIdentifier)
 Unregisters a SoundSystem loader for a specific identifier.
DLL void EnumerateSoundSystemConstructors (const std::function< bool(const StringId &) > &aEnumerator)
 Enumerates SoundSystem loader identifiers via an enumerator functor.
Decoder Functions
DLL bool RegisterSoundDecoder (const std::string &aMagick, const std::function< bool(Sound &, size_t, const void *) > &aDecoder)
 Register a sound decoder for the given magic identifier.
DLL bool UnregisterSoundDecoder (const std::string &aMagick)
 Unregister a previously registered sound decoder.
DLL bool DecodeSound (Sound &aSound, size_t aBufferSize, const void *aBuffer)
 Decode sound data from a memory buffer.
DLL bool DecodeSound (Sound &aSound, const std::string &aFileName)
 Decode sound data from a file.
DLL bool RegisterImageDecoder (const std::string &aMagick, const std::function< bool(Texture &, size_t, const void *) > &aDecoder)
 Registers an image decoder for a specific file magic identifier.
DLL bool UnregisterImageDecoder (const std::string &aMagick)
 Unregisters a previously registered image decoder.
DLL bool DecodeImage (Texture &aTexture, const void *aBuffer, size_t aBufferSize)
 Decodes image data from a memory buffer into a Texture.
DLL bool DecodeImage (Texture &aTexture, const std::string &aFileName)
 Decodes an image file into a Texture.

Variables

template<class Key, class Value>
std::unordered_map< Key, FlyWeight< Key, Value > * > FlyWeight< Key, Value >::mStore {}
 Global store mapping keys to FlyWeight instances.
const std::unordered_map< ShaderType, const char * > ShaderTypeToString
 Map from ShaderType enum values to human-readable string names.
constexpr uint32_t DeBruijnSequence [32]
 De Bruijn lookup table used by ffs().
const std::array< OptionHandler, 1 > gOptionHandlers
 Array of command-line option handlers.
const GLchar vertex_shader_code []
 Overlay vertex shader GLSL source code.
const GLint vertex_shader_len { sizeof(vertex_shader_code) }
 Length of the overlay vertex shader source.
const GLchar *const vertex_shader_code_ptr = vertex_shader_code
 Pointer to the overlay vertex shader source.
const GLchar fragment_shader_code []
 Overlay fragment shader GLSL source code.
const GLint fragment_shader_len { sizeof(fragment_shader_code) }
 Length of the overlay fragment shader source.
const GLchar *const fragment_shader_code_ptr = fragment_shader_code
 Pointer to the overlay fragment shader source.
const float vertices []
 Overlay screen-quad vertex data (positions and texture coordinates).
constexpr GLuint vertex_size {sizeof(vertices)}
 Total byte size of the overlay vertex data.
std::array< EShLanguage, ShaderType::COUNTShaderTypeToEShLanguage
 Mapping from ShaderType to glslang EShLanguage.
std::array< VkShaderStageFlagBits, ShaderType::COUNTShaderTypeToShaderStageFlagBit
 Mapping from ShaderType to VkShaderStageFlagBits.
const std::unordered_map< const char *, std::function< std::string *(PipelineMsg *) > > ShaderTypeToExtension
 Map from shader file extension to its mutable PipelineMsg accessor.
const std::unordered_map< const char *, std::function< const std::string &(const PipelineMsg *) > > ShaderTypeToGetter
 Map from shader file extension to its const PipelineMsg getter.

Detailed Description

<- This is here just for the literals

Todo
Decouple Protobuf from Renderers and remove Status undefinitions
Todo
This code may benefit from ProtoBufHelpers.h, but by doing so, it must become public and aeontool would need to link against the AeonEngine library just for FileExists. Find a workaround?.

Typedef Documentation

◆ NodeParent

using AeonGames::NodeParent = std::variant<Node*, Scene*>

Variant type representing a node's parent (either a Node or a Scene).

Definition at line 39 of file Node.hpp.

◆ Property

Initial value:
std::variant
<
int,
long,
long long,
unsigned,
unsigned long,
unsigned long long,
float,
double,
std::string,
std::filesystem::path
>

A variant type that can hold any commonly used property value.

Supports integral types, floating-point types, strings, and filesystem paths.

Definition at line 31 of file Property.hpp.

Enumeration Type Documentation

◆ LogLevel

enum class AeonGames::LogLevel
strong

Severity levels for engine log messages.

Enumerator
Debug 

Detailed diagnostic information.

Info 

General informational messages.

Performance 

Performance-related metrics.

Warning 

Potential issues that may need attention.

Error 

Error conditions.

Definition at line 27 of file LogLevel.hpp.

◆ PKGCompressionTypes

Compression types supported by PKG packages.

Enumerator
NONE 

No compression.

ZLIB 

ZLIB compression.

Definition at line 32 of file Package.hpp.

◆ ShaderType

Shader stage types.

Enumerator
VERT 

Vertex shader.

FRAG 

Fragment shader.

COMP 

Compute shader.

TESC 

Tessellation control shader.

TESE 

Tessellation evaluation shader.

GEOM 

Geometry shader.

COUNT 

Number of shader types.

Definition at line 95 of file Pipeline.hpp.

◆ Topology

Primitive topology types for rendering.

Todo
This enum should be moved to a place where it makes more sence, like mesh metadata.
Enumerator
UNDEFINED 

Undefined topology.

POINT_LIST 

List of individual points.

LINE_STRIP 

Connected line segments.

LINE_LIST 

Pairs of vertices forming individual lines.

TRIANGLE_STRIP 

Connected triangle strip.

TRIANGLE_FAN 

Triangles sharing a common vertex.

TRIANGLE_LIST 

Independent triangles.

LINE_LIST_WITH_ADJACENCY 

Line list with adjacency information.

LINE_STRIP_WITH_ADJACENCY 

Line strip with adjacency information.

TRIANGLE_LIST_WITH_ADJACENCY 

Triangle list with adjacency information.

TRIANGLE_STRIP_WITH_ADJACENCY 

Triangle strip with adjacency information.

PATCH_LIST 

Patch list for tessellation.

Definition at line 37 of file Pipeline.hpp.

Function Documentation

◆ Abs() [1/3]

const Matrix3x3 AeonGames::Abs ( const Matrix3x3 & aMatrix3x3)

Compute the element-wise absolute value of a matrix.

Parameters
aMatrix3x3The input matrix.
Returns
A new matrix with absolute values of each element.

Definition at line 143 of file Matrix3x3.cpp.

◆ Abs() [2/3]

const Matrix4x4 AeonGames::Abs ( const Matrix4x4 & aMatrix4x4)

Compute the element-wise absolute value of a matrix.

Parameters
aMatrix4x4The input matrix.
Returns
A new matrix with absolute values of each element.

Definition at line 226 of file Matrix4x4.cpp.

◆ Abs() [3/3]

const Vector3 AeonGames::Abs ( const Vector3 & aVector)

Return a vector with all components replaced by their absolute values.

Parameters
aVectorInput vector.
Returns
Vector with absolute component values.

Definition at line 266 of file Vector3.cpp.

◆ Base64Decode() [1/2]

std::string AeonGames::Base64Decode ( const uint8_t * aData,
size_t aDataSize )

Decode a base64 string.

Parameters
aDataThe base64 string.
aDataSizeThe size of the base64 string.
Returns
The decoded string.
Note
This implementation skips any invalid characters, not just whitespace.

Definition at line 68 of file Base64.cpp.

◆ Base64Decode() [2/2]

std::string AeonGames::Base64Decode ( std::string_view aData)

Decode a base64 string_view.

Parameters
aDataThe base64 string to decode.
Returns
The decoded string.

Definition at line 105 of file Base64.cpp.

◆ Base64Encode() [1/2]

std::string AeonGames::Base64Encode ( const uint8_t * aData,
size_t aDataSize,
bool aSplit = true )

Encode a binary string.

Parameters
aDataThe string to be encoded.
aDataSizeThe size of the string.
aSplitWhether the resulting string should be split each 76 characters.
Returns
The encoded string.
Note
This implementation skips any invalid characters, not just whitespace.

Definition at line 26 of file Base64.cpp.

◆ Base64Encode() [2/2]

std::string AeonGames::Base64Encode ( std::string_view aData)

Encode a string_view as base64.

Parameters
aDataThe data to encode.
Returns
The base64-encoded string.

Definition at line 100 of file Base64.cpp.

◆ BuildSpinboxEditor()

template<class T>
QWidget * AeonGames::BuildSpinboxEditor ( QWidget * parent)

Build a QSpinBox editor widget configured for type T.

Template Parameters
TNumeric type determining min/max range.
Parameters
parentParent widget.
Returns
The created editor widget.

Definition at line 34 of file PropertyDelegate.cpp.

◆ ClearAllResources()

void AeonGames::ClearAllResources ( )

Remove all resources from the cache.

Definition at line 25 of file ResourceCache.cpp.

◆ Concatenate()

template<class T, class U>
const T AeonGames::Concatenate ( const T & aFirst,
U & aSecond )

Concatenate two containers.

Template Parameters
TType of the first container (also the return type).
UType of the second container.
Parameters
aFirstThe first container.
aSecondThe second container to append.
Returns
A new container with elements from both inputs.

Definition at line 148 of file Utilities.hpp.

◆ Construct() [1/3]

template<class T, typename... Types>
std::unique_ptr< T > AeonGames::Construct ( const std::string & aIdentifier,
Types... args )

Free function template that constructs an object by string identifier.

Definition at line 220 of file Factory.h.

◆ Construct() [2/3]

template<class T, typename... Types>
std::unique_ptr< T > AeonGames::Construct ( const StringId & aIdentifier,
Types... args )

Free function template that constructs an object by StringId.

Definition at line 227 of file Factory.h.

◆ Construct() [3/3]

template<class T, typename... Types>
std::unique_ptr< T > AeonGames::Construct ( uint32_t aIdentifier,
Types... args )

Free function template that constructs an object by numeric identifier.

Template Parameters
TThe type to construct.
TypesAdditional argument types.
Parameters
aIdentifierCRC32 identifier.
argsConstructor arguments.
Returns
A unique_ptr to the constructed object, or nullptr if not found.

Definition at line 213 of file Factory.h.

◆ ConstructComponent() [1/3]

DLL std::unique_ptr< Component > AeonGames::ConstructComponent ( const std::string & aIdentifier)

Construct a component from a string name.

Parameters
aIdentifierString name of the component type.
Returns
Owning pointer to the newly created component, or nullptr on failure.

◆ ConstructComponent() [2/3]

DLL std::unique_ptr< Component > AeonGames::ConstructComponent ( const StringId & aIdentifier)

Construct a component from a StringId.

Parameters
aIdentifierStringId of the component type.
Returns
Owning pointer to the newly created component, or nullptr on failure.

◆ ConstructComponent() [3/3]

DLL std::unique_ptr< Component > AeonGames::ConstructComponent ( uint32_t aIdentifier)

Construct a component from a numeric identifier.

Parameters
aIdentifierNumeric identifier of the component type.
Returns
Owning pointer to the newly created component, or nullptr on failure.

◆ ConstructRenderer() [1/3]

DLL std::unique_ptr< Renderer > AeonGames::ConstructRenderer ( const std::string & aIdentifier,
void * aWindow )

Constructs a Renderer identified by a string name.

Parameters
aIdentifierString renderer identifier.
aWindowPlatform dependent window handle.
Returns
A unique_ptr to the newly created Renderer.

◆ ConstructRenderer() [2/3]

DLL std::unique_ptr< Renderer > AeonGames::ConstructRenderer ( const StringId & aIdentifier,
void * aWindow )

Constructs a Renderer identified by a StringId.

Parameters
aIdentifierStringId renderer identifier.
aWindowPlatform dependent window handle.
Returns
A unique_ptr to the newly created Renderer.

◆ ConstructRenderer() [3/3]

DLL std::unique_ptr< Renderer > AeonGames::ConstructRenderer ( uint32_t aIdentifier,
void * aWindow )

Constructs a Renderer identified by a numeric identifier.

Parameters
aIdentifierNumeric renderer identifier.
aWindowPlatform dependent window handle.
Returns
A unique_ptr to the newly created Renderer.

◆ ConstructResource()

UniqueAnyPtr AeonGames::ConstructResource ( const ResourceId & aResourceId)

Construct a resource identified by a ResourceId.

Parameters
aResourceIdThe identifier for the resource to construct.
Returns
A UniqueAnyPtr owning the constructed resource.

Definition at line 28 of file ResourceFactory.cpp.

◆ ConstructSoundSystem()

DLL std::unique_ptr< SoundSystem > AeonGames::ConstructSoundSystem ( const StringId & aIdentifier)

Construct a SoundSystem back-end for the given identifier.

Parameters
aIdentifierIdentifier selecting the back-end implementation.
Returns
A unique_ptr owning the newly created SoundSystem, or nullptr on failure.

◆ crc32i()

uint32_t AeonGames::crc32i ( const char * message,
size_t size,
uint32_t previous_crc )

Compute the CRC32 of a given message, continuing from a previous CRC value.

Parameters
messageThe message to compute the CRC for.
sizeThe size of the message in bytes.
previous_crcThe previous CRC32 value to continue from.
Returns
The CRC32 of the message combined with the previous CRC.

Definition at line 27 of file CRC.cpp.

◆ crc64i()

uint64_t AeonGames::crc64i ( const char * message,
size_t size,
uint64_t previous_crc )

Compute the CRC64 of a given message, continuing from a previous CRC value.

Parameters
messageThe message to compute the CRC for.
sizeThe size of the message in bytes.
previous_crcThe previous CRC64 value to continue from.
Returns
The CRC64 of the message combined with the previous CRC.

Definition at line 53 of file CRC.cpp.

◆ CreateDescriptorPool()

VkDescriptorPool AeonGames::CreateDescriptorPool ( const VkDevice & aVkDevice,
const std::vector< VkDescriptorPoolSize > & aVkDescriptorPoolSizes )

Create a Vulkan descriptor pool from the given pool sizes.

Definition at line 126 of file VulkanUtilities.cpp.

◆ CreateDescriptorSet()

VkDescriptorSet AeonGames::CreateDescriptorSet ( const VkDevice & aVkDevice,
const VkDescriptorPool & aVkDescriptorPool,
const VkDescriptorSetLayout & aVkDescriptorSetLayout,
uint32_t aDescriptorSetCount )

Allocate a Vulkan descriptor set from the given pool and layout.

Definition at line 153 of file VulkanUtilities.cpp.

◆ Cross()

const Vector3 AeonGames::Cross ( const Vector3 & aLhs,
const Vector3 & aRhs )

Compute the cross product of two vectors.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
Cross product vector.

Definition at line 123 of file Vector3.cpp.

◆ DebugCallback()

VKAPI_ATTR VkBool32 VKAPI_CALL AeonGames::DebugCallback ( VkDebugUtilsMessageSeverityFlagBitsEXT aMessageSeverity,
VkDebugUtilsMessageTypeFlagsEXT aMessageTypes,
const VkDebugUtilsMessengerCallbackDataEXT * aCallbackData,
void * aUserData )

Vulkan debug messenger callback.

Parameters
aMessageSeveritySeverity of the message.
aMessageTypesType flags of the message.
aCallbackDataCallback data containing the message.
aUserDataUser-provided data pointer.
Returns
VK_FALSE to indicate the call should not be aborted.

Definition at line 90 of file VulkanUtilities.cpp.

◆ DecodeImage() [1/2]

bool AeonGames::DecodeImage ( Texture & aTexture,
const std::string & aFileName )

Decodes an image file into a Texture.

Parameters
aTextureTarget texture to receive the decoded image.
aFileNamePath to the image file.
Returns
True if decoding succeeded.

Definition at line 41 of file Texture.cpp.

◆ DecodeImage() [2/2]

bool AeonGames::DecodeImage ( Texture & aTexture,
const void * aBuffer,
size_t aBufferSize )

Decodes image data from a memory buffer into a Texture.

Parameters
aTextureTarget texture to receive the decoded image.
aBufferPointer to the encoded image data.
aBufferSizeSize of the buffer in bytes.
Returns
True if decoding succeeded.

Definition at line 36 of file Texture.cpp.

◆ DecodeOGG()

bool AeonGames::DecodeOGG ( Sound & aSound,
size_t aBufferSize,
const void * aBuffer )

Decodes OGG Vorbis audio data from a memory buffer into a Sound.

Parameters
aSoundSound object to receive the decoded audio.
aBufferSizeSize of the input buffer in bytes.
aBufferPointer to the OGG data buffer.
Returns
true on successful decode, false on failure.

Definition at line 25 of file OggSound.cpp.

◆ DecodePNG()

bool AeonGames::DecodePNG ( Texture & aTexture,
size_t aBufferSize,
const void * aBuffer )

Decodes PNG image data from a memory buffer into a Texture.

Parameters
aTextureTexture object to receive the decoded image.
aBufferSizeSize of the input buffer in bytes.
aBufferPointer to the PNG data buffer.
Returns
true on successful decode, false on failure.

Definition at line 61 of file PngImage.cpp.

◆ DecodeSound() [1/3]

bool AeonGames::DecodeSound ( Sound & aSound,
const std::string & aFileName )

Decode sound data from a file.

Parameters
aSoundSound object to populate.
aFileNamePath to the sound file.
Returns
true on successful decode, false otherwise.

Definition at line 45 of file Sound.cpp.

◆ DecodeSound() [2/3]

bool AeonGames::DecodeSound ( Sound & aSound,
const void * aBuffer,
size_t aBufferSize )

Decode sound data from a memory buffer.

Parameters
aSoundSound object to populate.
aBufferPointer to the encoded sound data.
aBufferSizeSize of the buffer in bytes.
Returns
true on success.

Definition at line 40 of file Sound.cpp.

◆ DecodeSound() [3/3]

DLL bool AeonGames::DecodeSound ( Sound & aSound,
size_t aBufferSize,
const void * aBuffer )

Decode sound data from a memory buffer.

Parameters
aSoundSound object to populate.
aBufferSizeSize of the data buffer in bytes.
aBufferPointer to the raw sound data.
Returns
true on successful decode, false otherwise.

◆ DestroyDescriptorPool()

void AeonGames::DestroyDescriptorPool ( const VkDevice & aVkDevice,
VkDescriptorPool aVkDescriptorPool )

Destroy a Vulkan descriptor pool.

Definition at line 147 of file VulkanUtilities.cpp.

◆ DisposeResource()

UniqueAnyPtr AeonGames::DisposeResource ( uint32_t aKey)

Remove and return a resource from the cache.

Parameters
aKeyThe key of the resource to dispose.
Returns
The disposed resource.

Definition at line 53 of file ResourceCache.cpp.

◆ Dot()

const float AeonGames::Dot ( const Vector3 & aLhs,
const Vector3 & aRhs )

Compute the dot product of two vectors.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
Dot product scalar.

Definition at line 249 of file Vector3.cpp.

◆ EnumerateConstructors()

template<class T, typename... Types>
void AeonGames::EnumerateConstructors ( const std::function< bool(const StringId &) > & aEnumerator)

Free function template that enumerates all registered constructors.

Definition at line 248 of file Factory.h.

◆ EnumerateResourceConstructors()

void AeonGames::EnumerateResourceConstructors ( const std::function< bool(uint32_t) > & aEnumerator)

Enumerate all registered resource constructors.

Parameters
aEnumeratorCallback invoked for each type; return false to stop.

Definition at line 58 of file ResourceFactory.cpp.

◆ EnumerateResources()

void AeonGames::EnumerateResources ( const std::function< bool(uint32_t, const UniqueAnyPtr &) > & aEnumerator)

Enumerate all cached resources.

Parameters
aEnumeratorCallback invoked with each key and resource; return false to stop.

Definition at line 30 of file ResourceCache.cpp.

◆ ffs()

uint32_t AeonGames::ffs ( uint32_t value)
constexpr

Find the index of the first set bit using a De Bruijn sequence.

Parameters
valueThe 32-bit value to scan.
Returns
Zero-based index of the lowest set bit.

Definition at line 44 of file Utilities.hpp.

◆ FileExists()

bool AeonGames::FileExists ( const std::string & aFilePath)

Check whether a file exists at the given path.

Parameters
aFilePathThe file path to check.
Returns
True if the file exists.

Definition at line 38 of file Utilities.cpp.

◆ FinalizeGlobalEnvironment()

void AeonGames::FinalizeGlobalEnvironment ( )

Shut down the global engine environment and release resources.

Definition at line 251 of file AeonEngine.cpp.

◆ GetAttributes()

DLL uint32_t AeonGames::GetAttributes ( const PipelineMsg & aPipelineMsg)

Get the packed attribute flags from a pipeline message.

Parameters
aPipelineMsgThe pipeline message to query.
Returns
Bitmask of vertex attributes used by the pipeline.

◆ GetAttributesGLSL()

DLL std::string AeonGames::GetAttributesGLSL ( const PipelineMsg & aPipelineMsg)

Generate GLSL attribute declarations from a pipeline message.

Parameters
aPipelineMsgThe pipeline message to query.
Returns
A string containing GLSL attribute declarations.

◆ GetAttributeTotalSize()

size_t AeonGames::GetAttributeTotalSize ( const Mesh::AttributeTuple & aAttributeTuple)

Compute the total byte size of a single vertex attribute.

Parameters
aAttributeTupleTuple describing the attribute.
Returns
Size in bytes.

Definition at line 73 of file Mesh.cpp.

◆ GetConstructorNames()

template<class T, typename... Types>
std::vector< std::string > AeonGames::GetConstructorNames ( )

Free function template that returns all registered constructor names.

Definition at line 255 of file Factory.h.

◆ GetDefaultResource()

const UniqueAnyPtr & AeonGames::GetDefaultResource ( uint32_t aType)

Get the default resource for a given type.

Parameters
aTypeThe resource type identifier.
Returns
Reference to the default resource.

Definition at line 69 of file ResourceFactory.cpp.

◆ GetFileExtension()

const std::string AeonGames::GetFileExtension ( const std::string & aFilePath)

Extract the file extension from a file path.

Parameters
aFilePathThe file path to extract the extension from.
Returns
The file extension including the leading dot.
Todo
Use splitpath instead?

Definition at line 23 of file Utilities.cpp.

◆ GetNextConsecutiveId()

size_t AeonGames::GetNextConsecutiveId ( )

Returns the next available consecutive resource identifier.

Returns
A unique, monotonically increasing identifier.

Definition at line 24 of file Resource.cpp.

◆ GetNodePtr()

Node * AeonGames::GetNodePtr ( const NodeParent & aNodeParent)
inline

Extract the Node pointer from a NodeParent variant.

Definition at line 41 of file Node.hpp.

◆ GetPropertiesGLSL()

DLL std::string AeonGames::GetPropertiesGLSL ( const PipelineMsg & aPipelineMsg)

Generate GLSL property/uniform declarations from a pipeline message.

Parameters
aPipelineMsgThe pipeline message to query.
Returns
A string containing GLSL uniform declarations.

◆ GetProperty()

Property AeonGames::GetProperty ( const ComponentPropertyMsg & aComponentPropertyMsg)

Convert a ComponentPropertyMsg protobuf message to a Property.

Parameters
aComponentPropertyMsgThe protobuf message to convert.
Returns
The corresponding Property value.
Todo
Add component and property names to the exception message.

Definition at line 92 of file ProtoBufUtils.cpp.

◆ GetQuaternion()

Quaternion AeonGames::GetQuaternion ( const QuaternionMsg & aQuaternion)

Convert a QuaternionMsg protobuf message to a Quaternion.

Parameters
aQuaternionThe protobuf message to convert.
Returns
The corresponding Quaternion value.

Definition at line 77 of file ProtoBufUtils.cpp.

◆ GetReferenceMsgId()

uint32_t AeonGames::GetReferenceMsgId ( const ReferenceMsg & reference_buffer)

Retrieve the identifier from a ReferenceMsg.

Parameters
reference_bufferThe ReferenceMsg to extract the id from.
Returns
The 32-bit identifier stored in the reference message.

Definition at line 60 of file ProtoBufUtils.cpp.

◆ GetRendererConstructorNames()

DLL std::vector< std::string > AeonGames::GetRendererConstructorNames ( )

Returns the names of all registered Renderer constructors.

Returns
A vector of registered renderer constructor name strings.

◆ GetResource() [1/2]

const UniqueAnyPtr & AeonGames::GetResource ( const ResourceId & aResourceId)

Retrieve a cached resource by ResourceId, constructing it if absent.

Parameters
aResourceIdThe resource identifier.
Returns
Reference to the cached resource.

Definition at line 76 of file ResourceCache.cpp.

◆ GetResource() [2/2]

const UniqueAnyPtr & AeonGames::GetResource ( uint32_t aKey)

Retrieve a cached resource by key.

Parameters
aKeyThe resource key.
Returns
Reference to the cached resource.

Definition at line 65 of file ResourceCache.cpp.

◆ GetResourcePath() [1/2]

std::vector< std::string > AeonGames::GetResourcePath ( )

Get the list of resource search paths.

Returns
A vector of directory paths used to locate resources.

Definition at line 283 of file AeonEngine.cpp.

◆ GetResourcePath() [2/2]

std::string AeonGames::GetResourcePath ( uint32_t crc)

Returns the resource path referenced by its id.

Definition at line 333 of file AeonEngine.cpp.

◆ GetResourceSize() [1/2]

size_t AeonGames::GetResourceSize ( const std::string & aFileName)

Returns the resource size referenced by its file name.

Definition at line 346 of file AeonEngine.cpp.

◆ GetResourceSize() [2/2]

size_t AeonGames::GetResourceSize ( uint32_t crc)

Returns the resource size referenced by its CRC value.

Definition at line 320 of file AeonEngine.cpp.

◆ GetScenePtr()

Scene * AeonGames::GetScenePtr ( const NodeParent & aNodeParent)
inline

Extract the Scene pointer from a NodeParent variant.

Definition at line 46 of file Node.hpp.

◆ GetStride()

uint32_t AeonGames::GetStride ( const MeshMsg & aMeshMsg)

Compute the stride in bytes for a single vertex.

Parameters
aMeshMsgMesh message describing vertex attributes.
Returns
Stride in bytes.

Definition at line 59 of file Convert.cpp.

◆ GetTransform()

Transform AeonGames::GetTransform ( const TransformMsg & aTransform)

Convert a TransformMsg protobuf message to a Transform.

Parameters
aTransformThe protobuf message to convert.
Returns
The corresponding Transform value.

Definition at line 82 of file ProtoBufUtils.cpp.

◆ GetUniformBufferSize()

size_t AeonGames::GetUniformBufferSize ( const PipelineMsg & aPipelineMsg)

Calculate the uniform buffer size required by a pipeline.

Parameters
aPipelineMsgThe pipeline message to query.
Returns
Size in bytes of the uniform buffer.

◆ GetUniformValuePointer()

const void * AeonGames::GetUniformValuePointer ( const Material::UniformValue & aValue)

Get a pointer to the raw data of a uniform value.

Parameters
aValueThe uniform value variant.
Returns
Pointer to the value's underlying data.

Definition at line 162 of file Material.cpp.

◆ GetUniformValueSize()

size_t AeonGames::GetUniformValueSize ( const Material::UniformValue & aValue)

Get the byte size of a uniform value.

Parameters
aValueThe uniform value variant.
Returns
Size in bytes.

Definition at line 154 of file Material.cpp.

◆ GetVector3()

Vector3 AeonGames::GetVector3 ( const Vector3Msg & aVector3)

Convert a Vector3Msg protobuf message to a Vector3.

Parameters
aVector3The protobuf message to convert.
Returns
The corresponding Vector3 value.

Definition at line 73 of file ProtoBufUtils.cpp.

◆ GetVertexBufferRegexPattern()

std::string AeonGames::GetVertexBufferRegexPattern ( const MeshMsg & aMeshMsg)

Build a regex pattern string matching a single vertex.

Parameters
aMeshMsgMesh message describing vertex attributes.
Returns
Regex pattern string.

Definition at line 93 of file Convert.cpp.

◆ GetVulkanResultString()

const char * AeonGames::GetVulkanResultString ( VkResult aResult)

Convert a VkResult code to a human-readable string.

Definition at line 23 of file VulkanUtilities.cpp.

◆ InitializeGlobalEnvironment()

bool AeonGames::InitializeGlobalEnvironment ( int argc = 0,
char * argv[] = nullptr )

Initialize the global engine environment.

Parameters
argcNumber of command-line arguments.
argvArray of command-line argument strings.
Returns
true if initialization succeeded, false otherwise.

Definition at line 150 of file AeonEngine.cpp.

◆ Interpolate()

const Transform AeonGames::Interpolate ( const Transform & aTransform0,
const Transform & aTransform1,
const Transform & aTransform2,
const Transform & aTransform3,
double aInterpolation )

Interpolate transforms using spline and mlerp methods.

Definition at line 216 of file Transform.cpp.

◆ LerpQuats()

const Quaternion AeonGames::LerpQuats ( const Quaternion & q1,
const Quaternion & q2,
double interpolation )

Linearly interpolate between two quaternions.

Each element is interpolated as v' = v1+((v2-v1)*interpolation). The out parameter may be the same as either q1 or q2 in which case the values are overwritten.

Parameters
q1[in] Origin quaternion.
q2[in] Destination quaternion.
interpolation[in] Interpolation factor.

Definition at line 155 of file Quaternion.cpp.

◆ LoadFromProtoBufObject()

template<class T, class U, uint64_t Magick>
void AeonGames::LoadFromProtoBufObject ( T & aTarget,
const void * aBuffer,
size_t aBufferSize )

Loads a Protocol Buffer message from a buffer and populates a target object.

Deserializes a Protocol Buffer message of type U from the given buffer, then calls LoadFromPBMsg on aTarget to populate it. Uses a static buffer protected by a mutex to reduce repeated allocations.

Template Parameters
TTarget type that implements LoadFromPBMsg(const U&).
UProtocol Buffer message type.
MagickMagic number identifying the buffer format.
Parameters
aTargetReference to the target object to populate.
aBufferPointer to the start of the buffer.
aBufferSizeSize of the buffer in bytes.

Definition at line 229 of file ProtoBufHelpers.hpp.

◆ LoadOpenGLAPI()

bool AeonGames::LoadOpenGLAPI ( )

Load all OpenGL function pointers and log driver information.

Definition at line 66 of file OpenGLFunctions.cpp.

◆ LoadProtoBufObject() [1/4]

template<class T>
T AeonGames::LoadProtoBufObject ( const std::string & aFilename,
uint64_t aMagick )

Loads a Protocol Buffer Object from an AeonGames file.

Parameters
aFilenamePath to file to load object from.
aMagickExpected format of the file represented by its magick number.
Returns
A fully loaded protocol buffer object.
Note
This version is meant to take advantage of RVO, which should be useful when the object is meant to be persistent.

Definition at line 209 of file ProtoBufHelpers.hpp.

◆ LoadProtoBufObject() [2/4]

template<class T>
T AeonGames::LoadProtoBufObject ( const void * aData,
size_t aSize,
uint64_t aMagick )

Loads a Protocol Buffer Object from a memory buffer.

Parameters
aDataPointer to the start of the buffer.
aSizesize of the provided buffer.
aMagickExpected format of the file represented by its magick number.
Returns
A fully loaded protocol buffer object.
Note
This version is meant to take advantage of RVO, which should be useful when the object is meant to be persistent.

Definition at line 169 of file ProtoBufHelpers.hpp.

◆ LoadProtoBufObject() [3/4]

template<class T>
void AeonGames::LoadProtoBufObject ( T & t,
const std::string & aFilename,
uint64_t aMagick )

Loads a Protocol Buffer Object from an AeonGames file into the provided reference.

Parameters
tReference to the object to be loaded with the file data.
aFilenamePath to file to load object from.
aMagickExpected format of the file represented by its magick number.
Note
ProtoBuf objects require dynamic memory and if those objects get constantly destroyed and recreated, the allocations and deallocations may slow down the system so for temporary objects it may be better to use a static variable which gets loaded by reference and then explicitly unloaded, thus reusing its memory cache. However, I have not yet confirmed or denied this as true, the RVO version may be the only one needed.

Definition at line 186 of file ProtoBufHelpers.hpp.

◆ LoadProtoBufObject() [4/4]

template<class T>
void AeonGames::LoadProtoBufObject ( T & t,
const void * aData,
size_t aSize,
uint64_t aMagick )

Loads a Protocol Buffer Object from a meory buffer into the provided reference.

Parameters
tReference to the object to be loaded with the file data.
aDataPointer to the start of the buffer.
aSizesize of the provided buffer.
aMagickExpected format of the file represented by its magick number.
Note
ProtoBuf objects require dynamic memory and if those objects get constantly destroyed and recreated, the allocations and deallocations may slow down the system so for temporary objects it may be better to use a static variable which gets loaded by reference and then explicitly unloaded, thus reusing its memory cache. However, I have not yet confirmed or denied this as true, the RVO version may be the only one needed.

Definition at line 125 of file ProtoBufHelpers.hpp.

◆ LoadResource() [1/2]

void AeonGames::LoadResource ( const std::string & aFileName,
void * buffer,
size_t buffer_size )

Loads a specific resource referenced by its path into the provided buffer.

Definition at line 364 of file AeonEngine.cpp.

◆ LoadResource() [2/2]

void AeonGames::LoadResource ( uint32_t crc,
void * buffer,
size_t buffer_size )

Loads a specific resource referenced by its CRC into the provided buffer.

Definition at line 350 of file AeonEngine.cpp.

◆ LoopTraverseDFSPreOrder()

AeonGames::LoopTraverseDFSPreOrder ( const )

Const version generated by LoopTraverseDFSPreOrder macro.

Non-const version generated by LoopTraverseDFSPreOrder macro.

Definition at line 450 of file Node.cpp.

◆ MakeUniqueAny()

template<typename T, typename... Ts>
UniqueAnyPtr AeonGames::MakeUniqueAny ( Ts &&... params)

Creates a UniqueAnyPtr owning a new instance of T.

Template Parameters
TThe type to construct.
TsConstructor argument types.
Parameters
paramsArguments forwarded to the T constructor.
Returns
A UniqueAnyPtr owning the newly created object.

Definition at line 272 of file UniqueAnyPtr.hpp.

◆ NlerpQuats()

const Quaternion AeonGames::NlerpQuats ( const Quaternion & q1,
const Quaternion & q2,
double interpolation )

Linearly interpolate between two quaternions return the normalized result.

Each element is interpolated as v' = v1+((v2-v1)*interpolation). The out parameter may be the same as either q1 or q2 in which case the values are overwritten.

Parameters
q1[in] Origin quaternion.
q2[in] Destination quaternion.
interpolation[in] Interpolation factor.

Definition at line 174 of file Quaternion.cpp.

◆ Normalize()

const Vector3 AeonGames::Normalize ( const Vector3 & aVector)

Return a normalized (unit length) copy of the vector.

Parameters
aVectorVector to normalize.
Returns
Normalized vector.

Definition at line 257 of file Vector3.cpp.

◆ operator!=() [1/2]

bool AeonGames::operator!= ( const Vector3 & aLhs,
const Vector3 & aRhs )

Inequality comparison operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
true if the vectors are not equal.

Definition at line 239 of file Vector3.cpp.

◆ operator!=() [2/2]

bool AeonGames::operator!= ( const VkDescriptorSetLayoutBinding & a,
const SpvReflectDescriptorBinding & b )

Compare a VkDescriptorSetLayoutBinding with a SpvReflectDescriptorBinding for inequality.

Definition at line 144 of file VulkanPipeline.cpp.

◆ operator""_gb()

const std::size_t AeonGames::operator""_gb ( unsigned long long int aGigaBytes)
constexpr

User-defined literal for gigabytes.

Parameters
aGigaBytesValue in gigabytes.
Returns
Value in bytes.

Definition at line 44 of file MemoryPool.hpp.

◆ operator""_kb()

const std::size_t AeonGames::operator""_kb ( unsigned long long int aKyloBytes)
constexpr

User-defined literal for kilobytes.

Parameters
aKyloBytesValue in kilobytes.
Returns
Value in bytes.

Definition at line 28 of file MemoryPool.hpp.

◆ operator""_mb()

const std::size_t AeonGames::operator""_mb ( unsigned long long int aMegaBytes)
constexpr

User-defined literal for megabytes.

Parameters
aMegaBytesValue in megabytes.
Returns
Value in bytes.

Definition at line 36 of file MemoryPool.hpp.

◆ operator""_mgk()

uint64_t AeonGames::operator""_mgk ( const char * literal,
const std::size_t  )
constexprnoexcept

User-defined literal operator that converts an 8-character string to a uint64_t magic number.

Parameters
literalThe string literal to convert (must be exactly 8 characters).
Returns
A uint64_t value representing the magic number in little-endian byte order.
Todo
add support for Big Endian

Definition at line 41 of file ProtoBufHelpers.hpp.

◆ operator*() [1/11]

const Vector3 AeonGames::operator* ( const float aLhs,
const Vector3 & aRhs )

Scalar multiplication operator (scalar * vector).

Parameters
aLhsScalar operand.
aRhsVector operand.
Returns
Scaled vector.

Definition at line 226 of file Vector3.cpp.

◆ operator*() [2/11]

const Matrix3x3 AeonGames::operator* ( const Matrix3x3 & lhs,
const Matrix3x3 & rhs )

Multiplies two 3x3 matrices. Multiplies two 3x3 matrices.

Parameters
lhs[in] left side matrix.
rhs[in] right side matrix.
Returns
The resulting matrix.
Note
Since the matrices are stored in column mayor order, this is post multiplication.

Definition at line 120 of file Matrix3x3.cpp.

◆ operator*() [3/11]

const Vector3 AeonGames::operator* ( const Matrix3x3 & lhs,
const Vector3 & rhs )

Multiply a 3x3 matrix by a 3D vector.

Parameters
lhsThe matrix.
rhsThe vector.
Returns
The transformed vector.

Definition at line 128 of file Matrix3x3.cpp.

◆ operator*() [4/11]

const Matrix4x4 AeonGames::operator* ( const Matrix4x4 & lhs,
const Matrix4x4 & rhs )

Multiplies two 4x4 matrices. Multiplies two 4x4 matrices.

Parameters
lhs[in] left side matrix.
rhs[in] right side matrix.
Returns
The resulting matrix.
Note
Since the matrices are stored in column mayor order, this is post multiplication.

Definition at line 203 of file Matrix4x4.cpp.

◆ operator*() [5/11]

const Vector3 AeonGames::operator* ( const Matrix4x4 & lhs,
const Vector3 & rhs )

Multiply a 4x4 matrix by a 3D vector.

Parameters
lhsThe matrix.
rhsThe vector.
Returns
The transformed vector.

Definition at line 211 of file Matrix4x4.cpp.

◆ operator*() [6/11]

const Quaternion AeonGames::operator* ( const Quaternion & lhs,
const Quaternion & rhs )

Multiply two quaternions.

Parameters
lhsLeft-hand side quaternion.
rhsRight-hand side quaternion.
Returns
The product quaternion.

Definition at line 126 of file Quaternion.cpp.

◆ operator*() [7/11]

const Vector3 AeonGames::operator* ( const Quaternion & lhs,
const Vector3 & rhs )

Rotate a 3D vector by a quaternion.

Parameters
lhsThe quaternion representing the rotation.
rhsThe vector to rotate.
Returns
The rotated vector.

Definition at line 131 of file Quaternion.cpp.

◆ operator*() [8/11]

const AABB AeonGames::operator* ( const Transform & lhs,
const AABB & rhs )

Transform an axis-aligned bounding box.

Parameters
lhsThe transform to apply.
rhsThe AABB to transform.
Returns
The transformed AABB.
Note
Based on Real Time Collision Detection 4.2.6

Definition at line 198 of file Transform.cpp.

◆ operator*() [9/11]

const Transform AeonGames::operator* ( const Transform & lhs,
const Transform & rhs )

Combine two transforms.

Parameters
lhsLeft-hand side transform.
rhsRight-hand side transform.
Returns
The combined transform.

Definition at line 190 of file Transform.cpp.

◆ operator*() [10/11]

const Vector3 AeonGames::operator* ( const Vector3 & aLhs,
const float aRhs )

Scalar multiplication operator (vector * scalar).

Parameters
aLhsVector operand.
aRhsScalar operand.
Returns
Scaled vector.

Definition at line 210 of file Vector3.cpp.

◆ operator*() [11/11]

const Vector3 AeonGames::operator* ( const Vector3 & aLhs,
const Vector3 & aRhs )

Component-wise multiplication operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
Component-wise product of the two vectors.

Definition at line 234 of file Vector3.cpp.

◆ operator+()

const Vector3 AeonGames::operator+ ( const Vector3 & aLhs,
const Vector3 & aRhs )

Addition operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
Resulting vector (aLhs + aRhs).

Definition at line 173 of file Vector3.cpp.

◆ operator-()

const Vector3 AeonGames::operator- ( const Vector3 & aLhs,
const Vector3 & aRhs )

Subtraction operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
Resulting vector (aLhs - aRhs).

Definition at line 158 of file Vector3.cpp.

◆ operator/()

const Vector3 AeonGames::operator/ ( const Vector3 & aLhs,
const float aRhs )

Scalar division operator.

Parameters
aLhsVector operand.
aRhsScalar divisor.
Returns
Resulting vector.

Definition at line 218 of file Vector3.cpp.

◆ operator<<() [1/2]

std::ostream & AeonGames::operator<< ( std::ostream & os,
const Matrix4x4 & aMatrix )

Stream output operator for a 4x4 matrix.

Parameters
osThe output stream.
aMatrixThe matrix to output.
Returns
Reference to the output stream.

Definition at line 249 of file Matrix4x4.cpp.

◆ operator<<() [2/2]

std::ostream & AeonGames::operator<< ( std::ostream & os,
LogLevel level )
inline

Inserts a color-coded log level tag into an output stream.

Parameters
osThe output stream.
levelThe log level to format.
Returns
Reference to the output stream.

Definition at line 40 of file LogLevel.hpp.

◆ operator==() [1/7]

const bool AeonGames::operator== ( const Matrix3x3 & lhs,
const Matrix3x3 & rhs )

Compare two 3x3 matrices for equality.

Parameters
lhsLeft-hand side matrix.
rhsRight-hand side matrix.
Returns
True if the matrices are equal.

Definition at line 138 of file Matrix3x3.cpp.

◆ operator==() [2/7]

const bool AeonGames::operator== ( const Matrix4x4 & lhs,
const Matrix4x4 & rhs )

Compare two 4x4 matrices for equality.

Parameters
lhsLeft-hand side matrix.
rhsRight-hand side matrix.
Returns
True if the matrices are equal.

Definition at line 221 of file Matrix4x4.cpp.

◆ operator==() [3/7]

bool AeonGames::operator== ( const Quaternion & lhs,
const Quaternion & rhs )

Compare two quaternions for equality.

Parameters
lhsLeft-hand side quaternion.
rhsRight-hand side quaternion.
Returns
True if the quaternions are equal.

Definition at line 146 of file Quaternion.cpp.

◆ operator==() [4/7]

const bool AeonGames::operator== ( const Transform & lhs,
const Transform & rhs )

Compare two transforms for equality.

Parameters
lhsLeft-hand side transform.
rhsRight-hand side transform.
Returns
True if the transforms are equal.

Definition at line 209 of file Transform.cpp.

◆ operator==() [5/7]

bool AeonGames::operator== ( const Vector2 & aLhs,
const Vector2 & aRhs )

Equality comparison operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
true if both vectors are equal.

Definition at line 54 of file Vector2.cpp.

◆ operator==() [6/7]

bool AeonGames::operator== ( const Vector3 & aLhs,
const Vector3 & aRhs )

Equality comparison operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
true if both vectors are equal.

Definition at line 244 of file Vector3.cpp.

◆ operator==() [7/7]

bool AeonGames::operator== ( const Vector4 & aLhs,
const Vector4 & aRhs )

Equality comparison operator.

Parameters
aLhsLeft-hand side vector.
aRhsRight-hand side vector.
Returns
true if both vectors are equal.

Definition at line 67 of file Vector4.cpp.

◆ Parse()

template<class T>
size_t AeonGames::Parse ( size_t index,
const std::smatch & match_results,
std::string & vertex_buffer,
size_t count )

Parse attribute values from regex match results into a vertex buffer string.

Template Parameters
TData type of the attribute values.
Parameters
indexStarting index into match_results.
match_resultsRegex match results containing the values.
vertex_bufferOutput buffer to append to.
countNumber of values to parse.
Returns
Updated index past the parsed values.

Definition at line 288 of file Convert.cpp.

◆ ParseIndexBuffer()

std::string AeonGames::ParseIndexBuffer ( const MeshMsg & aMeshMsg)

Parse an index buffer from a mesh message.

Parameters
aMeshMsgMesh message containing index data.
Returns
Binary index buffer string.

Definition at line 378 of file Convert.cpp.

◆ ParseVertexBuffer()

std::string AeonGames::ParseVertexBuffer ( const MeshMsg & aMeshMsg)

todo implement

todo implement

Definition at line 314 of file Convert.cpp.

◆ popcount()

uint32_t AeonGames::popcount ( uint32_t v)
constexpr

Count the number of set bits in a 32-bit unsigned integer.

Parameters
vThe value whose bits to count.
Returns
The number of bits set to 1.

Definition at line 116 of file Utilities.hpp.

◆ Print()

template<class T>
const uint8_t * AeonGames::Print ( const uint8_t * cursor,
std::ostringstream & stream,
uint32_t count )

Print vertex attribute values from a raw byte cursor.

Template Parameters
TData type of the attribute values.
Parameters
cursorPointer to the current position in the buffer.
streamOutput string stream.
countNumber of elements to print.
Returns
Updated cursor position past the printed elements.

Definition at line 152 of file Convert.cpp.

◆ ProcessOpts()

void AeonGames::ProcessOpts ( int argc,
char * argv[],
const OptionHandler * aOptionHandler,
size_t aOptionHandlerCount )

Process command-line options.

Parameters
argcArgument count.
argvArgument values.
aOptionHandlerArray of OptionHandler objects.
aOptionHandlerCountNumber of handlers in the array.

Definition at line 67 of file Utilities.cpp.

◆ PropertyToKeyValue()

Material::UniformKeyValue AeonGames::PropertyToKeyValue ( const PropertyMsg & aProperty)

Convert a PropertyMsg to a Material uniform key-value pair.

Parameters
aPropertyThe property message to convert.
Returns
A key-value pair suitable for Material uniform data.

Definition at line 162 of file ProtoBufUtils.cpp.

◆ RegisterConstructor()

template<class T, typename... Types>
bool AeonGames::RegisterConstructor ( const StringId & aIdentifier,
const std::function< std::unique_ptr< T >(Types... args) > & aConstructor )

Free function template that registers a constructor.

Definition at line 234 of file Factory.h.

◆ RegisterImageDecoder()

bool AeonGames::RegisterImageDecoder ( const std::string & aMagick,
const std::function< bool(Texture &, size_t, const void *) > & aDecoder )

Registers an image decoder for a specific file magic identifier.

Parameters
aMagickMagic bytes or identifier string for the image format.
aDecoderCallback function that decodes image data into a Texture.
Returns
True if the decoder was registered successfully.

Definition at line 26 of file Texture.cpp.

◆ RegisterResourceConstructor()

bool AeonGames::RegisterResourceConstructor ( uint32_t aType,
const std::function< UniqueAnyPtr(uint32_t) > & aConstructor,
UniqueAnyPtr && aDefaultResource = nullptr )

Register a constructor for a resource type.

Parameters
aTypeThe resource type identifier.
aConstructorCallable that constructs the resource given a type.
aDefaultResourceOptional default resource instance.
Returns
True if registration succeeded.

Definition at line 39 of file ResourceFactory.cpp.

◆ RegisterSoundDecoder()

bool AeonGames::RegisterSoundDecoder ( const std::string & aMagick,
const std::function< bool(Sound &, size_t, const void *) > & aDecoder )

Register a sound decoder for the given magic identifier.

Parameters
aMagickMagic string that identifies the sound format.
aDecoderCallable that decodes raw data into a Sound object.
Returns
true if registration succeeded, false otherwise.

Definition at line 25 of file Sound.cpp.

◆ SetResourcePath()

void AeonGames::SetResourcePath ( const std::vector< std::string > & aPath)

Set the list of resource search paths.

Parameters
aPathA vector of directory paths to use for resource lookup.

Definition at line 293 of file AeonEngine.cpp.

◆ SetSpinboxEditorValue()

template<class T>
void AeonGames::SetSpinboxEditorValue ( QWidget * editor,
const QVariant & value )

Set the value of a QSpinBox editor from a QVariant.

Template Parameters
TNumeric type to extract from the variant.
Parameters
editorThe spinbox widget.
valueThe value to set.

Definition at line 55 of file PropertyDelegate.cpp.

◆ SetSpinboxModelData()

template<class T>
void AeonGames::SetSpinboxModelData ( QWidget * editor,
QAbstractItemModel * model,
const QModelIndex & index )

Commit a QSpinBox editor value to the item model.

Template Parameters
TNumeric type to store in the model.
Parameters
editorThe spinbox widget.
modelThe item model.
indexThe model index to update.

Definition at line 66 of file PropertyDelegate.cpp.

◆ SlerpQuats()

const Quaternion AeonGames::SlerpQuats ( const Quaternion & q1,
const Quaternion & q2,
float interpolation )

Spherical Linear interpolation between two quaternions.

Parameters
q1[in] Origin quaternion.
q2[in] Destination quaternion.
interpolation[in] Interpolation factor.

Definition at line 179 of file Quaternion.cpp.

◆ Spline()

const Vector3 AeonGames::Spline ( const Vector3 & p0,
const Vector3 & p1,
const Vector3 & p2,
const Vector3 & p3,
double interpolation )

Catmull-Rom spline interpolation between four control points.

Parameters
p0First control point.
p1Second control point (start of segment).
p2Third control point (end of segment).
p3Fourth control point.
interpolationInterpolation parameter in [0,1].
Returns
Interpolated vector on the spline.

Definition at line 275 of file Vector3.cpp.

◆ StoreResource()

const UniqueAnyPtr & AeonGames::StoreResource ( uint32_t aKey,
UniqueAnyPtr && pointer )

Store a resource in the cache.

Parameters
aKeyThe key to associate with the resource.
pointerThe resource to store (moved in).
Returns
Reference to the stored resource.

Definition at line 41 of file ResourceCache.cpp.

◆ to_string()

template<class T>
std::string AeonGames::to_string ( T && t)

Generic to_string using ADL to find the best overload.

Template Parameters
TThe type of the value.
Parameters
tThe value to convert.
Returns
The string representation.

Definition at line 48 of file ToString.hpp.

◆ ToString() [1/9]

template<>
std::string AeonGames::ToString ( const double & t)

Specialization of ToString for double.

Parameters
tDouble value.
Returns
String representation.

Definition at line 106 of file ToString.hpp.

◆ ToString() [2/9]

template<>
std::string AeonGames::ToString ( const float & t)

Specialization of ToString for float.

Parameters
tFloat value.
Returns
String representation.

Definition at line 101 of file ToString.hpp.

◆ ToString() [3/9]

template<>
std::string AeonGames::ToString ( const int & t)

Specialization of ToString for int.

Parameters
tInteger value.
Returns
String representation.

Definition at line 71 of file ToString.hpp.

◆ ToString() [4/9]

template<>
std::string AeonGames::ToString ( const long & t)

Specialization of ToString for long.

Parameters
tLong value.
Returns
String representation.

Definition at line 76 of file ToString.hpp.

◆ ToString() [5/9]

template<>
std::string AeonGames::ToString ( const long long & t)

Specialization of ToString for long long.

Parameters
tLong long value.
Returns
String representation.

Definition at line 81 of file ToString.hpp.

◆ ToString() [6/9]

template<class T>
std::string AeonGames::ToString ( const T & t)

Convert an arbitrary type to its hex byte string representation.

Template Parameters
TThe type of the value.
Parameters
tThe value to convert.
Returns
Hex string of the value's bytes.

Definition at line 59 of file ToString.hpp.

◆ ToString() [7/9]

template<>
std::string AeonGames::ToString ( const unsigned & t)

Specialization of ToString for unsigned int.

Parameters
tUnsigned value.
Returns
String representation.

Definition at line 86 of file ToString.hpp.

◆ ToString() [8/9]

template<>
std::string AeonGames::ToString ( const unsigned long & t)

Specialization of ToString for unsigned long.

Parameters
tUnsigned long value.
Returns
String representation.

Definition at line 91 of file ToString.hpp.

◆ ToString() [9/9]

template<>
std::string AeonGames::ToString ( const unsigned long long & t)

Specialization of ToString for unsigned long long.

Parameters
tUnsigned long long value.
Returns
String representation.

Definition at line 96 of file ToString.hpp.

◆ UnregisterConstructor()

template<class T, typename... Types>
bool AeonGames::UnregisterConstructor ( const StringId & aIdentifier)

Free function template that unregisters a constructor.

Definition at line 241 of file Factory.h.

◆ UnregisterImageDecoder()

bool AeonGames::UnregisterImageDecoder ( const std::string & aMagick)

Unregisters a previously registered image decoder.

Parameters
aMagickMagic bytes or identifier string of the decoder to remove.
Returns
True if the decoder was found and removed.

Definition at line 31 of file Texture.cpp.

◆ UnregisterResourceConstructor()

bool AeonGames::UnregisterResourceConstructor ( uint32_t aType)

Unregister a resource constructor.

Parameters
aTypeThe resource type identifier to unregister.
Returns
True if unregistration succeeded.

Definition at line 48 of file ResourceFactory.cpp.

◆ UnregisterSoundDecoder()

bool AeonGames::UnregisterSoundDecoder ( const std::string & aMagick)

Unregister a previously registered sound decoder.

Parameters
aMagickMagic string of the decoder to remove.
Returns
true if the decoder was found and removed, false otherwise.

Definition at line 30 of file Sound.cpp.

◆ write_deflated_data()

int AeonGames::write_deflated_data ( FILE * source,
FILE * dest,
int level,
uint32_t & compressed_size )

Compress data from source file to dest file using deflate.

Parameters
sourceInput file.
destOutput file.
levelCompression level.
compressed_sizeReceives the compressed data size in bytes.
Returns
Z_OK on success or a zlib error code.

Definition at line 53 of file Pack.cpp.

Variable Documentation

◆ DeBruijnSequence

uint32_t AeonGames::DeBruijnSequence[32]
constexpr
Initial value:
=
{
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
}

De Bruijn lookup table used by ffs().

Definition at line 35 of file Utilities.hpp.

◆ FlyWeight< Key, Value >::mStore

template<class Key, class Value>
std::unordered_map<Key, FlyWeight<Key, Value>*> AeonGames::FlyWeight< Key, Value >::mStore {}

Global store mapping keys to FlyWeight instances.

Definition at line 205 of file FlyWeight.hpp.

◆ fragment_shader_code

const GLchar AeonGames::fragment_shader_code[]
Initial value:
=
R"(#version 450 core
out vec4 FragColor;
in vec2 Pos;
in vec2 TexCoords;
layout (location = 0) uniform sampler2D OverlayTexture;
void main()
{
FragColor = texture(OverlayTexture, TexCoords);
}
)"

Overlay fragment shader GLSL source code.

Definition at line 58 of file OpenGLRenderer.cpp.

◆ fragment_shader_code_ptr

const GLchar* const AeonGames::fragment_shader_code_ptr = fragment_shader_code

Pointer to the overlay fragment shader source.

Definition at line 76 of file OpenGLRenderer.cpp.

◆ fragment_shader_len

const GLint AeonGames::fragment_shader_len { sizeof(fragment_shader_code) }

Length of the overlay fragment shader source.

Definition at line 74 of file OpenGLRenderer.cpp.

◆ gOptionHandlers

const std::array<OptionHandler, 1> AeonGames::gOptionHandlers
Initial value:
{
'c',
"config",
[] ( const char* aArgument, void* aUserData ) -> void {
if ( aArgument )
{
std::cout << LogLevel::Info << "Reading Configuration from " << aArgument << std::endl;
gConfigFile = aArgument;
}}
}
}
Command-line option handler.
@ Info
General informational messages.
Definition LogLevel.hpp:30

Array of command-line option handlers.

Definition at line 136 of file AeonEngine.cpp.

◆ ShaderTypeToEShLanguage

std::array<EShLanguage, ShaderType::COUNT> AeonGames::ShaderTypeToEShLanguage
Initial value:
{
EShLanguage::EShLangVertex,
EShLanguage::EShLangFragment,
EShLanguage::EShLangCompute,
EShLanguage::EShLangTessControl,
EShLanguage::EShLangTessEvaluation,
EShLanguage::EShLangGeometry
}

Mapping from ShaderType to glslang EShLanguage.

Definition at line 165 of file VulkanPipeline.cpp.

◆ ShaderTypeToExtension

const std::unordered_map<const char*, std::function<std::string * ( PipelineMsg* ) > > AeonGames::ShaderTypeToExtension
Initial value:
{
{ ".vert", &PipelineMsg::mutable_vert },
{ ".frag", &PipelineMsg::mutable_frag },
{ ".comp", &PipelineMsg::mutable_comp },
{ ".tesc", &PipelineMsg::mutable_tesc },
{ ".tese", &PipelineMsg::mutable_tese },
{ ".geom", &PipelineMsg::mutable_geom }
}

Map from shader file extension to its mutable PipelineMsg accessor.

Definition at line 98 of file PipelineTool.cpp.

◆ ShaderTypeToGetter

const std::unordered_map<const char*, std::function<const std::string& ( const PipelineMsg* ) > > AeonGames::ShaderTypeToGetter
Initial value:
{
{ ".vert", &PipelineMsg::vert },
{ ".frag", &PipelineMsg::frag },
{ ".comp", &PipelineMsg::comp },
{ ".tesc", &PipelineMsg::tesc },
{ ".tese", &PipelineMsg::tese },
{ ".geom", &PipelineMsg::geom }
}

Map from shader file extension to its const PipelineMsg getter.

Definition at line 109 of file PipelineTool.cpp.

◆ ShaderTypeToShaderStageFlagBit

std::array<VkShaderStageFlagBits, ShaderType::COUNT> AeonGames::ShaderTypeToShaderStageFlagBit
Initial value:
{
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_FRAGMENT_BIT,
VK_SHADER_STAGE_COMPUTE_BIT,
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT
}

Mapping from ShaderType to VkShaderStageFlagBits.

Definition at line 176 of file VulkanPipeline.cpp.

◆ ShaderTypeToString

const std::unordered_map<ShaderType, const char*> AeonGames::ShaderTypeToString
Initial value:
{
{ VERT, "vertex" },
{ FRAG, "fragment" },
{ COMP, "compute" },
{ TESC, "tessellation control" },
{ TESE, "tessellation evaluation" },
{ GEOM, "geometry" }
}
@ VERT
Vertex shader.
Definition Pipeline.hpp:97
@ FRAG
Fragment shader.
Definition Pipeline.hpp:98
@ GEOM
Geometry shader.
Definition Pipeline.hpp:102
@ TESC
Tessellation control shader.
Definition Pipeline.hpp:100
@ TESE
Tessellation evaluation shader.
Definition Pipeline.hpp:101
@ COMP
Compute shader.
Definition Pipeline.hpp:99

Map from ShaderType enum values to human-readable string names.

Definition at line 107 of file Pipeline.hpp.

◆ vertex_shader_code

const GLchar AeonGames::vertex_shader_code[]
Initial value:
=
R"(#version 450 core
layout (location = 0) in vec2 aPos;
layout (location = 1) in vec2 aTexCoords;
out vec2 Pos;
out vec2 TexCoords;
void main()
{
gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0);
Pos = aPos;
TexCoords = aTexCoords;
}
)"

Overlay vertex shader GLSL source code.

Definition at line 37 of file OpenGLRenderer.cpp.

◆ vertex_shader_code_ptr

const GLchar* const AeonGames::vertex_shader_code_ptr = vertex_shader_code

Pointer to the overlay vertex shader source.

Definition at line 55 of file OpenGLRenderer.cpp.

◆ vertex_shader_len

const GLint AeonGames::vertex_shader_len { sizeof(vertex_shader_code) }

Length of the overlay vertex shader source.

Definition at line 53 of file OpenGLRenderer.cpp.

◆ vertex_size

GLuint AeonGames::vertex_size {sizeof(vertices)}
constexpr

Total byte size of the overlay vertex data.

Definition at line 87 of file OpenGLRenderer.cpp.

◆ vertices

const float AeonGames::vertices[]
Initial value:
= {
-1.0f, 1.0f, 0.0f, 1.0f,
-1.0f, -1.0f, 0.0f, 0.0f,
1.0f, -1.0f, 1.0f, 0.0f,
1.0f, 1.0f, 1.0f, 1.0f
}

Overlay screen-quad vertex data (positions and texture coordinates).

Definition at line 79 of file OpenGLRenderer.cpp.