Releases: dasmig/entity-generator
Releases · dasmig/entity-generator
v1.1.2 - Documentation
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 — Documentation
Entity Generator v1.1.1
Documentation
- Doxygen API Reference — All public APIs across
entitygen.hpp,stats_observer.hpp,entt_adapter.hpp, andflecs_adapter.hppnow 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
Doxyfileandmake docstarget. - 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
Entity Generator v1.1.0
New Features
- Generic Components — Five ready-made templates:
constant_component<T>,choice_component<T>,range_component<T>,callback_component, andweighted_choice_component<T>. All accept an optional custom formatter. - Batch Generation —
generate_batch()for synchronous andgenerate_batch_async()for concurrent multi-entity generation with deterministic per-entity seeds. - Component Groups —
add_group/remove_group/has_group/generate_groupfor named sets of component keys. - Component Weights — Probabilistic inclusion via
weight()virtual or per-registration override withadd(comp, weight)/weight(key, value). - Conditional Components —
should_generate(ctx)virtual for logic-driven inclusion based on previously generated values. - Entity Validation —
set_validator(fn)/clear_validator()callback with configurablemax_retries(n). - Component Validation — Per-component
validate(value)with automatic re-roll up tomax_retries. - Generation Observer —
generation_observerbase class with 15 lifecycle hooks (entity/component/retry/registration events). Multiple observers viaadd_observer/remove_observer. - Stats Observer —
dasmig::ext::stats_observer— counts, skips, retries, failures, timing, histograms, and areport()method. - ECS Integration — Optional adapter headers for EnTT (
dasmig/ext/entt_adapter.hpp) and Flecs (dasmig/ext/flecs_adapter.hpp). Register key→component mappings, thenspawn()creates typed ECS entities. - Seed Signatures —
entity.seed()andentity.seed(key)for full entity and per-component replay. - Entity Introspection —
entity.has(key),entity.keys(),entity.size(),entity.empty(),entity.get_any(key). - Generator Introspection —
eg::size(),eg::component_keys(),eg::has(key),eg::clear(). - Serialization —
entity.to_string(),entity.to_map(), andoperator<<for formatted and structured output. - Move Semantics —
egis move-constructible and move-assignable.
Improvements
- Named
component_entrystruct (.key/.comp) replaces rawstd::pair. default_to_stringnow handleswstring,int,double,float,long, andbool.entity.to_string()usesstd::ranges::fold_left_first.- Input validation on
choice_componentandweighted_choice_componentconstructors.
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
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
componentto define generators for any type - Component Dependencies —
generation_contextwithctx.has()/ctx.get<T>() - Reproducible Randomness — per-call
generate(seed)and generator-levelseed()/unseed() - Typed Retrieval —
entity.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
- effolkronium/random v1.4.1 (vendored)