OpenColloq WS24 ECS
0
OpenColloq/WS24_EntityComponentSystem/.hugo_build.lock
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
||||
BIN
OpenColloq/WS24_EntityComponentSystem/content/._index.md.swp
Normal file
BIN
OpenColloq/WS24_EntityComponentSystem/content/._index.md.un~
Normal file
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
505
OpenColloq/WS24_EntityComponentSystem/content/_index.md
Normal file
|
|
@ -0,0 +1,505 @@
|
|||
+++
|
||||
title = "Entity Component System - It's not a system"
|
||||
outputs = ["Reveal"]
|
||||
+++
|
||||
|
||||
# Entity Component System
|
||||
|
||||
---
|
||||
|
||||
## What is (an) ECS?
|
||||
- {{< frag c="unnecessary" >}}
|
||||
- {{< frag c="useful" >}}
|
||||
- {{< frag c="not a system" >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Talk about structure of presentation here:
|
||||
- define terms like "entity", "component", "system"
|
||||
- go over other approaches to "motivate" ECS
|
||||
- main 3 game engines will be mentioned (Unity, Unreal, Godot)
|
||||
- talking about the level of programming engines, not games
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
[^1]
|
||||
|
||||
[^1]: https://br.ign.com/league-of-legends-wild-rift/89123/feature/wild-rift-tudo-sobre-o-lol-mobile ; Image: Riot Games
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
[^2]
|
||||
|
||||
[^2]: https://pressakey.com/gameinfos,4981,screenshots,,,Age-of-Empires-Definitive-Edition,.html
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
- Objects in a game (or simulation)
|
||||
- Can have different behaviours
|
||||
- {{< frag c="Basically everything" >}}
|
||||
|
||||
---
|
||||
|
||||
# INHERITANCE
|
||||
|
||||
---
|
||||
|
||||
{{% section %}}
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
{{% /section %}}
|
||||
|
||||
---
|
||||
|
||||
## Godot
|
||||

|
||||
[^3]
|
||||
|
||||
[^3]: Screenshot: Godot Engine
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Godot Code
|
||||
```cpp
|
||||
class Node2D : public CanvasItem {
|
||||
...
|
||||
}
|
||||
.
|
||||
.
|
||||
.
|
||||
class PhysicsBody2D : public CollisionObject2D {
|
||||
...
|
||||
}
|
||||
class CharacterBody2D : public PhysicsBody2D {
|
||||
...
|
||||
}
|
||||
```
|
||||
[^4]
|
||||
|
||||
[^4]: https://github.com/godotengine/godot
|
||||
|
||||
---
|
||||
|
||||
{{% section %}}
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
MoveableEntity-->Vehicle;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Multiple Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
MoveableEntity-->Vehicle;
|
||||
BoxColliderEntity-->Vehicle;
|
||||
```
|
||||
|
||||
{{% /section %}}
|
||||
|
||||
---
|
||||
|
||||
<section data-noprocess>
|
||||
<h1>Godot</h1>
|
||||
<div style="display: flex; flex-direction: row; justify-content: center; align-items: center;">
|
||||
<img style="margin-right: 10%;" src="Godot_player_scene_nodes.webp">
|
||||
<ul>
|
||||
<li class="fragment" >uses hierarchy instead</li>
|
||||
<li class="fragment" >child nodes as "components"</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
---
|
||||
|
||||
## What are components?
|
||||
- {{< frag c="Split entities from behaviour" >}}
|
||||
- {{< frag c="Data associated with a certain \"behaviour\"" >}}
|
||||
|
||||
---
|
||||
|
||||
# COMPOSITION
|
||||
|
||||
---
|
||||
|
||||
# Composition
|
||||
```mermaid
|
||||
graph LR;
|
||||
EntityA-->BoxColliderComponent;
|
||||
EntityA-->StaticMeshComponent;
|
||||
EntityB-->SphereColliderComponent;
|
||||
EntityB-->DynamicMeshComponent;
|
||||
EntityB-->PlayerControllerComponent;
|
||||
linkStyle default stroke:lime,stroke-width:4px;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Composition
|
||||
- {{< frag c="Entities have minimal data and behaviour" >}}
|
||||
- {{< frag c="Entities hold their components or references to them" >}}
|
||||
|
||||
{{% fragment %}}
|
||||
```cpp
|
||||
class Component;
|
||||
|
||||
class Entity {
|
||||
//...
|
||||
private:
|
||||
std::unordered_map<std::type_info, Component*> m_components;
|
||||
}
|
||||
```
|
||||
{{% /fragment %}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Wanted to have a look at Unreal Source code, but...
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Unreal
|
||||
|
||||
Code in Unreal's AActor class[^5]:
|
||||
|
||||
```cpp
|
||||
/**
|
||||
* All ActorComponents owned by this Actor. Stored as a Set as actors may have a large number of components
|
||||
* @see GetComponents()
|
||||
*/
|
||||
TSet<TObjectPtr<UActorComponent>> OwnedComponents;
|
||||
|
||||
/**
|
||||
* Get all components derived from class 'ComponentType' and fill in the OutComponents array with the result.
|
||||
* It's recommended to use TArrays with a TInlineAllocator to potentially avoid memory allocation costs.
|
||||
* TInlineComponentArray is defined to make this easier, for example:
|
||||
* {
|
||||
* TInlineComponentArray<UPrimitiveComponent*> PrimComponents(Actor);
|
||||
* }
|
||||
*
|
||||
* @param bIncludeFromChildActors If true then recurse in to ChildActor components and find components of the appropriate type in those Actors as well
|
||||
*/
|
||||
template<class ComponentType, class AllocatorType>
|
||||
void GetComponents(TArray<ComponentType, AllocatorType>& OutComponents, bool bIncludeFromChildActors = false) const
|
||||
{
|
||||
typedef TPointedToType<ComponentType> T;
|
||||
|
||||
OutComponents.Reset();
|
||||
ForEachComponent_Internal<T>(T::StaticClass(), bIncludeFromChildActors, [&](T* InComp)
|
||||
{
|
||||
OutComponents.Add(InComp);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
[^5]: Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h
|
||||
|
||||
{{% note %}}
|
||||
|
||||
next, Unity, but...
|
||||
|
||||
*b. Distributing Examples
|
||||
You may Distribute Examples (including as modified by you) in Source Code or object code to any third party.*
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Unity
|
||||
[^6]
|
||||
|
||||
[^6]:https://docs.unity3d.com/6000.0/Documentation/Manual/UsingTheInspector.html
|
||||
|
||||
{{% note %}}
|
||||
|
||||
- can't confirm what Unity uses (no source found)
|
||||
- interface suggests composition
|
||||
- Unity DOTS?
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## What are systems?
|
||||
- {{< frag c="███████████████████" >}}
|
||||
- {{< frag c="█████████████████" >}}
|
||||
- {{< frag c="████████████████████" >}}
|
||||
|
||||
{{% note %}}
|
||||
We'll talk about it later.
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
# Entity Component System
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
{{% note %}}
|
||||
|
||||
ECS is Data-Oriented rather than Object-Oriented
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Entity Component System
|
||||
- {{< frag c="split components even more from entities" >}}
|
||||
- {{< frag c="entities are minimal data" >}}
|
||||
- {{< frag c="components store data associated with certain behaviours" >}}
|
||||
- {{< frag c="components aren't managed by their entities" >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
-
|
||||
- entities can just be ids
|
||||
- component manager
|
||||
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## What are systems?
|
||||
- {{< frag c="main way of interacting with components" >}}
|
||||
- {{< frag c="loop over every component of a type" >}}
|
||||
- {{< frag c="e.g. Rendering System, Physics System..." >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
- due to systems, want to optimise for iterating over components of a type
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Examples:
|
||||
|
||||
- [Unity DOTS](https://unity.com/dots)
|
||||
- [Bevy](https://bevyengine.org/)
|
||||
- [EnTT](https://github.com/skypjack/entt)
|
||||
|
||||
{{% fragment %}}
|
||||
|
||||
> One thing known to most is that *EnTT* is also used in Minecraft.
|
||||
> Given that the game is available literally everywhere, I can confidently say that the library has been sufficiently tested on every platform that can come to mind.
|
||||
|
||||
{{% /fragment %}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Bevy ECS used for [Tiny Glade](https://store.steampowered.com/app/2198150/Tiny_Glade/)
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Cache
|
||||
|
||||
CPU |L1 |L2 |L3
|
||||
-------------|-------|-------|-----
|
||||
Pentium N4200|96 KiB |128 KiB|2 MiB
|
||||
i7 14700HX |1800 KB|28 MB |33 MB
|
||||
|
||||
{{% note %}}
|
||||
|
||||
top: silas' laptop
|
||||
bottom: mine
|
||||
|
||||
Mine are probably also KiB/MiB, because Windows is doing Windows things
|
||||
|
||||
Cache Locality less important with newer cpus, but will probably still lead to benefits.
|
||||
Storing data contigous should reduce cache misses, since accesses are more predictable.
|
||||
Collider Component may have 3\*float64 position + 4\*float64 rotation + 3\*float64 size + 10\*float64 miscellanious = 160 Byte
|
||||
300 of those = 48 KB
|
||||
500 of those = 80 KB
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Entities:
|
||||
```cpp
|
||||
//one possibility
|
||||
typedef uint_32t UID;
|
||||
|
||||
typedef UID Entity;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Components:
|
||||
A [std::flat_map](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf) is a fitting datatype.
|
||||
|
||||
{{% fragment %}}
|
||||
|
||||
GCC libstdc++ | Clang libc++ | MSVC STL
|
||||
---------------|---------------------|---------------
|
||||
not implemented|partially implemented|not implemented
|
||||
|
||||
{{% /fragment %}}
|
||||
|
||||
[^7]
|
||||
[^7]: https://en.cppreference.com/w/cpp/compiler\_support/23
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Components:
|
||||
|
||||
```cpp
|
||||
class ComponentManager{
|
||||
template<typename comp_type> requires std::is_base_of<Component, comp_type>
|
||||
foreachComponent(std::function func){
|
||||
//...
|
||||
}
|
||||
|
||||
template<typename comp_type> requires std::is_base_of<Component, comp_type>
|
||||
addComponentToEntity(Entity entity){
|
||||
//...
|
||||
}
|
||||
|
||||
//some type of ComponentMap store
|
||||
}
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
possible ComponentMap store:
|
||||
```cpp
|
||||
std::unordered_map<std::typeid, std::size_t> m_typeOffsetMap;
|
||||
void* m_componentMaps;
|
||||
```
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### ComponentMap:
|
||||
|
||||
```cpp
|
||||
template <typename component_type>
|
||||
class ComponentMap
|
||||
std::vector<component_type> m_values;
|
||||
std::unordered_map<Entity, size_type> m_mapping;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
- Images from [deathgenerator.com](https://deathgenerator.com)
|
||||
- Helpful [thesis by Toni Härkönen](https://trepo.tuni.fi/bitstream/handle/123456789/27593/H%C3%A4rk%C3%B6nen.pdf)
|
||||
- [Data Structures for Entity Systems: Contiguous memory](https://t-machine.org/index.php/2014/03/08/data-structures-for-entity-systems-contiguous-memory/)
|
||||
|
||||
520
OpenColloq/WS24_EntityComponentSystem/content/_index.md~
Normal file
|
|
@ -0,0 +1,520 @@
|
|||
+++
|
||||
title = "Entity Component System - It's not a system"
|
||||
outputs = ["Reveal"]
|
||||
+++
|
||||
|
||||
# Entity Component System
|
||||
|
||||
---
|
||||
|
||||
## Why am I doing this?
|
||||
|
||||
- {{< frag c ="My own bad implementation" >}}
|
||||
{{% fragment %}}
|
||||
 {{% /fragment %}}
|
||||
|
||||
{{% note %}}
|
||||
My implementation in GL3 (explain course shortly) was horrible.
|
||||
ECS was introduced in the middle of GL3.
|
||||
|
||||
Tino said I could talk about very niche topics, so I'm talking about a very niche topic.
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## What is (an) ECS?
|
||||
- {{< frag c="unnecessary" >}}
|
||||
- {{< frag c="useful" >}}
|
||||
- {{< frag c="not a system" >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Talk about structure of presentation here:
|
||||
- define terms like "entity", "component", "system"
|
||||
- go over other approaches to "motivate" ECS
|
||||
- main 3 game engines will be mentioned (Unity, Unreal, Godot)
|
||||
- talking about the level of programming engines, not games
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
[^1]
|
||||
|
||||
[^1]: https://br.ign.com/league-of-legends-wild-rift/89123/feature/wild-rift-tudo-sobre-o-lol-mobile ; Image: Riot Games
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
[^2]
|
||||
|
||||
[^2]: https://pressakey.com/gameinfos,4981,screenshots,,,Age-of-Empires-Definitive-Edition,.html
|
||||
|
||||
---
|
||||
|
||||
## What are entities?
|
||||
- Objects in a game (or simulation)
|
||||
- Can have different behaviours
|
||||
- {{< frag c="Basically everything" >}}
|
||||
|
||||
---
|
||||
|
||||
# INHERITANCE
|
||||
|
||||
---
|
||||
|
||||
{{% section %}}
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Entity: Basic information like transform and mesh in our example
|
||||
MoveableEntity: Entity with functions to move with and support animations
|
||||
PhysicsEntity: Walls, Falling Boulders and stuff; Colliders and Gravity
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
{{% /section %}}
|
||||
|
||||
---
|
||||
|
||||
## Godot
|
||||

|
||||
[^3]
|
||||
|
||||
[^3]: Screenshot: Godot Engine
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Godot Code
|
||||
```cpp
|
||||
class Node2D : public CanvasItem {
|
||||
...
|
||||
}
|
||||
.
|
||||
.
|
||||
.
|
||||
class PhysicsBody2D : public CollisionObject2D {
|
||||
...
|
||||
}
|
||||
class CharacterBody2D : public PhysicsBody2D {
|
||||
...
|
||||
}
|
||||
```
|
||||
[^4]
|
||||
|
||||
[^4]: https://github.com/godotengine/godot
|
||||
|
||||
---
|
||||
|
||||
{{% section %}}
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
MoveableEntity-->Vehicle;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
{{< slide transition="none" >}}
|
||||
|
||||
## Multiple Inheritance
|
||||
```mermaid
|
||||
graph TD;
|
||||
Entity-->MoveableEntity;
|
||||
Entity-->PhysicsEntity;
|
||||
MoveableEntity-->Character;
|
||||
Character-->Player;
|
||||
Character-->NPC;
|
||||
PhysicsEntity-->BoxColliderEntity;
|
||||
MoveableEntity-->Vehicle;
|
||||
BoxColliderEntity-->Vehicle;
|
||||
```
|
||||
|
||||
{{% /section %}}
|
||||
|
||||
---
|
||||
|
||||
<section data-noprocess>
|
||||
<h1>Godot</h1>
|
||||
<div style="display: flex; flex-direction: row; justify-content: center; align-items: center;">
|
||||
<img style="margin-right: 10%;" src="Godot_player_scene_nodes.webp">
|
||||
<ul>
|
||||
<li class="fragment" >uses hierarchy instead</li>
|
||||
<li class="fragment" >child nodes as "components"</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
---
|
||||
|
||||
## What are components?
|
||||
- {{< frag c="Split entities from behaviour" >}}
|
||||
- {{< frag c="Data associated with a certain \"behaviour\"" >}}
|
||||
|
||||
---
|
||||
|
||||
# COMPOSITION
|
||||
|
||||
---
|
||||
|
||||
# Composition
|
||||
```mermaid
|
||||
graph LR;
|
||||
EntityA-->BoxColliderComponent;
|
||||
EntityA-->StaticMeshComponent;
|
||||
EntityB-->SphereColliderComponent;
|
||||
EntityB-->DynamicMeshComponent;
|
||||
EntityB-->PlayerControllerComponent;
|
||||
linkStyle default stroke:lime,stroke-width:4px;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Composition
|
||||
- {{< frag c="Entities have minimal data and behaviour" >}}
|
||||
- {{< frag c="Entities hold their components or references to them" >}}
|
||||
|
||||
{{% fragment %}}
|
||||
```cpp
|
||||
class Component;
|
||||
|
||||
class Entity {
|
||||
//...
|
||||
private:
|
||||
std::unordered_map<std::type_info, Component*> m_components;
|
||||
}
|
||||
```
|
||||
{{% /fragment %}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Wanted to have a look at Unreal Source code, but...
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Unreal
|
||||
|
||||
Code in Unreal's AActor class[^5]:
|
||||
|
||||
```cpp
|
||||
/**
|
||||
* All ActorComponents owned by this Actor. Stored as a Set as actors may have a large number of components
|
||||
* @see GetComponents()
|
||||
*/
|
||||
TSet<TObjectPtr<UActorComponent>> OwnedComponents;
|
||||
|
||||
/**
|
||||
* Get all components derived from class 'ComponentType' and fill in the OutComponents array with the result.
|
||||
* It's recommended to use TArrays with a TInlineAllocator to potentially avoid memory allocation costs.
|
||||
* TInlineComponentArray is defined to make this easier, for example:
|
||||
* {
|
||||
* TInlineComponentArray<UPrimitiveComponent*> PrimComponents(Actor);
|
||||
* }
|
||||
*
|
||||
* @param bIncludeFromChildActors If true then recurse in to ChildActor components and find components of the appropriate type in those Actors as well
|
||||
*/
|
||||
template<class ComponentType, class AllocatorType>
|
||||
void GetComponents(TArray<ComponentType, AllocatorType>& OutComponents, bool bIncludeFromChildActors = false) const
|
||||
{
|
||||
typedef TPointedToType<ComponentType> T;
|
||||
|
||||
OutComponents.Reset();
|
||||
ForEachComponent_Internal<T>(T::StaticClass(), bIncludeFromChildActors, [&](T* InComp)
|
||||
{
|
||||
OutComponents.Add(InComp);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
[^5]: Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h
|
||||
|
||||
{{% note %}}
|
||||
|
||||
next, Unity, but...
|
||||
|
||||
*b. Distributing Examples
|
||||
You may Distribute Examples (including as modified by you) in Source Code or object code to any third party.*
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Unity
|
||||
[^6]
|
||||
|
||||
[^6]:https://docs.unity3d.com/6000.0/Documentation/Manual/UsingTheInspector.html
|
||||
|
||||
{{% note %}}
|
||||
|
||||
- can't confirm what Unity uses (no source found)
|
||||
- interface suggests composition
|
||||
- Unity DOTS?
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## What are systems?
|
||||
- {{< frag c="███████████████████" >}}
|
||||
- {{< frag c="█████████████████" >}}
|
||||
- {{< frag c="████████████████████" >}}
|
||||
|
||||
{{% note %}}
|
||||
We'll talk about it later.
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
# Entity Component System
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
{{% note %}}
|
||||
|
||||
ECS is Data-Oriented rather than Object-Oriented
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Entity Component System
|
||||
- {{< frag c="split components even more from entities" >}}
|
||||
- {{< frag c="entities are minimal data" >}}
|
||||
- {{< frag c="components store data associated with certain behaviours" >}}
|
||||
- {{< frag c="components aren't managed by their entities" >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
-
|
||||
- entities can just be ids
|
||||
- component manager
|
||||
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## What are systems?
|
||||
- {{< frag c="main way of interacting with components" >}}
|
||||
- {{< frag c="loop over every component of a type" >}}
|
||||
- {{< frag c="e.g. Rendering System, Physics System..." >}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
- due to systems, want to optimise for iterating over components of a type
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Examples:
|
||||
|
||||
- [Unity DOTS](https://unity.com/dots)
|
||||
- [Bevy](https://bevyengine.org/)
|
||||
- [EnTT](https://github.com/skypjack/entt)
|
||||
|
||||
{{% fragment %}}
|
||||
|
||||
> One thing known to most is that *EnTT* is also used in Minecraft.
|
||||
> Given that the game is available literally everywhere, I can confidently say that the library has been sufficiently tested on every platform that can come to mind.
|
||||
|
||||
{{% /fragment %}}
|
||||
|
||||
{{% note %}}
|
||||
|
||||
Bevy ECS used for [Tiny Glade](https://store.steampowered.com/app/2198150/Tiny_Glade/)
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## Cache
|
||||
|
||||
CPU |L1 |L2 |L3
|
||||
-------------|-------|-------|-----
|
||||
Pentium N4200|96 KiB |128 KiB|2 MiB
|
||||
i7 14700HX |1800 KB|28 MB |33 MB
|
||||
|
||||
{{% note %}}
|
||||
|
||||
top: silas' laptop
|
||||
bottom: mine
|
||||
|
||||
Mine are probably also KiB/MiB, because Windows is doing Windows things
|
||||
|
||||
Cache Locality less important with newer cpus, but will probably still lead to benefits.
|
||||
Storing data contigous should reduce cache misses, since accesses are more predictable.
|
||||
Collider Component may have 3\*float64 position + 4\*float64 rotation + 3\*float64 size + 10\*float64 miscellanious = 160 Byte
|
||||
300 of those = 48 KB
|
||||
500 of those = 80 KB
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Entities:
|
||||
```cpp
|
||||
//one possibility
|
||||
typedef uint_32t UID;
|
||||
|
||||
typedef UID Entity;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Components:
|
||||
A [std::flat_map](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf) is a fitting datatype.
|
||||
|
||||
{{% fragment %}}
|
||||
|
||||
GCC libstdc++ | Clang libc++ | MSVC STL
|
||||
---------------|---------------------|---------------
|
||||
not implemented|partially implemented|not implemented
|
||||
|
||||
{{% /fragment %}}
|
||||
|
||||
[^7]
|
||||
[^7]: https://en.cppreference.com/w/cpp/compiler\_support/23
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### Components:
|
||||
|
||||
```cpp
|
||||
class ComponentManager{
|
||||
template<typename comp_type> requires std::is_base_of<Component, comp_type>
|
||||
foreachComponent(std::function func){
|
||||
//...
|
||||
}
|
||||
|
||||
template<typename comp_type> requires std::is_base_of<Component, comp_type>
|
||||
addComponentToEntity(Entity entity){
|
||||
//...
|
||||
}
|
||||
|
||||
//some type of ComponentMap store
|
||||
}
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
||||
possible ComponentMap store:
|
||||
```cpp
|
||||
std::unordered_map<std::typeid, std::size_t> m_typeOffsetMap;
|
||||
void* m_componentMaps;
|
||||
```
|
||||
|
||||
{{% /note %}}
|
||||
|
||||
---
|
||||
|
||||
## How to implement it in C++
|
||||
### ComponentMap:
|
||||
|
||||
```cpp
|
||||
template <typename component_type>
|
||||
class ComponentMap
|
||||
std::vector<component_type> m_values;
|
||||
std::unordered_map<Entity, size_type> m_mapping;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
- Images from [deathgenerator.com](https://deathgenerator.com)
|
||||
- Helpful [thesis by Toni Härkönen](https://trepo.tuni.fi/bitstream/handle/123456789/27593/H%C3%A4rk%C3%B6nen.pdf)
|
||||
- [Data Structures for Entity Systems: Contiguous memory](https://t-machine.org/index.php/2014/03/08/data-structures-for-entity-systems-contiguous-memory/)
|
||||
|
||||
BIN
OpenColloq/WS24_EntityComponentSystem/content/aoe.jpg
Normal file
|
After Width: | Height: | Size: 3 MiB |
BIN
OpenColloq/WS24_EntityComponentSystem/content/dracula_ecs.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/content/godot_news.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/content/lol.jpg
Normal file
|
After Width: | Height: | Size: 221 KiB |
|
After Width: | Height: | Size: 11 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/content/metroid_ending.gif
Normal file
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
13
OpenColloq/WS24_EntityComponentSystem/hugo.toml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
baseURL = 'https://example.org/'
|
||||
languageCode = 'en-us'
|
||||
title = "Entity Component System - It's not a system"
|
||||
|
||||
theme = ["reveal-hugo"]
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
[outputFormats.Reveal]
|
||||
baseName = "index"
|
||||
mediaType = "text/html"
|
||||
isHTML = true
|
||||
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/public/aoe.jpg
Normal file
|
After Width: | Height: | Size: 3 MiB |
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Categories on Entity Component System - It's not a system</title>
|
||||
<link>http://localhost:1313/categories/</link>
|
||||
<description>Recent content in Categories on Entity Component System - It's not a system</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
BIN
OpenColloq/WS24_EntityComponentSystem/public/dracula_ecs.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/public/gnupolice_unity.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
BIN
OpenColloq/WS24_EntityComponentSystem/public/godot_news.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/a11y-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-deletion{color:#ffa07a}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-meta,.hljs-link{color:#f5ab35}.hljs-attribute{color:#ffd700}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#abe338}.hljs-title,.hljs-section{color:#00e0e0}.hljs-keyword,.hljs-selector-tag{color:#dcc6e0}.hljs{display:block;overflow-x:auto;background:#2b2b2b;color:#f8f8f2;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-builtin-name,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-string,.hljs-symbol,.hljs-type,.hljs-quote{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:bold}}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/a11y-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#696969}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-deletion{color:#d91e18}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-meta,.hljs-link{color:#aa5d00}.hljs-attribute{color:#aa5d00}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#008000}.hljs-title,.hljs-section{color:#007faa}.hljs-keyword,.hljs-selector-tag{color:#7928a1}.hljs{display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-builtin-name,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-string,.hljs-symbol,.hljs-type,.hljs-quote{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:bold}}
|
||||
17
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/agate.min.css
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/*!
|
||||
* Agate by Taufik Nurrohman <https://github.com/taufik-nurrohman>
|
||||
* ---------------------------------------------------------------
|
||||
*
|
||||
* #ade5fc
|
||||
* #a2fca2
|
||||
* #c6b4f0
|
||||
* #d36363
|
||||
* #fcc28c
|
||||
* #fc9b9b
|
||||
* #ffa
|
||||
* #fff
|
||||
* #333
|
||||
* #62c8f3
|
||||
* #888
|
||||
*
|
||||
*/.hljs{display:block;overflow-x:auto;padding:.5em;background:#333;color:white}.hljs-name,.hljs-strong{font-weight:bold}.hljs-code,.hljs-emphasis{font-style:italic}.hljs-tag{color:#62c8f3}.hljs-variable,.hljs-template-variable,.hljs-selector-id,.hljs-selector-class{color:#ade5fc}.hljs-string,.hljs-bullet{color:#a2fca2}.hljs-type,.hljs-title,.hljs-section,.hljs-attribute,.hljs-quote,.hljs-built_in,.hljs-builtin-name{color:#ffa}.hljs-number,.hljs-symbol,.hljs-bullet{color:#d36363}.hljs-keyword,.hljs-selector-tag,.hljs-literal{color:#fcc28c}.hljs-comment,.hljs-deletion,.hljs-code{color:#888}.hljs-regexp,.hljs-link{color:#c6b4f0}.hljs-meta{color:#fc9b9b}.hljs-deletion{background-color:#fc9b9b;color:#333}.hljs-addition{background-color:#a2fca2;color:#333}.hljs a{color:inherit}.hljs a:focus,.hljs a:hover{color:inherit;text-decoration:underline}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/an-old-hope.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#B6B18B}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-deletion{color:#EB3C54}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-meta,.hljs-link{color:#E7CE56}.hljs-attribute{color:#EE7C2B}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#4FB4D7}.hljs-title,.hljs-section{color:#78BB65}.hljs-keyword,.hljs-selector-tag{color:#B45EA4}.hljs{display:block;overflow-x:auto;background:#1C1D21;color:#c0c5ce;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/androidstudio.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{color:#a9b7c6;background:#282b2e;display:block;overflow-x:auto;padding:.5em}.hljs-number,.hljs-literal,.hljs-symbol,.hljs-bullet{color:#6897BB}.hljs-keyword,.hljs-selector-tag,.hljs-deletion{color:#cc7832}.hljs-variable,.hljs-template-variable,.hljs-link{color:#629755}.hljs-comment,.hljs-quote{color:#808080}.hljs-meta{color:#bbb529}.hljs-string,.hljs-attribute,.hljs-addition{color:#6A8759}.hljs-section,.hljs-title,.hljs-type{color:#ffc66d}.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#e8bf6a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/arduino-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#FFFFFF}.hljs,.hljs-subst{color:#434f54}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-doctag,.hljs-name{color:#00979D}.hljs-built_in,.hljs-literal,.hljs-bullet,.hljs-code,.hljs-addition{color:#D35400}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#00979D}.hljs-type,.hljs-string,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#005C5F}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-comment{color:rgba(149,165,166,0.8)}.hljs-meta-keyword{color:#728E00}.hljs-meta{color:#434f54}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-function{color:#728E00}.hljs-number{color:#8A7B52}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/arta.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#222}.hljs,.hljs-subst{color:#aaa}.hljs-section{color:#fff}.hljs-comment,.hljs-quote,.hljs-meta{color:#444}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-regexp{color:#ffcc33}.hljs-number,.hljs-addition{color:#00cc66}.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-template-variable,.hljs-attribute,.hljs-link{color:#32aaee}.hljs-keyword,.hljs-selector-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#6644aa}.hljs-title,.hljs-variable,.hljs-deletion,.hljs-template-tag{color:#bb1166}.hljs-section,.hljs-doctag,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/ascetic.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-string,.hljs-variable,.hljs-template-variable,.hljs-symbol,.hljs-bullet,.hljs-section,.hljs-addition,.hljs-attribute,.hljs-link{color:#888}.hljs-comment,.hljs-quote,.hljs-meta,.hljs-deletion{color:#ccc}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-name,.hljs-type,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-cave-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#7e7887}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-regexp,.hljs-link,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#be4678}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#aa573c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#2a9292}.hljs-title,.hljs-section{color:#576ddb}.hljs-keyword,.hljs-selector-tag{color:#955ae7}.hljs-deletion,.hljs-addition{color:#19171c;display:inline-block;width:100%}.hljs-deletion{background-color:#be4678}.hljs-addition{background-color:#2a9292}.hljs{display:block;overflow-x:auto;background:#19171c;color:#8b8792;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-cave-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#655f6d}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#be4678}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#aa573c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#2a9292}.hljs-title,.hljs-section{color:#576ddb}.hljs-keyword,.hljs-selector-tag{color:#955ae7}.hljs-deletion,.hljs-addition{color:#19171c;display:inline-block;width:100%}.hljs-deletion{background-color:#be4678}.hljs-addition{background-color:#2a9292}.hljs{display:block;overflow-x:auto;background:#efecf4;color:#585260;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-dune-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#999580}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#d73737}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#b65611}.hljs-string,.hljs-symbol,.hljs-bullet{color:#60ac39}.hljs-title,.hljs-section{color:#6684e1}.hljs-keyword,.hljs-selector-tag{color:#b854d4}.hljs{display:block;overflow-x:auto;background:#20201d;color:#a6a28c;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-dune-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#7d7a68}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#d73737}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#b65611}.hljs-string,.hljs-symbol,.hljs-bullet{color:#60ac39}.hljs-title,.hljs-section{color:#6684e1}.hljs-keyword,.hljs-selector-tag{color:#b854d4}.hljs{display:block;overflow-x:auto;background:#fefbec;color:#6e6b5e;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-estuary-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#878573}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ba6236}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#ae7313}.hljs-string,.hljs-symbol,.hljs-bullet{color:#7d9726}.hljs-title,.hljs-section{color:#36a166}.hljs-keyword,.hljs-selector-tag{color:#5f9182}.hljs-deletion,.hljs-addition{color:#22221b;display:inline-block;width:100%}.hljs-deletion{background-color:#ba6236}.hljs-addition{background-color:#7d9726}.hljs{display:block;overflow-x:auto;background:#22221b;color:#929181;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-estuary-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#6c6b5a}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ba6236}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#ae7313}.hljs-string,.hljs-symbol,.hljs-bullet{color:#7d9726}.hljs-title,.hljs-section{color:#36a166}.hljs-keyword,.hljs-selector-tag{color:#5f9182}.hljs-deletion,.hljs-addition{color:#22221b;display:inline-block;width:100%}.hljs-deletion{background-color:#ba6236}.hljs-addition{background-color:#7d9726}.hljs{display:block;overflow-x:auto;background:#f4f3ec;color:#5f5e4e;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-forest-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#9c9491}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#f22c40}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#df5320}.hljs-string,.hljs-symbol,.hljs-bullet{color:#7b9726}.hljs-title,.hljs-section{color:#407ee7}.hljs-keyword,.hljs-selector-tag{color:#6666ea}.hljs{display:block;overflow-x:auto;background:#1b1918;color:#a8a19f;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-forest-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#766e6b}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#f22c40}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#df5320}.hljs-string,.hljs-symbol,.hljs-bullet{color:#7b9726}.hljs-title,.hljs-section{color:#407ee7}.hljs-keyword,.hljs-selector-tag{color:#6666ea}.hljs{display:block;overflow-x:auto;background:#f1efee;color:#68615e;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-heath-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#9e8f9e}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ca402b}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#a65926}.hljs-string,.hljs-symbol,.hljs-bullet{color:#918b3b}.hljs-title,.hljs-section{color:#516aec}.hljs-keyword,.hljs-selector-tag{color:#7b59c0}.hljs{display:block;overflow-x:auto;background:#1b181b;color:#ab9bab;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-heath-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#776977}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ca402b}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#a65926}.hljs-string,.hljs-symbol,.hljs-bullet{color:#918b3b}.hljs-title,.hljs-section{color:#516aec}.hljs-keyword,.hljs-selector-tag{color:#7b59c0}.hljs{display:block;overflow-x:auto;background:#f7f3f7;color:#695d69;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-lakeside-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#7195a8}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#d22d72}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#935c25}.hljs-string,.hljs-symbol,.hljs-bullet{color:#568c3b}.hljs-title,.hljs-section{color:#257fad}.hljs-keyword,.hljs-selector-tag{color:#6b6bb8}.hljs{display:block;overflow-x:auto;background:#161b1d;color:#7ea2b4;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-lakeside-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#5a7b8c}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#d22d72}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#935c25}.hljs-string,.hljs-symbol,.hljs-bullet{color:#568c3b}.hljs-title,.hljs-section{color:#257fad}.hljs-keyword,.hljs-selector-tag{color:#6b6bb8}.hljs{display:block;overflow-x:auto;background:#ebf8ff;color:#516d7b;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-plateau-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#7e7777}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ca4949}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#b45a3c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#4b8b8b}.hljs-title,.hljs-section{color:#7272ca}.hljs-keyword,.hljs-selector-tag{color:#8464c4}.hljs-deletion,.hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-deletion{background-color:#ca4949}.hljs-addition{background-color:#4b8b8b}.hljs{display:block;overflow-x:auto;background:#1b1818;color:#8a8585;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-plateau-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#655d5d}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#ca4949}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#b45a3c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#4b8b8b}.hljs-title,.hljs-section{color:#7272ca}.hljs-keyword,.hljs-selector-tag{color:#8464c4}.hljs-deletion,.hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-deletion{background-color:#ca4949}.hljs-addition{background-color:#4b8b8b}.hljs{display:block;overflow-x:auto;background:#f4ecec;color:#585050;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-savanna-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#78877d}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#b16139}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#9f713c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#489963}.hljs-title,.hljs-section{color:#478c90}.hljs-keyword,.hljs-selector-tag{color:#55859b}.hljs-deletion,.hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-deletion{background-color:#b16139}.hljs-addition{background-color:#489963}.hljs{display:block;overflow-x:auto;background:#171c19;color:#87928a;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-savanna-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#5f6d64}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#b16139}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#9f713c}.hljs-string,.hljs-symbol,.hljs-bullet{color:#489963}.hljs-title,.hljs-section{color:#478c90}.hljs-keyword,.hljs-selector-tag{color:#55859b}.hljs-deletion,.hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-deletion{background-color:#b16139}.hljs-addition{background-color:#489963}.hljs{display:block;overflow-x:auto;background:#ecf4ee;color:#526057;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-seaside-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#809980}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#e6193c}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#87711d}.hljs-string,.hljs-symbol,.hljs-bullet{color:#29a329}.hljs-title,.hljs-section{color:#3d62f5}.hljs-keyword,.hljs-selector-tag{color:#ad2bee}.hljs{display:block;overflow-x:auto;background:#131513;color:#8ca68c;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-seaside-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#687d68}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#e6193c}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#87711d}.hljs-string,.hljs-symbol,.hljs-bullet{color:#29a329}.hljs-title,.hljs-section{color:#3d62f5}.hljs-keyword,.hljs-selector-tag{color:#ad2bee}.hljs{display:block;overflow-x:auto;background:#f4fbf4;color:#5e6e5e;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-sulphurpool-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#898ea4}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#c94922}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#c76b29}.hljs-string,.hljs-symbol,.hljs-bullet{color:#ac9739}.hljs-title,.hljs-section{color:#3d8fd1}.hljs-keyword,.hljs-selector-tag{color:#6679cc}.hljs{display:block;overflow-x:auto;background:#202746;color:#979db4;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atelier-sulphurpool-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#6b7394}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-regexp,.hljs-link,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#c94922}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#c76b29}.hljs-string,.hljs-symbol,.hljs-bullet{color:#ac9739}.hljs-title,.hljs-section{color:#3d8fd1}.hljs-keyword,.hljs-selector-tag{color:#6679cc}.hljs{display:block;overflow-x:auto;background:#f5f7ff;color:#5e6687;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atom-one-dark-reasonable.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-keyword,.hljs-operator{color:#F92672}.hljs-pattern-match{color:#F92672}.hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-function{color:#61aeee}.hljs-function .hljs-params{color:#A6E22E}.hljs-function .hljs-params .hljs-typing{color:#FD971F}.hljs-module-access .hljs-module{color:#7e57c2}.hljs-constructor{color:#e2b93d}.hljs-constructor .hljs-string{color:#9CCC65}.hljs-comment,.hljs-quote{color:#b18eb1;font-style:italic}.hljs-doctag,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atom-one-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/atom-one-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#a626a4}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#986801}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/brown-paper.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#b7a68e url(./brown-papersq.png)}.hljs-keyword,.hljs-selector-tag,.hljs-literal{color:#005599;font-weight:bold}.hljs,.hljs-subst{color:#363c69}.hljs-string,.hljs-title,.hljs-section,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable,.hljs-link,.hljs-name{color:#2c009f}.hljs-comment,.hljs-quote,.hljs-meta,.hljs-deletion{color:#802022}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-title,.hljs-section,.hljs-type,.hljs-name,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
|
After Width: | Height: | Size: 18 KiB |
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/codepen-embed.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#222;color:#fff}.hljs-comment,.hljs-quote{color:#777}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-regexp,.hljs-meta,.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-params,.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-deletion{color:#ab875d}.hljs-section,.hljs-title,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-type,.hljs-attribute{color:#9b869b}.hljs-string,.hljs-keyword,.hljs-selector-tag,.hljs-addition{color:#8f9c6c}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/color-brewer.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#fff}.hljs,.hljs-subst{color:#000}.hljs-string,.hljs-meta,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-addition{color:#756bb1}.hljs-comment,.hljs-quote{color:#636363}.hljs-number,.hljs-regexp,.hljs-literal,.hljs-bullet,.hljs-link{color:#31a354}.hljs-deletion,.hljs-variable{color:#88f}.hljs-keyword,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-built_in,.hljs-doctag,.hljs-type,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-strong{color:#3182bd}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/darcula.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#bababa}.hljs-strong,.hljs-emphasis{color:#a8a8a2}.hljs-bullet,.hljs-quote,.hljs-link,.hljs-number,.hljs-regexp,.hljs-literal{color:#6896ba}.hljs-code,.hljs-selector-class{color:#a6e22e}.hljs-emphasis{font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-attribute,.hljs-name,.hljs-variable{color:#cb7832}.hljs-params{color:#b9b9b9}.hljs-string{color:#6a8759}.hljs-subst,.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-symbol,.hljs-selector-id,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-template-tag,.hljs-template-variable,.hljs-addition{color:#e0c46c}.hljs-comment,.hljs-deletion,.hljs-meta{color:#7f7f7f}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#444}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:white}.hljs,.hljs-subst{color:#ddd}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#d88}.hljs-comment,.hljs-quote,.hljs-deletion,.hljs-meta{color:#777}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-title,.hljs-section,.hljs-doctag,.hljs-type,.hljs-name,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/darkula.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
@import url('darcula.css');
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/default.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/docco.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#f8f8ff}.hljs-comment,.hljs-quote{color:#408080;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-subst{color:#954121}.hljs-number{color:#40a070}.hljs-string,.hljs-doctag{color:#219161}.hljs-selector-id,.hljs-selector-class,.hljs-section,.hljs-type{color:#19469d}.hljs-params{color:#00f}.hljs-title{color:#458;font-weight:bold}.hljs-tag,.hljs-name,.hljs-attribute{color:#000080;font-weight:normal}.hljs-variable,.hljs-template-variable{color:#008080}.hljs-regexp,.hljs-link{color:#b68}.hljs-symbol,.hljs-bullet{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/dracula.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#282a36}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:#8be9fd}.hljs-function .hljs-keyword{color:#ff79c6}.hljs,.hljs-subst{color:#f8f8f2}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#f1fa8c}.hljs-comment,.hljs-quote,.hljs-deletion,.hljs-meta{color:#6272a4}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-title,.hljs-section,.hljs-doctag,.hljs-type,.hljs-name,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/far.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#000080}.hljs,.hljs-subst{color:#0ff}.hljs-string,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-built_in,.hljs-builtin-name,.hljs-template-tag,.hljs-template-variable,.hljs-addition{color:#ff0}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-type,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-variable{color:#fff}.hljs-comment,.hljs-quote,.hljs-doctag,.hljs-deletion{color:#888}.hljs-number,.hljs-regexp,.hljs-literal,.hljs-link{color:#0f0}.hljs-meta{color:#008080}.hljs-keyword,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-name,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/foundation.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#eee;color:black}.hljs-link,.hljs-emphasis,.hljs-attribute,.hljs-addition{color:#070}.hljs-emphasis{font-style:italic}.hljs-strong,.hljs-string,.hljs-deletion{color:#d14}.hljs-strong{font-weight:bold}.hljs-quote,.hljs-comment{color:#998;font-style:italic}.hljs-section,.hljs-title{color:#900}.hljs-class .hljs-title,.hljs-type{color:#458}.hljs-variable,.hljs-template-variable{color:#336699}.hljs-bullet{color:#997700}.hljs-meta{color:#3344bb}.hljs-code,.hljs-number,.hljs-literal,.hljs-keyword,.hljs-selector-tag{color:#099}.hljs-regexp{background-color:#fff0ff;color:#880088}.hljs-symbol{color:#990073}.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#007700}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/github-gist.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;background:white;padding:.5em;color:#333333;overflow-x:auto}.hljs-comment,.hljs-meta{color:#969896}.hljs-variable,.hljs-template-variable,.hljs-strong,.hljs-emphasis,.hljs-quote{color:#df5000}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#d73a49}.hljs-literal,.hljs-symbol,.hljs-bullet,.hljs-attribute{color:#0086b3}.hljs-section,.hljs-name{color:#63a35c}.hljs-tag{color:#333333}.hljs-title,.hljs-attr,.hljs-selector-id,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo{color:#6f42c1}.hljs-addition{color:#55a532;background-color:#eaffea}.hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-link{text-decoration:underline}.hljs-number{color:#005cc5}.hljs-string{color:#032f62}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/github.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{color:#008080}.hljs-string,.hljs-doctag{color:#d14}.hljs-title,.hljs-section,.hljs-selector-id{color:#900;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-type,.hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-tag,.hljs-name,.hljs-attribute{color:#000080;font-weight:normal}.hljs-regexp,.hljs-link{color:#009926}.hljs-symbol,.hljs-bullet{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/gml.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#222222;color:#C0C0C0}.hljs-keyword{color:#FFB871;font-weight:bold}.hljs-built_in{color:#FFB871}.hljs-literal{color:#FF8080}.hljs-symbol{color:#58E55A}.hljs-comment{color:#5B995B}.hljs-string{color:#FFFF00}.hljs-number{color:#FF8080}.hljs-attribute,.hljs-selector-tag,.hljs-doctag,.hljs-name,.hljs-bullet,.hljs-code,.hljs-addition,.hljs-regexp,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-type,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion,.hljs-title,.hljs-section,.hljs-function,.hljs-meta-keyword,.hljs-meta,.hljs-subst{color:#C0C0C0}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/googlecode.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-comment,.hljs-quote{color:#800}.hljs-keyword,.hljs-selector-tag,.hljs-section,.hljs-title,.hljs-name{color:#008}.hljs-variable,.hljs-template-variable{color:#660}.hljs-string,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-regexp{color:#080}.hljs-literal,.hljs-symbol,.hljs-bullet,.hljs-meta,.hljs-number,.hljs-link{color:#066}.hljs-title,.hljs-doctag,.hljs-type,.hljs-attr,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:#606}.hljs-attribute,.hljs-subst{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-selector-id,.hljs-selector-class{color:#9B703F}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-doctag,.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/gradient-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#501f7a;background:linear-gradient(166deg, #501f7a 0%, #2820b3 80%);color:#e7e4eb}.hljs-subtr{color:#e7e4eb}.hljs-doctag,.hljs-meta,.hljs-comment,.hljs-quote{color:#af8dd9}.hljs-selector-tag,.hljs-selector-id,.hljs-template-tag,.hljs-regexp,.hljs-attr,.hljs-tag{color:#AEFBFF}.hljs-params,.hljs-selector-class,.hljs-bullet{color:#F19FFF}.hljs-keyword,.hljs-section,.hljs-meta-keyword,.hljs-symbol,.hljs-type{color:#17fc95}.hljs-addition,.hljs-number,.hljs-link{color:#C5FE00}.hljs-string{color:#38c0ff}.hljs-attribute,.hljs-addition{color:#E7FF9F}.hljs-variable,.hljs-template-variable{color:#E447FF}.hljs-builtin-name,.hljs-built_in,.hljs-formula,.hljs-name,.hljs-title,.hljs-class,.hljs-function{color:#FFC800}.hljs-selector-pseudo,.hljs-deletion,.hljs-literal{color:#FF9E44}.hljs-emphasis,.hljs-quote{font-style:italic}.hljs-params,.hljs-selector-class,.hljs-strong,.hljs-selector-tag,.hljs-selector-id,.hljs-template-tag,.hljs-section,.hljs-keyword{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/grayscale.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fff}.hljs-comment,.hljs-quote{color:#777;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-number,.hljs-literal{color:#777}.hljs-string,.hljs-doctag,.hljs-formula{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat}.hljs-title,.hljs-section,.hljs-selector-id{color:#000;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.hljs-type,.hljs-name{color:#333;font-weight:bold}.hljs-tag{color:#333}.hljs-regexp{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat}.hljs-symbol,.hljs-bullet,.hljs-link{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat}.hljs-built_in,.hljs-builtin-name{color:#000;text-decoration:underline}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{color:#fff;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat}.hljs-addition{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/gruvbox-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#282828}.hljs,.hljs-subst{color:#ebdbb2}.hljs-deletion,.hljs-formula,.hljs-keyword,.hljs-link,.hljs-selector-tag{color:#fb4934}.hljs-built_in,.hljs-emphasis,.hljs-name,.hljs-quote,.hljs-strong,.hljs-title,.hljs-variable{color:#83a598}.hljs-attr,.hljs-params,.hljs-template-tag,.hljs-type{color:#fabd2f}.hljs-builtin-name,.hljs-doctag,.hljs-literal,.hljs-number{color:#8f3f71}.hljs-code,.hljs-meta,.hljs-regexp,.hljs-selector-id,.hljs-template-variable{color:#fe8019}.hljs-addition,.hljs-meta-string,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-string,.hljs-symbol{color:#b8bb26}.hljs-attribute,.hljs-bullet,.hljs-class,.hljs-function,.hljs-function .hljs-keyword,.hljs-meta-keyword,.hljs-selector-pseudo,.hljs-tag{color:#8ec07c}.hljs-comment{color:#928374}.hljs-link_label,.hljs-literal,.hljs-number{color:#d3869b}.hljs-comment,.hljs-emphasis{font-style:italic}.hljs-section,.hljs-strong,.hljs-tag{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/gruvbox-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#fbf1c7}.hljs,.hljs-subst{color:#3c3836}.hljs-deletion,.hljs-formula,.hljs-keyword,.hljs-link,.hljs-selector-tag{color:#9d0006}.hljs-built_in,.hljs-emphasis,.hljs-name,.hljs-quote,.hljs-strong,.hljs-title,.hljs-variable{color:#076678}.hljs-attr,.hljs-params,.hljs-template-tag,.hljs-type{color:#b57614}.hljs-builtin-name,.hljs-doctag,.hljs-literal,.hljs-number{color:#8f3f71}.hljs-code,.hljs-meta,.hljs-regexp,.hljs-selector-id,.hljs-template-variable{color:#af3a03}.hljs-addition,.hljs-meta-string,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-string,.hljs-symbol{color:#79740e}.hljs-attribute,.hljs-bullet,.hljs-class,.hljs-function,.hljs-function .hljs-keyword,.hljs-meta-keyword,.hljs-selector-pseudo,.hljs-tag{color:#427b58}.hljs-comment{color:#928374}.hljs-link_label,.hljs-literal,.hljs-number{color:#8f3f71}.hljs-comment,.hljs-emphasis{font-style:italic}.hljs-section,.hljs-strong,.hljs-tag{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/hopscotch.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#989498}.hljs-variable,.hljs-template-variable,.hljs-attribute,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-link,.hljs-deletion{color:#dd464c}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params{color:#fd8b19}.hljs-class .hljs-title{color:#fdcc59}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#8fc13e}.hljs-meta{color:#149b93}.hljs-function,.hljs-section,.hljs-title{color:#1290bf}.hljs-keyword,.hljs-selector-tag{color:#c85e7c}.hljs{display:block;overflow-x:auto;background:#322931;color:#b9b5b8;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/hybrid.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#1d1f21}.hljs::selection,.hljs span::selection{background:#373b41}.hljs::-moz-selection,.hljs span::-moz-selection{background:#373b41}.hljs{color:#c5c8c6}.hljs-title,.hljs-name{color:#f0c674}.hljs-comment,.hljs-meta,.hljs-meta .hljs-keyword{color:#707880}.hljs-number,.hljs-symbol,.hljs-literal,.hljs-deletion,.hljs-link{color:#cc6666}.hljs-string,.hljs-doctag,.hljs-addition,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-keyword,.hljs-selector-tag,.hljs-bullet,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#8abeb7}.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-quote,.hljs-section,.hljs-selector-class{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/idea.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#fff}.hljs-subst,.hljs-title{font-weight:normal;color:#000}.hljs-comment,.hljs-quote{color:#808080;font-style:italic}.hljs-meta{color:#808000}.hljs-tag{background:#efefef}.hljs-section,.hljs-name,.hljs-literal,.hljs-keyword,.hljs-selector-tag,.hljs-type,.hljs-selector-id,.hljs-selector-class{font-weight:bold;color:#000080}.hljs-attribute,.hljs-number,.hljs-regexp,.hljs-link{font-weight:bold;color:#0000ff}.hljs-number,.hljs-regexp,.hljs-link{font-weight:normal}.hljs-string{color:#008000;font-weight:bold}.hljs-symbol,.hljs-bullet,.hljs-formula{color:#000;background:#d0eded;font-style:italic}.hljs-doctag{text-decoration:underline}.hljs-variable,.hljs-template-variable{color:#660e7a}.hljs-addition{background:#baeeba}.hljs-deletion{background:#ffc8bd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/ir-black.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}.hljs-comment,.hljs-quote,.hljs-meta{color:#7c7c7c}.hljs-keyword,.hljs-selector-tag,.hljs-tag,.hljs-name{color:#96cbfe}.hljs-attribute,.hljs-selector-id{color:#ffffb6}.hljs-string,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition{color:#a8ff60}.hljs-subst{color:#daefa3}.hljs-regexp,.hljs-link{color:#e9c062}.hljs-title,.hljs-section,.hljs-type,.hljs-doctag{color:#ffffb6}.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable,.hljs-literal{color:#c6c5fe}.hljs-number,.hljs-deletion{color:#ff73fd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/isbl-editor-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#404040;color:#f0f0f0}.hljs,.hljs-subst{color:#f0f0f0}.hljs-comment{color:#b5b5b5;font-style:italic}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{color:#f0f0f0;font-weight:bold}.hljs-string{color:#97bf0d}.hljs-type,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#f0f0f0}.hljs-title,.hljs-section{color:#df471e}.hljs-title>.hljs-built_in{color:#81bce9;font-weight:normal}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#e2c696}.hljs-built_in,.hljs-literal{color:#97bf0d;font-weight:bold}.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-class{color:#ce9d4d;font-weight:bold}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/isbl-editor-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-subst{color:black}.hljs-comment{color:#555555;font-style:italic}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{color:#000000;font-weight:bold}.hljs-string{color:#000080}.hljs-type,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#000000}.hljs-title,.hljs-section{color:#fb2c00}.hljs-title>.hljs-built_in{color:#008080;font-weight:normal}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#5e1700}.hljs-built_in,.hljs-literal{color:#000080;font-weight:bold}.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-class{color:#6f1C00;font-weight:bold}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/kimbie.dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#d6baad}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-meta{color:#dc3958}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-deletion,.hljs-link{color:#f79a32}.hljs-title,.hljs-section,.hljs-attribute{color:#f06431}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#889b4a}.hljs-keyword,.hljs-selector-tag,.hljs-function{color:#98676a}.hljs{display:block;overflow-x:auto;background:#221a0f;color:#d3af86;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/kimbie.light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#a57a4c}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-meta{color:#dc3958}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-deletion,.hljs-link{color:#f79a32}.hljs-title,.hljs-section,.hljs-attribute{color:#f06431}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#889b4a}.hljs-keyword,.hljs-selector-tag,.hljs-function{color:#98676a}.hljs{display:block;overflow-x:auto;background:#fbebd4;color:#84613d;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/lightfair.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em}.hljs-name{color:#01a3a3}.hljs-tag,.hljs-meta{color:#778899}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#4286f4}.hljs-title,.hljs-section{color:#4286f4;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#62bcbc}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#25c6c6}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/magula.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background-color:#f4f4f4;color:black}.hljs-subst{color:black}.hljs-string,.hljs-title,.hljs-symbol,.hljs-bullet,.hljs-attribute,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#050}.hljs-comment,.hljs-quote{color:#777}.hljs-number,.hljs-regexp,.hljs-literal,.hljs-type,.hljs-link{color:#800}.hljs-deletion,.hljs-meta{color:#00e}.hljs-keyword,.hljs-selector-tag,.hljs-doctag,.hljs-title,.hljs-section,.hljs-built_in,.hljs-tag,.hljs-name{font-weight:bold;color:navy}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/mono-blue.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#eaeef3;color:#00193a}.hljs-keyword,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-doctag,.hljs-name,.hljs-strong{font-weight:bold}.hljs-comment{color:#738191}.hljs-string,.hljs-title,.hljs-section,.hljs-built_in,.hljs-literal,.hljs-type,.hljs-addition,.hljs-tag,.hljs-quote,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#0048ab}.hljs-meta,.hljs-subst,.hljs-symbol,.hljs-regexp,.hljs-attribute,.hljs-deletion,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-bullet{color:#4c81c9}.hljs-emphasis{font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/monokai-sublime.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#23241f}.hljs,.hljs-tag,.hljs-subst{color:#f8f8f2}.hljs-strong,.hljs-emphasis{color:#a8a8a2}.hljs-bullet,.hljs-quote,.hljs-number,.hljs-regexp,.hljs-literal,.hljs-link{color:#ae81ff}.hljs-code,.hljs-title,.hljs-section,.hljs-selector-class{color:#a6e22e}.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-name,.hljs-attr{color:#f92672}.hljs-symbol,.hljs-attribute{color:#66d9ef}.hljs-params,.hljs-class .hljs-title{color:#f8f8f2}.hljs-string,.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-selector-id,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/monokai.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#272822;color:#ddd}.hljs-tag,.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-strong,.hljs-name{color:#f92672}.hljs-code{color:#66d9ef}.hljs-class .hljs-title{color:white}.hljs-attribute,.hljs-symbol,.hljs-regexp,.hljs-link{color:#bf79db}.hljs-string,.hljs-bullet,.hljs-subst,.hljs-title,.hljs-section,.hljs-emphasis,.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#a6e22e}.hljs-comment,.hljs-quote,.hljs-deletion,.hljs-meta{color:#75715e}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-title,.hljs-section,.hljs-type,.hljs-selector-id{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/night-owl.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#011627;color:#d6deeb}.hljs-keyword{color:#c792ea;font-style:italic}.hljs-built_in{color:#addb67;font-style:italic}.hljs-type{color:#82aaff}.hljs-literal{color:#ff5874}.hljs-number{color:#F78C6C}.hljs-regexp{color:#5ca7e4}.hljs-string{color:#ecc48d}.hljs-subst{color:#d3423e}.hljs-symbol{color:#82aaff}.hljs-class{color:#ffcb8b}.hljs-function{color:#82AAFF}.hljs-title{color:#DCDCAA;font-style:italic}.hljs-params{color:#7fdbca}.hljs-comment{color:#637777;font-style:italic}.hljs-doctag{color:#7fdbca}.hljs-meta{color:#82aaff}.hljs-meta-keyword{color:#82aaff}.hljs-meta-string{color:#ecc48d}.hljs-section{color:#82b1ff}.hljs-tag,.hljs-name,.hljs-builtin-name{color:#7fdbca}.hljs-attr{color:#7fdbca}.hljs-attribute{color:#80cbc4}.hljs-variable{color:#addb67}.hljs-bullet{color:#d9f5dd}.hljs-code{color:#80CBC4}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-strong{color:#addb67;font-weight:bold}.hljs-formula{color:#c792ea}.hljs-link{color:#ff869a}.hljs-quote{color:#697098;font-style:italic}.hljs-selector-tag{color:#ff6363}.hljs-selector-id{color:#fad430}.hljs-selector-class{color:#addb67;font-style:italic}.hljs-selector-attr,.hljs-selector-pseudo{color:#c792ea;font-style:italic}.hljs-template-tag{color:#c792ea}.hljs-template-variable{color:#addb67}.hljs-addition{color:#addb67ff;font-style:italic}.hljs-deletion{color:#EF535090;font-style:italic}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/nord.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#2E3440}.hljs,.hljs-subst{color:#D8DEE9}.hljs-selector-tag{color:#81A1C1}.hljs-selector-id{color:#8FBCBB;font-weight:bold}.hljs-selector-class{color:#8FBCBB}.hljs-selector-attr{color:#8FBCBB}.hljs-selector-pseudo{color:#88C0D0}.hljs-addition{background-color:rgba(163,190,140,0.5)}.hljs-deletion{background-color:rgba(191,97,106,0.5)}.hljs-built_in,.hljs-type{color:#8FBCBB}.hljs-class{color:#8FBCBB}.hljs-function{color:#88C0D0}.hljs-function>.hljs-title{color:#88C0D0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81A1C1}.hljs-number{color:#B48EAD}.hljs-regexp{color:#EBCB8B}.hljs-string{color:#A3BE8C}.hljs-title{color:#8FBCBB}.hljs-params{color:#D8DEE9}.hljs-bullet{color:#81A1C1}.hljs-code{color:#8FBCBB}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8FBCBB}.hljs-strong{font-weight:bold}.hljs-link:hover{text-decoration:underline}.hljs-quote{color:#4C566A}.hljs-comment{color:#4C566A}.hljs-doctag{color:#8FBCBB}.hljs-meta,.hljs-meta-keyword{color:#5E81AC}.hljs-meta-string{color:#A3BE8C}.hljs-attr{color:#8FBCBB}.hljs-attribute{color:#D8DEE9}.hljs-builtin-name{color:#81A1C1}.hljs-name{color:#81A1C1}.hljs-section{color:#88C0D0}.hljs-tag{color:#81A1C1}.hljs-variable{color:#D8DEE9}.hljs-template-variable{color:#D8DEE9}.hljs-template-tag{color:#5E81AC}.abnf .hljs-attribute{color:#88C0D0}.abnf .hljs-symbol{color:#EBCB8B}.apache .hljs-attribute{color:#88C0D0}.apache .hljs-section{color:#81A1C1}.arduino .hljs-built_in{color:#88C0D0}.aspectj .hljs-meta{color:#D08770}.aspectj>.hljs-title{color:#88C0D0}.bnf .hljs-attribute{color:#8FBCBB}.clojure .hljs-name{color:#88C0D0}.clojure .hljs-symbol{color:#EBCB8B}.coq .hljs-built_in{color:#88C0D0}.cpp .hljs-meta-string{color:#8FBCBB}.css .hljs-built_in{color:#88C0D0}.css .hljs-keyword{color:#D08770}.diff .hljs-meta{color:#8FBCBB}.ebnf .hljs-attribute{color:#8FBCBB}.glsl .hljs-built_in{color:#88C0D0}.groovy .hljs-meta:not(:first-child){color:#D08770}.haxe .hljs-meta{color:#D08770}.java .hljs-meta{color:#D08770}.ldif .hljs-attribute{color:#8FBCBB}.lisp .hljs-name{color:#88C0D0}.lua .hljs-built_in{color:#88C0D0}.moonscript .hljs-built_in{color:#88C0D0}.nginx .hljs-attribute{color:#88C0D0}.nginx .hljs-section{color:#5E81AC}.pf .hljs-built_in{color:#88C0D0}.processing .hljs-built_in{color:#88C0D0}.scss .hljs-keyword{color:#81A1C1}.stylus .hljs-keyword{color:#81A1C1}.swift .hljs-meta{color:#D08770}.vim .hljs-built_in{color:#88C0D0;font-style:italic}.yaml .hljs-meta{color:#D08770}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/obsidian.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs{display:block;overflow-x:auto;padding:.5em;background:#282b2e}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-selector-id{color:#93c763}.hljs-number{color:#ffcd22}.hljs{color:#e0e2e4}.hljs-attribute{color:#668bb0}.hljs-code,.hljs-class .hljs-title,.hljs-section{color:white}.hljs-regexp,.hljs-link{color:#d39745}.hljs-meta{color:#557182}.hljs-tag,.hljs-name,.hljs-bullet,.hljs-subst,.hljs-emphasis,.hljs-type,.hljs-built_in,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#8cbbad}.hljs-string,.hljs-symbol{color:#ec7600}.hljs-comment,.hljs-quote,.hljs-deletion{color:#818e96}.hljs-selector-class{color:#A082BD}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-title,.hljs-section,.hljs-type,.hljs-name,.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/ocean.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#65737e}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-deletion{color:#bf616a}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-meta,.hljs-link{color:#d08770}.hljs-attribute{color:#ebcb8b}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#a3be8c}.hljs-title,.hljs-section{color:#8fa1b3}.hljs-keyword,.hljs-selector-tag{color:#b48ead}.hljs{display:block;overflow-x:auto;background:#2b303b;color:#c0c5ce;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/paraiso-dark.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#8d8687}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-link,.hljs-meta{color:#ef6155}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-deletion{color:#f99b15}.hljs-title,.hljs-section,.hljs-attribute{color:#fec418}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs{display:block;overflow-x:auto;background:#2f1e2e;color:#a39e9b;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
1
OpenColloq/WS24_EntityComponentSystem/public/highlight-js/paraiso-light.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.hljs-comment,.hljs-quote{color:#776e71}.hljs-variable,.hljs-template-variable,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-regexp,.hljs-link,.hljs-meta{color:#ef6155}.hljs-number,.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-type,.hljs-params,.hljs-deletion{color:#f99b15}.hljs-title,.hljs-section,.hljs-attribute{color:#fec418}.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs{display:block;overflow-x:auto;background:#e7e9db;color:#4f424c;padding:.5em}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
|
After Width: | Height: | Size: 1.2 KiB |