mirror of
https://github.com/Ukendio/jecs.git
synced 2025-04-25 01:20:04 +00:00
Improve docs (#90)
* Add method * Remove unnecessary shadowed variable * Separate pages
This commit is contained in:
parent
49305f73dd
commit
a3eb2cddc3
13 changed files with 203 additions and 193 deletions
|
@ -2,56 +2,66 @@ import { defineConfig } from 'vitepress'
|
||||||
|
|
||||||
// https://vitepress.dev/reference/site-config
|
// https://vitepress.dev/reference/site-config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
title: "Jecs",
|
title: "Jecs",
|
||||||
base: "/jecs/",
|
base: "/jecs/",
|
||||||
description: "A VitePress Site",
|
description: "A VitePress Site",
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
// https://vitepress.dev/reference/default-theme-config
|
// https://vitepress.dev/reference/default-theme-config
|
||||||
nav: [
|
nav: [
|
||||||
{ text: 'Home', link: '/' },
|
{ text: 'Home', link: '/' },
|
||||||
{ text: 'Examples', link: '/markdown-examples' }
|
{ text: 'Examples', link: '/markdown-examples' },
|
||||||
],
|
{ text: 'API', link: '/api/jecs.md' }
|
||||||
|
],
|
||||||
|
|
||||||
sidebar: [
|
sidebar: {
|
||||||
{
|
"/api/": [
|
||||||
text: 'Overview',
|
{
|
||||||
items: [
|
text: "API reference",
|
||||||
{ text: 'Getting Started', link: '/overview/get-started' },
|
items: [
|
||||||
{ text: 'First Jecs Project', link: '/overview/first-jecs-project' }
|
{ text: "jecs", link: "/api/jecs" },
|
||||||
]
|
{ text: "World", link: "/api/world" },
|
||||||
},
|
{ text: "Query", link: "/api/query" }
|
||||||
{
|
]
|
||||||
text: 'Concepts',
|
}
|
||||||
items: [
|
],
|
||||||
{ text: 'Entities', link: '/concepts/entities' },
|
"/learn/": [
|
||||||
{ text: 'Static Components', link: '/concepts/static-components' },
|
{
|
||||||
{ text: 'Queries', link: '/concepts/queries' },
|
text: "Introduction",
|
||||||
]
|
items: [
|
||||||
},
|
{ text: 'Getting Started', link: '/overview/get-started' },
|
||||||
{
|
{ text: 'First Jecs Project', link: '/overview/first-jecs-project' }
|
||||||
text: 'References',
|
]
|
||||||
items: [
|
},
|
||||||
{ text: 'API Reference', link: '/api' },
|
{
|
||||||
]
|
text: 'Concepts',
|
||||||
},
|
items: [
|
||||||
{
|
{ text: 'Entities', link: '/concepts/entities' },
|
||||||
text: "FAQ",
|
{ text: 'Static Components', link: '/concepts/static-components' },
|
||||||
items: [
|
{ text: 'Queries', link: '/concepts/queries' },
|
||||||
{ text: 'How can I contribute?', link: '/faq/contributing' }
|
]
|
||||||
]
|
},
|
||||||
},
|
{
|
||||||
{
|
text: "FAQ",
|
||||||
text: 'Contributing',
|
items: [
|
||||||
items: [
|
{ text: 'How can I contribute?', link: '/faq/contributing' }
|
||||||
{ text: 'Contribution Guidelines', link: '/contributing/guidelines'},
|
]
|
||||||
{ text: 'Submitting Issues', link: '/contributing/issues'},
|
},
|
||||||
{ text: 'Submitting Pull Requests', link: '/contributing/pull-requests'},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
socialLinks: [
|
],
|
||||||
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
|
"/contributing/": [
|
||||||
]
|
{
|
||||||
}
|
text: 'Contributing',
|
||||||
|
items: [
|
||||||
|
{ text: 'Contribution Guidelines', link: '/contributing/guidelines' },
|
||||||
|
{ text: 'Submitting Issues', link: '/contributing/issues' },
|
||||||
|
{ text: 'Submitting Pull Requests', link: '/contributing/pull-requests' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
socialLinks: [
|
||||||
|
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
|
||||||
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
## TODO
|
|
||||||
|
|
||||||
This is a TODO stub.
|
|
|
@ -1,3 +0,0 @@
|
||||||
## TODO
|
|
||||||
|
|
||||||
This is a TODO stub.
|
|
|
@ -1,3 +0,0 @@
|
||||||
## TODO
|
|
||||||
|
|
||||||
This is a TODO stub.
|
|
3
docs/learn/concepts/queries.md
Normal file
3
docs/learn/concepts/queries.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
This is a TODO stub.
|
3
docs/learn/concepts/static-components.md
Normal file
3
docs/learn/concepts/static-components.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
This is a TODO stub.
|
3
docs/learn/faq/contributing.md
Normal file
3
docs/learn/faq/contributing.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
This is a TODO stub.
|
3
docs/learn/overview/first-jecs-project.md
Normal file
3
docs/learn/overview/first-jecs-project.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
This is a TODO stub.
|
|
@ -1,130 +1,130 @@
|
||||||
# Getting Started
|
# Getting Started
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Installing Standalone
|
### Installing Standalone
|
||||||
|
|
||||||
Navigate to the [releases page](https://github.com/Ukendio/jecs/releases) and download `jecs.rbxm` from the assets.
|
Navigate to the [releases page](https://github.com/Ukendio/jecs/releases) and download `jecs.rbxm` from the assets.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Using Wally
|
### Using Wally
|
||||||
|
|
||||||
Add the following to your wally configuration:
|
Add the following to your wally configuration:
|
||||||
|
|
||||||
::: code-group
|
::: code-group
|
||||||
|
|
||||||
```toml [wally.toml]
|
```toml [wally.toml]
|
||||||
jecs = "ukendio/jecs@0.2.3"
|
jecs = "ukendio/jecs@0.2.3"
|
||||||
```
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### Using npm (roblox-ts)
|
### Using npm (roblox-ts)
|
||||||
|
|
||||||
Use one of the following commands on your root project directory:
|
Use one of the following commands on your root project directory:
|
||||||
|
|
||||||
::: code-group
|
::: code-group
|
||||||
```bash [npm]
|
```bash [npm]
|
||||||
npm i https://github.com/Ukendio/jecs.git
|
npm i https://github.com/Ukendio/jecs.git
|
||||||
```
|
```
|
||||||
```bash [yarn]
|
```bash [yarn]
|
||||||
yarn add https://github.com/Ukendio/jecs.git
|
yarn add https://github.com/Ukendio/jecs.git
|
||||||
```
|
```
|
||||||
```bash [pnpm]
|
```bash [pnpm]
|
||||||
pnpm add https://github.com/Ukendio/jecs.git
|
pnpm add https://github.com/Ukendio/jecs.git
|
||||||
```
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
::: code-group
|
::: code-group
|
||||||
|
|
||||||
```luau [Luau]
|
```luau [Luau]
|
||||||
local world = jecs.World.new()
|
local world = jecs.World.new()
|
||||||
local pair = jecs.pair
|
local pair = jecs.pair
|
||||||
local Wildcard = jecs.Wildcard
|
local Wildcard = jecs.Wildcard
|
||||||
|
|
||||||
local Name = world:component()
|
local Name = world:component()
|
||||||
|
|
||||||
local function getName(e)
|
local function getName(e)
|
||||||
return world:get(e, Name)
|
return world:get(e, Name)
|
||||||
end
|
end
|
||||||
|
|
||||||
local Eats = world:component()
|
local Eats = world:component()
|
||||||
|
|
||||||
-- Relationship objects
|
-- Relationship objects
|
||||||
local Apples = world:component()
|
local Apples = world:component()
|
||||||
-- components are entities, so you can add components to components
|
-- components are entities, so you can add components to components
|
||||||
world:set(Apples, Name, "apples")
|
world:set(Apples, Name, "apples")
|
||||||
local Oranges = world:component()
|
local Oranges = world:component()
|
||||||
world:set(Oranges, Name, "oranges")
|
world:set(Oranges, Name, "oranges")
|
||||||
|
|
||||||
local bob = world:entity()
|
local bob = world:entity()
|
||||||
-- Pairs can be constructed from two entities
|
-- Pairs can be constructed from two entities
|
||||||
|
|
||||||
world:set(bob, pair(Eats, Apples), 10)
|
world:set(bob, pair(Eats, Apples), 10)
|
||||||
world:set(bob, pair(Eats, Oranges), 5)
|
world:set(bob, pair(Eats, Oranges), 5)
|
||||||
world:set(bob, Name, "bob")
|
world:set(bob, Name, "bob")
|
||||||
|
|
||||||
local alice = world:entity()
|
local alice = world:entity()
|
||||||
world:set(alice, pair(Eats, Apples), 4)
|
world:set(alice, pair(Eats, Apples), 4)
|
||||||
world:set(alice, Name, "alice")
|
world:set(alice, Name, "alice")
|
||||||
|
|
||||||
for id, amount in world:query(pair(Eats, Wildcard)) do
|
for id, amount in world:query(pair(Eats, Wildcard)) do
|
||||||
-- get the second target of the pair
|
-- get the second target of the pair
|
||||||
local food = world:target(id, Eats)
|
local food = world:target(id, Eats)
|
||||||
print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
|
print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Output:
|
-- Output:
|
||||||
-- bob eats 10 apples
|
-- bob eats 10 apples
|
||||||
-- bob eats 5 pears
|
-- bob eats 5 pears
|
||||||
-- alice eats 4 apples
|
-- alice eats 4 apples
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
```ts [Typescript]
|
```ts [Typescript]
|
||||||
import { Wildcard, pair, World } from "@rbxts/jecs"
|
import { Wildcard, pair, World } from "@rbxts/jecs"
|
||||||
|
|
||||||
|
|
||||||
const world = new World()
|
const world = new World()
|
||||||
const Name = world.component()
|
const Name = world.component()
|
||||||
function getName(e) {
|
function getName(e) {
|
||||||
return world.get(e, Name)
|
return world.get(e, Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eats = world.component()
|
const Eats = world.component()
|
||||||
|
|
||||||
// Relationship objects
|
// Relationship objects
|
||||||
const Apples = world.component()
|
const Apples = world.component()
|
||||||
// components are entities, so you can add components to components
|
// components are entities, so you can add components to components
|
||||||
world.set(Apples, Name, "apples")
|
world.set(Apples, Name, "apples")
|
||||||
const Oranges = world.component()
|
const Oranges = world.component()
|
||||||
world.set(Oranges, Name, "oranges")
|
world.set(Oranges, Name, "oranges")
|
||||||
|
|
||||||
const bob = world.entity()
|
const bob = world.entity()
|
||||||
// Pairs can be constructed from two entities
|
// Pairs can be constructed from two entities
|
||||||
|
|
||||||
world.set(bob, pair(Eats, Apples), 10)
|
world.set(bob, pair(Eats, Apples), 10)
|
||||||
world.set(bob, pair(Eats, Oranges), 5)
|
world.set(bob, pair(Eats, Oranges), 5)
|
||||||
world.set(bob, Name, "bob")
|
world.set(bob, Name, "bob")
|
||||||
|
|
||||||
const alice = world.entity()
|
const alice = world.entity()
|
||||||
world.set(alice, pair(Eats, Apples), 4)
|
world.set(alice, pair(Eats, Apples), 4)
|
||||||
world.set(alice, Name, "alice")
|
world.set(alice, Name, "alice")
|
||||||
|
|
||||||
for (const [id, amount] of world.query(pair(Eats, Wildcard))) {
|
for (const [id, amount] of world.query(pair(Eats, Wildcard))) {
|
||||||
// get the second target of the pair
|
// get the second target of the pair
|
||||||
const food = world:target(id, Eats)
|
const food = world:target(id, Eats)
|
||||||
print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
|
print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Output:
|
// Output:
|
||||||
// bob eats 10 apples
|
// bob eats 10 apples
|
||||||
// bob eats 5 pears
|
// bob eats 5 pears
|
||||||
// alice eats 4 apples
|
// alice eats 4 apples
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
@ -1,3 +0,0 @@
|
||||||
## TODO
|
|
||||||
|
|
||||||
This is a TODO stub.
|
|
Loading…
Reference in a new issue