Minutiae Simulation Engine
Represents an entity's attempt to mutate the state of itself, another entity, or a cell. These are returned as the result of an entity's transformation function and are run through the universe's simulation engine and applied according to the rules set up there.
Declares a single cell of the universe. Each cell has a coordinate that is made up of two unsigned integers and represents its offset from the top left of the universe. All cells are one variant of a single Enum that represents all possible variants and states that a cell can take on.
Declares container types that are used to provide abstracted access to data strucures within a universe.
Executes the simulation, driving progress forward by repeatedly calling the engine's
This is the core of the simulation. It manages the various aspects of keeping track of the universe's state and the state of all its cells and entities. It drives the simulation forward by applying transformations of the cells and processing actions of the entities sequentially.
These units reside in the a grid separate from the main universe but have the power to directly interact both with it and with other entities. They are the smallest units of discrete control in the simulation and are the only things that are capable of mutating any aspect of the world outside of the simulation engine itself.
Populates the world with an initial collection of cells and entities
Utility module for re-exporting some commonly used traits
Declares the universe in which all parts of the system reside. ItThe universe is represented by a square two-dimensional array of cells. The universe has a set view distance which determines what range cells and entities have information about their neighbors; a view distance of 0 means they only have knowledge of their own state, a view distance of 1 means that they have knowledge of all neighbors touching them (including diagonals), etc.
General-purpose utility functions