Skip to content

Releases: dasmig/entity-generator

v1.1.2 - Documentation

12 Apr 03:53

Choose a tag to compare

Changed

  • Update Doxyfile PROJECT_NUMBER to match release
  • Set Doxyfile PROJECT_LOGO for documentation branding
  • Rename LICENSE to LICENSE.MIT and fix copyright years (2020-2026)
  • Standardize .clang-tidy to match sibling configuration
  • Fix README CI badge URL

Added

  • Python and additional OS entries in .gitignore
  • Related Libraries section in README linking all sibling generators

Full Changelog

v1.1.1...v1.1.2

v1.1.1 — Documentation

05 Apr 02:11

Choose a tag to compare

Entity Generator v1.1.1

Documentation

  • Doxygen API Reference — All public APIs across entitygen.hpp, stats_observer.hpp, entt_adapter.hpp, and flecs_adapter.hpp now have full Doxygen documentation (@brief, @param, @return, @throws, @tparam, @see).
  • GitHub Pages — API reference is automatically built and deployed to dasmig.github.io/entity-generator on every push to main.
  • doxygen-awesome-css v2.4.2 — Modern theme for the generated API docs.
  • Usage Guide — Added eg::has(key), stats_observer::report(), operator<< examples, and a complete Error Reference table.
  • README — Added CI status, C++23, header-only, platform, and documentation badges. Added navigation bar linking API Reference, Usage Guide, and Releases.

CI

  • New Build documentation step verifies Doxygen parses without warnings on every push and PR.
  • New deploy-docs job deploys generated HTML to GitHub Pages on pushes to main.

Internal

  • Replaced /*param*/ with [[maybe_unused]] in observer and component base class virtuals for Doxygen compatibility.
  • Added Doxyfile and make docs target.
  • Added doc/api/ to .gitignore.

Getting Started

Drop dasmig/entitygen.hpp and dasmig/random.hpp into your project. Requires C++23.

Dependencies

effolkronium/random v1.4.1 (bundled in dasmig/random.hpp)

v1.1.0 — Feature Release

04 Apr 19:56

Choose a tag to compare

Entity Generator v1.1.0

New Features

  • Generic Components — Five ready-made templates: constant_component<T>, choice_component<T>, range_component<T>, callback_component, and weighted_choice_component<T>. All accept an optional custom formatter.
  • Batch Generationgenerate_batch() for synchronous and generate_batch_async() for concurrent multi-entity generation with deterministic per-entity seeds.
  • Component Groupsadd_group / remove_group / has_group / generate_group for named sets of component keys.
  • Component Weights — Probabilistic inclusion via weight() virtual or per-registration override with add(comp, weight) / weight(key, value).
  • Conditional Componentsshould_generate(ctx) virtual for logic-driven inclusion based on previously generated values.
  • Entity Validationset_validator(fn) / clear_validator() callback with configurable max_retries(n).
  • Component Validation — Per-component validate(value) with automatic re-roll up to max_retries.
  • Generation Observergeneration_observer base class with 15 lifecycle hooks (entity/component/retry/registration events). Multiple observers via add_observer / remove_observer.
  • Stats Observerdasmig::ext::stats_observer — counts, skips, retries, failures, timing, histograms, and a report() method.
  • ECS Integration — Optional adapter headers for EnTT (dasmig/ext/entt_adapter.hpp) and Flecs (dasmig/ext/flecs_adapter.hpp). Register key→component mappings, then spawn() creates typed ECS entities.
  • Seed Signaturesentity.seed() and entity.seed(key) for full entity and per-component replay.
  • Entity Introspectionentity.has(key), entity.keys(), entity.size(), entity.empty(), entity.get_any(key).
  • Generator Introspectioneg::size(), eg::component_keys(), eg::has(key), eg::clear().
  • Serializationentity.to_string(), entity.to_map(), and operator<< for formatted and structured output.
  • Move Semanticseg is move-constructible and move-assignable.

Improvements

  • Named component_entry struct (.key / .comp) replaces raw std::pair.
  • default_to_string now handles wstring, int, double, float, long, and bool.
  • entity.to_string() uses std::ranges::fold_left_first.
  • Input validation on choice_component and weighted_choice_component constructors.

Getting Started

Drop dasmig/entitygen.hpp and dasmig/random.hpp into your project. Requires C++23.

Dependencies

effolkronium/random v1.4.1 (bundled in dasmig/random.hpp)

v1.0.0 — Initial Release

02 Apr 20:32

Choose a tag to compare

Entity Generator v1.0.0

A header-only C++23 library for generating entities with extensible, user-defined components.

Features

  • Entity Generation — custom components, each producing a random value
  • Extensible Component Interface — implement component to define generators for any type
  • Component Dependenciesgeneration_context with ctx.has() / ctx.get<T>()
  • Reproducible Randomness — per-call generate(seed) and generator-level seed()/unseed()
  • Typed Retrievalentity.get<T>(key) with full type safety
  • Selective Generation — all components or a specific subset
  • Fluent API — chain add(), remove(), seed(), unseed()
  • Composable — wrap name-generator and nickname-generator

Getting Started

Drop dasmig/entitygen.hpp and dasmig/random.hpp into your project. Requires C++23.

Dependencies