Core Libraries v.1

These are libraries I developed years upon years ago as a framework for most my applications. As my programming has progressed these have changed over the years. Sometimes greatly. However, considering the large number of projects I run through and how easily they slip away from my attention and interest, the projects are not always up to date with the libraries. I will try to test all posted code to ensure it is compatible with the required libraries posted here, however don't be surprised if something is broken.

One great mistake I made when developing the framework was to make it very proprietary. Where the traditional method is to require the individual program to load and unload the library, mine worked the other way around. The underlying system library, M_System3D, would make three external calls: construction, update, and destruction. While this kept development incredibly simplified, it also kept it very rigid. I could not easily design applications with varying system-based parameters without going in and modifying the entire structure. I also developed most of this as I was learning how to use C++ classes. For that reason it is very messy.

The libraries are statically linked to the other projects. For compilation's sake, these are to be placed in directories parallel to the other projects. So if you are compiling abc/CSpace, you would put each library in abc/M_WhicheverLibrary

These libraries were developed while I was learning C++ and OpenGL. That's my warning to you all of why their quality is what it is. I've considered revamping them, and have, but have not yet settled upon a design style I like best.

M_System3D

This was my system interface library. It contains code for handling several functions such as Windows, OpenGL, keyboard, mouse, timing, and error handling.

Download the Source Code : M_System3D-src.zip

M_Math3D

This was my mathematics library. It contains support for 3x3 matrices, quaternions, and 3-vectors. Far from the most flexible library. If I could I would completely replace this library. I did that once years ago and had to recode hundreds of lines of code to keep my other projects up to date. This was before I learned of revision control software. I wish I had thought to make the new library separate of the old. Oh well.

Download the Source Code : M_Math3D-src.zip

M_Foundation

This was my 'system-independent' collection of functions and classes. It really wasn't very system-independent, but that was my goal. My original intention was to separate all windows-specific code into M_System3D and all non-windows-specific code into M_Foundation. I later came to desire separating all my OpenGL-dependent and non-OpenGL-dependent code, but sadly did not do so. This library contains a few nifty classes, such as a console and console variables, a camera, a generic OpenGL texture loader, an a generic non-OpenGL image class (which I never finished), some diamond-square fractal generation and 2D Perlin noise generation functions. It also has an OpenGL extension system, critical section code, and a very poorly coded linked list class.

Download the Source Code : M_Foundation-src.zip

Source Code Dependencies: M_System3D, M_Math3D

M_Menu

This is an incredibly simple menu system which I copied between so many projects that I decided it should become its own library. Ironically the library was never ever used.

Download the Source Code : M_Menu-src.zip

Source Code Dependencies: M_System3D, M_Math3D, M_Foundation

M_Script

A scripting language I wrote. I meant to eventually implement it through the console system of in the foundation library. The language somewhat revolves around C, and was greatly inspired by all the QuakeC coding I used to do. There is no dynamic allocation whatsoever: everything operates on the stack. After learning JavaScript I've been impressed enough ( as the developer of Mozilla were I'd imagine ) to push myself to recode a second script library with a similar-styled object-oriented language. That's still in the works.

Download the Source Code : M_Script-src.zip

M_CDPlayer

This is a very simple interface to the CD player code found in the system library. I wrote it in a way that, via the foundation classes, I could plug it into any other application that I created. I only did so twice: Once in my stand-alone CD player, and once in my Asteroids3D project.

Download the Source Code : M_CDPlayer-src.zip

Source Code Dependencies: M_System3D, M_Math3D, M_Foundation

M_Physics

A rigid body physics simulation library. I never managed to get resting collision stability working. This is what kept me from ever implementing the library any further than the test suites.

Download the Source Code : M_Physics-src.zip

Source Code Dependencies: M_Math3D

M_Particle

Very simple billboard rendering system. Very simple Euler integration. Nothing like force functions or strange attractors (like Oni's has). Nothing fancy. No billboard hardware support. I only had a GeForce2MX when I made this. Varying OpenGL blending effects. Z-sorted via binary tree for correct blending. Used only with a small handful of projects.

Download the Source Code : M_Particle-src.zip

Source Code Dependencies: M_System3D, M_Math3D, M_Foundation