Overview
A set of static libraries were developed in Visual Studio using C++ language. The libraries were created to encapsulate core functionality for the Game Engine.
Highlights
File
A simple library that wraps around the native Windows I/O functions for speed and usability. Has added scoped enumerated types for defining parameters; and the library also handles file validity and interprets Windows file errors.
A simple library that wraps around the native Windows I/O functions for speed and usability. Has added scoped enumerated types for defining parameters; and the library also handles file validity and interprets Windows file errors.
PCS Tree
Uses a component-based design for organizing objects in a tree-like structure. Every node has a pointer to a parent, next and previous sibling, and one or more children. The Library has a forward and reverse iterator that traverses the structure in a depth-first manner. The structure has a small memory footprint; and performs add or remove operations in constant time.
Uses a component-based design for organizing objects in a tree-like structure. Every node has a pointer to a parent, next and previous sibling, and one or more children. The Library has a forward and reverse iterator that traverses the structure in a depth-first manner. The structure has a small memory footprint; and performs add or remove operations in constant time.
Management
The base for this library was pulled from previous C# project (Space Invaders) and adapted for C++. The library allows for object pooling to increase data reuse and decrease the creation or destruction of complex objects. It also provides a way to track objects such as number of objects active or total number of objects active during the program's lifetime.
The base for this library was pulled from previous C# project (Space Invaders) and adapted for C++. The library allows for object pooling to increase data reuse and decrease the creation or destruction of complex objects. It also provides a way to track objects such as number of objects active or total number of objects active during the program's lifetime.
The library has a class for a Resource Manager, and a Resource Pool as either a doubly or singly linked list. For any object you want to pool, the object type needs to be derived from the Resource Pool base class. A corresponding Object Manager needs to be derived from the Resource Manager base class. The Resource Manager serves as a template on what operations can be performed on a Resource Pool. Note, resource adds default to adding to the front of a list, and thus are constant time, O(1). Removing a resource can also be constant time if supplied with a reference.
Math
Supports essential operations on 3D/4D vectors, 3x3 and 4x4 matrices, and quaternions. The library supports conversions between matrices and quaternions. It utilizes const correctness to avoid collision with other frameworks. Accessors and nameless unions allow for data to be accessed in an array-like fashion or by function call. The data is also __m128 typed for compatibility with SIMD operations.
Supports essential operations on 3D/4D vectors, 3x3 and 4x4 matrices, and quaternions. The library supports conversions between matrices and quaternions. It utilizes const correctness to avoid collision with other frameworks. Accessors and nameless unions allow for data to be accessed in an array-like fashion or by function call. The data is also __m128 typed for compatibility with SIMD operations.
The library also has an application layer which handles Linear (LERP) and Spherical Linear Interpolation (SLERP) on a single element or an array of elements. Because the library was built in layers, its easily extensible if more functionality is required.
Documentation