# r2dum/entitas-survivors architecture

> Architecture diagram of the GitHub repository r2dum/entitas-survivors, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/r2dum/entitas-survivors
- Repository: https://github.com/r2dum/entitas-survivors

## Overview

This repository contains Jenny code-generation plugins that customize Entitas component and entity APIs. The workflow is Jenny supplying component metadata to plugin generators, which emit context/entity properties, fluent entity methods, and interfaces for single-value and multi-context components. The sampled generators confirm their output-generation behavior and calls to Entitas API generators; the tree has no README, and the excerpts do not establish how these plugins are registered or configured.

Main entry points: [`Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentContextPropertyGenerator.cs`](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentContextPropertyGenerator.cs) (Context Property Generator), [`Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentPropertyGenerator.cs`](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentPropertyGenerator.cs) (Entity Property Generator), [`Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/MultiContextEntityApiInterfaceGenerator.cs`](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/MultiContextEntityApiInterfaceGenerator.cs) (Multi-Context Entity Interfaces), [`Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentEntityApiInterfaceGenerator.cs`](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentEntityApiInterfaceGenerator.cs) (Single-Value Entity Interfaces)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_plugin["Jenny Plugins"]
  node_context_property["Context Property Generator"]
  node_entity_property["Entity Property Generator"]
  node_multi_entity["Multi-Context Entity Interfaces"]
  node_single_entity["Single-Value Entity Interfaces"]
end

subgraph group_output["Generated APIs"]
  node_generated["Generated Entitas APIs"]
end

node_jenny(("Jenny Runner"))
node_metadata["Component Metadata"]

node_jenny -->|"dispatches"| node_context_property
node_jenny -->|"dispatches"| node_entity_property
node_jenny -->|"dispatches"| node_multi_entity
node_jenny -->|"dispatches"| node_single_entity
node_metadata -->|"supplies data"| node_context_property
node_metadata -->|"supplies data"| node_entity_property
node_metadata -->|"supplies data"| node_multi_entity
node_metadata -->|"supplies data"| node_single_entity
node_context_property -->|"emits context API"| node_generated
node_entity_property -->|"emits entity API"| node_generated
node_multi_entity -->|"emits interfaces"| node_generated
node_single_entity -->|"emits interfaces"| node_generated

click node_context_property "https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentContextPropertyGenerator.cs"
click node_entity_property "https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentPropertyGenerator.cs"
click node_multi_entity "https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/MultiContextEntityApiInterfaceGenerator.cs"
click node_single_entity "https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentEntityApiInterfaceGenerator.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_context_property,node_entity_property,node_multi_entity,node_single_entity toneBlue
class node_generated toneAmber
class node_jenny,node_metadata toneIndigo
```

## Components

### Jenny Plugins

- [Context Property Generator](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentContextPropertyGenerator.cs): `Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentContextPropertyGenerator.cs`
- [Entity Property Generator](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentPropertyGenerator.cs): `Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentPropertyGenerator.cs`
- [Multi-Context Entity Interfaces](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/MultiContextEntityApiInterfaceGenerator.cs): `Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/MultiContextEntityApiInterfaceGenerator.cs`
- [Single-Value Entity Interfaces](https://github.com/r2dum/entitas-survivors/blob/main/Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentEntityApiInterfaceGenerator.cs): `Source/CustomGenerators/CustomGenerators/KSyndicate.CustomGenerators.Plugins/SingleValueComponentEntityApiInterfaceGenerator.cs`

### Generated APIs

- **Generated Entitas APIs**

### Other components

- **Jenny Runner**
- **Component Metadata**

## Connections

- Jenny Runner → Context Property Generator: dispatches
- Jenny Runner → Entity Property Generator: dispatches
- Jenny Runner → Multi-Context Entity Interfaces: dispatches
- Jenny Runner → Single-Value Entity Interfaces: dispatches
- Component Metadata → Context Property Generator: supplies data
- Component Metadata → Entity Property Generator: supplies data
- Component Metadata → Multi-Context Entity Interfaces: supplies data
- Component Metadata → Single-Value Entity Interfaces: supplies data
- Context Property Generator → Generated Entitas APIs: emits context API
- Entity Property Generator → Generated Entitas APIs: emits entity API
- Multi-Context Entity Interfaces → Generated Entitas APIs: emits interfaces
- Single-Value Entity Interfaces → Generated Entitas APIs: emits interfaces
