diff --git a/.github/workflows/vitepress-deploy.yml b/.github/workflows/vitepress-deploy.yml index c3d7f7e..6d4c9e7 100644 --- a/.github/workflows/vitepress-deploy.yml +++ b/.github/workflows/vitepress-deploy.yml @@ -10,9 +10,15 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout repository + - name: Checkout www repo uses: actions/checkout@v4 + - name: Checkout fennecs + uses: actions/checkout@v4 + with: + repository: outfox/fennecs + path: fennecs + - name: Set up Node.js uses: actions/setup-node@v4 with: diff --git a/cookbook/appetizers/InitialD.md b/cookbook/appetizers/InitialD.md index d723059..7e8bb53 100644 --- a/cookbook/appetizers/InitialD.md +++ b/cookbook/appetizers/InitialD.md @@ -20,6 +20,6 @@ Let's build a sleeper drift racing championship car out of nothing but Entities ### Recipe ::: code-group -<<< ../../../cookbook/InitialD.cs {cs:line-numbers} [Implementation] -<<< ../../../cookbook/InitialD.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/InitialD.cs {cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/InitialD.output.txt{txt} [Output] ::: diff --git a/cookbook/appetizers/KillBill.md b/cookbook/appetizers/KillBill.md index 10210ac..3b39665 100644 --- a/cookbook/appetizers/KillBill.md +++ b/cookbook/appetizers/KillBill.md @@ -19,12 +19,12 @@ All `.csproj` and `.cs` files are [over here on Github!](https://github.com/outf ### Premise To settle an old score, we need to get even with five ~~former friends~~ Entities... we need to find those that wronged us, and wrong them right back in their face. -We create the Entities and define the [Relation](/docs/Components/Relation.md) (`struct Betrayed`) they have with us, and also ours (`struct Grudge`) with them. We include a plain [Component](/docs/Components/) (`struct Location`) as useful data to everyone involved. +We create the Entities and define the [Relation](/docs/Keys/Relation.md) (`struct Betrayed`) they have with us, and also ours (`struct Grudge`) with them. We include a plain [Component](/docs/Components/) (`struct Location`) as useful data to everyone involved. Next, we query for the Relation, say hello, and ~~unalive~~ interact with the Entities in a [Stream<>.For](/docs/Streams/Stream.For.md). This removes our `Grudge` for them. ### Recipe ::: code-group -<<< ../../../cookbook/KillBill.cs {cs:line-numbers} [Implementation] -<<< ../../../cookbook/KillBill.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/KillBill.cs {cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/KillBill.output.txt{txt} [Output] ::: diff --git a/cookbook/appetizers/OneRing.md b/cookbook/appetizers/OneRing.md index d810e7d..ba7786b 100644 --- a/cookbook/appetizers/OneRing.md +++ b/cookbook/appetizers/OneRing.md @@ -18,7 +18,7 @@ All `.csproj` and `.cs` files are [over here on Github!](https://github.com/outf ### Premise In this example, we'll recreate the forging of the Rings of Power in the Land of Mordor, as told in the legendary story. -We'll use the [Object Link](/docs/Components/Link.md) system to model the binding relationship between the One Ring and the other Rings it rules. +We'll use the [Object Link](/docs/Keys/Link.md) system to model the binding relationship between the One Ring and the other Rings it rules. First, we [group spawn](/docs/Entities/Spawning.md#fast-flexible-spawns) Entities for each of the other Rings and its Bearer, and link all of them to our singleton instance of the One Ring. @@ -26,8 +26,8 @@ Then, we bind them all in darkness with a `Stream<>.For` runner. ### Recipe ::: code-group -<<< ../../../cookbook/OneRing.cs {cs:line-numbers} [Implementation] -<<< ../../../cookbook/OneRing.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/OneRing.cs {cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/OneRing.output.txt{txt} [Output] ::: In this example: diff --git a/cookbook/appetizers/StarTrek.md b/cookbook/appetizers/StarTrek.md index 9b4790b..e8e7801 100644 --- a/cookbook/appetizers/StarTrek.md +++ b/cookbook/appetizers/StarTrek.md @@ -26,6 +26,6 @@ We spawn a unique [Entity](/docs/Entities/index.md) for each captain; but `kirk` ### Recipe ::: code-group -<<< ../../../cookbook/StarTrek.cs {cs:line-numbers} [Implementation] -<<< ../../../cookbook/StarTrek.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/StarTrek.cs {cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/StarTrek.output.txt{txt} [Output] ::: diff --git a/cookbook/appetizers/Thanos.md b/cookbook/appetizers/Thanos.md index fd3ae60..4cee775 100644 --- a/cookbook/appetizers/Thanos.md +++ b/cookbook/appetizers/Thanos.md @@ -33,6 +33,6 @@ I'm sure you already see that nothing can go wrong! Let's get snapping! ::: code-group -<<< ../../../cookbook/Thanos.cs {cs:line-numbers} [Implementation] -<<< ../../../cookbook/Thanos.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/Thanos.cs {cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/Thanos.output.txt{txt} [Output] ::: diff --git a/cookbook/appetizers/Tsubasa.md b/cookbook/appetizers/Tsubasa.md index 1aed050..9c6faaa 100644 --- a/cookbook/appetizers/Tsubasa.md +++ b/cookbook/appetizers/Tsubasa.md @@ -24,6 +24,6 @@ In our "game" loop, we get the current position of our ball Entity, and let each ### Recipe ::: code-group -<<< ../../../cookbook/Tsubasa.cs{cs:line-numbers} [Implementation] -<<< ../../../cookbook/Tsubasa.output.txt{txt} [Output] +<<< ../../../fennecs/cookbook/Tsubasa.cs{cs:line-numbers} [Implementation] +<<< ../../../fennecs/cookbook/Tsubasa.output.txt{txt} [Output] ::: diff --git a/docs/Concepts.md b/docs/Concepts.md index 4691895..e7ba8fa 100644 --- a/docs/Concepts.md +++ b/docs/Concepts.md @@ -42,10 +42,10 @@ Structurally similar Entities are packed into [Archetypes](/docs/Components/inde ### [Streams](Streams/) expose *fast* Iteration and SIMD Operations Quickly & safely [iterate entities](Streams/Stream.For.md), or [modify](Streams/SIMD.md#streamblitc) Components in bulk, or process entire [memory blocks](Streams/Stream.Raw.md). -### [Relations](/docs/Components/Relation.md) are Components with an [Entity Target](Queries/Matching.md#match-targets). +### [Relations](/docs/Keys/Relation.md) are Components with an [Entity Target](Queries/Matching.md#match-targets). These add expressive, powerful grouping semantics. Relations can be backed by any type. -### [Links](/docs/Components/Link.md) are Components backed by an [Object Target](Queries/Matching.md#match-targets). +### [Links](/docs/Keys/Link.md) are Components backed by an [Object Target](Queries/Matching.md#match-targets). Group Entities logically and in memory by linking them to shared data, like a physics world. ### Queries expose Structural Changes (just as Entities do) diff --git a/docs/Entities/CRUD.md b/docs/Entities/CRUD.md index 322e719..6999cf2 100644 --- a/docs/Entities/CRUD.md +++ b/docs/Entities/CRUD.md @@ -6,7 +6,7 @@ outline: [1, 2] # Create, Read, Update, Delete -`fennecs.Entity` is a builder struct that combines its associated `fennecs.World` and `fennecs.Identity` to form an easily usable access pattern which exposes operations to add, remove, and read [Components](/docs/Components/) , [Links](/docs/Components/Link.md) , and [Relations](/docs/Components/Relation.md). You can also conveniently Despawn the Entity. +`fennecs.Entity` is a builder struct that combines its associated `fennecs.World` and `fennecs.Identity` to form an easily usable access pattern which exposes operations to add, remove, and read [Components](/docs/Components/) , [Links](/docs/Keys/Link.md) , and [Relations](/docs/Keys/Relation.md). You can also conveniently Despawn the Entity. The component data is accessed and processed in bulk through [Queries](/docs/Queries/), a typical way that ECS provide composable functionality. diff --git a/docs/Entities/index.md b/docs/Entities/index.md index 4b2dedd..7eca585 100644 --- a/docs/Entities/index.md +++ b/docs/Entities/index.md @@ -27,7 +27,7 @@ Despawned Entities are recycled, so they are extremely cheap to spawn and proces Entities can have any number of [Components](/docs/Components/) attached to them. This is how the **fenn**ecs Entity-Component Systems provides composable, structured data semantics. -They can also serve as the `secondary key` in a [Relation](/docs/Components/Relation.md)) between two Entities. +They can also serve as the `secondary key` in a [Relation](/docs/Keys/Relation.md)) between two Entities. Entities with the identical combinations of Component ==Type Expressions== share the same [Archetype](../Components/index.md#archetypes). diff --git a/docs/Keys/Relation.md b/docs/Keys/Relation.md index c92246e..07d8aab 100644 --- a/docs/Keys/Relation.md +++ b/docs/Keys/Relation.md @@ -16,7 +16,7 @@ Relations are **unidirectional**, so the Target doesn't "know" it is being relat But despawning the Target of one or more Relations will remove these Relation Components from any Entities that reference it. See the ending of the [Kill Bill](/cookbook/appetizers/KillBill.md) appetizer for a demonstration. ::: -Relations can be backed by any type (reference or value types). The backing data is only shared if the component is a [shared component](Shareables.md) itself. +Relations can be backed by any type (reference or value types). The backing data is only shared if the component is a [shared component](/docs/Components/Shareables.md) itself. The target of a relation must be [Alive](/docs/Entities/Liveness.md). diff --git a/examples/NBody.md b/examples/NBody.md index 3cb36b2..7a0c002 100644 --- a/examples/NBody.md +++ b/examples/NBody.md @@ -27,7 +27,7 @@ Case in point here is not raw performance (although the basic GDscript-driven li ::: code-group -<<< ../../demos/godot/N-Body/NBodyDemo.cs#Showcase [Showcase] +<<< ../../fennecs/demos/godot/N-Body/NBodyDemo.cs#Showcase [Showcase] :::