From 8d28fa1b09704b590f11bfa77aafae5bc4dd99cc Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 21 Jul 2026 22:11:06 +0000 Subject: [PATCH 1/7] feat(physics): add TerrainShape for 2D heightmap terrain Adds a static, non-convex ground collider defined by a heightmap (ordered surface points closed off by a flat bottom edge), with circle/polygon narrow-phase collision resolved per-segment by reusing the existing SAT code paths (factored into shared circle-polygon and polygon-faces helpers). Also adds getSharedWhiteTexture so terrain (and other untextured, tinted shapes) can be rendered as solid-color sprites. Updates the physics demo to use a rolling-hill TerrainShape floor instead of a flat wall, and documents the new shape in the physics guide. Closes #519 --- .cspell/project-words.txt | 3 + documentation-site/docs/docs/physics/index.md | 4 + .../docs/docs/physics/terrain.md | 87 +++++ .../pages/demos/physics/_create-boundaries.ts | 12 +- .../src/pages/demos/physics/_create-game.ts | 2 + .../pages/demos/physics/_create-terrain.ts | 180 ++++++++++ .../src/pages/demos/physics/index.tsx | 7 +- .../collision/circle-polygon-contact.ts | 156 +++++++++ .../detect-circle-polygon-collision.ts | 103 +----- .../detect-circle-terrain-collision.test.ts | 116 ++++++ .../detect-circle-terrain-collision.ts | 96 +++++ .../collision/detect-collision.test.ts | 82 ++++- src/physics/collision/detect-collision.ts | 12 + .../detect-polygon-polygon-collision.ts | 293 +--------------- .../detect-polygon-terrain-collision.test.ts | 96 +++++ .../detect-polygon-terrain-collision.ts | 92 +++++ src/physics/collision/index.ts | 4 + .../collision/polygon-faces-collision.ts | 330 ++++++++++++++++++ src/physics/physics-world.test.ts | 29 +- src/physics/shapes/index.ts | 2 + src/physics/shapes/polygon-math.ts | 98 ++++++ src/physics/shapes/polygon-shape.ts | 76 +--- src/physics/shapes/shape.ts | 8 +- src/physics/shapes/terrain-shape.test.ts | 132 +++++++ src/physics/shapes/terrain-shape.ts | 204 +++++++++++ .../utils/shared-placeholder-texture.test.ts | 82 ++++- .../utils/shared-placeholder-texture.ts | 73 +++- 27 files changed, 1881 insertions(+), 498 deletions(-) create mode 100644 documentation-site/docs/docs/physics/terrain.md create mode 100644 documentation-site/src/pages/demos/physics/_create-terrain.ts create mode 100644 src/physics/collision/circle-polygon-contact.ts create mode 100644 src/physics/collision/detect-circle-terrain-collision.test.ts create mode 100644 src/physics/collision/detect-circle-terrain-collision.ts create mode 100644 src/physics/collision/detect-polygon-terrain-collision.test.ts create mode 100644 src/physics/collision/detect-polygon-terrain-collision.ts create mode 100644 src/physics/collision/polygon-faces-collision.ts create mode 100644 src/physics/shapes/polygon-math.ts create mode 100644 src/physics/shapes/terrain-shape.test.ts create mode 100644 src/physics/shapes/terrain-shape.ts diff --git a/.cspell/project-words.txt b/.cspell/project-words.txt index 79986b2b..6f552162 100644 --- a/.cspell/project-words.txt +++ b/.cspell/project-words.txt @@ -25,6 +25,7 @@ gamepadconnected Gamepads GLSL greyscale +heightmap Heliagon highp hitscan @@ -77,11 +78,13 @@ texels thresholded thresholding thumbstick +tintable unblurred undersamples unmarks unnegated unrotated +untextured updatables upsamples uvec diff --git a/documentation-site/docs/docs/physics/index.md b/documentation-site/docs/docs/physics/index.md index 1c41ef94..8543aff7 100644 --- a/documentation-site/docs/docs/physics/index.md +++ b/documentation-site/docs/docs/physics/index.md @@ -17,6 +17,8 @@ Core concepts: - [`CircleShape`](/Forge/docs/api/classes/CircleShape) and [`PolygonShape`](/Forge/docs/api/classes/PolygonShape): the convex shapes a `RigidBody` can have. +- [`TerrainShape`](/Forge/docs/api/classes/TerrainShape): a static heightmap + ground shape for non-convex 2D terrain. - [`raycast`](/Forge/docs/api/functions/raycast): casts a ray against a set of bodies. - [`PrismaticJoint`](/Forge/docs/api/classes/PrismaticJoint): a slider @@ -41,6 +43,8 @@ Guides in this section: along a single axis. - [Revolute Joints (Hinges)](./revolute-joints.md): pinning bodies together at a point while leaving rotation free. +- [Terrain](./terrain.md): building non-convex 2D ground out of a + heightmap. ## Quick Start diff --git a/documentation-site/docs/docs/physics/terrain.md b/documentation-site/docs/docs/physics/terrain.md new file mode 100644 index 00000000..8ca5a7c4 --- /dev/null +++ b/documentation-site/docs/docs/physics/terrain.md @@ -0,0 +1,87 @@ +--- +sidebar_position: 6 +--- + +# Terrain + +[`TerrainShape`](/Forge/docs/api/classes/TerrainShape) is a collision shape +for static 2D ground: a heightmap made of surface points, ordered left to +right, closed off into a solid slab by a flat bottom edge. Use it instead of +a `PolygonShape` when your ground isn't a single convex box - rolling hills, +a canyon profile, or any left-to-right surface with more than one slope. + +```ts +import { Vector2 } from '@forge-game-engine/forge/math'; +import { RigidBody, TerrainShape } from '@forge-game-engine/forge/physics'; + +const groundBody = new RigidBody({ + shape: new TerrainShape( + [ + new Vector2(-400, 40), + new Vector2(-200, -20), + new Vector2(0, 0), + new Vector2(200, -60), + new Vector2(400, 20), + ], + 200, // depth: how far the solid slab extends below the lowest point + ), + isStatic: true, +}); +``` + +## Authoring points + +`points` must have at least 2 entries and be ordered by strictly increasing +`x` - `TerrainShape` throws otherwise. Unlike `PolygonShape`, it does **not** +re-center vertices around their centroid: `points` are used exactly as +authored, in the shape's own local space, so the easiest way to work with +terrain is to author points directly in world coordinates and leave the +owning body's `position` at `Vector2.zero`. + +`depth` sets how far the solid slab extends below the lowest of `points`, +closing the heightmap into a shape with well-defined area/collision volume. +It only needs to be deep enough that nothing can tunnel through the bottom; +a few hundred units is typically more than enough headroom. + +:::caution +`TerrainShape` is intended for **static** bodies only (`isStatic: true`). A +heightmap has no natural mass distribution to simulate as a moving object - +`getArea`/`getMomentOfInertia` are implemented for interface-completeness, +but nothing in the engine exercises a dynamic terrain body. +::: + +## How collision works + +Internally, `TerrainShape` triangulates the heightmap into one convex quad +per consecutive pair of points (`segments`), each spanning from the two +surface points down to the shared flat bottom edge. `PhysicsWorld` dispatches +circle/polygon-vs-terrain collisions by running the existing +circle-vs-polygon and polygon-vs-polygon narrow phase against whichever +segments overlap the other body's local x-range, then keeping the deepest +resulting contact. This means terrain collision reuses the same, already +battle-tested SAT code paths as `CircleShape`/`PolygonShape` - there's no +separate "terrain physics" to reason about, and any body that already +collides correctly with a `PolygonShape` floor collides correctly with a +`TerrainShape` one too. + +Broad-phase culling (`RigidBody.aabb`) still uses `getBoundingRadius()`, +which for a long terrain strip produces a large, roughly-square bounding box +around the whole shape (the same simplification `PolygonShape` makes for any +elongated shape). This doesn't affect correctness, only how many pairs reach +the narrow phase - for very large worlds, prefer several shorter +`TerrainShape` bodies over one shape spanning the whole level. + +## Rendering + +The engine's sprite renderer draws rotated/scaled quads and has no built-in +terrain mesh renderer, so visualizing a `TerrainShape` is left to your game +code, the same way the [physics demo](/Forge/demos/physics) hand-builds its +boundary walls out of `PolygonShape` and a sprite. A common approach is to +draw one sprite per segment: a thin rectangle spanning each pair of surface +points, rotated to match the slope and tinted a solid ground color via +[`getSharedWhiteTexture`](/Forge/docs/api/functions/getSharedWhiteTexture) +(a 1x1 white texture, so the sprite shader's tint multiplies through +unmodified). See the [physics demo](/Forge/demos/physics)'s +`create-terrain.ts` for a complete example, including computing each +segment's position, rotation, and width from the same `points`/`depth` +passed to `TerrainShape`. diff --git a/documentation-site/src/pages/demos/physics/_create-boundaries.ts b/documentation-site/src/pages/demos/physics/_create-boundaries.ts index 302ed9cc..4e09ac36 100644 --- a/documentation-site/src/pages/demos/physics/_create-boundaries.ts +++ b/documentation-site/src/pages/demos/physics/_create-boundaries.ts @@ -21,8 +21,9 @@ import { getAssetUrl } from '@site/src/utils/get-asset-url'; export const wallThickness = 40; /** - * Creates static rigid bodies for the floor and side walls, bounding the - * area in which shapes can fall and collide. + * Creates static rigid bodies for the side walls, bounding the area in + * which shapes can fall and collide. The floor is a `TerrainShape` instead + * (see `createTerrain`), rather than a third flat wall. * @param world - The ECS world to add the boundary entities to. * @param renderContext - The render context used to load the wall sprite. * @param renderLayer - The render layer the boundaries should be drawn on. @@ -39,7 +40,6 @@ export async function createBoundaries( const { width, height } = renderContext.canvas; const halfWidth = width / 2; - const halfHeight = height / 2; const createWall = ( position: Vector2, @@ -77,12 +77,6 @@ export async function createBoundaries( }); }; - createWall( - new Vector2(0, -halfHeight + wallThickness / 2), - width, - wallThickness, - ); - createWall( new Vector2(-halfWidth + wallThickness / 2, 0), wallThickness, diff --git a/documentation-site/src/pages/demos/physics/_create-game.ts b/documentation-site/src/pages/demos/physics/_create-game.ts index 8fbbda16..bdc93362 100644 --- a/documentation-site/src/pages/demos/physics/_create-game.ts +++ b/documentation-site/src/pages/demos/physics/_create-game.ts @@ -11,6 +11,7 @@ import { } from '@forge-game-engine/forge/physics'; import { Vector2 } from '@forge-game-engine/forge/math'; import { createBoundaries } from './_create-boundaries'; +import { createTerrain } from './_create-terrain'; import { spawnShapes } from './_spawn-shapes'; const renderLayers = { @@ -38,6 +39,7 @@ export const createPhysicsGame = async (): Promise => { const physicsWorld = new PhysicsWorld({ gravity }); await createBoundaries(world, renderContext, renderLayers.foreground); + createTerrain(world, renderContext, renderLayers.foreground); await spawnShapes(world, renderContext, renderLayers.foreground); world.addSystem(createCameraEcsSystem(time)); diff --git a/documentation-site/src/pages/demos/physics/_create-terrain.ts b/documentation-site/src/pages/demos/physics/_create-terrain.ts new file mode 100644 index 00000000..8171cf58 --- /dev/null +++ b/documentation-site/src/pages/demos/physics/_create-terrain.ts @@ -0,0 +1,180 @@ +import { EcsWorld } from '@forge-game-engine/forge/ecs'; +import { + positionId, + rotationId, +} from '@forge-game-engine/forge/common'; +import { Vector2 } from '@forge-game-engine/forge/math'; +import { + PhysicsBodyId, + RigidBody, + TerrainShape, +} from '@forge-game-engine/forge/physics'; +import { + Color, + combineInstanceDataSegments, + createQuadGeometry, + getSharedBlackTexture, + getSharedWhiteTexture, + Material, + Renderable, + RenderContext, + spriteId, + spriteInstanceDataSegment, +} from '@forge-game-engine/forge/rendering'; +import { wallThickness } from './_create-boundaries'; + +const groundColor = new Color(0.36, 0.62, 0.32, 1); +const hillAmplitude = 60; +const terrainDepth = 400; +const pointCount = 9; + +/** + * Builds a shared `Renderable` for terrain segment sprites: the standard + * sprite vertex/fragment shaders, but sampling a 1x1 white texture instead + * of an image, so each segment renders as a flat, tintable rectangle rather + * than needing a ground image asset. + * @param renderContext - The render context to build the material with. + * @param layer - The render layer terrain segments should be drawn on. + * @returns The shared terrain segment `Renderable`. + */ +function createTerrainRenderable( + renderContext: RenderContext, + layer: number, +): Renderable { + const { shaderCache, gl } = renderContext; + + const material = new Material( + shaderCache.getShader('sprite.vert'), + shaderCache.getShader('sprite.frag'), + gl, + ); + + material.setUniform('u_texture', getSharedWhiteTexture(gl)); + material.setUniform('u_emissiveTexture', getSharedBlackTexture(gl)); + material.setColorUniform('u_emissiveColor', Color.white); + material.setUniform('u_emissiveIntensity', 0); + + const { floatsPerInstance, bindInstanceData, setupInstanceAttributes } = + combineInstanceDataSegments(spriteInstanceDataSegment); + + return new Renderable( + createQuadGeometry(gl), + material, + floatsPerInstance, + layer, + bindInstanceData, + setupInstanceAttributes, + ); +} + +/** + * Creates a rolling-hill `TerrainShape` body spanning the play area, + * replacing a flat floor, plus one sprite entity per terrain segment (a + * thin rotated rectangle following the slope) to render it. Demonstrates + * `TerrainShape` as described in the Terrain physics guide. + * @param world - The ECS world to add the terrain entities to. + * @param renderContext - The render context used to build the terrain sprite material. + * @param renderLayer - The render layer the terrain should be drawn on. + */ +export function createTerrain( + world: EcsWorld, + renderContext: RenderContext, + renderLayer: number, +): void { + const renderable = createTerrainRenderable(renderContext, renderLayer); + + const { width, height } = renderContext.canvas; + const halfHeight = height / 2; + const terrainWidth = width - wallThickness * 2; + const halfTerrainWidth = terrainWidth / 2; + + const points: Vector2[] = []; + + for (let i = 0; i < pointCount; i++) { + const t = i / (pointCount - 1); + const x = -halfTerrainWidth + t * terrainWidth; + const y = -hillAmplitude * Math.sin(Math.PI * t); + + points.push(new Vector2(x, y)); + } + + const terrainShape = new TerrainShape(points, terrainDepth); + + // Rotated 180 degrees: `TerrainShape` always extends its solid slab + // `depth` units in the +y direction from its surface points (in its own + // local space), but this demo's gravity pulls bodies toward -y. Rotating + // the body flips which world direction the slab extends in, so it faces + // the right way for bodies falling under this demo's gravity. + const angle = Math.PI; + const position = new Vector2(0, -halfHeight + wallThickness / 2); + + const terrainBody = new RigidBody({ + shape: terrainShape, + position, + angle, + isStatic: true, + }); + + const terrainEntity = world.createEntity(); + + world.addComponent(terrainEntity, positionId, { + world: position.clone(), + local: position.clone(), + }); + + // `RotationEcsComponent.world` is negated relative to `RigidBody.angle` + // (see the "Coordinate spaces" note in the Bodies and Shapes guide), the + // same convention `createPhysicsSyncEcsSystem` uses for every other + // static body. + world.addComponent(terrainEntity, rotationId, { + local: -angle, + world: -angle, + }); + + world.addComponent(terrainEntity, PhysicsBodyId, { + physicsBody: terrainBody, + }); + + for (let i = 0; i < points.length - 1; i++) { + const surfaceLeft = points[i]; + const surfaceRight = points[i + 1]; + const edge = surfaceRight.subtract(surfaceLeft); + const segmentWidth = edge.magnitude(); + + // The outward normal (away from the solid slab) in the terrain's local + // space; the segment sprite is centered `terrainDepth / 2` units in the + // opposite direction so it spans from the surface down into the ground. + const outwardNormal = edge.perpendicular().normalize(); + const localMidpoint = surfaceLeft + .add(surfaceRight) + .multiply(0.5) + .subtract(outwardNormal.multiply(terrainDepth / 2)); + + const segmentPosition = localMidpoint.rotate(angle).add(position); + const segmentAngle = Math.atan2(edge.y, edge.x) + angle; + + const segmentEntity = world.createEntity(); + + world.addComponent(segmentEntity, positionId, { + world: segmentPosition, + local: segmentPosition.clone(), + }); + + world.addComponent(segmentEntity, rotationId, { + local: -segmentAngle, + world: -segmentAngle, + }); + + world.addComponent(segmentEntity, spriteId, { + width: segmentWidth, + height: terrainDepth, + pivot: new Vector2(0.5, 0.5), + tintColor: groundColor, + renderable, + uvOffset: Vector2.zero, + uvScale: Vector2.one, + enabled: true, + layer: renderLayer, + }); + } +} diff --git a/documentation-site/src/pages/demos/physics/index.tsx b/documentation-site/src/pages/demos/physics/index.tsx index 95d39c70..8ddffef3 100644 --- a/documentation-site/src/pages/demos/physics/index.tsx +++ b/documentation-site/src/pages/demos/physics/index.tsx @@ -2,6 +2,7 @@ import React, { JSX } from 'react'; import { createPhysicsGame } from './_create-game'; import gameCode from '!!raw-loader!./_create-game'; import createBoundariesCode from '!!raw-loader!./_create-boundaries'; +import createTerrainCode from '!!raw-loader!./_create-terrain'; import spawnShapesCode from '!!raw-loader!./_spawn-shapes'; import { Demo } from '@site/src/components/Demo'; @@ -14,7 +15,7 @@ export default function Physics(): JSX.Element { description: 'A demo showcasing the physics engine.', }} header="Physics" - blurb="This demo showcases the engine's built-in 2D physics: rigid bodies, gravity, collision detection and resolution. A pile of circles and squares falls into a walled area, bouncing and colliding with the floor, walls and each other until they settle. Click anywhere on the canvas to trigger an explosion that blasts nearby shapes away from the click point." + blurb="This demo showcases the engine's built-in 2D physics: rigid bodies, gravity, collision detection and resolution. A pile of circles and squares falls onto a rolling-hill TerrainShape floor between two walls, bouncing and colliding with the ground, walls and each other until they settle. Click anywhere on the canvas to trigger an explosion that blasts nearby shapes away from the click point." createGame={createPhysicsGame} codeFiles={[ { @@ -25,6 +26,10 @@ export default function Physics(): JSX.Element { name: 'create-boundaries.ts', content: createBoundariesCode, }, + { + name: 'create-terrain.ts', + content: createTerrainCode, + }, { name: 'spawn-shapes.ts', content: spawnShapesCode, diff --git a/src/physics/collision/circle-polygon-contact.ts b/src/physics/collision/circle-polygon-contact.ts new file mode 100644 index 00000000..da423fce --- /dev/null +++ b/src/physics/collision/circle-polygon-contact.ts @@ -0,0 +1,156 @@ +import type { Vector2 } from '../../math/index.js'; + +const EPSILON = 1e-9; + +/** + * The face of a convex polygon (in the polygon's own local space) with the + * largest separation from a circle's local-space center, found by + * {@link findClosestFace}. + */ +export interface FaceSeparation { + /** + * The signed distance from the face to the circle's center, along the + * face's normal. Positive when the center is outside the face. + */ + separation: number; + + /** + * The index of the face (and its normal) within the polygon's + * `vertices`/`normals` arrays. + */ + faceIndex: number; +} + +/** + * A circle's contact against a convex polygon face or vertex, in the + * polygon's own local space, found by {@link findCircleContact}. + */ +export interface CircleContact { + /** + * The contact normal, pointing from the polygon toward the circle. + */ + localNormal: Vector2; + + /** + * The contact point, on the surface of the polygon. + */ + localContactPoint: Vector2; + + /** + * The penetration depth of the contact. + */ + depth: number; +} + +/** + * Finds the polygon face with the largest separation from `localCenter` + * (a circle's center, in the polygon's own local space), for use as the + * circle's reference face. Returns `null` if the circle's `radius` cannot + * reach any face, meaning the shapes do not overlap. + * @param vertices - The polygon's vertices, in its own local space. + * @param normals - The polygon's outward-facing edge normals, matching + * `vertices`. + * @param localCenter - The circle's center, in the polygon's local space. + * @param radius - The circle's radius. + * @returns The closest face and its separation, or `null` if the shapes + * cannot overlap. + */ +export function findClosestFace( + vertices: readonly Vector2[], + normals: readonly Vector2[], + localCenter: Vector2, + radius: number, +): FaceSeparation | null { + let separation = -Infinity; + let faceIndex = 0; + + for (let i = 0; i < vertices.length; i++) { + const faceSeparation = normals[i].dot(localCenter.subtract(vertices[i])); + + if (faceSeparation > radius) { + return null; + } + + if (faceSeparation > separation) { + separation = faceSeparation; + faceIndex = i; + } + } + + return { separation, faceIndex }; +} + +function faceContact( + normal: Vector2, + localCenter: Vector2, + separation: number, + radius: number, +): CircleContact { + return { + localNormal: normal, + localContactPoint: localCenter.subtract(normal.multiply(separation)), + depth: radius - separation, + }; +} + +function vertexContact( + localCenter: Vector2, + vertex: Vector2, + radius: number, +): CircleContact | null { + const distance = localCenter.distanceTo(vertex); + + if (distance > radius) { + return null; + } + + return { + localNormal: localCenter.subtract(vertex).normalize(), + localContactPoint: vertex, + depth: radius - distance, + }; +} + +/** + * Resolves the exact contact (face or vertex) between a circle and the + * polygon face found by {@link findClosestFace}, in the polygon's own + * local space. + * @param vertices - The polygon's vertices, in its own local space. + * @param normals - The polygon's outward-facing edge normals, matching + * `vertices`. + * @param localCenter - The circle's center, in the polygon's local space. + * @param faceIndex - The closest face's index, from {@link findClosestFace}. + * @param separation - The closest face's separation, from + * {@link findClosestFace}. + * @param radius - The circle's radius. + * @returns The resolved contact, or `null` if the shapes do not actually + * overlap (the circle's center lies beyond a vertex, out of `radius`). + */ +export function findCircleContact( + vertices: readonly Vector2[], + normals: readonly Vector2[], + localCenter: Vector2, + faceIndex: number, + separation: number, + radius: number, +): CircleContact | null { + if (separation < EPSILON) { + return faceContact(normals[faceIndex], localCenter, separation, radius); + } + + const v1 = vertices[faceIndex]; + const v2 = vertices[(faceIndex + 1) % vertices.length]; + const u1 = localCenter.subtract(v1).dot(v2.subtract(v1)); + + if (u1 <= 0) { + return vertexContact(localCenter, v1, radius); + } + + const u2 = localCenter.subtract(v2).dot(v1.subtract(v2)); + + if (u2 <= 0) { + return vertexContact(localCenter, v2, radius); + } + + return faceContact(normals[faceIndex], localCenter, separation, radius); +} diff --git a/src/physics/collision/detect-circle-polygon-collision.ts b/src/physics/collision/detect-circle-polygon-collision.ts index 09e0c32d..0e6b18f9 100644 --- a/src/physics/collision/detect-circle-polygon-collision.ts +++ b/src/physics/collision/detect-circle-polygon-collision.ts @@ -1,106 +1,11 @@ -import type { Vector2 } from '../../math/index.js'; import type { RigidBody } from '../rigid-body.js'; import type { CircleShape, PolygonShape } from '../shapes/index.js'; +import { + findCircleContact, + findClosestFace, +} from './circle-polygon-contact.js'; import type { CollisionManifold } from './collision-manifold.js'; -const EPSILON = 1e-9; - -interface FaceSeparation { - separation: number; - faceIndex: number; -} - -interface CircleContact { - localNormal: Vector2; - localContactPoint: Vector2; - depth: number; -} - -function findClosestFace( - vertices: readonly Vector2[], - normals: readonly Vector2[], - localCenter: Vector2, - radius: number, -): FaceSeparation | null { - let separation = -Infinity; - let faceIndex = 0; - - for (let i = 0; i < vertices.length; i++) { - const faceSeparation = normals[i].dot(localCenter.subtract(vertices[i])); - - if (faceSeparation > radius) { - return null; - } - - if (faceSeparation > separation) { - separation = faceSeparation; - faceIndex = i; - } - } - - return { separation, faceIndex }; -} - -function faceContact( - normal: Vector2, - localCenter: Vector2, - separation: number, - radius: number, -): CircleContact { - return { - localNormal: normal, - localContactPoint: localCenter.subtract(normal.multiply(separation)), - depth: radius - separation, - }; -} - -function vertexContact( - localCenter: Vector2, - vertex: Vector2, - radius: number, -): CircleContact | null { - const distance = localCenter.distanceTo(vertex); - - if (distance > radius) { - return null; - } - - return { - localNormal: localCenter.subtract(vertex).normalize(), - localContactPoint: vertex, - depth: radius - distance, - }; -} - -function findCircleContact( - vertices: readonly Vector2[], - normals: readonly Vector2[], - localCenter: Vector2, - faceIndex: number, - separation: number, - radius: number, -): CircleContact | null { - if (separation < EPSILON) { - return faceContact(normals[faceIndex], localCenter, separation, radius); - } - - const v1 = vertices[faceIndex]; - const v2 = vertices[(faceIndex + 1) % vertices.length]; - const u1 = localCenter.subtract(v1).dot(v2.subtract(v1)); - - if (u1 <= 0) { - return vertexContact(localCenter, v1, radius); - } - - const u2 = localCenter.subtract(v2).dot(v1.subtract(v2)); - - if (u2 <= 0) { - return vertexContact(localCenter, v2, radius); - } - - return faceContact(normals[faceIndex], localCenter, separation, radius); -} - /** * Detects a collision between a circle-shaped body and a polygon-shaped * body. diff --git a/src/physics/collision/detect-circle-terrain-collision.test.ts b/src/physics/collision/detect-circle-terrain-collision.test.ts new file mode 100644 index 00000000..9c964f2e --- /dev/null +++ b/src/physics/collision/detect-circle-terrain-collision.test.ts @@ -0,0 +1,116 @@ +import { describe, expect, it } from 'vitest'; +import { detectCircleTerrainCollision } from './detect-circle-terrain-collision.js'; +import { RigidBody } from '../rigid-body.js'; +import { CircleShape, TerrainShape } from '../shapes/index.js'; +import { Vector2 } from '../../math/index.js'; + +function flatTerrainBody(): RigidBody { + return new RigidBody({ + shape: new TerrainShape( + [new Vector2(-5, 0), new Vector2(0, 0), new Vector2(5, 0)], + 2, + ), + position: Vector2.zero, + isStatic: true, + }); +} + +describe('detectCircleTerrainCollision', () => { + it('should return null when the circle is far from the terrain', () => { + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -10), + }); + + expect( + detectCircleTerrainCollision(circleBody, flatTerrainBody()), + ).toBeNull(); + }); + + it('should return null when the circle is outside the terrain x-range', () => { + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(20, -0.5), + }); + + expect( + detectCircleTerrainCollision(circleBody, flatTerrainBody()), + ).toBeNull(); + }); + + it('should detect a face collision resting on the terrain surface', () => { + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -0.5), + }); + + const manifold = detectCircleTerrainCollision( + circleBody, + flatTerrainBody(), + ); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(circleBody); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(1); + expect(manifold?.depth).toBeCloseTo(0.5); + expect(manifold?.contactPoints[0].y).toBeCloseTo(0); + }); + + it('should detect a collision spanning the boundary between two segments', () => { + const terrainBody = flatTerrainBody(); + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -0.5), + }); + + const manifold = detectCircleTerrainCollision(circleBody, terrainBody); + + expect(manifold).not.toBeNull(); + expect(manifold?.depth).toBeCloseTo(0.5); + }); + + it('should account for the terrain body position offset', () => { + const terrainBody = new RigidBody({ + shape: new TerrainShape([new Vector2(-5, 0), new Vector2(5, 0)], 2), + position: new Vector2(100, 50), + isStatic: true, + }); + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(100, 49.5), + }); + + const manifold = detectCircleTerrainCollision(circleBody, terrainBody); + + expect(manifold).not.toBeNull(); + expect(manifold?.depth).toBeCloseTo(0.5); + }); + + it('should detect a collision against a sloped segment', () => { + const terrainBody = new RigidBody({ + shape: new TerrainShape([new Vector2(0, 0), new Vector2(10, 10)], 5), + position: Vector2.zero, + isStatic: true, + }); + + // Resting just above the slope's midpoint, along its outward normal. + const midpoint = new Vector2(5, 5); + const normal = new Vector2(1, -1).normalize(); + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: midpoint.add(normal.multiply(0.5)), + }); + + const manifold = detectCircleTerrainCollision(circleBody, terrainBody); + + expect(manifold).not.toBeNull(); + expect(manifold?.depth).toBeCloseTo(0.5); + + // The manifold's normal points from bodyA (the circle) toward bodyB + // (the terrain), i.e. into the ground - the opposite of the outward + // normal the circle was placed along. + expect(manifold?.normal.x).toBeCloseTo(-normal.x); + expect(manifold?.normal.y).toBeCloseTo(-normal.y); + }); +}); diff --git a/src/physics/collision/detect-circle-terrain-collision.ts b/src/physics/collision/detect-circle-terrain-collision.ts new file mode 100644 index 00000000..665bc352 --- /dev/null +++ b/src/physics/collision/detect-circle-terrain-collision.ts @@ -0,0 +1,96 @@ +import type { Vector2 } from '../../math/index.js'; +import type { RigidBody } from '../rigid-body.js'; +import type { CircleShape, TerrainShape } from '../shapes/index.js'; +import { + findCircleContact, + findClosestFace, +} from './circle-polygon-contact.js'; +import type { CollisionManifold } from './collision-manifold.js'; + +interface BestContact { + localNormal: Vector2; + localContactPoint: Vector2; + depth: number; +} + +/** + * Detects a collision between a circle-shaped body and a terrain-shaped + * body, by running the same circle-vs-convex-polygon narrow phase used for + * {@link detectCirclePolygonCollision} against each of the terrain's + * segments that overlap the circle's local x-range, keeping the deepest + * resulting contact. + * @param circleBody - The body with a {@link CircleShape}. Becomes + * `bodyA` of the returned manifold. + * @param terrainBody - The body with a {@link TerrainShape}. Becomes + * `bodyB` of the returned manifold. + * @returns A {@link CollisionManifold} if the shapes overlap, otherwise + * `null`. + */ +export function detectCircleTerrainCollision( + circleBody: RigidBody, + terrainBody: RigidBody, +): CollisionManifold | null { + const circleShape = circleBody.shape as CircleShape; + const terrainShape = terrainBody.shape as TerrainShape; + const { radius } = circleShape; + + const localCenter = circleBody.position + .subtract(terrainBody.position) + .rotate(-terrainBody.angle); + + let best: BestContact | null = null; + + for (const segment of terrainShape.segments) { + if ( + localCenter.x + radius < segment.minX || + localCenter.x - radius > segment.maxX + ) { + continue; + } + + const { vertices, normals } = segment; + const closestFace = findClosestFace(vertices, normals, localCenter, radius); + + if (closestFace === null) { + continue; + } + + const contact = findCircleContact( + vertices, + normals, + localCenter, + closestFace.faceIndex, + closestFace.separation, + radius, + ); + + if (contact === null) { + continue; + } + + if (best === null || contact.depth > best.depth) { + best = { + localNormal: contact.localNormal, + localContactPoint: contact.localContactPoint, + depth: contact.depth, + }; + } + } + + if (best === null) { + return null; + } + + const normal = best.localNormal.rotate(terrainBody.angle).negate(); + const contactPoint = best.localContactPoint + .rotate(terrainBody.angle) + .add(terrainBody.position); + + return { + bodyA: circleBody, + bodyB: terrainBody, + normal, + depth: best.depth, + contactPoints: [contactPoint], + }; +} diff --git a/src/physics/collision/detect-collision.test.ts b/src/physics/collision/detect-collision.test.ts index 67341544..9b732536 100644 --- a/src/physics/collision/detect-collision.test.ts +++ b/src/physics/collision/detect-collision.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; import { detectCollision } from './detect-collision.js'; import { RigidBody } from '../rigid-body.js'; -import { CircleShape, PolygonShape } from '../shapes/index.js'; +import { CircleShape, PolygonShape, TerrainShape } from '../shapes/index.js'; import { Vector2 } from '../../math/index.js'; describe('detectCollision', () => { @@ -80,6 +80,86 @@ describe('detectCollision', () => { expect(manifold?.normal.y).toBeCloseTo(0); }); + it('should dispatch circle-terrain collisions', () => { + const bodyA = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -0.5), + }); + const bodyB = new RigidBody({ + shape: new TerrainShape([new Vector2(-5, 0), new Vector2(5, 0)], 2), + position: Vector2.zero, + isStatic: true, + }); + + const manifold = detectCollision(bodyA, bodyB); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(bodyA); + expect(manifold?.bodyB).toBe(bodyB); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(1); + }); + + it('should dispatch terrain-circle collisions, preserving body order', () => { + const bodyA = new RigidBody({ + shape: new TerrainShape([new Vector2(-5, 0), new Vector2(5, 0)], 2), + position: Vector2.zero, + isStatic: true, + }); + const bodyB = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -0.5), + }); + + const manifold = detectCollision(bodyA, bodyB); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(bodyA); + expect(manifold?.bodyB).toBe(bodyB); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(-1); + }); + + it('should dispatch polygon-terrain collisions', () => { + const bodyA = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(0, -0.5), + }); + const bodyB = new RigidBody({ + shape: new TerrainShape([new Vector2(-5, 0), new Vector2(5, 0)], 2), + position: Vector2.zero, + isStatic: true, + }); + + const manifold = detectCollision(bodyA, bodyB); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(bodyA); + expect(manifold?.bodyB).toBe(bodyB); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(1); + }); + + it('should dispatch terrain-polygon collisions, preserving body order', () => { + const bodyA = new RigidBody({ + shape: new TerrainShape([new Vector2(-5, 0), new Vector2(5, 0)], 2), + position: Vector2.zero, + isStatic: true, + }); + const bodyB = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(0, -0.5), + }); + + const manifold = detectCollision(bodyA, bodyB); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(bodyA); + expect(manifold?.bodyB).toBe(bodyB); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(-1); + }); + it('should throw an error for an unregistered shape pair', () => { const bodyA = new RigidBody({ shape: new CircleShape(1) }); const fakeBody = { diff --git a/src/physics/collision/detect-collision.ts b/src/physics/collision/detect-collision.ts index c6f452fa..01c5030b 100644 --- a/src/physics/collision/detect-collision.ts +++ b/src/physics/collision/detect-collision.ts @@ -2,7 +2,9 @@ import type { RigidBody } from '../rigid-body.js'; import type { CollisionManifold } from './collision-manifold.js'; import { detectCircleCircleCollision } from './detect-circle-circle-collision.js'; import { detectCirclePolygonCollision } from './detect-circle-polygon-collision.js'; +import { detectCircleTerrainCollision } from './detect-circle-terrain-collision.js'; import { detectPolygonPolygonCollision } from './detect-polygon-polygon-collision.js'; +import { detectPolygonTerrainCollision } from './detect-polygon-terrain-collision.js'; function flipManifold( manifold: CollisionManifold | null, @@ -31,6 +33,16 @@ const collisionDetectors = new Map< (bodyA, bodyB) => flipManifold(detectCirclePolygonCollision(bodyB, bodyA)), ], ['polygon-polygon', detectPolygonPolygonCollision], + ['circle-terrain', detectCircleTerrainCollision], + [ + 'terrain-circle', + (bodyA, bodyB) => flipManifold(detectCircleTerrainCollision(bodyB, bodyA)), + ], + ['polygon-terrain', detectPolygonTerrainCollision], + [ + 'terrain-polygon', + (bodyA, bodyB) => flipManifold(detectPolygonTerrainCollision(bodyB, bodyA)), + ], ]); /** diff --git a/src/physics/collision/detect-polygon-polygon-collision.ts b/src/physics/collision/detect-polygon-polygon-collision.ts index 2628767f..e368e686 100644 --- a/src/physics/collision/detect-polygon-polygon-collision.ts +++ b/src/physics/collision/detect-polygon-polygon-collision.ts @@ -1,225 +1,10 @@ -import { Vector2 } from '../../math/index.js'; import type { RigidBody } from '../rigid-body.js'; import type { PolygonShape } from '../shapes/index.js'; import type { CollisionManifold } from './collision-manifold.js'; - -const RELATIVE_TOLERANCE = 0.95; -const ABSOLUTE_TOLERANCE = 0.01; - -interface PolygonFaces { - vertices: Vector2[]; - normals: Vector2[]; -} - -interface Axis { - separation: number; - faceIndex: number; -} - -interface ReferenceIncidentFaces { - reference: PolygonFaces; - incident: PolygonFaces; - faceIndex: number; - flip: boolean; -} - -/** - * Returns the vertex that is furthest along the given direction. - */ -function getSupportPoint(vertices: Vector2[], direction: Vector2): Vector2 { - let bestVertex = vertices[0]; - let bestProjection = direction.dot(bestVertex); - - for (let i = 1; i < vertices.length; i++) { - const projection = direction.dot(vertices[i]); - - if (projection > bestProjection) { - bestVertex = vertices[i]; - bestProjection = projection; - } - } - - return bestVertex; -} - -/** - * Finds the face of the first polygon whose normal yields the largest - * separation from the second polygon. A positive separation means the - * polygons do not overlap along that axis. - */ -function findAxisOfLeastPenetration( - ownVertices: Vector2[], - ownNormals: Vector2[], - otherVertices: Vector2[], -): Axis { - let bestSeparation = -Infinity; - let bestFaceIndex = 0; - - for (let i = 0; i < ownNormals.length; i++) { - const normal = ownNormals[i]; - const supportPoint = getSupportPoint(otherVertices, normal.negate()); - const separation = normal.dot(supportPoint.subtract(ownVertices[i])); - - if (separation > bestSeparation) { - bestSeparation = separation; - bestFaceIndex = i; - } - } - - return { separation: bestSeparation, faceIndex: bestFaceIndex }; -} - -/** - * Picks which polygon's face of least penetration acts as the reference - * face, biasing toward the first polygon to avoid face-flip jitter when the - * separations are nearly equal. - */ -function selectReferenceFace( - polygonA: PolygonFaces, - polygonB: PolygonFaces, - axisA: Axis, - axisB: Axis, -): ReferenceIncidentFaces { - const flip = - axisB.separation > - RELATIVE_TOLERANCE * axisA.separation + ABSOLUTE_TOLERANCE; - - if (flip) { - return { - reference: polygonB, - incident: polygonA, - faceIndex: axisB.faceIndex, - flip, - }; - } - - return { - reference: polygonA, - incident: polygonB, - faceIndex: axisA.faceIndex, - flip, - }; -} - -/** - * Finds the incident polygon's face whose normal is most anti-parallel to - * the reference face's normal. - */ -function findIncidentFaceIndex( - referenceNormal: Vector2, - incidentNormals: Vector2[], -): number { - let incidentFaceIndex = 0; - let minDot = Infinity; - - for (let i = 0; i < incidentNormals.length; i++) { - const dot = referenceNormal.dot(incidentNormals[i]); - - if (dot < minDot) { - minDot = dot; - incidentFaceIndex = i; - } - } - - return incidentFaceIndex; -} - -/** - * Clips the segment `v1`-`v2` against the half-plane - * `normal . point <= offset`, returning the points that lie within it - * (including any interpolated intersection point). - */ -function clip( - v1: Vector2, - v2: Vector2, - normal: Vector2, - offset: number, -): Vector2[] { - const result: Vector2[] = []; - - const distance1 = normal.dot(v1) - offset; - const distance2 = normal.dot(v2) - offset; - - if (distance1 <= 0) { - result.push(v1); - } - - if (distance2 <= 0) { - result.push(v2); - } - - if (distance1 * distance2 < 0) { - const t = distance1 / (distance1 - distance2); - - result.push(v1.add(v2.subtract(v1).multiply(t))); - } - - return result; -} - -/** - * Clips the incident edge against the two side planes of the reference - * face, returning `null` if the incident edge lies entirely outside either - * side plane. - */ -function clipIncidentEdge( - incidentV1: Vector2, - incidentV2: Vector2, - referenceV1: Vector2, - referenceV2: Vector2, -): Vector2[] | null { - const tangent = referenceV2.subtract(referenceV1).normalize(); - const negativeSideOffset = -tangent.dot(referenceV1); - const positiveSideOffset = tangent.dot(referenceV2); - - let clippedPoints = clip( - incidentV1, - incidentV2, - tangent.negate(), - negativeSideOffset, - ); - - if (clippedPoints.length < 2) { - return null; - } - - clippedPoints = clip( - clippedPoints[0], - clippedPoints[1], - tangent, - positiveSideOffset, - ); - - if (clippedPoints.length < 2) { - return null; - } - - return clippedPoints; -} - -/** - * Discards clipped points that are not penetrating the reference face and - * computes the penetration depth of the remaining contact points. - */ -function findContactPoints( - clippedPoints: Vector2[], - referenceNormal: Vector2, - referenceV1: Vector2, -): { contactPoints: Vector2[]; depth: number } { - const contactPoints: Vector2[] = []; - let depth = 0; - - for (const point of clippedPoints) { - const separation = referenceNormal.dot(point.subtract(referenceV1)); - - if (separation <= 0) { - contactPoints.push(point); - depth = Math.max(depth, -separation); - } - } - - return { contactPoints, depth }; -} +import { + detectPolygonFacesCollision, + type PolygonFaces, +} from './polygon-faces-collision.js'; /** * Detects a collision between two convex polygon-shaped bodies using the @@ -236,84 +21,24 @@ export function detectPolygonPolygonCollision( const shapeA = bodyA.shape as PolygonShape; const shapeB = bodyB.shape as PolygonShape; - const polygonA: PolygonFaces = { + const facesA: PolygonFaces = { vertices: shapeA.getWorldVertices(bodyA.position, bodyA.angle), normals: shapeA.getWorldNormals(bodyA.angle), }; - const polygonB: PolygonFaces = { + const facesB: PolygonFaces = { vertices: shapeB.getWorldVertices(bodyB.position, bodyB.angle), normals: shapeB.getWorldNormals(bodyB.angle), }; - const axisA = findAxisOfLeastPenetration( - polygonA.vertices, - polygonA.normals, - polygonB.vertices, - ); - - if (axisA.separation > 0) { - return null; - } - - const axisB = findAxisOfLeastPenetration( - polygonB.vertices, - polygonB.normals, - polygonA.vertices, - ); - - if (axisB.separation > 0) { - return null; - } - - const { reference, incident, faceIndex, flip } = selectReferenceFace( - polygonA, - polygonB, - axisA, - axisB, - ); - - const referenceNormal = reference.normals[faceIndex]; - const incidentFaceIndex = findIncidentFaceIndex( - referenceNormal, - incident.normals, - ); - - const incidentV1 = incident.vertices[incidentFaceIndex]; - const incidentV2 = - incident.vertices[(incidentFaceIndex + 1) % incident.vertices.length]; - - const referenceV1 = reference.vertices[faceIndex]; - const referenceV2 = - reference.vertices[(faceIndex + 1) % reference.vertices.length]; - - const clippedPoints = clipIncidentEdge( - incidentV1, - incidentV2, - referenceV1, - referenceV2, - ); + const contact = detectPolygonFacesCollision(facesA, facesB); - if (clippedPoints === null) { + if (contact === null) { return null; } - const { contactPoints, depth } = findContactPoints( - clippedPoints, - referenceNormal, - referenceV1, - ); - - if (contactPoints.length === 0) { - return null; - } - - const normal = flip ? referenceNormal.negate() : referenceNormal; - return { bodyA, bodyB, - normal, - depth, - contactPoints, + ...contact, }; } diff --git a/src/physics/collision/detect-polygon-terrain-collision.test.ts b/src/physics/collision/detect-polygon-terrain-collision.test.ts new file mode 100644 index 00000000..b373c677 --- /dev/null +++ b/src/physics/collision/detect-polygon-terrain-collision.test.ts @@ -0,0 +1,96 @@ +import { describe, expect, it } from 'vitest'; +import { detectPolygonTerrainCollision } from './detect-polygon-terrain-collision.js'; +import { RigidBody } from '../rigid-body.js'; +import { PolygonShape, TerrainShape } from '../shapes/index.js'; +import { Vector2 } from '../../math/index.js'; + +function flatTerrainBody(options: { angle?: number } = {}): RigidBody { + return new RigidBody({ + shape: new TerrainShape( + [new Vector2(-5, 0), new Vector2(0, 0), new Vector2(5, 0)], + 2, + ), + position: Vector2.zero, + angle: options.angle ?? 0, + isStatic: true, + }); +} + +describe('detectPolygonTerrainCollision', () => { + it('should return null when the polygon does not overlap the terrain', () => { + const polygonBody = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(0, -10), + }); + + expect( + detectPolygonTerrainCollision(polygonBody, flatTerrainBody()), + ).toBeNull(); + }); + + it('should return null when the polygon is outside the terrain x-range', () => { + const polygonBody = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(20, 0), + }); + + expect( + detectPolygonTerrainCollision(polygonBody, flatTerrainBody()), + ).toBeNull(); + }); + + it('should detect a box resting into the terrain surface', () => { + const polygonBody = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(0, -0.5), + }); + + const manifold = detectPolygonTerrainCollision( + polygonBody, + flatTerrainBody(), + ); + + expect(manifold).not.toBeNull(); + expect(manifold?.bodyA).toBe(polygonBody); + expect(manifold?.normal.x).toBeCloseTo(0); + expect(manifold?.normal.y).toBeCloseTo(1); + expect(manifold?.depth).toBeCloseTo(0.5); + expect(manifold?.contactPoints).toHaveLength(2); + }); + + it('should detect a box spanning the boundary between two segments', () => { + const polygonBody = new RigidBody({ + shape: PolygonShape.rectangle(4, 2), + position: new Vector2(0, -0.5), + }); + + const manifold = detectPolygonTerrainCollision( + polygonBody, + flatTerrainBody(), + ); + + expect(manifold).not.toBeNull(); + expect(manifold?.depth).toBeCloseTo(0.5); + expect(manifold?.contactPoints).toHaveLength(2); + }); + + it('should account for the terrain body rotation', () => { + const angle = Math.PI / 2; + const terrainBody = flatTerrainBody({ angle }); + + // Rotating the flat terrain 90 degrees turns its surface into a wall + // facing in -x; a box pushed 0.5 units into it from the +x side should + // collide with a normal pointing back out along +x. + const polygonBody = new RigidBody({ + shape: PolygonShape.rectangle(2, 2), + position: new Vector2(0.5, 0), + }); + + const manifold = detectPolygonTerrainCollision(polygonBody, terrainBody); + + expect(manifold).not.toBeNull(); + expect(manifold?.normal.x).toBeCloseTo(-1); + expect(manifold?.normal.y).toBeCloseTo(0); + expect(manifold?.depth).toBeCloseTo(0.5); + }); +}); diff --git a/src/physics/collision/detect-polygon-terrain-collision.ts b/src/physics/collision/detect-polygon-terrain-collision.ts new file mode 100644 index 00000000..7b8e42a6 --- /dev/null +++ b/src/physics/collision/detect-polygon-terrain-collision.ts @@ -0,0 +1,92 @@ +import type { Vector2 } from '../../math/index.js'; +import type { RigidBody } from '../rigid-body.js'; +import type { PolygonShape, TerrainShape } from '../shapes/index.js'; +import type { CollisionManifold } from './collision-manifold.js'; +import { + detectPolygonFacesCollision, + type PolygonFaces, + type PolygonFacesContact, +} from './polygon-faces-collision.js'; + +function localXRange( + worldVertices: readonly Vector2[], + terrainBody: RigidBody, +): { minX: number; maxX: number } { + let minX = Infinity; + let maxX = -Infinity; + + for (const vertex of worldVertices) { + const localX = vertex + .subtract(terrainBody.position) + .rotate(-terrainBody.angle).x; + + minX = Math.min(minX, localX); + maxX = Math.max(maxX, localX); + } + + return { minX, maxX }; +} + +/** + * Detects a collision between a convex polygon-shaped body and a + * terrain-shaped body, by running the same polygon-vs-polygon narrow phase + * used for {@link detectPolygonPolygonCollision} against each of the + * terrain's segments that overlap the polygon's local x-range, keeping the + * deepest resulting contact. + * @param polygonBody - The body with a {@link PolygonShape}. Becomes + * `bodyA` of the returned manifold. + * @param terrainBody - The body with a {@link TerrainShape}. Becomes + * `bodyB` of the returned manifold. + * @returns A {@link CollisionManifold} if the shapes overlap, otherwise + * `null`. + */ +export function detectPolygonTerrainCollision( + polygonBody: RigidBody, + terrainBody: RigidBody, +): CollisionManifold | null { + const polygonShape = polygonBody.shape as PolygonShape; + const terrainShape = terrainBody.shape as TerrainShape; + + const polygonFaces: PolygonFaces = { + vertices: polygonShape.getWorldVertices( + polygonBody.position, + polygonBody.angle, + ), + normals: polygonShape.getWorldNormals(polygonBody.angle), + }; + + const { minX, maxX } = localXRange(polygonFaces.vertices, terrainBody); + + let best: PolygonFacesContact | null = null; + + for (const segment of terrainShape.segments) { + if (maxX < segment.minX || minX > segment.maxX) { + continue; + } + + const segmentFaces: PolygonFaces = { + vertices: segment.vertices.map((vertex) => + vertex.rotate(terrainBody.angle).add(terrainBody.position), + ), + normals: segment.normals.map((normal) => + normal.rotate(terrainBody.angle), + ), + }; + + const contact = detectPolygonFacesCollision(polygonFaces, segmentFaces); + + if (contact !== null && (best === null || contact.depth > best.depth)) { + best = contact; + } + } + + if (best === null) { + return null; + } + + return { + bodyA: polygonBody, + bodyB: terrainBody, + ...best, + }; +} diff --git a/src/physics/collision/index.ts b/src/physics/collision/index.ts index 99bd3f6c..325f4c36 100644 --- a/src/physics/collision/index.ts +++ b/src/physics/collision/index.ts @@ -1,6 +1,10 @@ +export * from './circle-polygon-contact.js'; export * from './collision-manifold.js'; export * from './detect-circle-circle-collision.js'; export * from './detect-circle-polygon-collision.js'; +export * from './detect-circle-terrain-collision.js'; export * from './detect-collision.js'; export * from './detect-polygon-polygon-collision.js'; +export * from './detect-polygon-terrain-collision.js'; +export * from './polygon-faces-collision.js'; export * from './resolve-collision.js'; diff --git a/src/physics/collision/polygon-faces-collision.ts b/src/physics/collision/polygon-faces-collision.ts new file mode 100644 index 00000000..7a7ba7ed --- /dev/null +++ b/src/physics/collision/polygon-faces-collision.ts @@ -0,0 +1,330 @@ +import { Vector2 } from '../../math/index.js'; + +const RELATIVE_TOLERANCE = 0.95; +const ABSOLUTE_TOLERANCE = 0.01; + +/** + * The world-space vertices and outward-facing edge normals of a convex + * polygon, as consumed by {@link detectPolygonFacesCollision}. + */ +export interface PolygonFaces { + vertices: Vector2[]; + normals: Vector2[]; +} + +/** + * The result of a successful {@link detectPolygonFacesCollision} check, + * everything a {@link CollisionManifold} needs besides the two bodies + * involved. + */ +export interface PolygonFacesContact { + /** + * The contact normal, in world space, pointing from `facesA` toward + * `facesB`. + */ + normal: Vector2; + + /** + * The penetration depth of the contact. + */ + depth: number; + + /** + * The world-space contact points (one or two points). + */ + contactPoints: Vector2[]; +} + +interface Axis { + separation: number; + faceIndex: number; +} + +interface ReferenceIncidentFaces { + reference: PolygonFaces; + incident: PolygonFaces; + faceIndex: number; + flip: boolean; +} + +/** + * Returns the vertex that is furthest along the given direction. + */ +function getSupportPoint(vertices: Vector2[], direction: Vector2): Vector2 { + let bestVertex = vertices[0]; + let bestProjection = direction.dot(bestVertex); + + for (let i = 1; i < vertices.length; i++) { + const projection = direction.dot(vertices[i]); + + if (projection > bestProjection) { + bestVertex = vertices[i]; + bestProjection = projection; + } + } + + return bestVertex; +} + +/** + * Finds the face of the first polygon whose normal yields the largest + * separation from the second polygon. A positive separation means the + * polygons do not overlap along that axis. + */ +function findAxisOfLeastPenetration( + ownVertices: Vector2[], + ownNormals: Vector2[], + otherVertices: Vector2[], +): Axis { + let bestSeparation = -Infinity; + let bestFaceIndex = 0; + + for (let i = 0; i < ownNormals.length; i++) { + const normal = ownNormals[i]; + const supportPoint = getSupportPoint(otherVertices, normal.negate()); + const separation = normal.dot(supportPoint.subtract(ownVertices[i])); + + if (separation > bestSeparation) { + bestSeparation = separation; + bestFaceIndex = i; + } + } + + return { separation: bestSeparation, faceIndex: bestFaceIndex }; +} + +/** + * Picks which polygon's face of least penetration acts as the reference + * face, biasing toward the first polygon to avoid face-flip jitter when the + * separations are nearly equal. + */ +function selectReferenceFace( + polygonA: PolygonFaces, + polygonB: PolygonFaces, + axisA: Axis, + axisB: Axis, +): ReferenceIncidentFaces { + const flip = + axisB.separation > + RELATIVE_TOLERANCE * axisA.separation + ABSOLUTE_TOLERANCE; + + if (flip) { + return { + reference: polygonB, + incident: polygonA, + faceIndex: axisB.faceIndex, + flip, + }; + } + + return { + reference: polygonA, + incident: polygonB, + faceIndex: axisA.faceIndex, + flip, + }; +} + +/** + * Finds the incident polygon's face whose normal is most anti-parallel to + * the reference face's normal. + */ +function findIncidentFaceIndex( + referenceNormal: Vector2, + incidentNormals: Vector2[], +): number { + let incidentFaceIndex = 0; + let minDot = Infinity; + + for (let i = 0; i < incidentNormals.length; i++) { + const dot = referenceNormal.dot(incidentNormals[i]); + + if (dot < minDot) { + minDot = dot; + incidentFaceIndex = i; + } + } + + return incidentFaceIndex; +} + +/** + * Clips the segment `v1`-`v2` against the half-plane + * `normal . point <= offset`, returning the points that lie within it + * (including any interpolated intersection point). + */ +function clip( + v1: Vector2, + v2: Vector2, + normal: Vector2, + offset: number, +): Vector2[] { + const result: Vector2[] = []; + + const distance1 = normal.dot(v1) - offset; + const distance2 = normal.dot(v2) - offset; + + if (distance1 <= 0) { + result.push(v1); + } + + if (distance2 <= 0) { + result.push(v2); + } + + if (distance1 * distance2 < 0) { + const t = distance1 / (distance1 - distance2); + + result.push(v1.add(v2.subtract(v1).multiply(t))); + } + + return result; +} + +/** + * Clips the incident edge against the two side planes of the reference + * face, returning `null` if the incident edge lies entirely outside either + * side plane. + */ +function clipIncidentEdge( + incidentV1: Vector2, + incidentV2: Vector2, + referenceV1: Vector2, + referenceV2: Vector2, +): Vector2[] | null { + const tangent = referenceV2.subtract(referenceV1).normalize(); + const negativeSideOffset = -tangent.dot(referenceV1); + const positiveSideOffset = tangent.dot(referenceV2); + + let clippedPoints = clip( + incidentV1, + incidentV2, + tangent.negate(), + negativeSideOffset, + ); + + if (clippedPoints.length < 2) { + return null; + } + + clippedPoints = clip( + clippedPoints[0], + clippedPoints[1], + tangent, + positiveSideOffset, + ); + + if (clippedPoints.length < 2) { + return null; + } + + return clippedPoints; +} + +/** + * Discards clipped points that are not penetrating the reference face and + * computes the penetration depth of the remaining contact points. + */ +function findContactPoints( + clippedPoints: Vector2[], + referenceNormal: Vector2, + referenceV1: Vector2, +): { contactPoints: Vector2[]; depth: number } { + const contactPoints: Vector2[] = []; + let depth = 0; + + for (const point of clippedPoints) { + const separation = referenceNormal.dot(point.subtract(referenceV1)); + + if (separation <= 0) { + contactPoints.push(point); + depth = Math.max(depth, -separation); + } + } + + return { contactPoints, depth }; +} + +/** + * Detects a collision between two convex polygons, given as world-space + * {@link PolygonFaces}, using the separating axis theorem with + * reference/incident face clipping. + * @param facesA - The first polygon's world-space vertices and normals. + * @param facesB - The second polygon's world-space vertices and normals. + * @returns A {@link PolygonFacesContact} if the polygons overlap, otherwise + * `null`. + */ +export function detectPolygonFacesCollision( + facesA: PolygonFaces, + facesB: PolygonFaces, +): PolygonFacesContact | null { + const axisA = findAxisOfLeastPenetration( + facesA.vertices, + facesA.normals, + facesB.vertices, + ); + + if (axisA.separation > 0) { + return null; + } + + const axisB = findAxisOfLeastPenetration( + facesB.vertices, + facesB.normals, + facesA.vertices, + ); + + if (axisB.separation > 0) { + return null; + } + + const { reference, incident, faceIndex, flip } = selectReferenceFace( + facesA, + facesB, + axisA, + axisB, + ); + + const referenceNormal = reference.normals[faceIndex]; + const incidentFaceIndex = findIncidentFaceIndex( + referenceNormal, + incident.normals, + ); + + const incidentV1 = incident.vertices[incidentFaceIndex]; + const incidentV2 = + incident.vertices[(incidentFaceIndex + 1) % incident.vertices.length]; + + const referenceV1 = reference.vertices[faceIndex]; + const referenceV2 = + reference.vertices[(faceIndex + 1) % reference.vertices.length]; + + const clippedPoints = clipIncidentEdge( + incidentV1, + incidentV2, + referenceV1, + referenceV2, + ); + + if (clippedPoints === null) { + return null; + } + + const { contactPoints, depth } = findContactPoints( + clippedPoints, + referenceNormal, + referenceV1, + ); + + if (contactPoints.length === 0) { + return null; + } + + const normal = flip ? referenceNormal.negate() : referenceNormal; + + return { + normal, + depth, + contactPoints, + }; +} diff --git a/src/physics/physics-world.test.ts b/src/physics/physics-world.test.ts index 061b5c7f..aed15b71 100644 --- a/src/physics/physics-world.test.ts +++ b/src/physics/physics-world.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'; import { PrismaticJoint, RevoluteJoint } from './joints/index.js'; import { PhysicsWorld } from './physics-world.js'; import { RigidBody } from './rigid-body.js'; -import { CircleShape, PolygonShape } from './shapes/index.js'; +import { CircleShape, PolygonShape, TerrainShape } from './shapes/index.js'; import { Vector2 } from '../math/index.js'; describe('PhysicsWorld', () => { @@ -122,6 +122,33 @@ describe('PhysicsWorld', () => { expect(circleBody.position.y).toBeCloseTo(3.0419, 3); expect(circleBody.velocity.equals(Vector2.zero)).toBe(true); }); + + it('should settle a dynamic circle falling onto a static terrain body', () => { + const world = new PhysicsWorld({ gravity: new Vector2(0, 10) }); + const terrainBody = new RigidBody({ + shape: new TerrainShape( + [new Vector2(-10, 0), new Vector2(0, 0), new Vector2(10, 0)], + 5, + ), + position: Vector2.zero, + isStatic: true, + }); + const circleBody = new RigidBody({ + shape: new CircleShape(1), + position: new Vector2(0, -3), + restitution: 0, + }); + + world.addBody(circleBody); + world.addBody(terrainBody); + + for (let i = 0; i < 120; i++) { + world.step(1 / 60); + } + + expect(circleBody.position.y).toBeCloseTo(-1, 1); + expect(circleBody.velocity.magnitude()).toBeLessThan(0.1); + }); }); describe('isSensor', () => { diff --git a/src/physics/shapes/index.ts b/src/physics/shapes/index.ts index ae7c67c4..9c42f04f 100644 --- a/src/physics/shapes/index.ts +++ b/src/physics/shapes/index.ts @@ -1,3 +1,5 @@ export * from './circle-shape.js'; +export * from './polygon-math.js'; export * from './polygon-shape.js'; export * from './shape.js'; +export * from './terrain-shape.js'; diff --git a/src/physics/shapes/polygon-math.ts b/src/physics/shapes/polygon-math.ts new file mode 100644 index 00000000..8f397164 --- /dev/null +++ b/src/physics/shapes/polygon-math.ts @@ -0,0 +1,98 @@ +import { Vector2 } from '../../math/index.js'; + +/** + * Calculates the signed area of a polygon (twice the actual area). Positive + * for a polygon whose vertices are wound in this engine's canonical + * "outward-normal" order (see {@link PolygonShape}'s constructor), negative + * for the reverse winding. + * @param vertices - The polygon's vertices, in order. + * @returns The signed area of the polygon. + */ +export function calculateSignedArea(vertices: readonly Vector2[]): number { + let signedArea = 0; + + for (let i = 0; i < vertices.length; i++) { + const current = vertices[i]; + const next = vertices[(i + 1) % vertices.length]; + + signedArea += current.cross(next); + } + + return signedArea; +} + +/** + * Calculates the centroid (center of mass, for a uniform-density polygon) + * of a simple polygon. + * @param vertices - The polygon's vertices, in order. + * @returns The centroid of the polygon. + */ +export function calculateCentroid(vertices: readonly Vector2[]): Vector2 { + let centroidX = 0; + let centroidY = 0; + let signedArea = 0; + + for (let i = 0; i < vertices.length; i++) { + const current = vertices[i]; + const next = vertices[(i + 1) % vertices.length]; + const cross = current.cross(next); + + signedArea += cross; + centroidX += (current.x + next.x) * cross; + centroidY += (current.y + next.y) * cross; + } + + const factor = 1 / (3 * signedArea); + + return new Vector2(centroidX * factor, centroidY * factor); +} + +/** + * Calculates the outward-facing edge normal for each edge of a polygon + * (the edge from vertex `i` to vertex `i + 1`), assuming vertices are + * wound in this engine's canonical order (see {@link calculateSignedArea}). + * @param vertices - The polygon's vertices, in order. + * @returns The polygon's edge normals, in the same order as `vertices`. + */ +export function calculateNormals(vertices: readonly Vector2[]): Vector2[] { + const normals: Vector2[] = []; + + for (let i = 0; i < vertices.length; i++) { + const current = vertices[i]; + const next = vertices[(i + 1) % vertices.length]; + const edge = next.subtract(current); + + normals.push(edge.perpendicular().normalize()); + } + + return normals; +} + +/** + * Calculates the moment of inertia of a polygon for a given mass, about its + * own center of mass. + * @param mass - The mass of the body the polygon belongs to. + * @param verticesAboutCentroid - The polygon's vertices, in order, relative + * to its own centroid (i.e. already translated so their average, weighted + * by {@link calculateCentroid}, is the origin). + * @returns The moment of inertia of the polygon. + */ +export function calculatePolygonMomentOfInertia( + mass: number, + verticesAboutCentroid: readonly Vector2[], +): number { + let numerator = 0; + let denominator = 0; + + for (let i = 0; i < verticesAboutCentroid.length; i++) { + const current = verticesAboutCentroid[i]; + const next = verticesAboutCentroid[(i + 1) % verticesAboutCentroid.length]; + const cross = Math.abs(current.cross(next)); + + numerator += + cross * (current.dot(current) + current.dot(next) + next.dot(next)); + denominator += cross; + } + + return (mass / 3) * (numerator / denominator); +} diff --git a/src/physics/shapes/polygon-shape.ts b/src/physics/shapes/polygon-shape.ts index 7f4f0d8b..dc11aaa0 100644 --- a/src/physics/shapes/polygon-shape.ts +++ b/src/physics/shapes/polygon-shape.ts @@ -1,4 +1,10 @@ import { Vector2 } from '../../math/index.js'; +import { + calculateCentroid, + calculateNormals, + calculatePolygonMomentOfInertia, + calculateSignedArea, +} from './polygon-math.js'; import type { ShapeBase } from './shape.js'; const EPSILON = 1e-9; @@ -52,7 +58,7 @@ export class PolygonShape implements ShapeBase { } let orderedVertices = [...vertices]; - const signedArea = PolygonShape._signedArea(orderedVertices); + const signedArea = calculateSignedArea(orderedVertices); if (Math.abs(signedArea) < EPSILON) { throw new Error( @@ -66,10 +72,10 @@ export class PolygonShape implements ShapeBase { PolygonShape._validateConvexity(orderedVertices); - const centroid = PolygonShape._calculateCentroid(orderedVertices); + const centroid = calculateCentroid(orderedVertices); this.vertices = orderedVertices.map((vertex) => vertex.subtract(centroid)); - this.normals = PolygonShape._calculateNormals(this.vertices); + this.normals = calculateNormals(this.vertices); this._worldVerticesCache = null; this._worldNormalsCache = null; } @@ -92,19 +98,6 @@ export class PolygonShape implements ShapeBase { ]); } - private static _signedArea(vertices: readonly Vector2[]): number { - let signedArea = 0; - - for (let i = 0; i < vertices.length; i++) { - const current = vertices[i]; - const next = vertices[(i + 1) % vertices.length]; - - signedArea += current.cross(next); - } - - return signedArea; - } - private static _validateConvexity(vertices: readonly Vector2[]): void { const vertexCount = vertices.length; @@ -122,46 +115,12 @@ export class PolygonShape implements ShapeBase { } } - private static _calculateCentroid(vertices: readonly Vector2[]): Vector2 { - let centroidX = 0; - let centroidY = 0; - let signedArea = 0; - - for (let i = 0; i < vertices.length; i++) { - const current = vertices[i]; - const next = vertices[(i + 1) % vertices.length]; - const cross = current.cross(next); - - signedArea += cross; - centroidX += (current.x + next.x) * cross; - centroidY += (current.y + next.y) * cross; - } - - const factor = 1 / (3 * signedArea); - - return new Vector2(centroidX * factor, centroidY * factor); - } - - private static _calculateNormals(vertices: readonly Vector2[]): Vector2[] { - const normals: Vector2[] = []; - - for (let i = 0; i < vertices.length; i++) { - const current = vertices[i]; - const next = vertices[(i + 1) % vertices.length]; - const edge = next.subtract(current); - - normals.push(edge.perpendicular().normalize()); - } - - return normals; - } - /** * Calculates the area of the polygon. * @returns The area of the polygon. */ public getArea(): number { - return Math.abs(PolygonShape._signedArea(this.vertices)) / 2; + return Math.abs(calculateSignedArea(this.vertices)) / 2; } /** @@ -170,20 +129,7 @@ export class PolygonShape implements ShapeBase { * @returns The moment of inertia of the polygon. */ public getMomentOfInertia(mass: number): number { - let numerator = 0; - let denominator = 0; - - for (let i = 0; i < this.vertices.length; i++) { - const current = this.vertices[i]; - const next = this.vertices[(i + 1) % this.vertices.length]; - const cross = Math.abs(current.cross(next)); - - numerator += - cross * (current.dot(current) + current.dot(next) + next.dot(next)); - denominator += cross; - } - - return (mass / 3) * (numerator / denominator); + return calculatePolygonMomentOfInertia(mass, this.vertices); } /** diff --git a/src/physics/shapes/shape.ts b/src/physics/shapes/shape.ts index b65300b3..27350cc7 100644 --- a/src/physics/shapes/shape.ts +++ b/src/physics/shapes/shape.ts @@ -1,10 +1,11 @@ import type { CircleShape } from './circle-shape.js'; import type { PolygonShape } from './polygon-shape.js'; +import type { TerrainShape } from './terrain-shape.js'; /** * The kind of geometry a {@link Shape} represents. */ -export type ShapeType = 'circle' | 'polygon'; +export type ShapeType = 'circle' | 'polygon' | 'terrain'; /** * Common contract implemented by all collision shapes. @@ -38,6 +39,7 @@ export interface ShapeBase { } /** - * A collision shape, either a {@link CircleShape} or a {@link PolygonShape}. + * A collision shape: a {@link CircleShape}, a {@link PolygonShape}, or a + * {@link TerrainShape}. */ -export type Shape = CircleShape | PolygonShape; +export type Shape = CircleShape | PolygonShape | TerrainShape; diff --git a/src/physics/shapes/terrain-shape.test.ts b/src/physics/shapes/terrain-shape.test.ts new file mode 100644 index 00000000..63f218a0 --- /dev/null +++ b/src/physics/shapes/terrain-shape.test.ts @@ -0,0 +1,132 @@ +import { describe, expect, it } from 'vitest'; +import { TerrainShape } from './terrain-shape.js'; +import { Vector2 } from '../../math/index.js'; + +describe('TerrainShape', () => { + describe('constructor', () => { + it('should throw an error if fewer than 2 points are provided', () => { + expect(() => new TerrainShape([new Vector2(0, 0)], 10)).toThrow(); + }); + + it('should throw an error if points are not ordered by strictly increasing x', () => { + expect( + () => + new TerrainShape( + [new Vector2(0, 0), new Vector2(0, 10), new Vector2(2, 0)], + 10, + ), + ).toThrow(); + }); + + it('should throw an error if depth is not positive', () => { + expect( + () => new TerrainShape([new Vector2(0, 0), new Vector2(1, 0)], 0), + ).toThrow(); + }); + + it('should not re-center points around a centroid', () => { + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 0)], + 10, + ); + + expect(terrain.points[0].x).toBeCloseTo(0); + expect(terrain.points[0].y).toBeCloseTo(0); + expect(terrain.points[1].x).toBeCloseTo(10); + expect(terrain.points[1].y).toBeCloseTo(0); + }); + + it('should place the flat bottom edge depth units below the lowest point', () => { + const terrain = new TerrainShape( + [new Vector2(0, -20), new Vector2(10, 5), new Vector2(20, 0)], + 10, + ); + + expect(terrain.bottomY).toBeCloseTo(15); + }); + }); + + describe('segments', () => { + it('should create one convex quad segment per consecutive pair of points', () => { + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 0), new Vector2(20, -5)], + 10, + ); + + expect(terrain.segments).toHaveLength(2); + expect(terrain.segments[0].minX).toBeCloseTo(0); + expect(terrain.segments[0].maxX).toBeCloseTo(10); + expect(terrain.segments[1].minX).toBeCloseTo(10); + expect(terrain.segments[1].maxX).toBeCloseTo(20); + }); + + it('should produce an upward-facing normal for a flat segment', () => { + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 0)], + 10, + ); + + const [topNormal] = terrain.segments[0].normals; + + expect(topNormal.x).toBeCloseTo(0); + expect(topNormal.y).toBeCloseTo(-1); + }); + }); + + describe('getArea', () => { + it('should calculate the area of a flat terrain strip', () => { + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 0)], + 5, + ); + + expect(terrain.getArea()).toBeCloseTo(50); + }); + + it('should calculate the area of a sloped terrain strip', () => { + // A single downward slope closed off by a flat bottom at y = 10 forms + // a trapezoid with parallel verticals of length 10 and 5, width 10. + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 5)], + 5, + ); + + expect(terrain.getArea()).toBeCloseTo(((10 + 5) / 2) * 10); + }); + }); + + describe('getMomentOfInertia', () => { + it('should calculate the moment of inertia of a flat terrain strip like an equivalent rectangle', () => { + const width = 10; + const height = 5; + const mass = 20; + + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(width, 0)], + height, + ); + + // Matches PolygonShape.getMomentOfInertia's convention for a + // rectangle about its centroid (see polygon-shape.test.ts's + // equivalent square case). + const expected = (mass / 6) * (width * width + height * height); + + expect(terrain.getMomentOfInertia(mass)).toBeCloseTo(expected); + }); + }); + + describe('getBoundingRadius', () => { + it('should return the distance from the local origin to the furthest vertex', () => { + const terrain = new TerrainShape( + [new Vector2(0, 0), new Vector2(10, 0)], + 5, + ); + + // Furthest vertex from the local origin (0,0) is the bottom-right + // corner at (10, 5). + expect(terrain.getBoundingRadius()).toBeCloseTo( + Math.sqrt(10 * 10 + 5 * 5), + ); + }); + }); +}); diff --git a/src/physics/shapes/terrain-shape.ts b/src/physics/shapes/terrain-shape.ts new file mode 100644 index 00000000..c3b21981 --- /dev/null +++ b/src/physics/shapes/terrain-shape.ts @@ -0,0 +1,204 @@ +import { Vector2 } from '../../math/index.js'; +import { + calculateCentroid, + calculateNormals, + calculatePolygonMomentOfInertia, + calculateSignedArea, +} from './polygon-math.js'; +import type { ShapeBase } from './shape.js'; + +/** + * A single span of ground between two consecutive {@link TerrainShape} + * surface points, closed off into a convex quadrilateral by a flat bottom + * edge. `vertices`/`normals` follow this engine's canonical winding (see + * `PolygonShape`'s constructor): top-left, top-right, bottom-right, + * bottom-left, with outward-facing normals in the same order. All fields + * are in the terrain's local space. + */ +export interface TerrainSegment { + /** + * The segment's four vertices, in local space: the two surface points + * followed by their corresponding points on the terrain's flat bottom + * edge. + */ + vertices: readonly Vector2[]; + + /** + * The segment's four outward-facing edge normals, in local space, + * corresponding to the edges between consecutive `vertices`. + */ + normals: readonly Vector2[]; + + /** + * The lesser of the segment's two surface points' x-coordinates. Used to + * cheaply filter candidate segments before running narrow-phase collision + * checks against them. + */ + minX: number; + + /** + * The greater of the segment's two surface points' x-coordinates. + */ + maxX: number; +} + +const EPSILON = 1e-9; + +/** + * A static, non-convex 2D ground collider defined by a heightmap: a chain + * of surface points, ordered left to right, closed off into a solid slab by + * a flat bottom edge `depth` units below the lowest surface point. + * + * Unlike {@link PolygonShape}, `TerrainShape` does not re-center its + * vertices around their centroid - `points` are used exactly as authored, + * in the shape's own local space, with the owning `RigidBody`'s `position` + * acting as a simple translation offset (typically `Vector2.zero`, with the + * terrain authored directly in world coordinates). This matches how + * heightmap terrain is normally authored, and keeps a terrain's points + * meaningful on their own without also tracking a separately-computed + * centroid offset. + * + * Narrow-phase collision against a `TerrainShape` (see + * `detectCircleTerrainCollision`/`detectPolygonTerrainCollision`) is + * resolved per-segment: each pair of consecutive surface points, plus the + * flat bottom edge, forms a convex quadrilateral ({@link segments}), and the + * existing circle/polygon narrow-phase routines run against whichever + * segments overlap the other body's local x-range. + * + * Terrain is intended to always be static (see `RigidBodyOptions.isStatic`) + * - a heightmap has no meaningful mass distribution to simulate as a moving + * body. `getArea`/`getMomentOfInertia` are still implemented correctly (for + * a hypothetical dynamic use), but are never called for a static body. + */ +export class TerrainShape implements ShapeBase { + public readonly type = 'terrain'; + + public readonly points: readonly Vector2[]; + + public readonly depth: number; + + /** + * The flat bottom edge's y-coordinate, in local space: `depth` units + * below the lowest of `points`. + */ + public readonly bottomY: number; + + /** + * The convex quadrilaterals narrow-phase collision detection tests + * against, one per consecutive pair of `points`. + */ + public readonly segments: readonly TerrainSegment[]; + + /** + * Creates a new TerrainShape instance. + * @param points - The local-space surface points of the terrain, ordered + * by strictly increasing x. Must contain at least 2 points. + * @param depth - The thickness of the terrain slab below its lowest + * point. Must be positive. + * @throws An error if fewer than 2 points are provided, the points are + * not ordered by strictly increasing x, or `depth` is not positive. + */ + constructor(points: readonly Vector2[], depth: number) { + if (points.length < 2) { + throw new Error( + `TerrainShape requires at least 2 points, received ${points.length}.`, + ); + } + + for (let i = 0; i < points.length - 1; i++) { + if (points[i + 1].x <= points[i].x + EPSILON) { + throw new Error( + 'TerrainShape points must be ordered by strictly increasing x.', + ); + } + } + + if (depth <= 0) { + throw new Error( + `TerrainShape depth must be positive, received "${depth}".`, + ); + } + + this.points = points.map((point) => point.clone()); + this.depth = depth; + this.bottomY = Math.max(...this.points.map((point) => point.y)) + depth; + this.segments = this._buildSegments(); + } + + /** + * Calculates the area of the terrain's full silhouette (its surface + * points, closed off by the flat bottom edge). + * @returns The area of the terrain. + */ + public getArea(): number { + return Math.abs(calculateSignedArea(this._silhouetteVertices())) / 2; + } + + /** + * Calculates the moment of inertia of the terrain's full silhouette for a + * given mass, about its own center of mass. + * @param mass - The mass of the body the shape belongs to. + * @returns The moment of inertia of the terrain. + */ + public getMomentOfInertia(mass: number): number { + const silhouette = this._silhouetteVertices(); + const centroid = calculateCentroid(silhouette); + const verticesAboutCentroid = silhouette.map((vertex) => + vertex.subtract(centroid), + ); + + return calculatePolygonMomentOfInertia(mass, verticesAboutCentroid); + } + + /** + * Calculates the radius of the smallest circle, centered on the shape's + * local origin (not its centroid - see the class documentation), that + * fully contains the terrain. + * @returns The bounding radius of the terrain. + */ + public getBoundingRadius(): number { + let maxRadiusSquared = 0; + + for (const vertex of this._silhouetteVertices()) { + maxRadiusSquared = Math.max(maxRadiusSquared, vertex.magnitudeSquared()); + } + + return Math.sqrt(maxRadiusSquared); + } + + private _silhouetteVertices(): Vector2[] { + const first = this.points[0]; + const last = this.points[this.points.length - 1]; + + return [ + ...this.points, + new Vector2(last.x, this.bottomY), + new Vector2(first.x, this.bottomY), + ]; + } + + private _buildSegments(): TerrainSegment[] { + const segments: TerrainSegment[] = []; + + for (let i = 0; i < this.points.length - 1; i++) { + const surfaceLeft = this.points[i]; + const surfaceRight = this.points[i + 1]; + + const vertices: Vector2[] = [ + surfaceLeft, + surfaceRight, + new Vector2(surfaceRight.x, this.bottomY), + new Vector2(surfaceLeft.x, this.bottomY), + ]; + + segments.push({ + vertices, + normals: calculateNormals(vertices), + minX: surfaceLeft.x, + maxX: surfaceRight.x, + }); + } + + return segments; + } +} diff --git a/src/rendering/shaders/utils/shared-placeholder-texture.test.ts b/src/rendering/shaders/utils/shared-placeholder-texture.test.ts index 02635a9a..2400080f 100644 --- a/src/rendering/shaders/utils/shared-placeholder-texture.test.ts +++ b/src/rendering/shaders/utils/shared-placeholder-texture.test.ts @@ -1,19 +1,26 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { getSharedBlackTexture } from './shared-placeholder-texture'; +import { + getSharedBlackTexture, + getSharedWhiteTexture, +} from './shared-placeholder-texture'; + +function createMockGl(): WebGL2RenderingContext { + return { + createTexture: vi.fn().mockImplementation(() => ({}) as WebGLTexture), + bindTexture: vi.fn(), + texImage2D: vi.fn(), + TEXTURE_2D: 'TEXTURE_2D', + RGBA: 'RGBA', + UNSIGNED_BYTE: 'UNSIGNED_BYTE', + } as unknown as WebGL2RenderingContext; +} describe('getSharedBlackTexture', () => { let gl: WebGL2RenderingContext; beforeEach(() => { - gl = { - createTexture: vi.fn().mockImplementation(() => ({}) as WebGLTexture), - bindTexture: vi.fn(), - texImage2D: vi.fn(), - TEXTURE_2D: 'TEXTURE_2D', - RGBA: 'RGBA', - UNSIGNED_BYTE: 'UNSIGNED_BYTE', - } as unknown as WebGL2RenderingContext; + gl = createMockGl(); }); it('creates a 1x1 opaque black texture', () => { @@ -41,14 +48,7 @@ describe('getSharedBlackTexture', () => { }); it('creates a distinct texture per context', () => { - const otherGl = { - createTexture: vi.fn().mockImplementation(() => ({}) as WebGLTexture), - bindTexture: vi.fn(), - texImage2D: vi.fn(), - TEXTURE_2D: 'TEXTURE_2D', - RGBA: 'RGBA', - UNSIGNED_BYTE: 'UNSIGNED_BYTE', - } as unknown as WebGL2RenderingContext; + const otherGl = createMockGl(); const first = getSharedBlackTexture(gl); const second = getSharedBlackTexture(otherGl); @@ -56,3 +56,51 @@ describe('getSharedBlackTexture', () => { expect(second).not.toBe(first); }); }); + +describe('getSharedWhiteTexture', () => { + let gl: WebGL2RenderingContext; + + beforeEach(() => { + gl = createMockGl(); + }); + + it('creates a 1x1 opaque white texture', () => { + getSharedWhiteTexture(gl); + + expect(gl.texImage2D).toHaveBeenCalledWith( + gl.TEXTURE_2D, + 0, + gl.RGBA, + 1, + 1, + 0, + gl.RGBA, + gl.UNSIGNED_BYTE, + new Uint8Array([255, 255, 255, 255]), + ); + }); + + it('returns the same texture on subsequent calls for the same context', () => { + const first = getSharedWhiteTexture(gl); + const second = getSharedWhiteTexture(gl); + + expect(second).toBe(first); + expect(gl.createTexture).toHaveBeenCalledTimes(1); + }); + + it('creates a distinct texture per context', () => { + const otherGl = createMockGl(); + + const first = getSharedWhiteTexture(gl); + const second = getSharedWhiteTexture(otherGl); + + expect(second).not.toBe(first); + }); + + it('is distinct from the shared black texture for the same context', () => { + const black = getSharedBlackTexture(gl); + const white = getSharedWhiteTexture(gl); + + expect(white).not.toBe(black); + }); +}); diff --git a/src/rendering/shaders/utils/shared-placeholder-texture.ts b/src/rendering/shaders/utils/shared-placeholder-texture.ts index d0123523..875cd9dc 100644 --- a/src/rendering/shaders/utils/shared-placeholder-texture.ts +++ b/src/rendering/shaders/utils/shared-placeholder-texture.ts @@ -1,26 +1,26 @@ -// A single 1x1 opaque black texture, reused by every consumer across a given -// `WebGL2RenderingContext` that needs to bind "nothing" to a sampler2D -// uniform without a shader branch (for example a sprite with no emissive -// map): allocating a fresh 1x1 texture per consumer would be wasteful, and -// none of them are ever freed since nothing owns one long enough to dispose -// it. +// A single 1x1 opaque black/white texture, reused by every consumer across a +// given `WebGL2RenderingContext` that needs to bind "nothing" (black) or a +// neutral, tintable surface (white) to a sampler2D uniform without a shader +// branch (for example a sprite with no emissive map, or a solid-color +// sprite rendered by tinting an untextured quad): allocating a fresh 1x1 +// texture per consumer would be wasteful, and none of them are ever freed +// since nothing owns one long enough to dispose it. const sharedBlackTextureByContext = new WeakMap< WebGL2RenderingContext, WebGLTexture >(); -/** - * Returns a shared, opaque-black, 1x1 texture for `gl`, creating it on first - * use. Intended for sampler2D uniforms that must always be bound to - * something (to avoid a data-dependent fragment shader branch) but should - * contribute nothing when no real texture is supplied. - * @param gl - The WebGL2 rendering context. - * @returns The shared black texture. - */ -export function getSharedBlackTexture( +const sharedWhiteTextureByContext = new WeakMap< + WebGL2RenderingContext, + WebGLTexture +>(); + +function getOrCreateSharedTexture( gl: WebGL2RenderingContext, + cache: WeakMap, + pixel: Uint8Array, ): WebGLTexture { - const existing = sharedBlackTextureByContext.get(gl); + const existing = cache.get(gl); if (existing) { return existing; @@ -38,10 +38,47 @@ export function getSharedBlackTexture( 0, gl.RGBA, gl.UNSIGNED_BYTE, - new Uint8Array([0, 0, 0, 255]), + pixel, ); - sharedBlackTextureByContext.set(gl, texture); + cache.set(gl, texture); return texture; } + +/** + * Returns a shared, opaque-black, 1x1 texture for `gl`, creating it on first + * use. Intended for sampler2D uniforms that must always be bound to + * something (to avoid a data-dependent fragment shader branch) but should + * contribute nothing when no real texture is supplied. + * @param gl - The WebGL2 rendering context. + * @returns The shared black texture. + */ +export function getSharedBlackTexture( + gl: WebGL2RenderingContext, +): WebGLTexture { + return getOrCreateSharedTexture( + gl, + sharedBlackTextureByContext, + new Uint8Array([0, 0, 0, 255]), + ); +} + +/** + * Returns a shared, opaque-white, 1x1 texture for `gl`, creating it on first + * use. Intended for a sprite's `u_texture` when it should render as a flat, + * tintable color rather than an image - the sprite shader multiplies the + * sampled texture color by `tintColor`, so a white texture leaves + * `tintColor` unmodified. + * @param gl - The WebGL2 rendering context. + * @returns The shared white texture. + */ +export function getSharedWhiteTexture( + gl: WebGL2RenderingContext, +): WebGLTexture { + return getOrCreateSharedTexture( + gl, + sharedWhiteTextureByContext, + new Uint8Array([255, 255, 255, 255]), + ); +} From ab85acf91d65e09fe48a005daec05382e2123951 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 22 Jul 2026 18:07:51 +0000 Subject: [PATCH 2/7] feat(demo): add standalone Rolling Ball demo for TerrainShape A longer, seeded-random rolling-hills TerrainShape course with a player-controlled ball: roll left/right (A/D or arrow keys) drives an AngularVelocityMotorEcsComponent, and friction against the terrain turns that spin into rolling motion with no special-cased "rolling" logic of its own. Space jumps while grounded (tracked via PhysicsWorld.collisionStarts/collisionEnds against the terrain body), and a small camera-follow system keeps the ball in view across the course. Registered in the docs navbar and linked from the Terrain guide alongside the physics demo's shorter example. --- .../docs/docs/physics/terrain.md | 7 + documentation-site/docusaurus.config.ts | 4 + .../rolling-ball/_camera-follow.system.ts | 44 ++++ .../pages/demos/rolling-ball/_create-game.ts | 97 ++++++++ .../demos/rolling-ball/_create-inputs.ts | 52 ++++ .../demos/rolling-ball/_create-player.ts | 87 +++++++ .../demos/rolling-ball/_create-terrain.ts | 234 ++++++++++++++++++ .../pages/demos/rolling-ball/_jump.system.ts | 102 ++++++++ .../pages/demos/rolling-ball/_roll.system.ts | 37 +++ .../src/pages/demos/rolling-ball/index.tsx | 74 ++++++ 10 files changed, 738 insertions(+) create mode 100644 documentation-site/src/pages/demos/rolling-ball/_camera-follow.system.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_create-game.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_create-inputs.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_create-player.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_jump.system.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_roll.system.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/index.tsx diff --git a/documentation-site/docs/docs/physics/terrain.md b/documentation-site/docs/docs/physics/terrain.md index 8ca5a7c4..435a5f50 100644 --- a/documentation-site/docs/docs/physics/terrain.md +++ b/documentation-site/docs/docs/physics/terrain.md @@ -85,3 +85,10 @@ unmodified). See the [physics demo](/Forge/demos/physics)'s `create-terrain.ts` for a complete example, including computing each segment's position, rotation, and width from the same `points`/`depth` passed to `TerrainShape`. + +For a longer, more elaborate course - and a player-controlled body actually +rolling over it - see the [Rolling Ball demo](/Forge/demos/rolling-ball): a +much longer `TerrainShape` with varied, seeded-random hills, and a ball +whose `AngularVelocityMotorEcsComponent` spin turns into rolling motion +purely through friction against the terrain, no special-cased "rolling" +logic of its own. diff --git a/documentation-site/docusaurus.config.ts b/documentation-site/docusaurus.config.ts index 43d8d901..45f6af9d 100644 --- a/documentation-site/docusaurus.config.ts +++ b/documentation-site/docusaurus.config.ts @@ -119,6 +119,10 @@ const config: Config = { to: 'demos/physics', label: 'Physics', }, + { + to: 'demos/rolling-ball', + label: 'Rolling Ball', + }, { to: 'demos/prismatic-joint', label: 'Prismatic Joint (Slider)', diff --git a/documentation-site/src/pages/demos/rolling-ball/_camera-follow.system.ts b/documentation-site/src/pages/demos/rolling-ball/_camera-follow.system.ts new file mode 100644 index 00000000..163b16f3 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_camera-follow.system.ts @@ -0,0 +1,44 @@ +import { EcsSystem } from '@forge-game-engine/forge/ecs'; +import { + PositionEcsComponent, + Time, + positionId, +} from '@forge-game-engine/forge/common'; +import { + CameraEcsComponent, + cameraId, +} from '@forge-game-engine/forge/rendering'; + +/** How quickly the camera closes the gap to the ball, per second. */ +const followSpeed = 4; + +/** + * Creates an ECS system that smoothly pans the camera towards + * `targetPosition` every tick, using exponential smoothing so it eases + * towards the ball rather than snapping to it or lagging at a fixed offset. + * + * Writes `position.world` directly (rather than `position.local`, which + * `createCameraEcsSystem`'s own pan/zoom input handling uses) since this + * demo doesn't register `createTransformEcsSystem` to compute `world` from + * `local` - the same convention every entity in this demo (and the other + * physics demos) follows. + * @param targetPosition - The position component to follow, typically the ball's. + * @param time - The time instance used to scale the follow speed by delta time. + */ +export const createCameraFollowEcsSystem = ( + targetPosition: PositionEcsComponent, + time: Time, +): EcsSystem<[CameraEcsComponent, PositionEcsComponent]> => ({ + query: [cameraId, positionId], + run: (result) => { + const [, cameraPosition] = result.components; + const t = 1 - Math.exp(-followSpeed * time.deltaTimeInSeconds); + + cameraPosition.world.x += + (targetPosition.world.x - cameraPosition.world.x) * t; + cameraPosition.world.y += + (targetPosition.world.y - cameraPosition.world.y) * t; + cameraPosition.local.x = cameraPosition.world.x; + cameraPosition.local.y = cameraPosition.world.y; + }, +}); diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts new file mode 100644 index 00000000..3b1ad512 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts @@ -0,0 +1,97 @@ +import { + createCamera, + createRenderEcsSystem, +} from '@forge-game-engine/forge/rendering'; +import { createGame, Game } from '@forge-game-engine/forge/utilities'; +import { + createAngularVelocityMotorEcsSystem, + createPhysicsSyncEcsSystem, + PhysicsWorld, +} from '@forge-game-engine/forge/physics'; +import { + PositionEcsComponent, + positionId, +} from '@forge-game-engine/forge/common'; +import { Vector2 } from '@forge-game-engine/forge/math'; +import { createInputs } from './_create-inputs'; +import { createTerrain } from './_create-terrain'; +import { createPlayer } from './_create-player'; +import { createRollEcsSystem } from './_roll.system'; +import { createJumpEcsSystem } from './_jump.system'; +import { createCameraFollowEcsSystem } from './_camera-follow.system'; + +const renderLayers = { + foreground: 1 << 0, +}; + +const gravity = new Vector2(0, -700); +const terrainWidth = 8000; + +export const createRollingBallGame = async (): Promise => { + const { game, world, renderContext, time } = createGame('demo-game'); + + const cameraEntity = createCamera(world, { + isStatic: true, + cullingMask: renderLayers.foreground, + }); + + const physicsWorld = new PhysicsWorld({ gravity }); + + const { rollInput, jumpInput } = createInputs(world, time); + + const terrain = createTerrain( + world, + renderContext, + renderLayers.foreground, + terrainWidth, + ); + + const spawnPosition = new Vector2( + terrain.spawnX, + terrain.worldSurfaceYAt(terrain.spawnX) + 60, + ); + + const player = await createPlayer( + world, + renderContext, + renderLayers.foreground, + spawnPosition, + ); + + const playerPosition = world.getComponent( + player.entity, + positionId, + )!; + + // Start the camera already centered on the ball, rather than easing in + // from the world origin on the first frame. + const cameraPosition = world.getComponent( + cameraEntity, + positionId, + )!; + + cameraPosition.world = spawnPosition.clone(); + cameraPosition.local = spawnPosition.clone(); + + // Roll input must be applied before the motor system, which must in turn + // run before createPhysicsSyncEcsSystem, so this tick's input reaches + // this tick's physics step - see the Applying Forces guide's registration + // order caution. The jump/respawn and camera-follow systems read the + // physics step's results, so they run after it instead. + world.addSystem(createRollEcsSystem(rollInput)); + world.addSystem(createAngularVelocityMotorEcsSystem(time)); + world.addSystem(createPhysicsSyncEcsSystem(physicsWorld, time)); + world.addSystem( + createJumpEcsSystem( + physicsWorld, + player.body, + terrain.body, + jumpInput, + spawnPosition, + ), + ); + world.addSystem(createCameraFollowEcsSystem(playerPosition, time)); + world.addSystem(createRenderEcsSystem(renderContext)); + + return game; +}; diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-inputs.ts b/documentation-site/src/pages/demos/rolling-ball/_create-inputs.ts new file mode 100644 index 00000000..fdd512b1 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_create-inputs.ts @@ -0,0 +1,52 @@ +import { EcsWorld } from '@forge-game-engine/forge/ecs'; +import { Time } from '@forge-game-engine/forge/common'; +import { + actionResetTypes, + Axis1dAction, + buttonMoments, + KeyboardAxis1dBinding, + KeyboardInputSource, + KeyboardTriggerBinding, + keyCodes, + registerInputs, + TriggerAction, +} from '@forge-game-engine/forge/input'; + +export function createInputs( + world: EcsWorld, + time: Time, +): { + rollInput: Axis1dAction; + jumpInput: TriggerAction; +} { + // `noReset`, since the axis is driven by discrete keydown/keyup edges + // (see KeyboardAxis1dBinding), not re-read every tick - the default + // `zero` reset would zero it out again the instant after each keydown. + const rollInput = new Axis1dAction('roll', null, actionResetTypes.noReset); + const jumpInput = new TriggerAction('jump'); + + const inputManager = registerInputs(world, time, { + axis1dActions: [rollInput], + triggerActions: [jumpInput], + }); + + const keyboardInputSource = new KeyboardInputSource(inputManager); + + keyboardInputSource.axis1dBindings.add( + new KeyboardAxis1dBinding(rollInput, keyCodes.d, keyCodes.a), + ); + + keyboardInputSource.axis1dBindings.add( + new KeyboardAxis1dBinding( + rollInput, + keyCodes.arrowRight, + keyCodes.arrowLeft, + ), + ); + + keyboardInputSource.triggerBindings.add( + new KeyboardTriggerBinding(jumpInput, keyCodes.space, buttonMoments.down), + ); + + return { rollInput, jumpInput }; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-player.ts b/documentation-site/src/pages/demos/rolling-ball/_create-player.ts new file mode 100644 index 00000000..6e56a5fd --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_create-player.ts @@ -0,0 +1,87 @@ +import { EcsWorld } from '@forge-game-engine/forge/ecs'; +import { positionId, rotationId } from '@forge-game-engine/forge/common'; +import { Vector2 } from '@forge-game-engine/forge/math'; +import { + addAngularVelocityMotorComponent, + CircleShape, + PhysicsBodyId, + RigidBody, +} from '@forge-game-engine/forge/physics'; +import { + createImageSprite, + RenderContext, + spriteId, +} from '@forge-game-engine/forge/rendering'; +import { getAssetUrl } from '@site/src/utils/get-asset-url'; + +export const ballRadius = 24; + +/** + * The maximum torque the ball's `AngularVelocityMotorEcsComponent` may + * spend reaching its roll input's target angular velocity, tuned relative + * to the ball's own moment of inertia so it ramps up to speed over a few + * tenths of a second rather than snapping instantly or crawling. + */ +export const ballMaxTorque = 30_000_000; + +export interface Player { + /** The entity carrying the ball's sprite, position and physics body. */ + entity: number; + + /** The ball's `RigidBody`, for grounded checks and jump impulses. */ + body: RigidBody; +} + +/** + * Creates the player-controlled ball: a dynamic `CircleShape` body with an + * `AngularVelocityMotorEcsComponent` (driven by roll input, see + * `createRollEcsSystem`) that lets friction against the terrain turn spin + * into rolling motion, exactly like a real ball. + * @param world - The ECS world to add the ball entity to. + * @param renderContext - The render context used to load the ball sprite. + * @param renderLayer - The render layer the ball should be drawn on. + * @param spawnPosition - The world-space position to spawn the ball at. + */ +export async function createPlayer( + world: EcsWorld, + renderContext: RenderContext, + renderLayer: number, + spawnPosition: Vector2, +): Promise { + const ballImage = await renderContext.imageCache.getOrLoad( + getAssetUrl('img/physics/ball_blue_large.png'), + ); + const ballSprite = createImageSprite(ballImage, renderContext, renderLayer); + + const ballBody = new RigidBody({ + shape: new CircleShape(ballRadius), + position: spawnPosition.clone(), + density: 1.2, + friction: 0.9, + restitution: 0.15, + }); + + const entity = world.createEntity(); + + world.addComponent(entity, positionId, { + world: spawnPosition.clone(), + local: spawnPosition.clone(), + }); + + world.addComponent(entity, rotationId, { local: 0, world: 0 }); + + world.addComponent(entity, spriteId, { + ...ballSprite, + width: ballRadius * 2, + height: ballRadius * 2, + }); + + world.addComponent(entity, PhysicsBodyId, { physicsBody: ballBody }); + + addAngularVelocityMotorComponent(world, entity, { + targetVelocity: 0, + maxTorque: ballMaxTorque, + }); + + return { entity, body: ballBody }; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts new file mode 100644 index 00000000..d42271a9 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts @@ -0,0 +1,234 @@ +import { EcsWorld } from '@forge-game-engine/forge/ecs'; +import { positionId, rotationId } from '@forge-game-engine/forge/common'; +import { clamp, Random, Vector2 } from '@forge-game-engine/forge/math'; +import { + PhysicsBodyId, + RigidBody, + TerrainShape, +} from '@forge-game-engine/forge/physics'; +import { + Color, + combineInstanceDataSegments, + createQuadGeometry, + getSharedBlackTexture, + getSharedWhiteTexture, + Material, + Renderable, + RenderContext, + spriteId, + spriteInstanceDataSegment, +} from '@forge-game-engine/forge/rendering'; + +const groundColor = new Color(0.36, 0.62, 0.32, 1); +const terrainDepth = 500; +const pointSpacing = 35; + +// The width (in local x) of the flat platform centered on local x = 0 - +// where the ball spawns - before the terrain fades into its full +// rolling-hill height variation. Landing on a flat platform first, rather +// than a slope, makes the starting point read clearly as "home base", and +// centering it (rather than putting it at one end) means both roll +// directions lead into the same amount of varied terrain. +const flatStartZone = 700; + +/** + * A few sine waves at different amplitudes/frequencies/phases, summed + * together, produce smooth, varied "rolling hills" terrain rather than + * either a single uniform wave or jagged point-to-point noise (which would + * create slopes too steep for the ball to roll over predictably). Fixed via + * a seeded `Random`, so the terrain is identical on every page load - handy + * for a demo where players compare notes on the same course. + */ +const hillLayers = (() => { + const random = new Random('rolling-ball-terrain'); + + return [1, 2, 3].map((octave) => ({ + amplitude: random.randomFloat(25, 70) / octave, + frequency: random.randomFloat(0.0006, 0.0016) * octave, + phase: random.randomFloat(0, Math.PI * 2), + })); +})(); + +function heightAt(localX: number, halfWidth: number): number { + const rawHeight = hillLayers.reduce( + (sum, layer) => + sum + layer.amplitude * Math.sin(layer.frequency * localX + layer.phase), + 0, + ); + + const fade = clamp( + (Math.abs(localX) - flatStartZone / 2) / flatStartZone, + 0, + 1, + ); + + return rawHeight * fade; +} + +function createTerrainRenderable( + renderContext: RenderContext, + layer: number, +): Renderable { + const { shaderCache, gl } = renderContext; + + const material = new Material( + shaderCache.getShader('sprite.vert'), + shaderCache.getShader('sprite.frag'), + gl, + ); + + material.setUniform('u_texture', getSharedWhiteTexture(gl)); + material.setUniform('u_emissiveTexture', getSharedBlackTexture(gl)); + material.setColorUniform('u_emissiveColor', Color.white); + material.setUniform('u_emissiveIntensity', 0); + + const { floatsPerInstance, bindInstanceData, setupInstanceAttributes } = + combineInstanceDataSegments(spriteInstanceDataSegment); + + return new Renderable( + createQuadGeometry(gl), + material, + floatsPerInstance, + layer, + bindInstanceData, + setupInstanceAttributes, + ); +} + +export interface RollingBallTerrain { + /** The terrain's static `RigidBody`, for reference (e.g. grounded checks). */ + body: RigidBody; + + /** + * The world-space x coordinate of the flat platform the ball spawns on, + * near the start of the terrain. + */ + spawnX: number; + + /** + * Returns the world-space y coordinate of the terrain's surface at a + * given world-space x. Used to place the ball (and anything else) exactly + * on the ground, accounting for the terrain body's rotation (see below). + */ + worldSurfaceYAt: (worldX: number) => number; +} + +/** + * Creates a long, varied-height `TerrainShape` ground body spanning + * `totalWidth`, plus one sprite entity per terrain segment to render it. + * @param world - The ECS world to add the terrain entities to. + * @param renderContext - The render context used to build the terrain sprite material. + * @param renderLayer - The render layer the terrain should be drawn on. + * @param totalWidth - The total width of the terrain, in world units. + */ +export function createTerrain( + world: EcsWorld, + renderContext: RenderContext, + renderLayer: number, + totalWidth: number, +): RollingBallTerrain { + const renderable = createTerrainRenderable(renderContext, renderLayer); + const halfWidth = totalWidth / 2; + + const points: Vector2[] = []; + + for (let localX = -halfWidth; localX < halfWidth; localX += pointSpacing) { + points.push(new Vector2(localX, heightAt(localX, halfWidth))); + } + + points.push(new Vector2(halfWidth, heightAt(halfWidth, halfWidth))); + + const terrainShape = new TerrainShape(points, terrainDepth); + + // Rotated 180 degrees, same as the Physics demo's terrain: `TerrainShape` + // always extends its solid slab `depth` units in the +y direction from + // its surface points (in its own local space), but this demo's gravity + // pulls bodies toward -y, so the body is flipped to face the right way. + const angle = Math.PI; + const position = Vector2.zero; + + const terrainBody = new RigidBody({ + shape: terrainShape, + position, + angle, + isStatic: true, + friction: 0.9, + }); + + const terrainEntity = world.createEntity(); + + world.addComponent(terrainEntity, positionId, { + world: position.clone(), + local: position.clone(), + }); + + // `RotationEcsComponent.world` is negated relative to `RigidBody.angle` + // (see the "Coordinate spaces" note in the Bodies and Shapes guide), the + // same convention `createPhysicsSyncEcsSystem` uses for every other + // static body. + world.addComponent(terrainEntity, rotationId, { + local: -angle, + world: -angle, + }); + + world.addComponent(terrainEntity, PhysicsBodyId, { + physicsBody: terrainBody, + }); + + for (let i = 0; i < points.length - 1; i++) { + const surfaceLeft = points[i]; + const surfaceRight = points[i + 1]; + const edge = surfaceRight.subtract(surfaceLeft); + const segmentWidth = edge.magnitude(); + + // The outward normal (away from the solid slab) in the terrain's local + // space; the segment sprite is centered `terrainDepth / 2` units in the + // opposite direction so it spans from the surface down into the ground. + const outwardNormal = edge.perpendicular().normalize(); + const localMidpoint = surfaceLeft + .add(surfaceRight) + .multiply(0.5) + .subtract(outwardNormal.multiply(terrainDepth / 2)); + + const segmentPosition = localMidpoint.rotate(angle).add(position); + const segmentAngle = Math.atan2(edge.y, edge.x) + angle; + + const segmentEntity = world.createEntity(); + + world.addComponent(segmentEntity, positionId, { + world: segmentPosition, + local: segmentPosition.clone(), + }); + + world.addComponent(segmentEntity, rotationId, { + local: -segmentAngle, + world: -segmentAngle, + }); + + world.addComponent(segmentEntity, spriteId, { + width: segmentWidth, + height: terrainDepth, + pivot: new Vector2(0.5, 0.5), + tintColor: groundColor, + renderable, + uvOffset: Vector2.zero, + uvScale: Vector2.one, + enabled: true, + layer: renderLayer, + }); + } + + // The flat platform is centered on local x = 0, which - since the 180 + // degree rotation maps worldX = position.x - localX - is also world x = 0 + // (position.x is Vector2.zero), so both roll directions lead into equal + // amounts of hilly terrain. + const spawnX = position.x; + + const worldSurfaceYAt = (worldX: number): number => { + const localX = position.x - worldX; + + return position.y - heightAt(localX, halfWidth); + }; + + return { body: terrainBody, spawnX, worldSurfaceYAt }; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_jump.system.ts b/documentation-site/src/pages/demos/rolling-ball/_jump.system.ts new file mode 100644 index 00000000..d4ad32a5 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_jump.system.ts @@ -0,0 +1,102 @@ +import { EcsSystem } from '@forge-game-engine/forge/ecs'; +import { Vector2 } from '@forge-game-engine/forge/math'; +import { TriggerAction } from '@forge-game-engine/forge/input'; +import { + BodyCollisionPair, + PhysicsBodyEcsComponent, + PhysicsBodyId, + PhysicsWorld, + RigidBody, +} from '@forge-game-engine/forge/physics'; + +/** The upward impulse applied on jump. */ +const jumpImpulse = 500_000; + +/** + * How far below the spawn point (in world y) the ball has to fall - off the + * end of the terrain, or through it after some unexpected physics glitch - + * before it's treated as "lost" and reset back to the start, rather than + * falling forever off-camera. + */ +const respawnFallDistance = 2000; + +function involvesBoth( + pair: BodyCollisionPair, + bodyA: RigidBody, + bodyB: RigidBody, +): boolean { + return ( + (pair.bodyA === bodyA && pair.bodyB === bodyB) || + (pair.bodyA === bodyB && pair.bodyB === bodyA) + ); +} + +/** + * Creates an ECS system that tracks whether the ball is currently touching + * the terrain (via `physicsWorld.collisionStarts`/`collisionEnds`, which + * `createPhysicsSyncEcsSystem` populates every tick), applies an upward + * impulse when `jumpInput` triggers while grounded, and resets the ball back + * to `spawnPosition` if it ever falls `respawnFallDistance` below it (for + * example off the end of the terrain). All the work happens once per tick in + * `beforeQuery`, rather than per matched entity, the same way + * `createPhysicsSyncEcsSystem` steps `physicsWorld` once in its own + * `beforeQuery`. + * + * Must run after `createPhysicsSyncEcsSystem`, so this tick's collision + * events are available before this system checks them. + * @param physicsWorld - The physics world the ball and terrain are simulated in. + * @param playerBody - The ball's `RigidBody`. + * @param terrainBody - The terrain's `RigidBody`. + * @param jumpInput - The jump trigger action. + * @param spawnPosition - The world-space position to reset the ball to if it falls too far. + */ +export const createJumpEcsSystem = ( + physicsWorld: PhysicsWorld, + playerBody: RigidBody, + terrainBody: RigidBody, + jumpInput: TriggerAction, + spawnPosition: Vector2, +): EcsSystem<[PhysicsBodyEcsComponent]> => { + let isGrounded = false; + + return { + query: [PhysicsBodyId], + beforeQuery: () => { + if ( + physicsWorld.collisionStarts.some((pair) => + involvesBoth(pair, playerBody, terrainBody), + ) + ) { + isGrounded = true; + } + + if ( + physicsWorld.collisionEnds.some((pair) => + involvesBoth(pair, playerBody, terrainBody), + ) + ) { + isGrounded = false; + } + + if (jumpInput.isTriggered && isGrounded) { + playerBody.applyImpulse(new Vector2(0, jumpImpulse), Vector2.zero); + isGrounded = false; + } + + // Gravity pulls toward -y in this demo (see `_create-game.ts`), so + // "fallen too far" means the ball's y has dropped well below spawn. + if (playerBody.position.y < spawnPosition.y - respawnFallDistance) { + playerBody.position = spawnPosition.clone(); + playerBody.velocity = Vector2.zero; + playerBody.angularVelocity = 0; + isGrounded = false; + } + + return null; + }, + run: () => { + // All the work happens once per tick in `beforeQuery` above; nothing + // needed per matched entity. + }, + }; +}; diff --git a/documentation-site/src/pages/demos/rolling-ball/_roll.system.ts b/documentation-site/src/pages/demos/rolling-ball/_roll.system.ts new file mode 100644 index 00000000..2b5bc8ca --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_roll.system.ts @@ -0,0 +1,37 @@ +import { EcsSystem } from '@forge-game-engine/forge/ecs'; +import { Axis1dAction } from '@forge-game-engine/forge/input'; +import { + AngularVelocityMotorEcsComponent, + AngularVelocityMotorId, +} from '@forge-game-engine/forge/physics'; + +/** How fast the ball's motor spins it up to, in rad/s, at full roll input. */ +const maxRollSpeed = 22; + +/** + * Creates an ECS system that sets the ball's + * `AngularVelocityMotorEcsComponent.targetVelocity` from `rollInput` every + * tick. `createAngularVelocityMotorEcsSystem` then spends the motor's + * `maxTorque` budget spinning the ball towards that target, and friction + * against the terrain turns that spin into rolling motion. + * + * Must run before `createAngularVelocityMotorEcsSystem` (and, transitively, + * before `createPhysicsSyncEcsSystem`), so this tick's input is reflected in + * this tick's physics step - see the Applying Forces guide's registration + * order caution. + * @param rollInput - The roll axis action, positive for rightward roll. + */ +export const createRollEcsSystem = ( + rollInput: Axis1dAction, +): EcsSystem<[AngularVelocityMotorEcsComponent]> => ({ + query: [AngularVelocityMotorId], + run: (result) => { + const [motorComponent] = result.components; + + // A positive angular velocity here spins the ball counter-clockwise on + // screen, which rolls it to the left - the opposite of a positive + // `rollInput.value` (the D / right-arrow side of the binding), so the + // sign is flipped to make D/right-arrow roll right. + motorComponent.targetVelocity = -rollInput.value * maxRollSpeed; + }, +}); diff --git a/documentation-site/src/pages/demos/rolling-ball/index.tsx b/documentation-site/src/pages/demos/rolling-ball/index.tsx new file mode 100644 index 00000000..f0d16a33 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/index.tsx @@ -0,0 +1,74 @@ +import React, { JSX } from 'react'; +import { createRollingBallGame } from './_create-game'; +import gameCode from '!!raw-loader!./_create-game'; +import createTerrainCode from '!!raw-loader!./_create-terrain'; +import createPlayerCode from '!!raw-loader!./_create-player'; +import createInputsCode from '!!raw-loader!./_create-inputs'; +import rollSystemCode from '!!raw-loader!./_roll.system'; +import jumpSystemCode from '!!raw-loader!./_jump.system'; +import cameraFollowSystemCode from '!!raw-loader!./_camera-follow.system'; + +import { Demo } from '@site/src/components/Demo'; +import { InteractionInstruction } from '@site/src/components/_InteractionInstruction'; +import { KeyboardKey } from '@site/src/components/_KeyboardKey'; + +export default function RollingBall(): JSX.Element { + return ( + + } + text="Roll left" + /> + } + text="Roll right" + /> + } + text="Jump" + /> + + } + codeFiles={[ + { + name: 'game.ts', + content: gameCode, + }, + { + name: 'create-terrain.ts', + content: createTerrainCode, + }, + { + name: 'create-player.ts', + content: createPlayerCode, + }, + { + name: 'create-inputs.ts', + content: createInputsCode, + }, + { + name: 'roll.system.ts', + content: rollSystemCode, + }, + { + name: 'jump.system.ts', + content: jumpSystemCode, + }, + { + name: 'camera-follow.system.ts', + content: cameraFollowSystemCode, + }, + ]} + /> + ); +} From ab4cf6b4c59333ed6e0f5c05af7b20e805cfe878 Mon Sep 17 00:00:00 2001 From: Storm Muller Date: Wed, 22 Jul 2026 20:26:51 +0200 Subject: [PATCH 3/7] docs: added more textures --- .../img/kenney_pattern-pack/License.txt | 22 ++++++++++++++++++ .../PNG/Default/pattern_01.png | Bin 0 -> 1019 bytes .../PNG/Default/pattern_02.png | Bin 0 -> 650 bytes .../PNG/Default/pattern_03.png | Bin 0 -> 451 bytes .../PNG/Default/pattern_04.png | Bin 0 -> 757 bytes .../PNG/Default/pattern_05.png | Bin 0 -> 146 bytes .../PNG/Default/pattern_06.png | Bin 0 -> 1203 bytes .../PNG/Default/pattern_07.png | Bin 0 -> 909 bytes .../PNG/Default/pattern_08.png | Bin 0 -> 588 bytes .../PNG/Default/pattern_09.png | Bin 0 -> 1509 bytes .../PNG/Default/pattern_10.png | Bin 0 -> 1269 bytes .../PNG/Default/pattern_11.png | Bin 0 -> 166 bytes .../PNG/Default/pattern_12.png | Bin 0 -> 175 bytes .../PNG/Default/pattern_13.png | Bin 0 -> 148 bytes .../PNG/Default/pattern_14.png | Bin 0 -> 158 bytes .../PNG/Default/pattern_15.png | Bin 0 -> 147 bytes .../PNG/Default/pattern_16.png | Bin 0 -> 155 bytes .../PNG/Default/pattern_17.png | Bin 0 -> 200 bytes .../PNG/Default/pattern_18.png | Bin 0 -> 168 bytes .../PNG/Default/pattern_19.png | Bin 0 -> 960 bytes .../PNG/Default/pattern_20.png | Bin 0 -> 1011 bytes .../PNG/Default/pattern_21.png | Bin 0 -> 1411 bytes .../PNG/Default/pattern_22.png | Bin 0 -> 2591 bytes .../PNG/Default/pattern_23.png | Bin 0 -> 1649 bytes .../PNG/Default/pattern_24.png | Bin 0 -> 3476 bytes .../PNG/Default/pattern_25.png | Bin 0 -> 2012 bytes .../PNG/Default/pattern_26.png | Bin 0 -> 1713 bytes .../PNG/Default/pattern_27.png | Bin 0 -> 2449 bytes .../PNG/Default/pattern_28.png | Bin 0 -> 914 bytes .../PNG/Default/pattern_29.png | Bin 0 -> 935 bytes .../PNG/Default/pattern_30.png | Bin 0 -> 1182 bytes .../PNG/Default/pattern_31.png | Bin 0 -> 1328 bytes .../PNG/Default/pattern_32.png | Bin 0 -> 3041 bytes .../PNG/Default/pattern_33.png | Bin 0 -> 2532 bytes .../PNG/Default/pattern_34.png | Bin 0 -> 2521 bytes .../PNG/Default/pattern_35.png | Bin 0 -> 1828 bytes .../PNG/Default/pattern_36.png | Bin 0 -> 1007 bytes .../PNG/Default/pattern_37.png | Bin 0 -> 3533 bytes .../PNG/Default/pattern_38.png | Bin 0 -> 3490 bytes .../PNG/Default/pattern_39.png | Bin 0 -> 3101 bytes .../PNG/Default/pattern_40.png | Bin 0 -> 3482 bytes .../PNG/Default/pattern_41.png | Bin 0 -> 2454 bytes .../PNG/Default/pattern_42.png | Bin 0 -> 3999 bytes .../PNG/Default/pattern_43.png | Bin 0 -> 2972 bytes .../PNG/Default/pattern_44.png | Bin 0 -> 3347 bytes .../PNG/Default/pattern_45.png | Bin 0 -> 4266 bytes .../PNG/Default/pattern_46.png | Bin 0 -> 1988 bytes .../PNG/Default/pattern_47.png | Bin 0 -> 422 bytes .../PNG/Default/pattern_48.png | Bin 0 -> 1329 bytes .../PNG/Default/pattern_49.png | Bin 0 -> 6837 bytes .../PNG/Default/pattern_50.png | Bin 0 -> 1528 bytes .../PNG/Default/pattern_51.png | Bin 0 -> 2634 bytes .../PNG/Default/pattern_52.png | Bin 0 -> 3612 bytes .../PNG/Default/pattern_53.png | Bin 0 -> 3566 bytes .../PNG/Default/pattern_54.png | Bin 0 -> 3525 bytes .../PNG/Default/pattern_55.png | Bin 0 -> 213 bytes .../PNG/Default/pattern_56.png | Bin 0 -> 2271 bytes .../PNG/Default/pattern_57.png | Bin 0 -> 3011 bytes .../PNG/Default/pattern_58.png | Bin 0 -> 3817 bytes .../PNG/Default/pattern_59.png | Bin 0 -> 1100 bytes .../PNG/Default/pattern_60.png | Bin 0 -> 867 bytes .../PNG/Default/pattern_61.png | Bin 0 -> 2381 bytes .../PNG/Default/pattern_62.png | Bin 0 -> 1957 bytes .../PNG/Default/pattern_63.png | Bin 0 -> 912 bytes .../PNG/Default/pattern_64.png | Bin 0 -> 1781 bytes .../PNG/Default/pattern_65.png | Bin 0 -> 2275 bytes .../PNG/Default/pattern_66.png | Bin 0 -> 2802 bytes .../PNG/Default/pattern_67.png | Bin 0 -> 1969 bytes .../PNG/Default/pattern_68.png | Bin 0 -> 1982 bytes .../PNG/Default/pattern_69.png | Bin 0 -> 3272 bytes .../PNG/Default/pattern_70.png | Bin 0 -> 2721 bytes .../PNG/Default/pattern_71.png | Bin 0 -> 800 bytes .../PNG/Default/pattern_72.png | Bin 0 -> 2811 bytes .../PNG/Default/pattern_73.png | Bin 0 -> 1010 bytes .../PNG/Default/pattern_74.png | Bin 0 -> 427 bytes .../PNG/Default/pattern_75.png | Bin 0 -> 2825 bytes .../PNG/Default/pattern_76.png | Bin 0 -> 1475 bytes .../PNG/Default/pattern_77.png | Bin 0 -> 6463 bytes .../PNG/Default/pattern_78.png | Bin 0 -> 1161 bytes .../PNG/Default/pattern_79.png | Bin 0 -> 3752 bytes .../PNG/Default/pattern_80.png | Bin 0 -> 3057 bytes .../PNG/Default/pattern_81.png | Bin 0 -> 1712 bytes .../PNG/Default/pattern_82.png | Bin 0 -> 2250 bytes .../PNG/Default/pattern_83.png | Bin 0 -> 6143 bytes .../PNG/Default/pattern_84.png | Bin 0 -> 1984 bytes .../PNG/Double/pattern_01.png | Bin 0 -> 2144 bytes .../PNG/Double/pattern_02.png | Bin 0 -> 1998 bytes .../PNG/Double/pattern_03.png | Bin 0 -> 1028 bytes .../PNG/Double/pattern_04.png | Bin 0 -> 2192 bytes .../PNG/Double/pattern_05.png | Bin 0 -> 235 bytes .../PNG/Double/pattern_06.png | Bin 0 -> 3109 bytes .../PNG/Double/pattern_07.png | Bin 0 -> 3192 bytes .../PNG/Double/pattern_08.png | Bin 0 -> 1336 bytes .../PNG/Double/pattern_09.png | Bin 0 -> 2994 bytes .../PNG/Double/pattern_10.png | Bin 0 -> 5158 bytes .../PNG/Double/pattern_11.png | Bin 0 -> 257 bytes .../PNG/Double/pattern_12.png | Bin 0 -> 253 bytes .../PNG/Double/pattern_13.png | Bin 0 -> 231 bytes .../PNG/Double/pattern_14.png | Bin 0 -> 239 bytes .../PNG/Double/pattern_15.png | Bin 0 -> 237 bytes .../PNG/Double/pattern_16.png | Bin 0 -> 241 bytes .../PNG/Double/pattern_17.png | Bin 0 -> 401 bytes .../PNG/Double/pattern_18.png | Bin 0 -> 247 bytes .../PNG/Double/pattern_19.png | Bin 0 -> 3153 bytes .../PNG/Double/pattern_20.png | Bin 0 -> 2129 bytes .../PNG/Double/pattern_21.png | Bin 0 -> 3069 bytes .../PNG/Double/pattern_22.png | Bin 0 -> 5664 bytes .../PNG/Double/pattern_23.png | Bin 0 -> 3357 bytes .../PNG/Double/pattern_24.png | Bin 0 -> 7654 bytes .../PNG/Double/pattern_25.png | Bin 0 -> 4211 bytes .../PNG/Double/pattern_26.png | Bin 0 -> 3016 bytes .../PNG/Double/pattern_27.png | Bin 0 -> 5205 bytes .../PNG/Double/pattern_28.png | Bin 0 -> 1933 bytes .../PNG/Double/pattern_29.png | Bin 0 -> 1984 bytes .../PNG/Double/pattern_30.png | Bin 0 -> 2846 bytes .../PNG/Double/pattern_31.png | Bin 0 -> 2728 bytes .../PNG/Double/pattern_32.png | Bin 0 -> 6577 bytes .../PNG/Double/pattern_33.png | Bin 0 -> 5566 bytes .../PNG/Double/pattern_34.png | Bin 0 -> 5391 bytes .../PNG/Double/pattern_35.png | Bin 0 -> 4721 bytes .../PNG/Double/pattern_36.png | Bin 0 -> 3569 bytes .../PNG/Double/pattern_37.png | Bin 0 -> 7650 bytes .../PNG/Double/pattern_38.png | Bin 0 -> 7588 bytes .../PNG/Double/pattern_39.png | Bin 0 -> 6814 bytes .../PNG/Double/pattern_40.png | Bin 0 -> 7700 bytes .../PNG/Double/pattern_41.png | Bin 0 -> 5312 bytes .../PNG/Double/pattern_42.png | Bin 0 -> 8884 bytes .../PNG/Double/pattern_43.png | Bin 0 -> 6324 bytes .../PNG/Double/pattern_44.png | Bin 0 -> 7096 bytes .../PNG/Double/pattern_45.png | Bin 0 -> 9178 bytes .../PNG/Double/pattern_46.png | Bin 0 -> 4054 bytes .../PNG/Double/pattern_47.png | Bin 0 -> 849 bytes .../PNG/Double/pattern_48.png | Bin 0 -> 2779 bytes .../PNG/Double/pattern_49.png | Bin 0 -> 14126 bytes .../PNG/Double/pattern_50.png | Bin 0 -> 3535 bytes .../PNG/Double/pattern_51.png | Bin 0 -> 5487 bytes .../PNG/Double/pattern_52.png | Bin 0 -> 7664 bytes .../PNG/Double/pattern_53.png | Bin 0 -> 7651 bytes .../PNG/Double/pattern_54.png | Bin 0 -> 7558 bytes .../PNG/Double/pattern_55.png | Bin 0 -> 304 bytes .../PNG/Double/pattern_56.png | Bin 0 -> 4876 bytes .../PNG/Double/pattern_57.png | Bin 0 -> 6542 bytes .../PNG/Double/pattern_58.png | Bin 0 -> 9389 bytes .../PNG/Double/pattern_59.png | Bin 0 -> 3287 bytes .../PNG/Double/pattern_60.png | Bin 0 -> 2853 bytes .../PNG/Double/pattern_61.png | Bin 0 -> 5080 bytes .../PNG/Double/pattern_62.png | Bin 0 -> 4151 bytes .../PNG/Double/pattern_63.png | Bin 0 -> 2968 bytes .../PNG/Double/pattern_64.png | Bin 0 -> 3338 bytes .../PNG/Double/pattern_65.png | Bin 0 -> 5766 bytes .../PNG/Double/pattern_66.png | Bin 0 -> 6134 bytes .../PNG/Double/pattern_67.png | Bin 0 -> 4058 bytes .../PNG/Double/pattern_68.png | Bin 0 -> 4160 bytes .../PNG/Double/pattern_69.png | Bin 0 -> 7124 bytes .../PNG/Double/pattern_70.png | Bin 0 -> 6301 bytes .../PNG/Double/pattern_71.png | Bin 0 -> 3309 bytes .../PNG/Double/pattern_72.png | Bin 0 -> 7143 bytes .../PNG/Double/pattern_73.png | Bin 0 -> 2273 bytes .../PNG/Double/pattern_74.png | Bin 0 -> 1394 bytes .../PNG/Double/pattern_75.png | Bin 0 -> 6153 bytes .../PNG/Double/pattern_76.png | Bin 0 -> 3460 bytes .../PNG/Double/pattern_77.png | Bin 0 -> 15076 bytes .../PNG/Double/pattern_78.png | Bin 0 -> 2702 bytes .../PNG/Double/pattern_79.png | Bin 0 -> 8229 bytes .../PNG/Double/pattern_80.png | Bin 0 -> 6579 bytes .../PNG/Double/pattern_81.png | Bin 0 -> 3694 bytes .../PNG/Double/pattern_82.png | Bin 0 -> 5076 bytes .../PNG/Double/pattern_83.png | Bin 0 -> 13495 bytes .../PNG/Double/pattern_84.png | Bin 0 -> 4083 bytes .../img/kenney_pattern-pack/Preview.png | Bin 0 -> 54123 bytes .../Tilesheet/patternPack_tilesheet.png | Bin 0 -> 178816 bytes .../Tilesheet/patternPack_tilesheet@2.png | Bin 0 -> 421928 bytes .../kenney_pattern-pack/Vector/pattern_01.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_02.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_03.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_04.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_05.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_06.svg | 8 +++++++ .../kenney_pattern-pack/Vector/pattern_07.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_08.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_09.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_10.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_11.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_12.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_13.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_14.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_15.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_16.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_17.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_18.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_19.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_20.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_21.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_22.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_23.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_24.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_25.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_26.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_27.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_28.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_29.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_30.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_31.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_32.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_33.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_34.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_35.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_36.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_37.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_38.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_39.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_40.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_41.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_42.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_43.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_44.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_45.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_46.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_47.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_48.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_49.svg | 10 ++++++++ .../kenney_pattern-pack/Vector/pattern_50.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_51.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_52.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_53.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_54.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_55.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_56.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_57.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_58.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_59.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_60.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_61.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_62.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_63.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_64.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_65.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_66.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_67.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_68.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_69.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_70.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_71.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_72.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_73.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_74.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_75.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_76.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_77.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_78.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_79.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_80.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_81.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_82.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_83.svg | 7 ++++++ .../kenney_pattern-pack/Vector/pattern_84.svg | 7 ++++++ 256 files changed, 614 insertions(+) create mode 100644 documentation-site/static/img/kenney_pattern-pack/License.txt create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_01.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_02.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_03.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_04.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_05.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_06.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_07.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_08.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_09.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_10.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_11.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_12.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_13.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_14.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_15.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_16.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_17.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_18.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_19.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_20.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_21.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_22.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_23.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_24.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_25.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_26.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_27.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_28.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_29.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_30.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_31.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_32.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_33.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_34.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_35.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_36.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_37.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_38.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_39.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_40.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_41.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_42.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_43.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_44.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_45.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_46.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_47.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_48.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_49.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_50.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_51.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_52.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_53.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_54.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_55.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_56.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_57.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_58.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_59.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_60.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_61.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_62.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_63.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_64.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_65.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_66.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_67.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_68.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_69.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_70.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_71.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_72.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_73.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_74.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_75.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_76.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_77.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_78.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_79.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_80.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_81.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_82.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_83.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_84.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_01.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_02.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_03.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_04.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_05.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_06.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_07.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_08.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_09.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_10.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_11.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_12.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_13.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_14.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_15.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_16.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_17.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_18.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_19.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_20.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_21.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_22.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_23.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_24.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_25.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_26.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_27.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_28.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_29.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_30.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_31.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_32.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_33.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_34.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_35.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_36.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_37.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_38.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_39.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_40.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_41.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_42.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_43.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_44.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_45.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_46.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_47.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_48.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_49.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_50.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_51.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_52.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_53.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_54.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_55.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_56.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_57.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_58.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_59.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_60.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_61.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_62.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_63.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_64.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_65.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_66.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_67.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_68.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_69.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_70.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_71.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_72.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_73.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_74.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_75.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_76.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_77.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_78.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_79.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_80.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_81.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_82.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_83.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_84.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/Preview.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/Tilesheet/patternPack_tilesheet.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/Tilesheet/patternPack_tilesheet@2.png create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_01.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_02.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_03.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_04.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_05.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_06.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_07.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_08.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_09.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_10.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_11.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_12.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_13.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_14.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_15.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_16.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_17.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_18.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_19.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_20.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_21.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_22.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_23.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_24.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_25.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_26.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_27.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_28.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_29.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_30.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_31.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_32.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_33.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_34.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_35.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_36.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_37.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_38.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_39.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_40.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_41.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_42.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_43.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_44.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_45.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_46.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_47.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_48.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_49.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_50.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_51.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_52.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_53.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_54.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_55.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_56.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_57.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_58.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_59.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_60.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_61.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_62.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_63.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_64.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_65.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_66.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_67.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_68.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_69.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_70.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_71.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_72.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_73.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_74.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_75.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_76.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_77.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_78.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_79.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_80.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_81.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_82.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_83.svg create mode 100644 documentation-site/static/img/kenney_pattern-pack/Vector/pattern_84.svg diff --git a/documentation-site/static/img/kenney_pattern-pack/License.txt b/documentation-site/static/img/kenney_pattern-pack/License.txt new file mode 100644 index 00000000..683c4f99 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/License.txt @@ -0,0 +1,22 @@ + + + Pattern Pack (1.1) + + Created/distributed by Kenney (www.kenney.nl) + Creation date: 25-07-2024 + + ------------------------------ + + License: (Creative Commons Zero, CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + This content is free to use in personal, educational and commercial projects. + Support us by crediting Kenney or www.kenney.nl (this is not mandatory) + + ------------------------------ + + Donate: http://support.kenney.nl + Patreon: http://patreon.com/kenney/ + + Follow on Twitter for updates: + http://twitter.com/KenneyNL \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_01.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_01.png new file mode 100644 index 0000000000000000000000000000000000000000..928b575aca55d9cf45e0fbc1cc56072893d9d3b7 GIT binary patch literal 1019 zcmXxjeQXnT9LMqB_4ng?H}BeO$4pzwcI(=8ihq8eDWfgdJfDikL=7 z)`V&9u0X~zr6Wovne1YsS>z#wXacyzJ4M{W93_T14e0q0B#Kz$(_%Jff64gk{r&v? z%J)zzxsfgNl>q?QL|obe08u&#V1uPp`-Q(sK|91vA^>L&-!s2$S!pw=j?P$jclYS% zXlX4jE(U&O&jSFDB_y#k^YuH0#E@U)q^mv6ebTeSRBR@Pq?RX6ytnIe=-%GLPOEC` zzE2lk`D|g=q!sqge@=coX>D$vYbQT?a>%+ifWG2G6Xbnj{RDkPOy-!Ew4Pk~MX2zV z0R0a5emfAO0`)P`#yL1Gt#A_T=Y0aY3IhEkCq@iPBQ|hMM3WWQ9LyP23i=NOi*{ap zNT9D1?Uo~D>s8ztIBcvi&^MsANJi8KgB~H07L&H^P|9baW>j+MZ-vj>k-A2vrih1S zhsUC&Dt z+*9zFTvr4-$6jrZUhdD@%++<=Qu@dW?TX%3^mbC~vSsGFI@j&2`)-=YTrXsO z=2A{n&|6Q%i_gcj$5*+>OGv$|-1F}T%u@P32$&yM&}YT=9J>WW1+yc(_eV6zhcQ$u zpuQ&r&IvHoez>3a^XNNJjiDM9>TN>eSRO+mILLcsWP%zDwI0y(MBH);80s8+-B_uk zJ0OIiS`>Pm=&)EBLq*|;;kD2-2xF+VJawB8WhaH9hT%cOA3-;jY7Et+Qzwa-%+_Hj z4}8t=q|qg%217l_(=$XO?}%fl2jEfJn@5+G5Qb{i>6^r+h;t`~>VU^(UlDzwgfUc< zqb{jJ#DOpr0}sfaI`oN9jiJ`(sDD+d;0$7@z3^3i#ZGiXsKHPT9DQ7k7a0jdU59U2 zm1F21A%vlta`b7nBhB_;s1f*<<-dh~62eh(nYKN}FJ+FoAB~C!tcEcT>%E)`%-TbD vvpZEYOEzgsDbb8SHDuiwK)*c}%q-fk?Ve^Y{`}~v(!YX4EGeCClePZ=zkpid literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_02.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_02.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef561baf880dd19a9e1d33b03b28bee588eefcb GIT binary patch literal 650 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58JL)Xl%kBoS0Kfb?&#~tz_78O`%fY(kk1p~ z6XF^lA3uNod?4@t|NlyFd3Q1}Fll$v4G!`gU@>M8?qTpVV6r&K@qk6S zLHG-U;{|3GM}7eoTL*zH49*vrcpSM6Sac5vTw!nxU>0%Y4PY^K5S+r`9>65y$XURm xdO#59W&~RHxA7bME%}W41(Y!y{?+_vx9qFry`d;^0hoLkJYD@<);T3K0RTPl;NbuO literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_03.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_03.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1cf0ea0bc363414af10f33f1959cc7f9aa0ffc GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58JL)Xl%kBoS0Kfb?&#~tz_78O`%fY(kk1p~ z6XF^lA3uNod?4@t|NlyFd3OReC3(6yhE&{odt?h{u!hlT0~^Od83&eP2Ej9o zE(YuZ2PG0%k{bkj7~KrmBpkUxrfq3p(NzF4KX7?`;PLpt;ZXn-W~QDc{2q}E{9LB%D-JH6)Su?Y;bD-XcT497z!hX7$8r^ddsvDS0`^5-(kJ zzLCUmBkV#KEul=Toh6IRE|ye8T1QLKAe)z|yPjXCzan_x^E}VH2cFh~{9JX^wkQBl zn@z?-03=!jGO38ZvPZ{7$WCV+$pU!T9vwO*7xSiqyrLY7#lrJEMNxLUUF--UW36EGDX>bOs}x`vcRokQO~4~63fINg9g z9+qxNv_c-Z?Mj#LC!(1Qm}^(KLeJrvehYY;B{snXA1S3PAix7p3=V#WCmxk6=wyM9 z)6UdLvTJkkj7J_tGysvRU6EyPHd}%?(N>LWgmWMPu^bMP2o&^rwE=Y+#f&L^_#&rl_wz;4tbbVHe`*yHg+q& zQ#;!&ykBSl|FfTafmqFHn)B7ciwNl8q2t z0m+D9AVf-30*RVlUs4H>x<(1r_~Aqm2pGB_Bq3tW5)x9O(#8);%$$>) zOeSZZ{dV&+xq+epfZV3WhE{+wM}n?p%D~!F9hstUT)c8I@MUlC-a1d_USU7mzO1yg zw70jnrKQC*&7q;8>gwvQuCB4MvGVfrzP`T9tM2aZiHV8rZ{42AbeP-Ju(&<(%a2zt zzH(iL_FVH{ST{P{w8>ZeW^2;CTWdY-$Z*uLPn>SNbYjQP9hX%%Gva0d%#szsefBMPaAm$8u!TOy(F!)=<*J2;Ro42kiva|!8Fx9Uq=ZO|CO zOj^P#IFv4N^*V1QHB&3MaU>meJ#|J8-6%7Tz87_x*Yg);MqPWOq%Nt7Y%E2g3bALz%k&R9yctDqF&iTuMcXOP&4{@L?CtTs zj|XSP*V?up+B#;-*{+^6jUJ;0Ybe62;Bmu>dh|GMQW*g!% zm_CjR)WEMI>_-378fpI>7=IP7D!E(lnmIY(#miVe)Xu- zlD-t`MFV;fRtuyjZrb##cmby|Rn3v!cy5Z;iaj`jN7Ov&kLTIqL-83t$22ud2IDy? zQPS#9&o$GBwtd{zF;V*Xi-F;r-_pX&c8;7uTfP<%gV>9ia#9uT{G=*Y(9t$&Be;tB zs+`ULG2O1?*i6;a`DIn`{BQ*g(EO|``Bv7IOSC-eO2o>#a*)>WwEfhdQRdyK({~1A zO*u6cvs6NcR9r@~^vI~1#E~UgI;Ev1v1M77Mp>yQk+NzMUSvg8X(%V1x6g=s8?=P> zeOA3ooXDzI4Wxs>pa@|AI#)oX{fs(MgM-N71<)N6bX2o(0}-AB!^vfeYH^%J3D1Df z2|^qdhtQ8QehdM}&mt<4cpFu65pq%{w5?hS!>E&9I)XOGHKuXQdn}?a$aGvYPKl*2 zc#jK*%<_s(0gJGYB8r7;9%(u~iZ~kFa%5xIa*oc&qWv5b(FkFY?;JDHh{+=6C#C&@ z?x^Hjcot6H^HAle@256l(f^+J3io|#zF$7){GSJ3`#w*R-*dn4lz2Y>PxjvH%=+>_ z9Ugx@@OggCf{#@XK3dCX?2)O6zAmxwbJ2s;*yNUTryHM__6l0*v&&sKb$c;qm4q^f zUucgY%W|z_98KWx&FoTadSr4`z_D;vQpW;F_^!)P_V5eeBB-)l`xeI}aQF&#sWm<0 za20keZdug10201SHIya#f~E-axNDx`Xak4u#4e?##~!YN2Md=h>UaPN-?cZCBKpE| z1a;iCw{c7Zhp%CmYSVLxqe2IZdy+aIK*ARsf_@)`6bt4&QgwP@an!rz05}AbMg0YZ zj%&?RQt1n|arKZ{U*Xb$M$B2T!~Fz0v1Etmy@E-P)G7~qcFlgmtFDzopr03Pp&0RR91 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_08.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_08.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7bd52fa69b8f2f197daba03caee87dfee7a366 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58JL)Xl%kBoS0Kfb?&#~tz_78O`%fY(kk1p~ z6XF^lA3uNod?4@t|NlyFd3ORez4ml*45_&F_Qu9SCqsdjhilu_UbL&lFsWK77_1QS zTEN4kWV6ZL&U5?C+y^w>5t#Pp46XGEmu+Vk^AX9c0cpF zg?9=c>^60}X3e)JN;zfk;{%JqoH-zlp=XPT)MOWrg>c4356+b)Vw#Fmk144xxfHRa zB}8iWmI*=0lf{CvaxOV}_4-D6teoi4ctxsH#A7Xj;mNFOW|X<$h?^Sklp80OGzv+( z{Bm8{D{lWIM4G?u!%{Q9KM$6fJv#mMfIZN4JMR2!EjrKqTz!AQyUGVYo{685WnZ^f zc+UiFdjv~S}diL0-M0NFhKukM%m;gBA2@f ziUDNA0oGv&iMX&49+U78=tbF_U@OUZi2`m@(ZI^YAQMV=?*5rsvTXjbzs~u--}n8_ z$vNLSXH-g=y{(Ha1VQ%l1CfUy2nJIaLTO-VOTHQp2J}dHOgIE}RNHN)*#In3Db!Kt zYHIkNg3?kVC+FjL55?`<7hy0MxDJjc(;c(f?C0;V*Egl5r(3O78fx>Nun#n_`A{Ai zt}eJcaxbjHHPLb8K^ND2!%mAGnIrtm>9UG#6<^=1G1zH;8fy}&gTr`-A(5LNfm>-oGp>2;E3p{ziWK#cZ|Ks&QHg zpUdVfasn=(dfA<$T-+_ZS>A5f&Txq#Qt&9iEYVzv{k53;0vl+`p-=VW0tw1PD~049 zy%N-2X-_GzORoUnB65oY5z_NOR=~Kz1)j$^AN162_ohG{?m_|P6>7yUoC|>1&YJ?O zxGfnQz^BRd!9n;h53@_@eXtfDdQ&F@uIbXn1GzXYtShgotw#@33gJOb*zk#rmm03rjTF>E<i6^qfrm zg8&Z(rz3+3(SE2J&}*<0{0nD^=8N3)l%Nuz(K56QkLm>;#s=0s1`l9}lYR-LN;nsY z3K-rFpb#N#0F)7qr+jaynZUtSQOyrZYd|3j4g`gIn;$_d%uU4yg(*L#6Kr*=@~FiM zb!}QS|KwXL3Goi=H52h_cEAa@xM!KFSDWSsFNL&*eNwz-o+x}iz}D@a+%$Cs4GlJ) zGCHT5`jN@Usd-!9X9T}S^j=*E30`G{_MruX7RG8(-m+0}!;(k*9)CTdC%{q(R?U!B(r;%^MP)4)Xdt9lMo8RDAK)1NnH0q2a@*Yr@%JEoJgnR9Lt`$ zSD`N&eUyM&lJ>sMU!3pk<&b3}-7H%(-PvnTegRZ$%}i%6le{d_C9ySkJD&*FkB@G4 qi*%tx%<62nCWzTR7V(ci+KM|%wBsTD+x#5xPebx3Wn|kvjQ9hl136#- literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_10.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_10.png new file mode 100644 index 0000000000000000000000000000000000000000..75ea346f56095206d27c643c527e816008aaf194 GIT binary patch literal 1269 zcmd6n{ZCU@7{~7mrEmwdI(ZpGdS#oKRlR5kC_=eF71$K;WlCVQASvLcgE^KKE#7+_ zjVx>_4hAj?t%gM%P{0igm6giqfEFAvWFXt5LV+ymXel6tj_#0{Wq-ncd0xIbpXWT^ z^TYW(EhW(#3&bD@@=i_?9)TbjlrZFmf~0xB{XLM}^5YK0K~S6W6=x0$^Z{uHkL{O8 zB)z@86h#3+EEcO&DwoRz>JZ~ue{C!*0^R$W1o>6i+S4%SNR>W4y5lQv@dwI>g2}^u_3;Brv8G!k60Ox|Q3EE^ zpUO+FsFISsoyU_x2}0w$lVhGXw8v|)Wtpw1=sXlk)cZcn(irzV zE%rwPrbL_9@OtjcQ{09f=O(8J#2_GBLIrCft)iSfQpf9DZY0}$hF33FbYo4&uLM-8 z@`Km5rkzF?N@kuEA|~G@PXAm2oATdQ1Fr~*ty0E--D6v(Z`V;C)ecx2-EQYFFR=4$ z%VOI%6juER)(Rr*smv(0k8OG0`8DNP-3e=B?#>g;EVk-yS?THTW*G;eX5tHHrn#+0 z19yI!JLQi^T+o?6#+DWOQbi1UcGcKRu#Au4aouj)yUcIcK6lIGI)&J?x)l9En*Zbk zGU{ukfA0>re#qR(r5>%OZ*X}%^Hp5Zcy4gr%HZ>eqw%l|ylW}OVJZ7kn z^&KZr!|Rh;lkm-T1ca=~p-G00<ZDd#}ELvaIXR&0gnJc2EOOt_zoTg>iM*m{B$#s(+1uaayVWf#iI##!!W&LxFVdQ&MBb@0QQSDLI3~& literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_12.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_12.png new file mode 100644 index 0000000000000000000000000000000000000000..f21ebfc809d1dd32371d40281f10eba630bea3e9 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K585o&?RN5XZRUpNZ?&#~tz_78O`%fY(kk1z2 z6XFV_|NsBL^yd7#KvsySi(^Q}y|*_M`4|*p)wK|`o;Gv~oII$w%H4;-s- zI3ZME)AQTcL-?0-htRFWNPAsH_XZo!3F?eD#94kj{dc%vFYtw*`c?Bi6+|9>De^w8xxAZ6+4;uw-~@9il?pl%Lk1E~x9Re2XM{z|&Mn(M-EDMtYoY^cb& afjL~_^%}XQH#Y$dVeoYIb6Mw<&;$V4z9t9& literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_14.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_14.png new file mode 100644 index 0000000000000000000000000000000000000000..640d7fa2693b3f8d501377542651698e2abf1c3e GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K585o&?RN5XZRUpNZ?&#~tz_78O`%fY(kk1z2 z6XN>+|9>De^w8xxAm!}o;uw-~@9m9^ybJ~$%#LO!{zY$Mys~gf*OcGqF8My_V7Drr pS`0E03O2BRvWKx57!I)icV<4_#M=6zuRRVV?CI*~vd$@?2>?~7EC2ui literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_15.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_15.png new file mode 100644 index 0000000000000000000000000000000000000000..3e3917f3ac329b171087cba2edc434db3a5b2f3e GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K585o&?RN5XZRUpNZ?&#~tz_78O`%fY(kk1z2 z6XFV_|NsBL^yd7#K$eB4i(^Q}y|)(>g%}t(4sZDT|MG)$%a~P*XN3fVbilv^jvkQl bQ1C!frz`WrBY|k+(;yK~S3j3^P6bP0 Hl+XkKTKqCm literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_18.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_18.png new file mode 100644 index 0000000000000000000000000000000000000000..08d01d5dc2bba8817454620ef5a37a20df789c14 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K585o&?RN5XZRUpNZ?&#~tz_78O`%fY(kk1z2 z6XFV_|NsBL^yd7#K$fqki(^Q}y|*_O@-is!xH_68{MWs?po2|{WnN45x|1tU-M_`` zYE~ulRvM_7p@HdC9)FZMh{?d3QV*toH~$4$%wTszUhR3Ey1PNCbs&iE>FVdQ&MBb@ E066h3ssI20 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_19.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_19.png new file mode 100644 index 0000000000000000000000000000000000000000..d17ed64a50f4836fd864c4f68b1781d9f7ddd9cd GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(kZ&B| z6XKempWol#FE1}2A0J;|Uw{7m`TO_p^YinsU%y^oU*F%~fByXW@87@Qzkk2Iy**IV z|NsB)am}2g|#A9HJLxzx?ww@^di5;j{lZ_x~?@ww&SASNTcPf3W7H?VI^o zQc6oNLHje%aTwrF{QGeI3!yOw!k(!!uA9GVUl@qFoMG4O;?^I(^MSfIwoa4xk-2XD zf6n5KA5I?o{Oma6uiu}qdiy-M{Ab~s(mIw0cjns7*W17M%s+{~bN^qRe?3Qh0@R)- zEc^FtmS}rtFm12(-;?)b#m~*JFZh>Vwqa&%{a4Fs@n2n=4*mRg`Z**2|E4XIeli@0 z{igp^d=c^2F zmrQ_NRbDA-T?iX@Zu0OtHx{ZF?De8Q*F0eDeLvPxH?|$Jnss=flNo zHcXKK>z*LGZ&&h(S={qx$?p~RnZZ48&UHxx70;DGvzlr?k4i z*ZIOFzW0#p`VDc3dk!~a@z8&)qd7;OClkzaSm38eP5=rwH}RW^umPfh{( z|GsNMB+gCYzNQ_+ydc~nQE!Ko!}d{O$~Gt`E;X{d`yX z*=v6H$L!3j=ak#n{bx40ck<_!pZ^{!elBKgI~?(^?4RV{LqChlD=+MsAkwgxIi_r1 Z9rK;#Xl* z&MA4B<%V6$fqG#;VReM~VYMO_DjRmQ~Ya}1~cZUJ^D7A?ZCgNS^4|tia9jA zy`ILoL5P9j0-FTG4Ue^a1|SQ$7`9q9+-2Ian%M`)YhZF%$(PV4-U5^$HR~UJKyk#Nm8-To$R}9Jw z3^IBgpuj$v#*m=A*6IKYkgdTG@`~Zx4|bPNEFecTusE#e6Ih}KiXMgu(hh5x1ePcP zEjiiu{~S*Oo6Nrkk4p@RUQIw*hdfrrN(Nx8Nii(7YG8Z-G-DGB$gUos#NA7}cencV7RGOhaW|8E z<}v)PeqYnAxrN~oD5XF^!u!Bu_vie()Bd;kbKYdO56Y|m^}Tt^ep7_;&r)5#FDX)A zb|%{8u70|PH%eq{{EmXBNuK{U8HqA2;QFERW;Khw=#&E2DG?0kxwjlm3cF^#`P1S~ zE(4$E{6NzM_!oo$LzF>*@xm%_JOLB!%d4QE1_`ZXmH;vmzRLDm9pC`DWdTFLD&`0V zh6w-FkVpoGs{H|=#7Q}!F75@N7{DSXjfaLF z#3Ycy6#fg#t35P$91gud4$%sXu?U8(91fG;-M(l5iVO&t@IZ0l2?jTo2kU_5LWCT; z+FO*Edw}r+aw0>63}emm`3pbYt=HRk`{LKi?+ZRN|0s;KUl*WT>tExs;;Xn>+3vml z`(^j)KhN1&o*K+_L;BX&?ez~V8U9>&^|a~DrFRxDt?!zi_BHu*A!8>e$jlEW^$aPS Uwu$CivMYi3p00i_>zopr06mm!cK`qY literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_21.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_21.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3ea218fc55085cf4d185d21e753e2c4fb7ff2a GIT binary patch literal 1411 zcmZvbYfzF|7{|{miYDILDFrfbd0kR0G$t`cMbj-MTgtK$XfiZybwjZ-;N9A6X)0^X zSPK`@w#-HCVyl@KW@pOQM$yo=yr7kZZk7sZUJ&*r+x@iX%Q?^QoagzU^UVKZm0Bqx8X2&(w;2@DmY-wo;4-Xd#g-DXoXr!*v>_@82$I&7fhkM@- z^zkYK9bh(N%hCw7F}*IHaQ(^&m}@m9eZuqiIacow>s>Su7P=Nm2B17GvfDj$=*nR* zg&M+p=rzj>i8pO!?;i$uDx;>O9yceMr=9Z1IQ9Cg0^XT|OQSX{k9_xI$&S#O=wlrM zesRjip5~RBk@<$8g;;~USfuuQCltTiPJE@?8qg-aSJ{Py%*P9{m8K7|BQnDi0Me)Lg6(fj(pW$St4#^=r z2ln=Y+i)^1I#yTei!d2(l#cO5T?_YTS)G4NNkkBp^i=8?XdcT=Ryeq|=anG{-kZrv zraG}uDzgGmMWSL5wgZJQg`HbhIz)kKgCa8)`uxd|b5RwezLES>{#1z(s}&C7_{OHO zg*^t3psl}?*9QEiFV8*U5%6Ztns`_L;`H}D?A=GOf2DpPtS=e4-&o4Le*7+;cfsB6!eqrTFnU$&>%Zp@IuYcw|GYlM74s1Ov=4fk))pKeWz zH>TvjWm<&f&qAr%4C4VXEOE<2KW>5y{rHk4@RM@ihn%Y{aSBiMK?Tb$8XYefOMC+J&Cu6Lz`A)ZC*N47IR3^|H$BzYN4+O|2@4qwGt{uIFdFZ5BPo$n!)i z4uGBAcK5KE#0+ux2aZ(q@xGM16z|u!0w>;P=xT^qD%PImo5{5t!lRyXZuskBNvC0n z@xlLEYmM5gHB4An)IE9IqHCD+>(CDa!uE5Yn0e!R%mbyeK5pc@vF5VA7wHQHkK1OQ z%yL{yG0wf#U{;TToYe;jnj4=ld5Z-WuODV7JA|%igwmSrkjHtZOtCB{E(~a(nH&&8 z|6(TUPfa9+dWBoh@|McQZ%fsrBd1McW;e_%;yPJEJ^G*&^dbY`dfDfq2RLwu7u=6? z`-Gn1X6*9@4Jq0%jD@snY@3eL6fmVaNcTc_uH4y`m1?Z)PqLD&_#-#{j$|GG2R}JP A!vFvP literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_22.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_22.png new file mode 100644 index 0000000000000000000000000000000000000000..919a70c6abea2d8864296df3161b465a5a52f696 GIT binary patch literal 2591 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_26.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_26.png new file mode 100644 index 0000000000000000000000000000000000000000..054b95b4123b90ce2fdd9bea4a6e9f4291f62c1f GIT binary patch literal 1713 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_29.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_29.png new file mode 100644 index 0000000000000000000000000000000000000000..46e9471c0163d6581c7003107ea6f9d8660e4659 GIT binary patch literal 935 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(kZ&B| z6XI%bZ@+*4{`mO#{{H^=@89R==g*%%pP!#!Utj+Rj!LAMP=SObo3{~`7B|Nd=Dd6sTrl=0rSY{NJHH;Yp( zCqH@G@^!X4P$MOvrn13KXZ!s~r}}RR>0j?N?r6JhakSp3cYA^D;}_4r{pU3ZPyVBj zY${*<>+4f$jY9C;pITzC>)Bqs z{!#F%$9!YLf8hgLyLVqo-PPgx`*4-)<99uhZW?#wZ>gy*$qZ)KxGSHOv};ND#`j*| z)tUeNF}YRCzrM6*>2G6(Bbhg^@AonEp7hIknqZr(vX1kaX)XT(GFs*w_kYEI({0AB zv+o~motyOS%^QBp^cQBfZA-h^Q~m2t{E@Kx-E`}Eu#G|g_x3-=CGY>H&0qcQ!sYj` z_>c1#-dkn<-=yW$yZtupiaGE3Kh9>SB=AVq+wfmBVMovU>iXlS3n1a0p|}0%xka-o zcgD^#?yJlDf1ly<@!PYeEjDMJd+$G6!i`NQwyfvh-KY91o^e*;XQgijas}etU-vWk zymjubd4A{jqpq*^%skd*)3;fQt4(`d&y=yMR$F_ukNC!n`i`^bdgt!9n_}D(u*3d} z=kD&y-;Ygu$Df_FYDswE3Q&+QdDG{2UwZDn`HTs3%k%i6`BWB+9S z!@F+}z0YUSyCL5vnY6QXy8UkbyLam=`J8XulfRZPM{w*&C3A Mr>mdKI;Vst00_ES+5i9m literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_30.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_30.png new file mode 100644 index 0000000000000000000000000000000000000000..f8620e2a25c1ce2e88b2db53a67f434bc8627cf8 GIT binary patch literal 1182 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_33.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_33.png new file mode 100644 index 0000000000000000000000000000000000000000..8eee3206881776a17672e0fb4b1532db71e85b53 GIT binary patch literal 2532 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_35.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_35.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a2e40e02bb72446e09b2655c2004fc11b990c9 GIT binary patch literal 1828 zcmeH|>r)eF6vhMll58M>-9RyhB!+~WBc%}>j3K32NVqAOc4&uI+GDBDXhJN(ZdCv2D&X;%2 zJEzH3lq(HYgbD-#X?~vNJ%J#ImqCJHgfFp5^8{bOdZLgJ2!3*fO|1;!dx>pHv9+Y6 z#O-$T-SqUd_Alu#0)g;izJ(}u-mbgd^T|a$W*u1O>ae}DDJ#AcfKcvFCf#+2X=)DzP z*wFKdaQs_0g$+IAh5D6v$%{>H3LSbpQI(6{+osOL+4W>2IzlP&YT>0uQtj8l>r51W z70K*v;LIL#pKnTuVpr19LTYp{e!&sSaT4;1BKAHX3ZeD%#e{^BZCPBVNM69^q0Za95 zoF$2OA`fZ0C2>1xrCb89nA6eUr~%#>7ZQu~v%!8!bto=LR9U-+Gq!#RuP`@c4pGJ8 z^4angaLoLN%pp9ok289-4m1Us*IP#`@}%q*aszsdx{EnPm+EPSKL(C5H?d+Qt#>bH z)axALQK~qy7|AZQMfeWV3i-#ditZ90qrOk*6n*r(nN~P=ybrFKC%+KYCrW&7Ct1yy zr&SS47RvqSA5a%EB&G%@w~%F4?-G5UD!F^a$@REIXGY{3i;iwH1WI=w8u_$fi1}_& z{lVYoHXx^GK&HZfyTx-({g`D=okQ=8%@09b&$Ojomz9#cGho{eIxQt@xaw>VvUFIx z;KXHLxM^3*jc)a+jPe=q=p5B=Y&nih{w*;bKjk&jZD|2d|EjT?{(k1#D{$tt$oMol zJ;L9!D6ruAs;4zYBg{op%QeK_Z9y8x0X+xL<_)j5D%?3ZJ#y?PlhrgnrI^N zuh3L+C}^Y2t@$=hI|zYGU@#k(gsqW9p$P<~>EJ9LaS<2xm6pn)^DW|wOWKm?T#VPg%L4^yJyETwUgxdF5iYy}xG*Q4vxd2tg|5o&ffhd)9q z#OYu^ncceB6Wa}9paV+TcrWIYm7*zZy~a&i1L6Fjsv13tKG8)7}x{=IjMArc;NXxS5bxGQGTnlFtIJ*nOucD(5 zTw`4q{vDn?vEHPgx`gDroa9uK=;Wp+%(yCI{P6jjN$_roc{}WUi_Ro&&a$~RqhXy( vv5AnIiH(!Nqmh>FK@;NFvDXjszii0#n_q5~_N&_N@P|#1Z!NN%$Rgo?c4Y8a literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_36.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_36.png new file mode 100644 index 0000000000000000000000000000000000000000..fd67bdbb75ac29e49666626912161778fac444f3 GIT binary patch literal 1007 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_40.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_40.png new file mode 100644 index 0000000000000000000000000000000000000000..75bd20dad64149a383c10fe396188eabd60072a0 GIT binary patch literal 3482 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 IM6N<$f(DLcYybcN literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_41.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_41.png new file mode 100644 index 0000000000000000000000000000000000000000..25cfa7968254de6909ba5c1b56ef325dc4dbd7d5 GIT binary patch literal 2454 zcmZXWX*iXMABKPLSsfe>$vQY82_Z|CEU)ZK$d;uzh=?HykvcDtCC1UHG?qh_Qe>;4 zEWMUWI#W_jA)HaDsYXJ{=$JnKuj~Kmex48a*XMe2J=`4V!t%lZKzDMq^#nkELvE=luhugVwvP0a^-0)3U3T&}LJ zuClVSxVZTI{QR9ecdV?e*lhL>X?=bDTc@Z1fF|Z-Ywdk(>|;4Cqgs=JN=Su2|Cjrv zl()oN`-kOs=!v5ub5P`&{hpl0J=3dfn!?2^Mw@#04g*=pfE4CPW6cs7ZV1j+NHaq) zoW>kM{5;`&Dfs=Ga2!^p;eb4LhYVawWh}ySB+AAi%sM2qli1u2%n|TSrb0-T9#MwE z5`%%AU{bQK84IW~qIVQ1Iv@~2d!$M3IUJ-!91-PmCGxUCMGhNgoT>KjC2V^siW?40 z?+z75NScruPGG(Wt0L$b&eS|P%D?Tb0#6Hz4$8x81;`V^e$Krccp!y{4ukAi!pQRU zpUKmXkW=R&wMEf;R`@2u+3hA6bCBYZLW@92#L~uzsrda5gVNv@eqMRtXQCmmN*3vaZi=tUrdp7u9ki6D8VSCji& z4Z0b^t@HJqb!uEiypdtT5Z!t|_-nNgFr{8Y#%IFd0yz&^*?J@v+#zk3htagYPqbm4KVlI+xV-lUBgfB z*QWey4554dWAF8kp?5{^;#pU9{Z8w{9S~l9a<{EtVk^jH=F+&=j^(g zaxla)>Py7Z%p4(gj%gWcoiCT-7+=iDejwbo+e+*EieMiz&m}f*vw=u?ioW4~dS7wr ziARDhzwum~b`vfuL1wPFtt}riB^Ro7>RBN5%Q2BA? z;)#6?TE8m%bw1kB>7%cK0)kyN%d#?<>~EU8b>NG zk;6CZ^jgbvWbqK)YM)p~6}+o50vycb=7(}l8)P(sn6K(Ad5kthkD*kWN~5>4&oZga zjht&OqjEV*fTk*(y2Ywc!bw*O$J;CFs2tH8jxI;n!;B#UNj8lVG2=#rPog`RQS8^b zz)JQ?V4YGyID-&Gxg@ZK=DGC|LF^oYO?e+C}EB68}!bPgFmtO9vN)La6jH=9UI$yq33OZ&eZ76+{@*q}I` z9u(Tc1oq*$FVgVrA_!5yVS@N+e{XZ^9I1Z-@i2aDqExPg)y-GL8{Sr>>fyh)MJbl| zpwk_Nk~=Vot6_!cll14c4@XDt&N|XVdZk|DlBa>*^rE2$4S%%_B-Fe8 zQfy)CO#wp}p|Q@(lBlnXe+@@ZG1Je9%xr7aA6m9f8TNSMnOMwAqyDMF_>_IZyg(J< zOzc&tz&oo7)WBodd#o=>a`4!Raj_Mc4q&S8yOsa&(DnT$p=1dD(`ypG5mUPFa#h8y zz`g|$g^1W7a;(nZ5z6LDuy;|iqx^I#<=?QqGhq?!M`ffI*O#4I7#WK}ADgD0TfPgm z&jr-DhZOhazRkTW6}mBR_j*l+zvS{6$aH!8W@i>GrW%cM1IpOAtLb)s3ISBtyKN?)b zjtWR?mf_x>xUBO)++L~mgQ~cobgeqt4v*-}Uv%HL_oSik5kuBJYniev=G*Z%SM;5vvtk2wwv>oNPQ*Yd!RTTABE*7>~=@^D`SjQ8w+v`oAk(1O5wI_$xQY$ z+bn)}H*se}6vUM6D~txvG=zaTDCm#6?C`{6dpFr)Bet}> z=j^vF?RvFLK%ow6|h|Zz(nUo;=`n11~=o6~?Mb zd{cxpd#dOKgi>)jtCG|lUrgyj7%9k#80M;t79CKsy+#$Y4Nny#lG p%gMa*IFiEn_LH^v9`&!v&;HHHQ~cY)=*LF_Cp$OW>$_MP{{jD10(JlZ literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_42.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_42.png new file mode 100644 index 0000000000000000000000000000000000000000..e87835b7b4b6a5e6010937877807375a4d989bb4 GIT binary patch literal 3999 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_45.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_45.png new file mode 100644 index 0000000000000000000000000000000000000000..6451ce75d298bb5777f4ab12e100d953d806f653 GIT binary patch literal 4266 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_46.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_46.png new file mode 100644 index 0000000000000000000000000000000000000000..5cbc291e99dde6993cb83064e8d2d6c86440dc7d GIT binary patch literal 1988 zcmWMnc{r2_9R7XZoMteS!C;bcBw0DO7BMw5B1eUUD4G$nLP?6YNFR>?%iT$rW2MQ_46p>#z5Cp7(kG`8~h)u)nXT7R87H09xK&?g0SE97TYP zn}fLWkia>>$MDzj0d7dBGZBP2z0`kgpvTUgJMHZ3{QUe{T3RF$$@S~kYinz{TyA=L zdQVRejYcajE*1y`V`F0`CMIgNdM;NK`qBk}#PN3L2d2ImeAl(LpRGyo|J1pyaYo(Y zyJ%^`t^72Mn-zd*a0to*d9zyzTy_a;JGrmE04AY12zVykK!r7s9}TRo%y9g$3X<1Ab(7T&Du@}_ev;xukje?mV9FIldMc8+5p($Y zh>{@vKy2mWhMR218CV}ldJZ(X@Rckye^N<2@Dlsbh19_e4N8OWWE3cdcdTGPqRD$ zky=iH86f+^^*IlF&lCzZdatIIVz|UT4+0+}oNuo8l(^w@#iPleAb#PP-g>xh=NvI@ zW`$Kdy$~5<6@#x`$h|*|x!VPJd}ZrM`~aSwYxD-c8n$cj9MF*X#Gy&38LS8vYsr1` zY7bL+As;{K=R>(;^(_uGZ zWFOqtk`|J@l2>$G!;N1F?nvv0XWM!R!h4r4?@0(toQ(b0k)yA&kdSzL4(U^2x^N8juq@i?n zYWI(MQ7R_6J#uAQ?hjO%AwWWF$w_HixtsA(TPOpY$puMW_8%&CwO_K|W6E2v9c7!{ zw9&nbS~oLjAMIw*sUz*AkNmD<_N;{dGS`3~zV`MKuRDvaZ&|wEI~Gxwpw!Gk31Z@} zwAD$vl=_@iuRJ4}6OGUIJ~@J%QY0oN)mgSCOzeVvF^cT0S3GhB&rP@CKE!Y8r);C zfrN+-XWoC0Qk9Jt8hSLl$^zKH4*a$SuS`rT8)=}U^4F(OQ%R}QKWynSGVp@Ncj%&Y zYoCmKeWR0{mIV;p^07Iu=5t$HUr%FBw93K|o5bSrMh1(P0CmK5LDx zw7rfE8@=t8hiwQFcslXt%VG2kkjQ(IbqROc7bv4aU)s30J6Gx4#r;|VQ(PDoYO^N#y^$4#4Np}# z`&%~T+0R~-;cuGph6?Cij;cr?COlT}UYx-#I&>P5fHba9u6k5%Jwy?g@}lJos7^ak z%q&NL3pHWZ7PHd*sKG=IPVt60`S6^%BITEeXgL*1MZND!ZeD(W(=2MyfHAh7-^)Z) zx_HT05Pn>_(yBxcY-1H8H?rlm-E$>lz@dmftadz~T^d)TtD?xyvs+m(pCZZ|C7jPD zHP3m()>;0@$F{VLv3~R?oIX#`GV8AF>~pIte}RSyy;&^O(+LXE2S<{)09>#3>1otk&)ufEP$ zt44d~?>3W~Z}G91tq&t1#$Q&=zVMT{_@Kwd`^k{dSN}a?VuknFwiQjFm4|~+Ux(|+TiSMq&giQU1&Ub#48|w PZcf45!`HpSO(^;w)3ZvB literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_47.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_47.png new file mode 100644 index 0000000000000000000000000000000000000000..fb35939ad25cfc8db40706e39cfbf490df7d8513 GIT binary patch literal 422 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 BLgWAd literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_50.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_50.png new file mode 100644 index 0000000000000000000000000000000000000000..85a803212ea2d70d46b44e4723ba1d369b31b366 GIT binary patch literal 1528 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 F{{yY)BQ^j4 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_52.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_52.png new file mode 100644 index 0000000000000000000000000000000000000000..166e0638c4d5e7894126f96d96ec4196db23fee0 GIT binary patch literal 3612 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_54.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_54.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c4e855ab3fef77cd3267a408d67f5e9175fa99 GIT binary patch literal 3525 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 KxvX`u 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 FV1ivbIzj*d literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_58.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_58.png new file mode 100644 index 0000000000000000000000000000000000000000..d638c41ea658c651ad13e4a12e8d33c3c444fa07 GIT binary patch literal 3817 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_59.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_59.png new file mode 100644 index 0000000000000000000000000000000000000000..45a6ba0ff663d00452123e80543eb68fded3cdb0 GIT binary patch literal 1100 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58CaNs)Vi3hp+Jfy-O<;Pfnj4m_n$;oAm1Rs zC&X1=UcSD*{`~p#@$vEb`T6VDuh-YtfB*iyy}f;ZfB*ga_x=6-=g*(NfB$}YIC&wk;HJ9dAG_|bl zx{>wuwB*i$V`8R0&lOd4%YW{0usG?gslRZ20b>LI>fN98`>mNc6dD+q+L(WQdAu_0 z*yZ*5*NyK~_^rTMK;-SDI(s{lXLw!5C^$*mx~eF(G{R z@kN&J`PN6XG^~~VaA8hG_jOyAhC6%~rt0TD?h0nmc++s|i~fS^p^OPB?0Zbq)&5KoCsUuRH2COQt1{0p*iN;9F`5!PQRPX zaB61A*RW-bZRYRtL0|O%qlsNE#vH17*{qBrw z-ZT`8IHa-5Ote|ZC2^Z^y~n%&R+%>q=_>v!n68x_u$`nH!uZKzdg1e|nDX9zzFNEA)IWpK;qWZ=9<~B&ZMBAm8x1>mtn*-r=zQJf z(%=&luENxFwA5AUfFp>x2F(0g^?0oh_YLpYT_FvpzaBfjOG#28BH!ei=u3t}pwMSy z5qQVkHNTp9$?t~A=YH4mDBNYgQ*!@%GQ&%|gp0NJ`5A!{)(H?g8blW**3W1DUB>}b zsMAnu&obd1b03&ibNE&R^!tGT#VM-4hPD44avE;cE0{UFwHJ_9 zSg$R_c;z4SM#g~ujQ$K?KFw~+>2H5B+5=VY&p*#^vCn+UxzF;^pPA?B>$QHa`B=Pf zmuf>pBEy>Ryo;Z*hZ#MXqhdedWJB_#KMh~^C2k==I%Mw2m(aDpP!EdB{|@_;^cilg zzro$`O}mVF!QZaE3>o{A%t1oD6K*pu*I?KZzfqduZTK6u71lh!q?M4taM)^5ZtO*A zgOv+6eqqYVD)5=hz{<6vhGDmq9JlxZF?O3B3`H^pMT{aA3yK(f3LO62*WYl~8IgJz z7;S$Gp8fcq|1-1p@8&4I1&?ij0;v`XXZRQV?KlRd`JnVQiw8>f2Al1cKV{l=?($~& ziGM9K=gs@uaprvI=Pz&EQ))_A+-OG;mgRD$59{uj{Vx4sZUayc+*vXzW&^(3Z(x1JTPhVq?%tf2`7KPQuRN&UH19% z={BPA<#X=GeF~|$S@^H&Wbntz+(urJXEdIz3bMG^bAbG#&K~b38BkJg}I&WafcFHBaNl$3BzN zn2rZ}S~osiv1IOnf{;so2^LzJ>IO1XzX)GJBj!YYI{W{kj>YCDtLqm$I5SEAUt^Q8 zx7}}cF27scQzn07db(t4v@elQ{P{&({}`wQ$)k%TXQ(bWUB@3RLJKhFRD_rT&G<6VY%H!M3!l7X3m!PC{x JWt~$(69D}AnZf`7 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_61.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_61.png new file mode 100644 index 0000000000000000000000000000000000000000..f556829694f7f6fd4c2d50d8cfbc15ac51bf35a7 GIT binary patch literal 2381 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 CZ4CSX literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_63.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_63.png new file mode 100644 index 0000000000000000000000000000000000000000..18426851992b607493f7f1befad46ecaa37bcd87 GIT binary patch literal 912 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58JL)Xl%kBoS0Kfb?&#~tz_78O`%fY(kk1p~ z6XF^lA3uNo{Qv*|0|hR9bChCWVAl6^aSW-r^>)_5+}i;HF3aW2C)QnI@%G@fd2(RF z(j6>QA2$1m)$uVp{kuCeRBfl^>erLy4VWFDaddy2uU`{+@cH&%=l%3p2yf~Nw4r-jzZC?!Q6 zn(FMLi9Q zbhhb4U|Y;4g`yC}@^7s|7ON&m3$yfTJvqhFxR`6Ff#U-Wr+0tkPoD{Fxw9kTnTFH4 z7=vOFMRC0umL(@*Z4-QCtez}m5pL((sdezkLT5cMgTfONcGq3lQ*>g&Y_S;2loO%c z>tu|cEMg7k+a;2}lj*4A^hdVg3oKp))jZ)6VUO)PAJh2gf%nI4*S$YI0n+=fLgEXUrN4}aBD+E!=(uVXOj8n$@Se!IX6Xr*Ye6YY*_uL)+eJDLM0dG7&~;V% zFfB=JhPNU2nWZyWp9P&^D%MnM+$}QsKx~)i1HGdv1=Ev6Zg?AVy;&;3`You3san&m zaj(eY194q}3HnDhHcU_YrLfc6kn_&c87%LDe3;5LpXrMfYo;~s6xnnr?V)&6xd!d92(126|Mc)I$ztaD0e0svWfl_UTF literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_64.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_64.png new file mode 100644 index 0000000000000000000000000000000000000000..428686340908f9712a7928804e4180d4a03bbe73 GIT binary patch literal 1781 zcmZ9Ndpwkh8poe^-kEm>Gj2z2XQoCZ+i{s(J|>sELbBz~W*eJVYe|z>9Bb3^raFj> zOlzxE2A#AnV>+wY?VRI)54kK#oLZXW{Ilos&-eR0e?0&Eet$d#Awm8e zZF6k^-~{aP4Ff>dM+8{ty2SNS5$mEScn5j|+?437#xmA-r;vRSeyy#oUS3`?F)7ZG#YVmu=0nd$APr7^iq8O3!?a;>0=qgVE?Nv4Ihl|f|Z24me(<& zP$={Oxea`d5j^?8OK! z{0HF}p9{aE3lnr8XP;L-eV*pO6nXi;( z#BCt-3_fBETONb#v&kE>vhK3^lVdRndnp~FfPU)+Lv2xNB+k0aB3S2d2uCb;g2<{q zkVmfMtZAyLl6Vv^Najc8$;J4h_idS zoNr93HfJRrw1?@uoB}&!3%SL(*3SyA=6U^AMzSgWLv2-J$qhJqGbO1C9{AfH^ku%k z2WBlku(@o9Xn{%H1!*;P;N!JAnTl+{$UuFl8Gu?P!C>ZIQxY7ebtr5TDhg>KPmx*+ z<&oxgsQ~VTp;Ofi!{j7g#UNW}Mn=OhsaptqFeKVZ6zwI1wqD zX3KV3UV8}B;fGw4un^SrmKn~W#7^X@Y&`H1G7h^x!Aj7DZnn(J_NQ6ucmR`{rK~r? zw`hEbRJ{_ezd`cM(TiYvgiX){b=yht>CVayu!llpv;_o0K`o6^lY(UfTcsYm`C3(uXui#&rI=zMY0jAD`fC;coSj2V9pSUjQq zIVi`_sG4rMHk)85DttS3eAwcDECYBrvlmJKA31AL&Hu>Oi)_#C=-((iO8r&wHZ$o> z4!3=5IQreBV7131U(wX^ZX!+H(TEp`(pt~7=8b8B=pW|Y9?)#1FC|-bKYsL9ll^y1 zsaD#923yUHV70MQ*l<+q2hNY0tJ=;k3!+RD+HsS@rpqeB(Mi&~ZN6ml#&;_-Yp$mE zQ?r(QSW|lUh_=}>b&VC*CfzG^&y18s#bqt=nX}%)gQg7)no!o%kLkE*uJ1Wlplmy7Ts}2V%1>WJY7oQeNZPU4TElcXse)Xa7WWL>D5v=GlGcZ$5t!{(m6A LFUVKEi^%;KIb7P` literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_65.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_65.png new file mode 100644 index 0000000000000000000000000000000000000000..9d59d26759f4e71150c326cd06e80f430e2331b6 GIT binary patch literal 2275 zcma);X;f3`8OQIv1i2(20Ry6liCQhPnCPf%1Bn)lxIvHrB0{WNRS-l3aVR&DR!0=U zp@@PK1rfZ1iG$+8mJ5g*12H0{KoWuwqfyq3LNLjlblQGwPe1&h<(%jJ_B+4xo(K@enYY>ZB)$H&J@rBXXPJE2gBh`XKc>28?pCd&<<;Zzhbm-Cv-mJ4{M z?($6@h&EmD*K?%=A+nWqQm@%Dp=T=hHVo>-@WyYDXe>N98@g?1hhBG3DR=kE@>#3! zGX8zt8G`4o)wKLh$?s@J0|6;xrEf_eaPWyVv|f}G%8poh~n zyV)#XiN|$y*#(v_KEkmq7_fh}LBpNyw+!}L*v`#VxO*RSB( zDyUuJc73Fb1dSMq*p9KL3}s`B4uL;S=;;K)WqdTddVP-4pk2F#(+B}-iM=^aj0jF6 zz*kEg%%L!1IYvw1orDa$!{;#ea*VV1?{G(R>=_9hBLUFhPUbi;Qe}4Fl~;Nu;g)Sq z=a~=n3>KaKF~i0 zT#a#ASFunll+`b`S=FUdv#kwjDq;;NWo>tj%Q}z6Th#zN$+l~I-m2MfY$}f=vhL;= z1jLz|uzgl_SYNWOU;nUrj2L@dMMCZSv94Wlrc&%P;S@hcW*a!Lwtmm>aY2c-jlgD! z+;$C%kfwD0Ggp-c1(S!I%NI$DG2Z-p%aYS0K%3$7&oVur)(m+LX5>^bf1u3!rISQh zR-=PR?7}Z$F$r&&9^~Q|Qlh6Tw{A~{Y@eO4KoxoVD)yFB;d^;rT-rqkcuf5q_M~!8 zmfxN*%mZ`h=8~!xaAR6uTrnI4J1DutYFDn`Q14>{2kdanwXR;soo_MIYgh?(IOW3C zRIb*8IH_L(71RBkk}tTcmpT?2_JDUNuGS~mh1%k$eSXasvCVg?=qeK@0}!uZB~A_T zDqh}*PK{ro6?y5Ro0gT;mTPA*cd(h_S^~qME}J$4gNF@A z3ZM3q+B9_QXpN#URmpP?MAl(3W8#X>_J5ercR|h4#9|0Wo=0SwZnCBe>X!iydGjbj z=FKs=XdcdoHZl_;Gfmf7GuBPB0Ai1Aj+E-) zCLerHzMeXGbJ_q3UVD|!26Cb<_E-??r&i3Y+B&D<{nx>eaqr%` z=B=ivA;!t=A0__jf&ul%S&a*rxm`T)>j(SrOf%R?Lp~9hsqP6yNL`*R^Rc7cZ4X@6 zrg>%^Ydaewe5%_XF`?%`-q~|#VEu?=WTu&Fg$fSBM(f)gh15lN89o-|yA>H=n`VsU zIeT`kWkSXugC_L#kVp3Rt>Dg*dEuF6q_wK(&Dh^7pHhU9B`TZFHH4o_T;zkg9!q(1 zv-g&)+1pZ5FST|p5NaSx(JPgMqewQmc&X_1+f{2sT|?{J{J}AIv?2Uh(R7tlRzOB@ zx@IxI-lVg?gqAi+z)E-i*CbxN=OHyx9d6Pba#_$lz)lqfQfua8@2wsrjt`;B7@2|l z9r+XDgnrfB$Y9!d=Br8IqIcqHX*?MYpw@b_J|)%<>MAWyNzZs$k&UYT(}obixbA2> z@Pt|C5{PV~9cA*4@_%l1Y5gZVqij!N{&$%NrVYCV!^ZqJpvErQR>*YAZ=&9VStk3Y zL9=~{Q`u{0RmHw_4n$bjQ<;aB@cY)3CMKU<{+uN@zU*M* zue;fJpMs5>ZGme?*!bk}pzW1|Iyy}If*Y-2hMBQjccwM~_wey3R=z%o5SFWmf~t&p zObF^gmhumeNXXcT#Nb3uFpJBY|zqiUP_FBX*lAH)IRLJJj)FP8RRaETobq~<+4kSZ%Ox_q_x z$D)>ni_*^i6qlGy0N0i?(t7Hivolb8j5#fTggJV9F?VJ|rqwUe}mIKw?ZrrX&u+8<556u5Va z`IPX(kM4V*AK8UZ`_36m?ccLbat{RYj8)*QAL?n?4u7fxym`b=FHSqHfv zH)8(iLrw~sWzxlchoiS5-^@+MtK@fTj&vWJP?vuG&;WjH{>sEHRy3mz(QTuH=HCVo M61*))w4QhBSFH3rh5!Hn literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_66.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_66.png new file mode 100644 index 0000000000000000000000000000000000000000..0b08fc52f46fe508553b10e615f3fa27fe0c1269 GIT binary patch literal 2802 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_68.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_68.png new file mode 100644 index 0000000000000000000000000000000000000000..eeaaf48efa00bb2f45da9d2c0f1d3fa27b3ac940 GIT binary patch literal 1982 zcmYLK3pA7o8-Bl;Z!Q?Mr60M@k4h>Okxc6=ghZ1lMNFj~Vt-n#8Mk~`gKi|N%O57K zZ78=*nrXx=lFlT`xMj8`mr3RJ*Qr=${ImbrbN+LlbDsBd-gDmfInOz7F4NyjSKCM% z0Cau4Jpup_O^5)MsG;aP!GRh=+1vfL1Jvc|EF2+eatG$_K+l?*nmv2=#Ky+v<>hsC zb-jN5dg;=o)6>(XrKRTP=HcPtc6N4YX=!e5Zq3cji;IhzIp?bD#Q+p1ACK*U+?SJo z3}xJ;(}4LwMW|m~ycc2^U0i&~etDZ!qn*wz0kVlHPkqEt7rF`sk9ThT&u!Z6W&m0o zei6la#7Kk>%ogNj6?wnH#xDs-lz|xja$E;7{Ha}A@-rC49ZNO>YC0bz$oo;yGf^}Q zN{DryNpOrGo8F1dc%QneUN#$5*R(dsuvMS6*+upsFsQqh+eQ#{icQe&rcK*g&Km2h zzSIt=FZWb>JxnrSxvTq{dmj#`?>pqWUY6EcmOOeudtveDAzs!St$fZhK)7y|8)9L8 z@ zbO(IHJ_}sySSNo=lk<;zK2swDfg9pF1w1lFsc!TpL7LxY1Psrr2Eot`)1g@V04pMu zibX)CmVH^w?ok4N0d|3X!>tj5>mA_$l z@8Wk3>MzaVO~0&3k~S6o#Qv?)&sT0lw+SdH%(7M|hbXW7`IU{g5x9%hV}$4N{+I5? z`gX3wgNv>J75^KfVZXXO4Qf3IL~e$I>3DUqQkJYd%Y~dY4`l`h z^m?(Yfn{sI;b&a&41(-@vfY>xYrQ^SsbZqWt%r#l*Zy?%!8(5-NJA1 z^AWrVw)T7OAFAu&Z`KxAS^-l||0SUfFVC|}RfFKYNCH>{e|8vD7 zQy5FJFawSeSaP5+&~r6hLnRVT6+5^Z&XBQIQ?T^Q)xvKe%s7ffI9seGDJEl2GzVh~ z!LtFN$HB9qEidaJIJTd2gfDF^Q#L~{l5GbfB&3H8DmX9gZ(8;whl-BNANAc_ou(%y z1s{F$@^J5+D77pc>gOwlC{l}qNB=%`rd)U_%!Mcj!X}2Tj2+tOPtZOcW@@qJ0C&(& z?@Q^mg$ts?t8RX~X5tHB;-ynXs}IjEDDczk03L@};%90=cg(g)xnRBpQ|ORI#1tcX zk0-1kOWJo?Szy^{9Nqc0pLU!VAxHerHQ+)xX9aOn;?pJ~?5@8yp71JM-gO(O7!THt z=rEu@GjCe6RvW@F_}HE*8b%bMv!<#K859;ucg1s2Z1i&U1&v0M!|(%fJQ6%k-yfyg z7XUVQvt=C;AvEb;L%M?Xr<4Ec(5tm;obF2JGGshUNontJzpf}D=hQsA^~2C ztDD$cbrqXkro%+}UauNPUfe5Z`<+v))MLd@ic9QLtU0u0nU1L~C^hy|bdJ0sn@Yw@ zve|BITEi^_MU{q9!Ts~kUEHem5^?+=9^-HlW-?EGYf>I~omjgW%YZW5c>x1#MK6j{?^B-JP(CgA22B>j?Hyuw;Vy>IG3g zOk{=a4fj~=i1de4S)Wrsk$Eyi+}lActtdiaIO3Z(>o+0_l-~oa>&aq5oz4l&1k9Z>6gVT-~md>KbtmY_jQbt*9q^ z=#Lis(mpaiL0iDb8TDE@!8Ms z&0re&+*_^nXIHIo(o}!)#a&L>J8{(G{i@RiF%1t6;C(AH_FG?@v&qOmlAf5=@>RbT z66~JN@<>0zG`j6$qV`H+;d5unXDy(9+J^{NNYanX(otv$D~3>QC=tt_12#~Z@iwE# r5o({UYe59RS4~C%JtnA_JhQZzen{BR>pq;VDMC} literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_69.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_69.png new file mode 100644 index 0000000000000000000000000000000000000000..661699ef9d1bd699eb6c12b3f68ab1a1bfb3d6b2 GIT binary patch literal 3272 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_70.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_70.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce76231668166e7ede477405c8dc316baa41269 GIT binary patch literal 2721 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 Xr^d_4@>(4O_Qu-c{F#c=UP=D~BxCf# literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_71.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_71.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1cc3a7c523d854b9a8523fec6c18b03069f87f GIT binary patch literal 800 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 a_vgvS?znmLwHZSdNQtMbpUXO@geCx>4s^Ky literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_74.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_74.png new file mode 100644 index 0000000000000000000000000000000000000000..19cc93dc9155d704eda15d5995cc1202880b362f GIT binary patch literal 427 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_79.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_79.png new file mode 100644 index 0000000000000000000000000000000000000000..15cceb8b6c366636877e48bad3197819e7b5321f GIT binary patch literal 3752 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_80.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_80.png new file mode 100644 index 0000000000000000000000000000000000000000..bff269fe8551c3644f997867a0c051c75282847a GIT binary patch literal 3057 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_81.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_81.png new file mode 100644 index 0000000000000000000000000000000000000000..b685bb05296c923585193d9af75de5301907767d GIT binary patch literal 1712 zcmah|Z8Y0?7XJN{NN7YHTB5a0$`VSe>ZSGmFM_O+9Ac&|DXLA=dI>SgZjnEw+os)y zifXB$)0y!y#(ULECDEAHRFzTs_qr`?|EFEFa9tk@FK#K_fTfCkwcVQl7(VU!|7z~C; zB;xUSO-)V1!^5$$vCGTLv$L~RRaIm%nMfo`rBZ=F;OFP3)oOJ<%~vN^0KnSO1COw> zluK_W%kNW+vCL^${YX1@gC6_MsOg-4X~esxsce_Ogm1rR$9yC4-mWwL5i$kTPpVim z*;-7#F#L1WM$T>HwY3k0zU%l$sI~Y4nOj1K_^(@)()zFpz)$Z|^Dqba8i;oo@Ex!+ zjv3-OZ?ba7pt|HBP@xtI!CDLm(nsE+1`cw9_P0R;BqLj2#12J4Aq2`5pbz5EBpSG$ z4US`AENlbzy17p$e7f8%c%At97yWRg)Oycsf9~|Fo+mew#CO7R+@u*(>*BsiAQ`?W zcQpqgw&oa`rgBHzs?~Ux<7GaS`7RQkA6+=(hYfHBed5hPgf)|!zk#)ujh3}x!2G!y z)3cYX_25Wn#HMHcaNGV{M9Sw(2vZ3XfpKOWhGp{7KJW429y;fDZlk5}zm6{dD_Vs{6A(bB5 zE?-SPE((>pGz&}bxj^DtJd&`Ss`r!pJ*t5b+{@Fp%uhJ>TpHiXm07ZdgY7<^OBH6K z)s=l7Nt<%Eg4ZCnP`X^0Uri}uICt!EG&Blm9<#unP41T&n6&xL_>|wNi};eh{@4b} z7XGdY&o=CcG)JW_HNSs3{xK1Vw`cu`2eseTWjpMK@3iiDw8Kah_QT&B?gM=@b>(Rg zTr|*f6Y@j>YYXIb)FA_Gtw*H*gIGh&d}uM|rKd4m0p2*-NmGfSBW%j5PEA z-Sk}mvs88cs5lA+al&y!lzszx>zWTM3TmLl*Cxotn3)gRMfjVT`b!-GFtisZT;Yvp z0}C{?_zUWw11(qjfGkt5g$AB%jDGONo#fTxMAf9vr8F&j|Ma-TK$SN# zJ?N!~QSa%$ozglNpjaAx+R3(N?#2J{vHq{PU9PwReIzd@l}C4yc2{+@(96(VWpi>D zXW?sUb8Rjd|Kz}4P*mn0^Fo{^o;llYfWk!e2~YUk(Bo}+-H`BM`!1WENOi8;73>1B zmfc{1e4ne>hNalYlQHO#q*KO*a9id0pkDRlvs-{-CMyEp@FA`{p9Vs7+S7JdlX?=u zp-zn^>3X6JDt)aQuU91;AFGKkuYtHk5Hcj3yEIE}r5aE*_SM~zEE>DytaO?{bMM z(6&vuYP&e-)EryF*t2r{_s)^Qsrf+p+&E}VYw%;il_BqYg{KRY&vyt9Q%T2wN%Uq_ zCZ*(h!3i^@n5f$53QMcs5gVYXvUDQ{lk+C1tk-I(;~8;;6K^pp zBO^~hj>&k93*;bWEz#4nZ`FxAAL1wn(2risWfI&3^)s|hPsbU}OH(Im3R52nQMkRjN&Xz`!gX9Iv1Ul|xFqGj O)pS~TV55Ir{(k`1pv;T_ literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_82.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_82.png new file mode 100644 index 0000000000000000000000000000000000000000..29903742f843d38d3eb690a1c60a290d67dcaff9 GIT binary patch literal 2250 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 EFV73gzyJUM literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_83.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Default/pattern_83.png new file mode 100644 index 0000000000000000000000000000000000000000..bd370640ba53e838d3f8ffa079256fc723e23c5b GIT binary patch literal 6143 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 E0B&lQ2LJ#7 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_04.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_04.png new file mode 100644 index 0000000000000000000000000000000000000000..988191e3fdcc905af71d5957a34fe9e5a1969d8b GIT binary patch literal 2192 zcmeHJS#MTV6y3}Qfe?p84dy;*;_$*Z&)>HX2BJ-r5QDs!c-vCi(w4Tgr7fM#24oTu z5us(g%rlgE5;=#q6gtl{<)V=XUkKp|Be1>v4*RtB-pN`oYprB&TrmIh=~LgE3INlS zzL@(pz<6gI4-+RiFnLi^lLHeo=6p2=;QW@?pQlW6_BR%Mxp1Conzn5lhGAKjb7SU? z5B_`%@Y*LybLT899e&g~CFR4UnUlKK<*OfRy^TnyVW1*)+M zc47tW#xmH8rC?z(9Ka$tgavQ}^Whlg!U@cQQ5^y z2EWN-_+1u&lDR}Oi&o2Y`d+5eI$1#*WGVe1i|9w0Pd~{V`dMbuFEWjOmC3Y2Nvcuh zv`dxH9#u&DR37bD*>q54&|$Thj;cyJu2#}XwSrEo<#bjpqjPF0T~JHtl1iZ~Tt?Tp zfNpRW-Q-ld#TB%Qi)an!&{|HT^;}9DIiEIhCT-?q+9D-wl_j)I=FxVULDjs1cJdP1 z%`0gyFC~kY(*aJQLtI5iIG2ub9-ZJ4I>i}uhRdmzv*|n+(nVfOm${OzzA`<}@!n2< zEJs>jWKV%-)icDC+F9_28G?Gpz728+-r|$vTrcNM$bX(a8UCrBCZ5*51CLA>w3rC3 zW&+yGIJBEF=rE(uX-1&S2~f8q&|?On*9<_P>4$#P2Lq-T22BqPIr$lO_#+m=eJcT@ zRvaE!F|e&DX)8jvtuWPDA*#26)L;eZj^(FD%SU%DFWs{|)MUA-*>X{ffz)awsLhB| zyAh)fBTAh{gu09{bsHh-F@n@<1gOvOQ@`P(0mDm!hKGg>Hw_yu8bPG{7^hK;(gO^W zjX|N&FK(k()S+9{V?s1wOx(eUXvC1Xive*DeWD3Hq8VMH#YWL;$3>eR743Fdbl5@B zY5PT&?G@d&TlClo(QC&>K+d2UXJQM_Ue9)>jC!bK@RI7cI#nI=#f|c+krwJ>;G8)$NK+2?f=UuvN-m4 V!`tmO&iepK^XAVz`&shp{{RU_8^8bn literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_05.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_05.png new file mode 100644 index 0000000000000000000000000000000000000000..808d90c7c2481bba2419a666a790216ac9352c84 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$CG0T^vIyZoNITke7jh=kSJq|GykN&8BW?GHG(ws@Lp574!rZ ZY&v$c4{u7Uzn=iI*3;F`Wt~$(69BFgC%pgw literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_06.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_06.png new file mode 100644 index 0000000000000000000000000000000000000000..d84be910c588a3d109851056d6a5635f9bc4ea60 GIT binary patch literal 3109 zcmc&$ZFE%C6}>}B0zw#CYQv|qy0B%nX-x%@Vt`i=*Oa1$5?x@aK0f3_f*plYK)^f1 zRzNI+Uncf-~MQS z&6z!W&fD+YbN0C#r#}OT&~+Vu zTCiXN5qW2tVaEErF=g_^$5vi$yU=^?cfI|4es(CgNAE2=Z2gN{i&|PfJiNbyUOjed z)7j;V3~lY`o9$SoM_t2=Un6H`7W%5lK0J)4BLGI8VU}}NN z$qDnl-$?49X(*E;1AYBsFRgQ#D-uz>;$KuH64vrKvv#H9sMQQwi-fJBgvqr|668a) z8RYKhU5uAd4RUu!@!VzfXP`;l!}w~d1De!vYCTkbR!l!h-OSo<3KVFx^yT{bw`mCA z(;TmS)+*@dr%CR&)KrwKnez`vGF2v{{rvn#GzP4*)Wxj4PClBcI;jI5OL>4JlmeXK z_cL{;Lx87{2Dp}zfV&9n#~lv%3Gx8GNH*YZ0=vu!<;khGUSMtSrZp$UM-=R%-f_fJ z=tAGmnEI(oXT_q;1==qTQY}9%>vA@9)65!u4U@B+qd8$wufM=#gHwja3hOJG94?n5 z{6t3w&y$ZMJfr`f$#OXw;W>RNlTGqYgy;3=z;(LNuAl2@>v>Kc!b|!RaGj$Fujq@x zb;`2C;w5pOSxNIE8vGtL5^}2b`Ain3Hude_Mg?km)?{0|R)BYONS)o*&RW*UUiBAb2^t5)52OivjS!W-SeQVMezsH2Y}CLEr2^BIHW3B z4EX2tD&X^4Bj7{?9sQtFo9m~Uv;^=atsZc91RAQG;@tji{G`6vzlbW`Rz665X&gwW zwHjtc+9Np8ZE{;*KmCM;0Z%YyKyg58|8>hx!m8B>q=7y z!+l(OQHPO)*)?kTEoKEfJs6CX^dj*j!tffOam-RM;X$j6b-YMCohAaVlPzzyCXXq1< zQy!4>sS4!l98*vu-5~FxLm+o*IDi+G7v%E<8HMRM$W!Sm$Sq<8GCM0kK0qfx?usJw z3AH-AS5nyi%s3RDIb8>X%`sR3B$c9B?dEEtO@|{rcHov z5XQexT7#v%qIgcPBtKTIFJiJJP1rK~l)xkQQ^aK!w9-5#ThrXb=#+{AK1>(??Ju-4 z<2Tzg-;I0VKY?Kkc6Q!nUhE9OYA0rv-i$& zxl%rhC2fdSX2la@a3T6wy@k!#5XB}*+J!J?7q4=e+O>?Ate0)sVcH=YnB_@~L3fs` zr?O)FQWUEsU>CxPd-HOTo8qIG3d(0e-krJG7>P01El1Q{AYYE+t`M;c;b||4lgz5H zTH#~cghZG+fUsP^fhy7^2#<&aLOUO!U%-sKRx6BigMgD(TL%zs5%48%ss!N<(F`<| zk8qEGMS0V$n9uhF?6o?50O3J_F7nzX2#<-+f!gpwp2PRL%y?r6f}fQ0F+c$UOJC8E z2f4 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_07.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_07.png new file mode 100644 index 0000000000000000000000000000000000000000..f6988b5472aa8570c65f35fb83dc7f589b1f4094 GIT binary patch literal 3192 zcmeH~T~rfi0){b+FifQ|kWfU7F+mf8KT+6)>Ij4;0ai2t0!U>AtSh*56@R)+s#TIY znqXkCTCm$1f`IZTNVj^hQi%ZyF1TUa)3wKik|7|jt}qGf5j_-kXt>BZbGw(lnwf9r z@_C>49i3ulyf+jCxw*M{CniWz+}s${EyIoBPF-{X$N}mC_a_f2m`k^^`Qqph!WUF8eM29&8ZhVF zgDU?MB=}?WCzG!R0$%@H`N7o2XZES7shh7$k*<*#_MIiX7;p6Wq=$Ys!a7&CLgeTw z?(9#Iil)1Y@jowXfxLrU5ljw3`^~el343< zRsbwOYRp^)mZ#h$F_L=d9LO|e<_4>~!^8Bva&$j-81S<+i^^h0Vdfb)AJLdajM8{T zpv-6op)N3jEzM=B`)UMwuCI!TB?Daiil`)Z>^##0u17vGa~Pk-rvyrjjs)mqP|4m= zy;40;6Z#deTor-+8Q6?p9W0A|472_MKS8dX)W{sJjPC|W~uMh2*2Wr zP$iZQc;JnLB_`{6RuCM8d>O}MoQ+S=2_1V)iFahn);uR{Di})v*5Wma64O{46N1~3in!H` z%H9-##Ol}uVPFrNF()PEb^t2k_Mr@HE4&X;n=gZ#4H9BMuv&hlFkDm4Pi|i> z?z3`xWeV3YhRxmI(DpNjg62QGwm=s1tP zSbL=9)2E?UZl5X+%Yes_YI75K#GoXkz*2c5$<=81X(%kdcR|>pHClBngLIJWhAiBC zbT5_%M<8wHzk)%AEJ6;j;|J|bsFU{ug|HF$7=oFn zz%2$Dk+}E%_W~qwohk_9>(Tt-K}c~EO2XvjZ-#=&)T ze4mbdL!s6*K|{VB^5KDK7Iqc}kQQ?n$XLYxI?2(T?oCI1#pd_I5G{vr;y(iw@wDg( z><%nJ?wW@|t`mQ`v5>FP^A+v>;&1&0LpqMliGK(b$pck>*yr$RL}z{g#x3GsTgcN~ za3w*D_DZZ;bI<^(LQ}7qge@DTeYZ@7Sdiz@+_vn(QiJ+KeXjqG(fHM2t_77X^ zzq0PC_g`86Kd|21Gwv8kV`L)*hi}ie{myzWZ~cbKm<+EI_Jucm zLB|~RL3irP)>AEhQFdkTv+PD-CsIJ2zkK9q{=xpb_vUzJlkJ72px^0!AvV9}7P4yC z9ba$R{nB)_|LDjz@;gTt@nYQ4I_bW!Yd(Db%dR25p?1yp#djibpb`xU23wIWP z%b>BdCS|^MX92hlnpk2duzaxqTn0@d^PtSv;Vb~xL6bnpfKa)!09*#medbRR-)Uz7 zxDFZxkp{dicNT!lph;xyktj%K0k{sDT|_3}E&rte@8@?rGoQJpa5R%T@2sfEYbblzxnaE} zg-S^FyUs>P4V~TCHm-WgM*pN@f9?6xZo{2PwWVU-^T0o%_Pi~tt)PAu+!CcbB`t9| Gn*RZgJS{5# literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_08.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_08.png new file mode 100644 index 0000000000000000000000000000000000000000..14410965470adc6af263ea3b802f52bd1ccd1fa8 GIT binary patch literal 1336 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7?_xWRHv9tCXixDcl32+VA$Bt{U?zX$ma?0 z32}{&kDot(K9KkS|9_>oygPx)u6w#ThE&{oduOAss-uAGMe*}$j&>>=6$K7SNjS7S zakOk?6I&tP>lRzZvOlGn`^hd=d!Q=_tJhtZ9jX>o-gt@ z_8n)IyZ?(n=l)^F`^j56et$1G@LWRo(LY<64~A~tJL>t_ZTc=My}K{k8Rc?#oyQd= zsWR6^Viz}P3vKOai{%b%esN=~fN4h`GE+OSGvnq~p{X6yVv(4ffsHS2P8AUCm=}x0 zlnm_3xHVO9X~(iyB&KFy(~DbEg;YD%#Ue2+FE(Y|o+_-{u`L#f$r|YJ<*il+)1v%v zM-hSA-CT zRG0FObFrouc`xo-t+q=ss{E>pxy$QyvtG1i+`TF=x8q(c@5Rm+C`>_Fk7u#67aLRV zT}5IF{Z-gmUi(e|PvQGtFXAf--&ehfuPA=cwZG!;)&B>-*~)$RbFV((w;X@PuiFs% z$17kg@U!nZcM}-AhZ)ZoZv%(^y3-W} zt1=|!S{Kztsn@+il%mRzn5r(Ui_*iLLKLdXkeI11nu{{S-KHqbDnnu}b>Uo;9qu(n zVOJRv^QjB>qTF!5Eef~FkeH$_j2E}BR^aN`7mE}DNI@-nk@ez^)k?b*q@aO}5%x$y z9V&cRVD0X#Mbe8(!<|c%s>)4W)EAW_Gu=xRW|o(_uurNCM`C(^X?}9=>z(}{-rf6p zW&elkdtWcCe|UQD@%p;u_73$8{}}!@Is&N!3xK?Y3-Sx>4PNkHkeB$v{(_(97xNc( zw!e(On41YIyVed=0#x~hT@6G{25ImFnY#pJ?j?}9FM;OH0GaDUP}z+Qmw`GU&I20? ia?=PF_*Y&3KtA68i9>^_EI+WYWAJqKb6Mw<&;$UoePk>E literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_09.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_09.png new file mode 100644 index 0000000000000000000000000000000000000000..d68d2f69fd72cb44a8137973c419e2732f445e21 GIT binary patch literal 2994 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_11.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_11.png new file mode 100644 index 0000000000000000000000000000000000000000..6e1abb22b80ce99d8951d7ea1eb6f38dd4044eba GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$IyET^vIyZoR#+k@tWB2ZQ7L{Uw)@T7;em-7jZ*&6c3+Icdoi z;Z)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$GbZT^vIyZoR!@$#+13$JOy&{mX!62bZ$%rt2N^mhp8PwW)Ys zx^|rhsFZ=hK~BN*xvX<48<;nNvm^}6V90d%dpODRA`6%&z~V9KdnZI9uR+Cg63_tc zbPb5W9es~q+mlzEf$)qP&w-rJz;NI{|20W43uMJTb&yXO7ghgEd literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_13.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_13.png new file mode 100644 index 0000000000000000000000000000000000000000..d3832416cdf6835729081eb6a4471ff3ba0aaf06 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPl)UP|Nnu^&_kE&fK-pCi(^Q|t+!_!c^M2i7&d;+pT)|%XWAB~s146t6a+X}m>M1E eLjB`iAZIGE?w0oR$2WoQV(@hJb6Mw<&;$VMh%~VP literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_14.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_14.png new file mode 100644 index 0000000000000000000000000000000000000000..464a9ec194e7172a30ca6e2944e3fef898893ac1 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPl)UP|Nnu^&_kE&fYcOE7srr_TW{}d)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$GzhT^vIyZoR#*kdc9bDpRNs1DW9I>gTe~DWM4f2puMY literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_16.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_16.png new file mode 100644 index 0000000000000000000000000000000000000000..d66cdee5d803e18111d7562920b44e48615c9bc6 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$I~MT^vIyZoR#r$j89I!EE^Nf93}ZBhU2dAu(5@*2mTZmEZ#Z q87|_I0*WtbP{Sh| zH3ljNfzktfpS&mWK{)gx8|)4oRz|hV!OCC>Gdrpnt$7ESeKh6d7$Mf=@rhh24xcF2 Qcpk*}boFyt=akR{0IiBGYybcN literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_18.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_18.png new file mode 100644 index 0000000000000000000000000000000000000000..da159ff09cfa014c7057cb1165348bbffb001536 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7#Nv>)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 zPlzj!{{R2~(wp<|0$FoBT^vIyZoR!@$i<+*!*cNV|K(T1TwH?EwwV|#4fRl3d+grF z53@imdK II;Vst0M@B9bpQYW literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_19.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_19.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2923d5449694f38fe654345fdb3f899c64962a GIT binary patch literal 3153 zcmcJRdsq`!8phAW1c5-gsdy!zg7-uPky2p*QPe27>dJZzND(a8EmTBcG7D;TRf1AX z5oA;Z*L4-F7YZm7@PdFCfdVREhMNJ@CLtgb7?MuBJ>A{*zxJ;==RD6m&v(x6d*Amv zvfkIn)OfNn0KjzhD(?*dFz6)%7>=Pock^dHq(96M&vl*vTobXWKo-4sT)%eHih_cI zsHiBJOvd4G{QUd`0)bR2#W0M=9t)8Sj|(*R&st@ifZ zwD0+ww%T1;wy4LtCaf z!w@8(#Mz`{8;JX%6s9|b4l&ZF_i}fChyW(rn!PiA~A>?RhvplZR z#;YjTQyHdavs~(pA1^QfxHG;99oQBcx)_idnmoo#*cEXq7E;ft4N%ihti&6W098$| zPx8(=7kJReyC8Qf>%t|I0acR7F!z9%>j5;*1F-&-rIODqWG();uV9%o`uDHgfZ_CGRTrf|>@9!K9-jl?AoDaYR?^`QV6!fV`WP(m3p`b&SOg3tkh>j-zt8TDs{ zHYtYyd>FHrIExbYMviVCS$&vOsn{F;${Yn=zz+Qt!B5*X*&L6&&)IixMGVP9jE3u^ z0)bOIeponCqnIn*UJ|nNZiJ23Zr^sfN{kFQRiDk)@I@wx#8>;NV_NLhQt_eS?yraY zf?TGj2nWf`veLypGXKKSJGvg$I8rXf+6^ZVt>wWk=Tn5IdJV0KSc{;PwpgX~h0fF~UNU^Qlz#NT#m#-Nx~WNAA(VQZENK;|x=0-fY6f=|;A$c5LSUAvu=vLK0H zSMCY0cYv~^7DBIkM;u9}Ey^%_qEw_^ssls9+`ifIdP-)lhD#|YAuom zs%C^uo_0Fr-Mza8p6A^!-a{t5{DNTlR63Jx6X7h*49UI@lWw!wx48k8-l1E$+1DtIYa7OGlE9i+iAy>gghS06}*6T5^ik|y&{Q|59w6M)i<&U0PL`n$KDl z>E2NEP9q)n&+R3s9ki5RmyeXbr@g-YJ?-Z11jatbY!n#ld*Cei^Oq<#7i}w%B^D`v zLI$NP$DjhSVD3lc`b#Xl$R(O~1LZvW5+9LQQ(n+XpC%_)r?K?y*Q4nTVd4q${PyOT z{>xl%l`G2W2MT5!n?)rZ5wbh{<<>^gGCwOM(G^KT{6%`;5S0iuiAERmiCG<_9km^5 zihmZf*uWG*%wawnVKel)b@IE}$2X#DVkR7lX!%(xwH(OB z@UqYfp@r_PSoYVP;@A(gvn!;XywQOx8J?f3#Ws^jN#g)HX%udb;+ob}cMmk`sq6Yw zj!ALBPw;|(kpx{Gd$v-F(T+Y}Qk+r~?LAgEzrlhl>7D+-ptP63?&w7OpvRjREqS(P z3@ql%lw7;rKNi3k$KGRj!3}2`^rl13w4LvIXXo3I??6>;_^>l=2oHT`K(Bi=%gI2- z(}tlCrIFsf&$i3#Hs(T-q2H1D2j%~B zQrhKX^bx()mdQp7^SNj1_C6ysDcg_e-`%^a_a^^nOoMXhQJjRGni`=@Sco{oD^b+} zoTrNNq#U*8TuBnVj#TxM8tSSWoXAubkjpQCSCvSnz0&IMlnG+(AaUg-_&zvmCy{mv zBP|%=>K{YoO;I#QRYZhwxp&vU(|ls1Oa&Hh8}e?=MDkk?)YUn zv3P1-IUQ_PL~LDPN?VljvYOq@%Kne*S3eB0kO-u=BCR_E2IL?e*cW78Vd;>h;1O@U zt)@^zcq3xjQK>53@xqnPy5Guhy_t8#8L!{-xS}wkWmK~z85vMF zTdyN|9WrfyX|<#H=gj8ltZ&mYHD(;_R~F ziK!0>fg6&qxN0&yG(KFYfcHZztwtT=mdOhXNWq8+2cnp_{{Ht^kv*}j)%}v@9OS&m{eDi+@3Kc(&;Dw<%|TM;wrT& zK6$g?%R92S*@*_D7Yz|R{NLbi()PEldT%c^$Fu*(+h6#i7jJ)~9qYkeeq~2S%NcsS O2dh{3dSCSlNd5&Pbx6$s literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_20.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_20.png new file mode 100644 index 0000000000000000000000000000000000000000..89744b8879f93f9d6037aeb0181eaab50ba9ded1 GIT binary patch literal 2129 zcmaJ>X;4#F6h8O8ENme`Tcv;ytB9irR1G*FCNiR+V5q{lfPz5P3QDRii$Qog3Zhid zwoVThHYeN7G5{M)~>C}yup$cRSn9)ge9URxOG?DerUG8G^*P+IygF72tK>W^4+fuzZ4mx|3W5-6MwL^K7 zwl;NzwwBJ-zgfj&7Ix*0hvxZdlwcx2Kno=aQ_`?b&qB~Emf^I(US)EtsH_f zjcsTnFN!Rie`gC5hmn=)jVD~;+$A~c`koRdE+HV(I0T>6ko*Bih8%^B3-|zmy8)ZC z3}C@FY_vqL9wP>ihLg)Cr0>^mj`fmn9e;|y%{eM`BqJB`FSag8u=Vgm z$-0ak?t%QpcIK+bk#lZucPw$z&pU8X?Tsd8d=(zuc@Jfu0M`#g6WNlHu(^5<7rsPh z$GcgYraW8!qrTN}J}GN!o%*en>d>Op?&@%etx0XuHal~GeP+$Y{05{bs5{ftpjCom zP1ft=wpv;s&$>tb&y3iFboCKEk#YMJ)~X+h%eecr~ZlYfK)_phE;}Ipj zwSgn^dDKzcy=Y4ihkBLql**k^UG(O|J6Y4p;D|WyN>P1bvFGMJZ4qEKHCfr#79(FE z^G#oG!?-%ub<0mL&_9Z{V}j;CaXX-Ns+hMRlckat?yvv5hRUs-eps^?lG~Sp> zhy~K)#Iik$CYq0g5gKpA#?W+`a5ah0f)Np~BdjnIpcq&7p9hWUy%H-4`Hw_s#`HaC z=8M7h%-g4?utG=$Y{5Cv?3n-qd~Bos9RfaV^%)C83tGa{bx=&<`=c@9~g&=>i_@% literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_21.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_21.png new file mode 100644 index 0000000000000000000000000000000000000000..b357b9cd91f7f28b548819b83c9a2aed755a252a GIT binary patch literal 3069 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 XW%0aK=5QcX84+%qyf+rEk4XLxW$`(8 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_22.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_22.png new file mode 100644 index 0000000000000000000000000000000000000000..67e6f8fa7f6029b44496e98a00de65b5f82c2489 GIT binary patch literal 5664 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_23.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_23.png new file mode 100644 index 0000000000000000000000000000000000000000..dc925fb8e0de41e2709f56a9133012f24b1e1446 GIT binary patch literal 3357 zcmds4ZCDdm7CtjcNJxZ4q+qF-u~3DwENN|pS|LH9qFBJSVykFSs`!B$bXDAyG8aFw zRk7>$M@?F*)T#v)DJo?~ZNY9UM5!X5lhSHc0)Y||NSNFm{n2NCclYU!y?@Tkx$il1 z@AKX{@44I4Ql|RIgX93?|cYFlx*V}eR|t7B*Uy>`5O{I@uN)67$E6`z*8ySv-_Ufa&(2`4V%#mlhs zle0~~4ARL$ia%`VCV~%CxDC}%9t<^Z!?7p!f!k2<#Ex)qRj~ARIB8`D!MqM;G}C=x z>Vkt6c!FBjLTFaul@m~fDD$zWB?DGU*`N6@4?(jpdgM0rJxSo};Fb_Vf($EjlQ3_s zu6YcHKZI4y%p`~)I?A=M>!Y4KL2RxOV%F7s5Q%zisZchYN^y(WBox!7gpjAG9pa(} z4`}>;n_x)x4K!e7Vu{QUUA}|+q6yBVNQ&w`wVo5Q&P#*-RGiyj%z^zkOQ5$&+x8|~ zz~#$TM!sRbsJldPu4s{wf!B%2^mqO1#_1mF=OHsw0Uy&ViOIN`-0Zn1k?|`ODpz9wWiO5V z{Qz^2+Q8voE93B)mA|^2uV$zNrDVZ8zYEx1(2{Ysg%6&E60Gz)cW<`MJ&>G0_?2R} zRfB19ooziCnt|(A{O!sDV=fsw7uQ~XZ9!+qVer1otgM@(7^_>968~rUqFuTVSBAN7+Naa#KQx;WC9L;kn1I+0R{B@kGIMC!aB_u-UdnL>k z^i|ssQ5ow#wm;)EU5fZ#yU60Gs%U7x^m)H6po~#x?<*$v_4Z!b=K0{hV!;DN+T8yw zIlry>Klwii?M?1Z+4>Sm&vZ_o$VNn<6@{J`$uC|bGVaRxSH))z?1lY7{HB#Z__8Oa z(>}z3%}}@46(NfmC(gZKeqmuJ^C4dZG5Bz*erSq0l7_F3P8RidIUfTe^w0a3OYn^w{UL&3^}5Q1Jv@7 zVz9i8Yb);i0h+>hNmF(Nq>V;>p6immQp;C(CIKV!;DVQLurR++sxer87%sTh!g%Sf zU=^TvsV2|T>Lfw)0G2364b27EI*J`C+{4L%EfV!;a_z|iJ{RJ=>I%jIxTKcFmYz8z zmIHd)zQ98vBY6$T)ee+0(#z@WA>{9liXz5IsDAP=oQ#_%040CsQVB|W8OrT-M z>nPx3A#AixVHU!ara_w$eO%Jg>NLQOv6(%cBKF*f>am?lbUeH2=f_Im$QnA1U@yR? z&Jhq3kh$tTIWXjm?o_a(qnms557AQR>+AZeB&B8HjgCM zF~;>LMP)g?l98T*<MenpgYIuPOoWoi%h1538lRS4JH?hWO|P29pl{0A);qj2 zJb5x0&+b4TCe;-xHs^(moTj7kFUN$kdwPuSN81Q>I1yGQNl=;0T#pay&n}LjbU)el zL`@^?9!=Or*y(Y`MxgoU73PPAqhCAFf=iO6cDm~jQ8i1E_6Vo=P!~}Vf0GCeP@QLD zQ8~HDVFcE8Tfh2+UU{f6>^c& zD5JI`3!hCUjiLU5Pl2CI#?gO9J!FT|IE<=9Vm@0Wi=?LDM?fl)Zqae5j9hKc1L`vr z%Ey8%oJytxfs`jTF!*#(y|&X;8KY9=gxi@(b#2_2{wKOxyA9&E9oqT#PxeksSUI(G zbv$|#JLlWV6IRXY9NY<;JdLw^_Z4+l$H_*v;o}=pE<;6sAv(va|5ch;9^I(YoM&A5 zlh(p>MlyuMb11h`%84Fus*N)TYamee7)XA?oO8}KbqS*ma@$a>o7N$6KH-x&>Q8A5#sfa!{! zc22BYNOZefAS{BVg`YW5B7SI)m_9`^{wDbQt3F|Z(Q0y$JzAVLL$}+rAEtX3-RAst zV~B;W7BVb^N};nLQCPIW$FvzG3AFjERG$m9*~vxyMlhwa4I6Ow8P9lF<9#oX;}689 z3;emn<#!C8i;10Dsm_RsTNH(j<1+9x!Efz)@De`T`S<&KT=k?mJd>`xGBQ8TQN))J z51)CW0?}$oY2Wd_Ca%F{c)4qC)g0Z)6Sr`!yI4PND@9Gk+|(M1O2oSk#mjD(ne3(h zq@Ue(IA|*x;N3MfW2k&wcd1ZT)XwDPhLRhdwqv8-NB4O5)Y|8%HT0IItFoe2eb)L{ zNYXjy(CA&Ll3!a>8$#vK!61{h=)Hmb#L-A1;V|A2*jPdf$3)hoA1*N9XcQxa_}K(S zEuiNM?neEy0=mD^%QVK)U)PMgN*SSzBa+i0YFqYkU)>ZoJR6^`#nE;mOjdbfNR>7K zBYWCo0BuAO21qyV3<0~Ma}a9u19$yniPuwQa@$BAArYLG4f}p}Ti%nePD@Nl_+oPA#(x7B`9;zI literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_24.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6f9eb38624bce8d90ec416c9569902c3d2fb73f0 GIT binary patch literal 7654 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 Y^>f=8<(twqTOY2Vr+ZeXP>UA+KZC?^XaE2J literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_25.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_25.png new file mode 100644 index 0000000000000000000000000000000000000000..309fa1ccc6c67bbc19e0bfc5f1950c2959096255 GIT binary patch literal 4211 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 Gv;Paldg!JA literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_26.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_26.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfd73219e59af2916441b58f3b4d8054953c1ca GIT binary patch literal 3016 zcmYLLdr(tn7C$#P4-pc4fJlghT@YloLQz93kHl(gnS!*{uFj|syVkmunsnYzQ;M| z`|kPu?%Dgwisj15>d640%z0_qYXA})N?;O=s{N~kPE^vjmgFq~__jLKzd?rff>&}^ zz0la$n4h0-Hk+%fs~rx9!C+t*CM6}s>2$hWF0EE;wOR`c3q2lBcz8G-5=HTiZ>rFF zs4-{Rl2ygmMsB=%^gF%ExS_tHLOQKP{AT3S7vKI`d+YDwDdXL`m2>B~tIuu^%k2_A zH;H$p3cj57_E4+zM53^_-*n8@uptUd54BBCt8aK?)!%CwbwitCpUd`k`9a*J!lqyy|Ma3pg zi6Nn&L7C9&O*#@1D=v0JH}s)!unzUQr@B=Ap_2U*`WwW_$)!|1ddV^Bz!f4>aLMTE zh_MKi1N2>)ik-G!$%bKsFw`q?PdLRv0WageEP_qM0{hDCRG-8|TWCV}aj-q;vmbs& zzv@!@c7}#TVn&5B6U~Q#id|~b!F15UTy)f7bb~)_P7GNZR|G4lCTf^hu~+&a7p5!O zc-uyr&x0bE@l?)Pm8=9)@FuCrz5InlVunjuy|_4g+=iRh%@B)*vAn|}_`KpDAR|+_ zu01QJQ+6SL;rO~DQy8@VC|(8LpVAApqLJRrKWQvWP?HhIGTQFPZ9j?2Xp29i3)KE6 zE`jMV|Hap_Rdj{3=_E0lv@?6R_AYgrVA#Yd9;?vEO5yLK zIo^y+KWI20gSh z9k0jEU@60ctkIIA4-Ub#s`cJS`KN|ntDa=59X^qtb!}HvNhTx;%>}=;LWK8Pp=Ygc zxiq!a`mnZIar8-Qugje-Zuea;dat#fi;)M^49RD}0c zb5_j}Gkd42MBCyqXafrByO5Uq&dPtdoc>P&KW=@z)pKyKtcQy)3(Q-5(X$;w&s=Yg zU3|$?03#Q&fAutG9SF6tW?|IV%W0>emRG0y)A3O{b`B*~ z33;nsfkeRsGU55gv5QigU%BG&M&P>*+4w+VOyW#dYW8){o*rhZO5fFtnjL-r&CjTl zV@c7(`tJDznqS|NBj?VqThIk(0tdout!7d9q*)A?@Q?G;;DDH$2996$Z-%mSbGx8h zn5JZ%CughKm=?byEjWQiSnW+zvr?BZcyKc)N_~a}z0e>8WxCSV`jew2NzJPA#S^%C z&d>|-gG3!kU-GFvQ-NF z>Xf~5&cD2gVh0^>=x&zRJN4vsmbX7<+mXh zvmHibo(1M=NHRXqqPQ4iRfp(lmb^->p_`~}-h`KiEN}&L*OmXDWrJ)xEICGXW6bzl z2clsyZIq-UPgxa^$2+cSR*GaymwiSohzm89A z)WHIy9z_TFxF=Ie@RsUZ%r5nZl5vuLc8U(xV&!bb=giQsas{V}iy<+9`I_OKO4^Q0 z&3}U%>L`{fp42TjNm#i_)+y&^&e4!U`J1$55|&Uh{$`W|R9{962{GBIVrfJXw1g03 z;HQGMyat-6nMk3jLb?1Ew~{o;)I@2UuuXni$+E`@}uirA#7GL;6aDjRw zsPGIM<`j;^ZU!Aw8O9E$bi#A~5oYAUdspwrP(}Q(*(Fi3Hw>Nd$Kv~rhjEz874u`XF+Vxmy{rW|M@BWpi1+_Q3aZ(zr7UO7s!Pco8q2+vf zCzKxEB8?`^%zi}7h^yt^W6XL$SRyyw*DjHBH5&Y0&SF_K=`XZV-sol{LbFEPfk*lo zoS5n|VwmgVrC{xt#pO~pxokkewQa>?S5FwR|G48Cz{>L~)Z|z6u|~kcLMBcXkU9rj z?oY?M7n-P(!vC1qeLN1;yf_+HSeL1^De2Rg9IgMR?@ qufjM9c#lOW8JN_B4vu}JQD1njg=Kv0d=tBB$a!JKvZK$ND*gldHSJ&k literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_27.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_27.png new file mode 100644 index 0000000000000000000000000000000000000000..7c90fbb6d813ee2ca3c7220e00d70050e719f6d6 GIT binary patch literal 5205 zcmb7|XH*ku*uS3{5(yxNDo8P*h!umb0*Y>;h|w1n+lq>s*w%F|;I0&9Nk%MyxCTW5 zMFcw*h#dqWp(vq=Wd%eq30-LkK}g7Co_9F^kN;2ar{6vIdFDBD&YZcP>z;(QYq;j7 z4yFJA^OY->tp@-lOBB$I$SAw(E+d1oZ^`N<06Y+0%QEEbQ)%goG_%jE+D19UnaLP*}{*loEA0PEV7%a&}6YU;}{ ziEYm}UFP=bz;OxOFANW=JKB)B_1c;w+OGVPUtB1(z{a4a0_Tn1eJ@ikGxo8iHE)Eo z-lDQ9;a0HN4)S~9b9^85eUc~kwh`{v)tT}YtphnmoUKGMYF{}~TH6SZ>4Hr8t*!D+ zyOH(|Zk0o}wHV1%u%}{c76JE8?pp`hLa?WkTk0TNL?(L*Ru~0jHNxc}F$%1xCDW&G zGUu@1cHoK0g%PG&cW8n<-)5HeVpw>XutpU>Vy`faJi6cxuxGnh&jPF$mz!Y+tV&-~ zYTm&jkbRb~*{vAD<)+v}+Tj{QW(MQFt0Jc18!}rZoQWB4pdWl<$B7W^Ig90Ok2cOP zg&82NDQkE!2NARsX zBS%yclx%?2)aL~>4#rsU`_AQdaHh&Fz;d2m%R9lCbe5S(;hbccoG;C=0_FsZn$?V~ zRT>K||BKS`Vi`kik9}D1fa+ust)NiHI|^t?Gh(syFpw^|3>TX5!wpgM=bFOhSe(J46K_SApgg}Dx-h= zHD5E@pfv7UnVkp2wM!OE@Qc>-;uz=uV+^17{3uBipB7*NB86PFSKkc&VQM$U2}urln`S$Y~hur`G2gl5cg z_dQ?ULO<&c$ORcqog>1#RWJ{vtZp(C;IvOh=_y4wD+i$!=coL}y3dAEJl+E26+Gl! zW&AW!c;`g#weIBhf&7*Sg=8x{s3h-IvHpc_oyOu|+6c{~R&?AmNpD|jXvMRSPHElr zs$YMIEdQc8xDN;WQ6`j&mPDx=?t|TG|IIj5OVp_bAUbSvnzs<4$#`qQ*LnRVkNz<8 z^yvwf8siA-56aWKlWD4&Hc4{6XhI!u*&9h?3qGS1-Ur8* z6JNsmH=KgMAd6_9{_A!iu-wRY9fl5p*XQ^Mzl?}2fQ=}nBpKDOk4aE1wgS5LHq zWYp~q{W$UB>um#cg%YaQG-Kgn!P+kNLql@tpE$FV=aj3z*kmFuJ;ks<-juXyD=Ea2L4;(o*0@(xTX|&^VFk}%k&_CQ1 z!3U9mRxuNsGEVT~7i=^BhWdET9Myr<$nrLpC)OXoD}2IG{)p0K^paZf zrg8QcC0U@r(?WQ9yqAY?4)R>&cG0#D+#0mAk{+j@=DjwyPnDblO`a2l-{(A*;sKQR z&Lxk+Ozf{nFz}W;k9fM9^F(K$hWV9l`H-rJ)%efS>vm2N$I|KsW?@GXD|kA)0h`ZVEvz$qJW z!{*NtURhw_DzHNyiL&v%xkkHNM=YdPsS??AU@JKZ-u5L;0Ne0kG|fm8I_0Bqw%~7M z9+yAUi&p+N)Dv4US9oG2XQ5!4I;fR^@r^sm*nH zp4p0;P*+gi71@W*)r8Ra9*Pks>a9*63r?VPKlgk;)GOf9oTBEyM&RIjz_uOjqzn{YkwY(Tx( z#xpvwMB1bOr*xoaWzv}4aq6k_Gbt;p$%ovNytcCo8#6jA z$7I)bqs}p*lNFd;N`uz`aR9y3@qh8TUh(O`TH#W#=UGyYR?f_M1@a5{ofTN6PGSeP z*wx^NweA0(&Bf&*7d66}AlJ2#Sd-n0udqd&ug6urgE?UGs>NP$4JV#z+%`~N_mQ4v zOAJt?|Bd?@<>0!QJ-Cb`GH0^MlpZGaFIVlhn&K4E=d5sLKV8O2HRoXP0P?8HlW8t+ zpL9lZ%w^kH1G|fE-A-XjMNZGWZY4rn?S-4Pt1-A(DjFY<6oh7#h$vj;8WU_Bc`&T) z2idBV655}yaaIX^^hjfRDx9w^*+FS(!Nn!;G?7PFnX5p{2l!EB*2T&cK=Hv0NfpX&g!!`YADG|53DyO|`tUjE&Qi+Hlbf$VF+=4cogw0!0P?VOShJnBmCJa>kMFh7Qm!Q&uKw}Ur zIK=~Bx4kzU$K#7Z)n0fNrxk;OoBej}+-~aHxq9mkZo5OiYB053$iiGM;i(^q;C61~ z>?n1IxKfl=!S~mV6-ix+m<=U{tGJNHeCK$-WosF^Q+zP`TLSSEk5559ClCd=gle(N z>gmBYn2|6D-LN%>GoSXgTDi7bfN}Fqm9jDbrJXemJLE9J-}Id7 zl+1Y3{dMuR98v5ydX;GIP;G(n^XNGP6&)jX9AW54+NR%4=lM#+V08bE;p|NcAAkzD z$oTDr#@-{-`4a>zWLXNq<6^~BV9x&Muj`8ojzwViwYAj8H(J`#d5G+7=q!Nt6^>?# zTklU2&^g zH8WwxMr%os*5!2Qb~t4WwW0|5m#=I9x^d=O_@ zk~}=<>_U7?)3I$K72)q}&r64uZ%8Sd?B-V7LT7%_X5wCkf34)R4Am7RE*`HRWNjjX zWTN&vb#;BApF9o49V85_@8PwFK~*I=V1|?>NE{3><1%~%CYw!_{5CSx6Rt##Ueo^m znYTmWo*OgrW*WY)lkJB2?H}HK*>JCu+oa0-_M!}~6zr)L4ON9`}2luTx4Ycf9*l|J(Y78=%shL}qA$rOn?zb{Bc4yxWM>bUTJ z=Vq~t{#GNpqj}X6a)F#heTkU#mg}SI+Ks>9WqL^EFn+G(DYed;5 z@8`<(x00r7+;$lsJ+!WWXXFurf#wG!6YJ`4>*SO$yH%sayh8$~kTmnK@BQ3k)?M67 zrulE1ME@b#Z$$P!ig_cqF5cI0eNo2`4W;bk;lwDK7I*9Bzd!KoBF&-s>W87=r|zLC z|JwP2;cO?pkt*1R^NZ7qoFC&XPD-wVtHlciq}Z9V_k4yah`8z@v=iDQ&n;CmUt+H6 zU{Z99Bu$ezvxru7^F4d*i@V^KI&~r^a@muGaZ;tW+LYg4rV8GVP}<`ZoxwAW##fS4 zQ_IA7$l2~UCai~4uK;=`4!H(h+1jB()gxz17At6^RWc2n!*U= ziq4bbWvz-nAG=QDNXwd{7{Ohxr87)TROz}F+LCv$0E`>n(ekV~WhDbIjrJ(wIAEv=S+A0~Vtyu) zVDqF{k{dN~!xNHDlAHT(%@X)=tj4IbS(|YNNmjYVfTIQ0Of&XJV@~Flta;>6>GeUS zzYX?lS*BS^W#n{JqvBbE)n@IgN#g>`g{y({2UMkXn`H^_)IB@6j3M3W3WjA^#gsP?m1;X?QfwI>aai+ohGr(-DxkhDyr_BL)Ol`ou-Bw}2# zllm_L*OX)<%$g2-4j@UMK(i(59KPZ;@KA%Wvy22g>9omU`2nQ)m9}<+^b#IKuv(EaktaqI1!n?;W-7#spOS59U5|9`8lg0ZKnLqyNxr+1#0EVZ(l zmMR${v*iU>Jre^<1A_nqlLG?>1ET^1%fN9M7)W)@1E-G>lj~Mm{+-b{leyt@#dXD& zzrj!IBj&qGEI-Mhk)(6ktflOJaW2R0kYg|AnR+q2u9^8Pd++ze{XPr*eqLY8dryPm zNbJ4`-|K_s36;I$tLIp7W9h5@WBEL2be%y&c=rc= zKh`{s^NcUbF7NrE@5`Fj#LnpR|CG6~4ex^6z27b0UtR8Ed{Cd^n&H;pk=NDq1=le~ zm>2JS`G1>AhQtp>g|N4Ej$5bd9`a_?224^O?C|UDP%0Ba2qr{d>$%^G-OFdnU)JSEv2t8SaO%7|-YE zdY@g#P^UEGwL9moPluT08N$uD)7uv8-gcJzz}K^fcCO+6-1YvKn>>Sgdeh1GLQmBH z-qx>RnDI9H$?townG4?kP4HSj@%qM{-=E4c^lNAwU!Nc=|Jy{Iq5qzM+a8@0=6~Al z&#)dS?moOrMzlHN+QXgxpBX-!$~(xhZ>~)IpIdAU`s;blsfY8_pZ#9U$IkHAam8$l z1D}(`XWRKdVtAk{@XP+%i;4%AtosreAFSQp_T^Hd+4AP{OVNEXObG?N%azajDdd&? znfdr&mb2^u#si0d8ERltFLM4F@T`Pz3Xcrxe4yVde9p%l~sd1B^c~ zJ80}a-1N#Tx@|tgr=|N>T>Nj4pk%?A5p1KgZHCx>Ege2?eZ8N51M61qu3$JGni#BG z_+|C89naVw#Oz!X-m!YupZww@H~#PU57A3eT5(E$G2emhq6g2YH(mX1YR_OVc;@S3 zmfX^Zjr{n3<$sk(Ze+eK-BXIXLPBQ0iqM(J>iTf0^6n@=d-Qd$@`L2s~Z=T-G@y GGywp|;eT@g literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_29.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_29.png new file mode 100644 index 0000000000000000000000000000000000000000..919220491433f7e836b5e3d715b88ab04a26d3bc GIT binary patch literal 1984 zcmd7TT})GV6aer`DNtot1u~68u8l5AbRaSZ4DAIA16HL383T2EqzKeG3Q|~&!Yy=& zbCcqn$af=?q71E|6f9x|hoDrt2`xga6+d8DZ(BfG3Hx&nRX*YFR2J5_ynhv|1Li!nwe7tF z`LzZN;-s8tkE=9!!AU6JZqt`^l{|J|?z;6%cotQ(PMdV0CAw4j&c-6{cxqK(If~&k z22EgSiF(G1g$V%>`?Az|eGbM0N!U-ERD@L z5KsRkLIrO2FPMA0rc6_IdcaV0pg1u=ALDnxJ766`v~v$CK7(B~``hUe`mS5crt8Zt z_!x?$#fdu1#VK2K2CFiY+I=2O_qm=e9u8o`y?TOSPM@sqruwnq-szM2Nq%{Gt4I9p ze3T-B?TNWU*2I%;w-)HxVf@oyv`5dnKebzR1$t(VoShNIMeyhzn!;pZ~u1 z^$YL{w0Cr=7y;9d^(ne5A7sI8cS()P9{5OVtZ2(4X*_zX&V9*{_|P~riSZ))xNl33 zC8HZUnvELhdu1OhD<$geUmduiTH?vtMQ?kx|BVa(PGEa8(f|Jz&URdxqUDh#N~nqM zzwj^(8^^5}%Gp!;s$t*oNcMGIp=8v;bGWQ9SCNyonwh-im;i-bZw_uD~Q z$w;kao?1?Ld)&x8H92KO9+|oTYOHx`3jbB<{r{!rhO#Qie^Yxws!lsEdqa)YJZ7cF zuefjIy9a(QXYjc6(@_(s4`H>_x{mPsP9Bc+T4J1A=fN&2ec-3&%qNzTJIkUSz|QEp z#wrn%oP}5Bw{~Sxhy5AwdOhLbbyGbe^WZSS%9Xq_sD4Lv6O^2TKaBCy8k;*z<1dNB z)txm70(L``VaX$K^VWh6^48&*3Fjpb!Kou_kC;+Z1m8rQ$$V@nLHL~%^@gudmUk#Z zeC^(;Ki@vOYs)#uPgCGt^sHW!aM3h16u`UzJ%jBri~Md=$CMmOf!n%BuauB#>Ci=* zZ_~IX<1{5!#KUI$+tR7x@(x20b(@>#7ihn_Yb2(xDt$lCJbD~{ug`$=wACHq)$ literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_30.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_30.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc24837636b0a2389850a4b6e72b5a33dcc2378 GIT binary patch literal 2846 zcmc)MSy&TR8V2A$1V|u(paDc|2~eR*kwp|3wg@hamBk{FEkGC)9c0xiQ3#3AVsXQ^ z(*i;vS_K9e5)cDoNk!O=s>p=jK2E#kqT*?>o8s zgZvHj&GiAmVDDddg#c)+T(tm=Tp16`Hg>KI?IXT{z5um(7*(9k%I>m1Aau8*qoYJ3 z5eNi094lDyIG+VyS1|2YemQCVH|I0AUH*3@`$% z9e@VJpS7^oBVH@sO8u9l@wy2H5Hu0ZP0q}!SVVPyg`TK4g9xF?*i)`7eSDhheg5W5 z@tp)c$~s&xwK~}6&8yA-uu?aD+ghZpKR87ROJtzJTjDEAudwH5c1QgOIG; zZdFhE+2rxvS~?SO2;(Ug1nC5!^AJbn-Cj~bpiTnQ6Jf9Ebi;dLS%ZQFkJLA$n}wq| zxbM){K?+0R);J&rULO0)l;-Zn&h?8rtg7jFzh_@Z<;24Hjncl?baSUQSh&vdwiUT< zZYM%{Wxa(}!fDykI@IVf-~BdQ*BC!*I7|TI zLG6!9(RI>^uMHvlgYcOu?ZEU&nguvKwPX3e}0}f()a(9zc&7y<&HF9)1fU|gC zd+uY60%-vUmBvflR|rzVG$10pZDd@ssqM8FbXjeC5F43}fp7oV!3cC-Z7;!x1*yJ`Ms9pR)m zj}N=g9e998Jo-MwloKD+FyvUm!?*m@{7`62N=_?B?C&_Nwsz|mw_VcKZ$}I`sFB4z zn&it>p3rw;`Qzq_T2YbS&)S^m;qr_gZ8u~^m{K-t?}k?)EK{yDz0G^Qt##-5ec<}i zCs%NER&ImjL-nbzRQvX6HDLLW^rfmSCEnT$`mDy-iASuKNO5n)p^}j7Y-7T-Eshmy zqE_ZahL9eXpFp^iZpqN;N=Z~9WNkrT+-1wGTy&iVRrs3fEb9TaY6t=RHPtc_v&m!L z2M6m?Olz>dv?*6d$WJw`IUH>kmX)9S4v}`!He40Wq~4}4BXCefyO6Sx&Oliwd=@mcIBU)E0s`qS`o$;_0*U| zBkw;++NPUf4uRy!)T@{zyyMzUW+=<3fwS~ec4>Z8?2bFJlV|BEc24-`dXy#q=EBi9 z=*eyto{nd)?a`*gz{wjvHBBDW&(ri;9AdloYS=cuPg)!ynnb`?);!;;(lWv=-`b<; zW#m%e>G@gbLGCK&Qvp2Jm#_TiZlt^g1t~7#mb+s2AbV*=^KBX0xw}fhcZXOE)9#C0 zRz>p`B`nrjhcE5A_8EcwDM&Z8M#kD4z33vDhqSSTu`Z)+`6=^SX-f%Xk^P^gw`DBt zAwbv>W}DdN^Du>wAO+4)d1r&S5H;FA-}n@+d#>c$SqP*)Gtv}J`shfR~<_-mh zeuWv1jWJ10SzX_{16BY0RKxaZH}aWwQ+x1|^%?C+PH;)$;Y;dXt_4S-Q_^WyMq{ML zWw||(J;XpV9<4P0pHQ)p<_sj;Yk9{L_^758&_krfsE*R z=k!3~?9ON0-=p(4bym1JVe+cF`U}(+I`6i-&3nb~kDw`;=(eJEbrIA0y<*cC1Bxg| z7_iV#YRY`pdJG;Npvj$k>l)piZV8Z_EepdPZ)W7T?@^A!3OE9$a&zU-YP(+TRtHc3##Rt-zE!Wh(=i!=T=8&5tk<$vw($76_adA z@5qAdI#?(%O5oX3U-bJx-WJ38#Dmx&JBdYR5sKlQfq9@@|4!t5`SceU#*ZJJ>wRJ( zF1C@pNKSs5I%eC|M%15D{wJu3SD-xZeE9#vv+sUt{OiI^A}aZcK84Q literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_31.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_31.png new file mode 100644 index 0000000000000000000000000000000000000000..cb08fec4b02c3834b6788cb42bcb1b757957fcfb GIT binary patch literal 2728 zcmciETToNi8VB%i@12AMxyVHfq7aL=s9-{+6a~#zsh6r4L@S&K1W-aNn$!!>3T8`b zkCiGM6s0I8c1l%{LQ#PVm{?j7FMv@5xg~-k7$698O|th%ojH9uZ)eW*>HB|c&04b_ z*80u*RuHt-+H#g909dbI7q|rgHAfVfn7P#aH1CeN(8Mb@tpxZbW12CFZtj-|Hg5eW zBO{}@xOnsC%^Hoy&CN|Bku)?k$Yip}$Vj!%tzNHJDwXC%6h+Oj+b#sK zU(^vcwz<+ zfCC4n0~2WGvmt*+TYT^ocNbjpIHQgKZnSc&x8sMPR99&0iY`cW+~Wtl?dd{YOy1r) z$mu>Qah*eIcBh5|FX@lL(QNfBU$F8webCfg>3j#+Lv>V_m`X?7fY-v;UD10zwT7DH ziH-<<hnyqQxJOhK@BsaEQ7(=CKq!c9_I%RyMYZ{_8P|FBxgrhLSq0WM4;d$KL^Zn(|GqI z%l`^QFr@v%PQg}5M~bflK5AV1tHW$m6}$*_#Qe6*2~jbK#8VB+;=~N1XVP{qzJds~ zsK>NTJBpYBE6(Fv)1WaCjB1p4*`}U=G&jaB%uh$FTVZ*Wq18DSf#3#WTr`akFFcs* z1OcC86%80Zv_`O)2z~G4!8HO;2)TF{!#k`S*&n8^LZ17$z~x9=J4;n_pZyK%Ocv)c z>ncUBy2L+VUcY2IU|K66l_!r-wCu z`Q%Jc=qy90vP*a%&RY?+{kKw>C{WCRf(XQT4kOgoir%~;w(giL@T;W=ZVeOl0sRf)P=XJ2cZ8$=PNw-V%y(?5IHC40jgkX32$-~VN?=n=i zk)5lxt011#r!YN3P^mfaZQ>sx=9_l6%Ataxy8VcHc93%)K?7^b7b}vlO&9J+8d$S9M-?``N9XDN_B?%tOxE$XwsNWn;>jtLI;vpNN)tEiUa%PqI%6SxlE2TGqyL2g+Lf#~;^d=R$saYy(#~ zR3l0Wy%i28wzSWB+H1Q%P&zoc?N$Y!?ABMBveWOUh?oyMoxTw&Nzu$2{rW^RVSkG| z|2uI1KO+@~UhihX$2~W12u_TJ=X=)I&Vj2ZI?t*H`Dy zu^nf_5MI*Zx`BKrB_?{@ukL*4JsQpPBG|2lg|4tVyZ=e2(AOW<^zCSUZp~a01G&XT;irkC#c~Xb)*+5j>JV_Em^oj)lsinUpg_;b_~W+rZtPxjYMEXKT|O zJBV)Gplh^*1#6YU3lS1bNv<53F5_j`y42u%CB1sLOcAKHyuj|Z$#=^#V zr`*A(-DGTYc?S-}J=nAn)6@S+pPu{UFpJo*A)j>*#UJ(QEA=eUmPYSIT}A@@-T}?d zvb;ZK^Da;AMwpwVt|0FuxkYnvE^)x;Sr}Y8Pf2T6{+D-u!S^<>X?UD9atyKZqk`YQ z?#dtBjhSWExfUw_W9GfQi6t4+M1rkD)&Ep!)@TR4 z08zR~G?`BL!J+fcMAcP=5A@}HNeGNC*&jF~STX8-DqK=D|?Jlly2)L>jvXel$|i-%RS9L^;a6 zh&kM}_qng^u6*VIxi7h0&gS946kGy@uO_EWZ*(Rkt@nbLK%2**YCya7hZnWm;S2AR z4dpfK-H8#=u&n8||Edm%(~ui}wSPq?2IQGFMAYQWtYDh<`D<#^{7(@rdu;rkssL5h zcT;DU(!n!B7JTtYI#OaVgeQCk$wqyJG10_in6LVwkSER~ScRrOue^A71b1mEXLX0h0}xrR?fbDUMKY~=yejaIUFqkcIp zd6q3c>~ivu=0RphEn4Doo9bB|DQR{A@#bJ@c#pC z@yZ}~C!}4(p)h7@<}6;YJ@IINm+~;bWFj0To`;S3pSMowXK`A;em1^V+w}sreCJ!z zv!T@?AZ1&e>-p;L8186VZ_LzeV#&`xJH~QTKJqA^|18;^NIF|7w2bU?>Hk!4x@|;z z{=t#S3q6L3<@G~>6)#AkQ7xCnP0Z=Dfxr99^(TGR`4q&mUYyt!m*8(E7uJ6i6!`Nh HQR=?|?awZN literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_32.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_32.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5d1f7f3150cd6a1f3f8c2d0950c5dca9777e3b GIT binary patch literal 6577 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 MO$+cXo+{qR|l|Q&xB)O%v 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_35.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_35.png new file mode 100644 index 0000000000000000000000000000000000000000..290a39d880a12c5e3bede1cf11687f823c261d6b GIT binary patch literal 4721 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 AbpQYW literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_36.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_36.png new file mode 100644 index 0000000000000000000000000000000000000000..638004f1af128928fec7fc51dfed55aa69dc7158 GIT binary patch literal 3569 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_37.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_37.png new file mode 100644 index 0000000000000000000000000000000000000000..4f44983d7f913c953a95bdd0b73aba0903c65a03 GIT binary patch literal 7650 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_40.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_40.png new file mode 100644 index 0000000000000000000000000000000000000000..d921fb22599378ccd794d154e1f10ffc550b404b GIT binary patch literal 7700 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_41.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_41.png new file mode 100644 index 0000000000000000000000000000000000000000..037b0b89b8c8509f2b4f2fb80262a6e55f88652c GIT binary patch literal 5312 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_42.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_42.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6c3ebb628f131cec94c9f95d08360a796c8a6c GIT binary patch literal 8884 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 agk4Pe+anWMAFqCJB6`|JSIaeVkN*de6+?&s literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_43.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_43.png new file mode 100644 index 0000000000000000000000000000000000000000..98a3b88d62d36e6b9e6e2ed9e10b6eed1c0f3eff GIT binary patch literal 6324 zcma)Ac|4Tg_dm}wV;DOAJ!BY92((hm2jwQc^(3>}J zG&D5mbb4N1o{^D}o10rxQ`6Mc6hA*dj^k{*b6U@00K`-+b{X4;^-Wy+p8iFXEB4!< zhsqRQlWpCQV4}KdOo?u? zPir8~FRs7F`9wQ9eN<#C2=U!LW0%9_t=mtcdXTUdye>KD%0D#)YOi%*>p>V!@?z+I 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 Aq5uE@ literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_44.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_44.png new file mode 100644 index 0000000000000000000000000000000000000000..2746dda80868ece62fe8c68085ec5ca1e38f7fa1 GIT binary patch literal 7096 zcmZ`;Wmr_-^PjuBEVZN{sUTg_1_H96DAL`+(jiJn3vvYv6s1GTHIP(LL`hi$NfAUT z5#6s!DPo|2)cvh*{_p;;X6AEdKIhCl=ecvvxha*Jp*#Lm!n9*Tt031Wb0SlfX zI_^sKFa*I*-%KCiK^psp2NT2Aur#$bOiN3vsj0EBum}zg{_x?0n3&k$;9x>Rf{KcY zo}OM?TbsMP`;8knzJLGD#l?kT7$eSu@~a&{MD^HVecR}_--_pR7Zg~|4;1BByvG89 z(`F;1?1(v6(`nAL-vdmZ(ur16#sROBXkGkXOPQ+WT{Zq^sQ04(IP93Vm^12fy6xLw zCOm3+f|+W7SIs1yrkRCGP)DjoP=rKdA=w_bzsqqlv=WIXBl*k)`g?n{%rg;xd6b!k zNAl0y(l;Mcos>zdss4kbhd}z@g!cP&dv5LPz+a$J&3?|iN(v3PW+Nxz(3coj z`28GZ{QG+=3P|*xW3wI-Qz)VINIU;263%dD_!f;O%Ng|5MWz$2CqE+ zAW^#lPXQRR;tcUbD0iJ75^G2(vo1(Z{}|E|zeie4$JHr=&K{7AP03WkA1p-`Ky)|Q zPP;!AO?M{78J#oW0cm;gp4JPIq^VSGzOlp4_gu8+01jz*v(-I=-itb}rAhrAXpf_v zPQS{G)^4oWxh2V+bq}9XrOxJf-p*%26G;$;y`Dk8XPgyXV=gQW=Bp#s-NMnb))RJx zwqTcj_e&;~E~ow^WwM|tXZ?#4jkt1fI$n1Wpkoc9>AJ)CeV1b{%*n$X;6?C~@p+2F z9eXdw5a(DxP^;%%>TkPcqXf$n6^3}ryLkACg`{`39bKEb*&(s-^7V%~w&43>W#9be z-z@Sp&4vRUXrmwfp*{CJ7p_2not!~{9?V^fex}jh;*K77eZ3`A@`1Ch=Kc4XtJ9(K z?2AI5*vwhsk-!pNHhiApp`Vzt)yX=?|xxj_cHY^mFWLO~_0mr|2vB>gYL~amInbxEI9&1D#&GD42 zi!ZPf^0fVlYf@mpWmuYQ;|6z6GrYO-dDn`-whUCUL*FX=Qf*R7fY#R*EuYSTcB?Ub zKc(Xgm0^PiW)fuNhh`9}He);?&YJQPAvbcNe{a~ZHIP85`QOY=Y|)XhrNX48h#gDE z?b!#f_cBrzT^`lwT3^|V)cy)qmZz=FuI+~Eji_ytK-)+VSgL{AU*F@a&md?HcFKEN zgAw79@>2Gni%Jy+l&!YwW^Ihv?^D%lO#giRHZ9-o6LqgoEMjs~#!b<&C>qaoVb0Qujp_7FO z1@eW!mxx|RD8B!vijP;v|Cs^PoW^f2L20S7<)V+!g`2Tw_$T4g!=EPwnqSR_&9-7# z0ll38tXvs!E>_0kw`J`{tVT_AdqNg|eb_4qp}dwa&9>iE&J%>+$Pe9-)&qH0Nbm&& zu_@nL|I>{whCls`>S2g>?5T2a(q&?A}hg$%C zLkJxjxEE@K;0=W2r_^6Rls*hpMmm9_t}KroNZ<_qgltFF?dP5Yx$A@5Gx3MSimy1! zD~=vE0_VDbe2lzvSN^z|%r76A9Z)otZip3p2}8)ta3#MrGNB%*cyvi@XVW1iA0B@a zloLK{DX6+BK{<%~D{{u$QXA~S5+OTk6ITVEFJC+sUu1`X3EehHyHjGlgNR2JR}9$O z%MEFI%B*Dfm^gp-_bJR#mkf8~I{tuTU&YK^SlV2dLg!VZAh^Uttr+6$*Tb3U{igfy5kx)UX2&$|AT9$(X1?r;ZI zm__`%JYQOVxO}RI`QqJW34|^MNhdUl!&CLL&+9614~xmH1%CB{+|YtL{{1$bGoEeD z=vJ+j8pMzJZl3&E82sZlu1w(E+D$(6iSginD;IO&*zst`UE}T&5QH0YaD#U##pB~l zl}!c^%}R5~aG>q<`_dS<&^@cd4JF8`%Y5(OPs87R&y6OT|GCJ@1qmQ`+;NIY3F)%M zlG500*YGqhNIV$7vx(LGlgH_hnu8FBuXUR5l}C)sy$^Lqx3HwL!MNP78LnVW2Mv8@ zC*R|VMi6q(GQ}`LS1i)2)-r16hDEknUFBl=9h=}e0%Uunx#bnfBV`3`8QyQi@1}t~&mt%uL z7aj9Tf}n$O(kapbX@u@mJa#MxI#ufVHm;!MP#eU5rpS_YsJe6XfeJ2*N^2{&(z?k@ zv%-U}!Vv30uCujIz9$<4Avh49f9 zpt|!@v1?yf2NpPRMN+J))$i__vY5*cG}N$$WJ=LGIbrpZhWJtAhUk!=nm`j)$la5~ z5xap+L>w4C>%qflHFI{HFmr?h4sNa&$^j~E5y1(+S=z5j_?i)bDih?mG=8T8(>2?E zP#OyI7dnklp8;RtFZxVQJ;K`%@-b9F41U#wZ+)vj{{sv2lp+^$ z!Gy~C<_*L;$FrLcEKiTrXqh!}2L(uu<}-?fGj&3^-|rf=N{dWo1}P+0O9gJ7r`seJ zZE>4vb>kotynHc}MeZ}9+X7-~Yo~a_3>c&$&>q|(kluclhwg2Jo*f9bPGd`@>Q-Ce zib$-gtUxa3j@wihGL-CKM$D55J<14E)TNV3*Z2za<9CqA{esh`EKmF3n4&;1qpF<; zCi;L(xj2qqeQxsg2-5G}W~>%)l!?y8yIWal!}G15j2akeD_GK^YF&qLsWEI$7YNyM z1jRVbNPS*XouB&sL{saF<6G^E1tb(>?}(8?^9ZQau5tC~j$$&05>jB7n=;R>-8ZDO z17umt>o&|Iw}shKC_?3D2;67})MbB zj~Pwod~i9SXfd<|E)o3gQ*w{9lw?n{OT)zkzF)`pXMp#2ZtX_x;S5~JVK|I?p^o&# z+0qyM)L!FiPv>zP<5H_E`(thC8*057+tDfJZgE~(e|VcpQ|c8mZN|uqMB9n5unw{O z-q`>7CGOCoiE;`uzKimrVRWi<2@w*v(_L+R?w1A0gmNaO<)>A|W37~P-_-DXz=a@Q za#^YFjN5xAH4{q0yThEcE^hA0JLh8##@hw;Akk((-9MT?%bNJ{Fc-}P2LV=oB^Esp z5NIzF|9&uvO+t!%vZSp1N;p7?b_6@?tHqX)_YsvkVi`zgT;Zgwu1o_#j#4tVCTjW_ zN#ViK#Bg)7kJJWbeNnzY^wv7JZT7hEnV8BZ{}hBSivX)-;cSIw1~c*_2{j%XY%Q9- ztwBzV{m~x!fmIgql%g+`-51?C_9(mfCo2P_7DbsN^+yjji(u0cEo%^oci%Jt?RQ1f@W56Lj+XlI5FRzYcIUYzwFYQDclR7OswiXFFM^Y_iz^=RSrsd2c;LroxF6$F%((1HT#&G)U z9+6Kc@Z>CHv0I3Qp7BLr{h{E+Z|Lvro9FmvKKN(maVT~P7m`_9`@R*GD-2AI zF;Nq?#qRlW^(3BLJM>j1twH-aSf;;?Lj3&CoL-KAalY7m*-;L#s%TvzIm`-z#QBn% zM&&_uNH*M%|7l!0>UwV*x}sZjeRD<%Pk!c?Q1q5LKj$1j^23ko;w1p*SfM!DuexjRBVx@$8wI_fbiRxO)Ap z96sUT*S!LE!7wyFet#pE-kQK}t9$h-LZ%3T(FDuJpGQ&O?#r@{BaVTQVBJTvP-(6g z$RcbAQ*SgPMyyl){Y@XwOX(AN9M#wLzUlOIW$qCW$RKD9(=r6mN9whcueQHtl4@sM z2@{u6_)$&S9W9HaP5%wUZw;x#(MPbdQ-l&nucoa^P}+UB_^gL1(Pl8IDE7bgd$w;} z85h+E>Rk^LrcC6%d7g-E?&U~iE~J%DR{*wsHFAk4m53^;@u;0KW*Xk(>_2ThwwR%P ze>|Mpru38~dZSM6t!`Mi0Y}8$3(`X26P_d0hj<&deG%Y$JN`x&QoN4Cp1R8Hj>I_k9Gw9a5^q$!`qaT-6Qwmc$fgH$ewzX>%SW-N^t zoy*$OSGbo9UIrk-u7@B|h|%nvrFP)b{GUDtr4VrN8e)9D_F*lJ^qZllOir zn07ej#VA_YC(*TsQ`e$#0b|2~10KPpx6X5+w=+d!wI!jf zG_eT{kW#V8+`w3A^TMQ#(n+aa@jD6AnOhi8UuZu-ZK;_eg~@-h9ca4H?D#Fg!}p=F zvYmppA>4eYos{`a%o}q)1hmg%`yjC?GF#zBy|w7Ml`!UPZi;T6c(vQJ!PziI4QsOq-48)&AxAEs^1jrRi|IvQyA&AI?eHu!wfqmWAiKy1S_X=~1QOlP5y^cjiJZBYlihbuZUbXyo6FX{ah@(3p`-@5HK{mF1 zo7j^nW&1Zj-25Ze`6*hDsqe6as0lBGayER;^@^ZLyr=y)OqNH4o%VvA));^D$Z(j{ zFgEyFuy`y??@WjU_A$Uth<_b>ZY|6~ZYR-L|2)qs(2U*0zO)#|`CQp_o9r0xw=MD? zS;OoKeRN>QJ~*l|Xjc;MyorVJU&Z$9(FW#T@jM0joHeZenmO${_NQvf7FAJsHIH2# zlts{#9q80{wWoc_V{_O&{1bV0=L_AZjiMuRS#17-@+It=` zUUrm%cRn>GI%(Sq`)qxvx}|;n5a$-eSXJBoO<0Mu6NZ!9!R@oh3l|&nENo@6a$AD& z-C5c);1mZ!jrG*iNxnAbctUD(l+eC7*1hpdt1 zu_xNQxAb%^BW{`9y==bMdpyQ zwf_(7I_Hcxd zp}?P8dQlH>`c|iVjmQUa0hR5XVq!nR_AjhDUS7(UFsf|t!HxDx1`)tJ`<$4VX9>$A zmKAKmYk@B#sOK12&1bE{?Ga|-{$M^iDQ-jB_iegq4ND7(n9#G$)O4U_d6;HKdPII@oY=NWc1=BmDMWxM*<>F)W-fQ8*tHlOJ2Ibc)2^^0H186s=(O9MlcE>7{_#YeVJHG2`s59=$Vj&h*hUv0&%?}f~7e>~nr zGLA-`b)F0Yg1sDrjZDe$#7+>%u1f*8$1yfU&^I(*w%!d>Bv3N5S{Zl|Ctjx#qYr;v;G*G!)Sij~j0+_7p zLvQlU5v&g!eQ$;}4}VGU0bA=}>A**8?m|#M{<^2$8vBZ)q@OW~FZ~lnu!D`M=$hca z_5<;V|3cWaGkCgvbN1&^c(Lp_a1V)&QT!C)O%4E2$1~H~m(R2bgNGJ9$D8)c?c-ip zKH0Qb7%_FRNeytPX$g}CeLm#Bb{{lhxh?a`Q^%2w=71p>uV2gDH=?2!C_*HMaF%b~ z`t`*xpaaJ1HWi&B`q2NPY&Bqc`14m?*NKg(x9Z>-M!u&`iP>IHq`eH^;oeheLQGXT zn~u~<=9;&-Ru~aUDphZZWLM5|bE2lm7`q4*MlO16m#%VpQePy*Fn+}!;iwtAHrf6H z##68RiPdh$qUUQJUaG?0?&#$J<^LR(cCYtVBiuLemFdV-`*&4%oI7Bm=7-b_PT0HoT#@W*?S55OnkQ=ZD{ zl{0n(Xp?<#PuLJvSs>X}e9t3~+eDe07W%&uh{^b&?p60rCTlaE1A%mk+u>Wm3{2G! zNp~kI9bctReDeSH{ve<18f8Si8%cK|rmB5|Ba?EKs6$ux>`jQGyMDKN?jawL-;(@$`B`L~%tZ%ODWh+afa#5&kC40FqlCp#%YjIJw3Xvr#R}`{G z*+YaDyX?!?=O6gaFK3=}=FFKhGmn`$XC}(h+=z*AfB*nYCdT@w0WkYn4A5csNkiVD z=6!;5(>2otcoomE?S$XQ%9f_q1{M|;@$vB`B_-b8-kqJDqobqp^72ALLRnc^j*gD= z^YdgfnT3T#M@Ofwu5NE{Z(nYEfqDc$7)~PH9zZ{IulN$=KPa=*+vQtX9P(7Itdwc8PFr5kI!$xef|h zcu>xj^Gyoxx^aMIOzvLm&mC>o1(shW`3R{IC%o27e~x*k152%_FDLI7T7^jAQG}$D zyi?J#dmma6+EYN{?s7sb!$%|7x}FfwKd8%|(rGtKb<_$mOyh?bEZo?;IhWT)@AD!) zHxY{_62eCZW%>SCDU~|1o~~7kYe7;K05Vp7`LHXMI`arMSaF*EzYqc{N2A0y4eiIkjwKWI`mjMTKqbLQJ5}K9?u7T z+8w(W9wnB1!0KQfexk`kyOtZZj}$9j>w{e;r_Vp{Ys#d^Uc$n|I1ERD+l-Qm7#_x? z)IS-OFU3oAoL;)3juujO#A`Bzm{SoU5bfwX|9ZOb?QgO=pPd+SX-Mcd(Xq8yn5Nb_ zGVL(_=8Kn1#@aO2AH=eyX7KOHYI@4q7*co@j^_6A?>BswEpZV=rM&i=hUSpqn&yDiN=flewLgr3yS%LlnBZ)~PV^)N zq-s;HykqX+!$Ek5CC!FuAa&qNC0{64#6|Wkz1uLoQL&C;Ej!GbbgaQ)rErK*N6#^% zakopDvbd5OKGzznsjK+lW6Fb{sK|qzFkN)X+H4Q~q{+p2(?x@4i_F?}s7%K)*wAj0 z6G0d7!V2y*24U&bsbN1f`zg*khbS_8UIz)Ht&IVl?Hm1jUuE>9w)74bQK!1UL?B~9 zmJ+>&V9~Se$zUvqw_LnJ%lzdvVFf~I?}R(1wzTZ-(eow_2=U^Ghc}x-B4I3%VEFg( zoI%FJwWL!PB|s2Mr^Ν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 Y1=V?J@yYrW1MDXg19Sc2Hq)$ literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_46.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_46.png new file mode 100644 index 0000000000000000000000000000000000000000..473b07d13aa231d494fa640e7bbc20918e966981 GIT binary patch literal 4054 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_47.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_47.png new file mode 100644 index 0000000000000000000000000000000000000000..1bc4648ecd7e8edebfebce452420e108eff30ef9 GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7?_xWRHv9tCXixDcl32+VA$Bt{U?zX$ma?0 z32}{&kDot({{R2~fdZGlIZ6RFeeiT~45_&F_O9Wi*#;5~f#)_)KNA>~_Gs~&!fp2? z*`;$P1nI|rzGAq)E4*eZ+mWLF>ma)*027$=KB5`%g3-?d&BSHT-@p9x;JyF(^aIzo zJUkDgpKp2i9Yi1B^62rCziAWPdU#t0KLv|UEP3j9m4B^0xAYfO>mzxxH2&>fcqTDyCB~q zc^Bk+W&za#hD9)+BYPL*dxUpEzQ4g3%VfO(?sHxNwGE7iU_M9oF39%??}B_E!I;aW zy#Vg>+d}FE(T`a2fIiRd6fUq=L`?(@|E19qN<}@Y3X*vb{_(dqDX*9w_01Bb*VEO{ JWt~$(69Ay;?r#79 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_48.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_48.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe94612d99a2d33d018aa59bffb7a928aabb1da GIT binary patch literal 2779 zcmZXWZEzdK8OLu|kEK0DCcBd3$nPilB_=pQp^kAOfs-X!j^AQZQw)UU2!W>Hf@%!7 z31s$!;+NpWA~=blA-+j@Nr3^Cw;D*xno`Qp%v7W;<1!w6g((=wv>wQ$?lf(BeDKkk zeAs7yw=?(5-tWWzo{_H3c)q*XElE=ThL-3iNx~Ll2|KK9q;TC2tqpz7Zit4v2R{7m%xed$uJc6S&kl9wDy~>l z^Ris|a%g@1o|^HZg4S)1e_Hpe?f+dyAicG9)kLD2=x@$`H1Wcd|9JDC=Rf|>CqHj6 zXIGoAHJB5t%_keovDHT5luM6@KUTv<=nsc!Bb?aWWYVq?^AWMe{M?Oy$3MG-lsdLN zuOvLjBMBwp9(bLLi_L#w{4_tjgdD-o&{Fw`Hhhz~dyQ^gDkEkWo-GWwnOENV z3b_H#CSHi;ybF8dtCEMr@)L)GbL7OwuM~viW?a2ExnGR&O;Dy+po3&5zS`ktXJEIp zAUG$V^VCLjzJ;Q$Ax$-}Q;U*F-->P}PS~9{9`MtJWnFu;sCl2tl1!gPG13gXT?GL@ zTPW*#P-`()88DR=H>z?np#PG4A%gEh%g8(Mk;6?#tnnhe7FMrh1>>LIS#OsAP6XaEJqE^_2e-B3mojNLN)nRR;R$xRlCFDs5Le%ekm->mv zv7LBe5Uqql{E5Wy68*=V=zBz?ni5S~sS(zKAvvvtSO!{XhP2}<(hfDq4Gs7u3E>j` zdM@evM4ie-vsOssT2&~YREE46XNvjdcE?*}6rMuY!1wXjT)~&u?h}35AHkz4%!!;VboPRY`wbtW>z@)Ru|L1nqI=NGTjb_1LA~ zD(w?ttw;ptX^$&S*1-p;3NO{~kw!#BD-(ePn}#m385&RlUaogYdqhn031yy5=TUM$ z+=~EL=r>8ah-=HuxLK9WPgEwn)6PlODEB&M$PsuIZGkQL-_i>4(KtVnnoQ z6=uY&(MTeY@P%NKPRf3~naqF(mBVg)NOIw;Q5$#Y6TDjJVx#bCag~PhGK@kyx(xt* zj~Ah^D9~bpX7l_k1ih%)dizGsP(&1J5tW6U8QKM-s0IqqEnG%1;n%`~Wu1PSfaj1C zO3@u0p|~i{##L{~)yvXw65R+@=x$MnHi*(}M0m5VUYdo|s08ZJF5yINqCDHI`Vvsb za#n*jsJ9w;QHRyHN%-cWj?Tk6w8UB)1-6zi6sL;m&IAcfm?lonBz3lQ(TYvuzqd&=?mFZm0fqp^F$;WK6K7mo5~iJ@W?g&jbd!PFR!Ny|_n z>V_V$`Z2YcN2MaujOVE}T}WNL)RrF>NW zt(HYkww6Utww6Utww6Utww6Utww6Uti&|_?FT*)vRGV>W6}lSlkQbQRF7`>=@SQ+? ziAtW~CFoCZf*3VsOj?UB#mD6Vrgn-EsSkHT+Ls9OBix71!2QHnVMe6&r~=Q)3slkh z667V5{|66p7rKlLP{oEl+<`WcMyl8_#LG}0nP!R&BUT(7AQ`6E@DN{yUL-wCv0yzskjKeD4(W^4Ub!Sa!T%{iVYK@7=0x_$CO1dxD_sLQpdi9q;R8^#xi#o9(~Dg&nGy)C4kT3GMoQ_qrC%RgsO>xJJ!=i4(uP=P J^!X+&`9C0!P_zI5 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_49.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_49.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc079ff333d954e17ac2c7a3d5c921544f55d22 GIT binary patch literal 14126 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_50.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_50.png new file mode 100644 index 0000000000000000000000000000000000000000..aa70e2db00d35a9e77ca2ce6e122e5a85e37a9e4 GIT binary patch literal 3535 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_51.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_51.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebb14d5f1016e4c8ca17718fe4c2daf484bb0ba GIT binary patch literal 5487 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 G{r>?KjO||l literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_52.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_52.png new file mode 100644 index 0000000000000000000000000000000000000000..f5df1ed8784581b976a64557b09f112f671294fc GIT binary patch literal 7664 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_53.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_53.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee954eb281c949234806b0119d9dcc62775f4b3 GIT binary patch literal 7651 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 Q*KGynrZy%OM<@yZ3oE%cu>b%7 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_54.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_54.png new file mode 100644 index 0000000000000000000000000000000000000000..201127c7d0a7ce74972c26d695610991cd9f959c GIT binary patch literal 7558 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 m4kC9c#K)VXbLJAo8Sx}&cn1H;CC?mvmFKt5Z5 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_57.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_57.png new file mode 100644 index 0000000000000000000000000000000000000000..6e77184bf0f0e8d55c94b718665beb460c68ea10 GIT binary patch literal 6542 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_58.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_58.png new file mode 100644 index 0000000000000000000000000000000000000000..6475856bd51cfac85815869a078a402529dd7778 GIT binary patch literal 9389 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 Raz7mc?5q!4Ra^RB{y#bL_HqCK literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_59.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_59.png new file mode 100644 index 0000000000000000000000000000000000000000..3a790b7a3a4f3a65c7e09eca07d4a6a5f0193dd0 GIT binary patch literal 3287 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_60.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_60.png new file mode 100644 index 0000000000000000000000000000000000000000..c05e54d6511b7885b915b85115493b6fa6144724 GIT binary patch literal 2853 zcmd^>eNYo;0>*bYt7Hk44a;DvHiVC|-pCzz*YT*5unB=cK^DE9!<-#Sn7P9%j3?qa z@s{Y)1{=qZc(rGBtXZy%wRhlkBcB50Vq9fvwI0+DK7xGJDoTJ<3?H#@Z@f9Zp#R?= z_s_HM^JbI0Z{FwkZ1(5o=w1n477RhqE14PEjSz%@Ap#*HaM>S`{CjXg3)Sn@5M;MX zo){JZACjB>c3OUZKF4wM^YdV$)2m(vLBT?%R{gfIr`~m;r0Cb-+K$((M-`DD=8Dag zu;^mwr6_z~(7{Uigv9rC!(_A1)w^u#tuMCSTswTNaqr%g*Q)yS`{(A*j?Rpaf7~6k zrC-jUo1bIz3nPuY8ON15pJ>lX)4+%uUd4QG87KL=!o$|OngcLc?13T%rmo2{} z`E!K_r~l|`k3N3#y-@d8bdmZl=CsZ?sr99rawq;>S)Xz!EMg2_cl^n+n)IHgOWCfZ6VI9~YnciB8tYQMpMxlk|c`~h)K_pCo(Fj3gVm}eBN-CeR z;hqcF)hV+jG)Lb?rj{9zVdbks7YW(;S9qk&VWjs>PoS5XXyGVvd~82X=jfYBP4b)N zBQ~+;JM=RqO!$_Njb-9At#2aL$;$FU8|s-v_c4gJ1gTZRpC*-e+n^1fIEra@Wsbg~ zUH1{0*fSh+g^;;D(!1C}@3iFyG@U8d4x@1|(RZ{D(Z$S*nyr0={-BKebT=|1CpwbL z%dGpi+Nien)H+&mXE>^d#K%3jo3Kn7EnZAu;)MaUQyEdP9T|~JRwtG3v{uMIp_<#( z2XhpzVMRKLkCot6gm@~+(t(+o5Mcs6r(9fMM7rgo)yd_>)^eGRYS6`8CUJL%#e->? zHwwy-4*4M&N7d<~m*gnAW28akk7(kXIzFE!SH$ zD^5|oF6x^cM}HMwNDho|u+$P0Q!9mTY??_HrqNNQe5iB|Dz$!KycVe+^WX_HqN~b? zp#jtd^wD?l9l6A_b~oGDu4&Dd54cNk9jOOP=L$o4Z<6J9x2Q(BWazhEsA#X3{izAA zPhlL#+SndWsn5!%+}Gv&>4ZwJ%zRS?FE-TEtUAw4=G2Oc#t4Pjx{HI<#ybCP zRp2FQgAZNl1aoO!V??DGyd~Cfo@Qg?r?4aDyDIoY-bGTxE+4wpxs8L?ce#m5ti^up{VggrW{wC>oz4$S<9ouX| zik%xd=p=uGbi~C!#&|5tgp@gRIEdrFB^~7GBsPJqGa-ocEskaRPEw($nZ(56RVF0N zna;6hzJpXm6;EOr;^ihJ+Nt4K3;$125gk8?S;P_(@^j~pFNntJHX#dSqqEP1ERX`{ zH50Nx4(|Xb`Q{aHxc630ExKW=axKkedVoFC_y0L~=?}8lve}1*;Ei5Prr72t5-C>? zsnEH4UyyW{i&QL-G*=&~SRh*09a6DCQeFL|Vu5J<=Z=GOj}|}_#C8w`wLcv=NJp3e z0)yH?V5l09Asl1~5kRaUdnf78je?{}LDI?u5WYw|2w%ECkJ2mL?%pX8;refFjfmpwRd^!4Cj*1b~jj4$x8i zX~ItezyttTkR1R<)d1%3YJi~tFcjH)NGisUr~nW>Oe1uZnIDW1Y|Ep8PYZ0`$LRnfmo?kiAo_UDTVthQ$h^Q>jq`gV2e zRk{8@6;>G9)wwj+R~uA3BKiEsZc)SJq8swS)_7VZfvxehNCI2qX_2U#{0yOkrC`a5 zR(#1VYW zEE;P*q=GR+6-{aL?i08)Viwh!D^#%5@E4j&Z~DgzlF{@fO)ZeOnp$XTfn+zGr>Q`3 zY#5V#uGF0e&!-jsr%dTbKIC1x1=za()nGpKZ#%y^@sq}Twcu|pl$n;J{kum0-oF5x CgZ~Tw literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_61.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_61.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd180ecc5a6f91b2d26cd873f00b47ca502a480 GIT binary patch literal 5080 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_62.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_62.png new file mode 100644 index 0000000000000000000000000000000000000000..d014a77e9b52863156c619831b0b9fbc4cc62d9b GIT binary patch literal 4151 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 JTRKsl^WTbe*#`gs literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_63.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_63.png new file mode 100644 index 0000000000000000000000000000000000000000..fecb6d478e32467c6238b7bfd9f0e2152b04c80f GIT binary patch literal 2968 zcmaKudsGuw9>;GU2#jDLJ5ef_8cY-d3(;etTc;Xc62R0zNQetUg7s8e1hjyOqNdRy zMym$pRjml>DiR)Hw<=Xs2-y_{mDUH@3Mz<1t5qN?D=P=~2JIXwJ^g3q^G$wp@15Vh z=ac9}pG3MMGZ6rQYm^{74gfMlG9XjnO*b7|3vblVLWCgz)a{!(qHuuOMYJqFA|)l| z$dMysV`K1xABRF_0x&f=Dm)}!`O`0lo7S--(XjXS?ay2seKgGC_CKRG*$>6bcvJd;tQt4S^{t=LfHUS!bXgYoPWI51o-{Vw1_rZJY0Mn|uOE4GkC870L^=Co&Dx zW^5sz$noea_wD31@o2(ssdJucClVaZyB-!_AFEle{sIK9foV;~%vRl!B0jn|vweG24MFMhr@aG)3L!g6(vj-p;g4BJoiNDmyW^gp(gws zIf7YZ-t8#s>yE}$>eVo8hd~jIa$!>nl)k`#Ez_MO!+KdaWU1FO_nO6yC4Joj%pUT> zkCAPdi>{c$Yi-smKLY=NK?_4z@fwNzpf+G&5X@CQrZ1<-_ruT+<_<4v%o4x4D&e=? zC!IKCqScU7N2l?+(5>qkZnll;Cnx%~26f3Ll7A3h8}DEqah2Ekj+Aj{_ho?H!tNOo z()?`{SsJpf0@NjP}8Lzock3x9rjSg!%$OJiql}O{Q;tg}Uf6zdO`hLh{}B zl?e~8B*!r+_*7lI!*Og1GJ}2!5vaaKb25;GB_6)d?xBOAT*#ui{e=DqP6=7A`U&uN zP$y(fb-RlaupfLcWI5~aq6BOJO+uEVTPI3D9JnH6Ip{l40v3QDge;0%7fJvf{9DK( z>AO$@?tpHg!qx2_NxOd5DQ3ep=HbZ z_a=0NXbsUd0*KBMFnJq@9eM+e>4<^uq;laT2dGOgi+Y}rAH%@32f@*mq&fTY&8?1l zn@1G31^fkuW_u8HR>1H1J*O#Uee?Co=b%F6!e%Z4pN}ri-P%>D{`L|jH)%6~XR<&0 zIcX<6tvBi%XZIbMw|L38n!&iC%Sg*IT!&Sz4{ROG#@V%`hOv7TkKPZ|#Y;AW?a;~> z25#9_B$HotDt{jKhfdDGUgj1RgXEynO^aK@#Pt%5f_czXO?R=iqv?h6lDD=F$2~b7 zRu;F@r|CmlZ1+;vzqE4_YNFz1 zwYLR11WOYvUmBb)no8lQjG<1hrq*bcx(A_WI=QAiQ&D1sMP%7vaPmYF(-{mfoEYK2 zAC<A zq;sSh+nNh3IR>W_<}-;AJWeSBohj}q2UUapYl~3e}a|`R^NDZ?5PgfIqcc^dhmyr;daeFSUvoB(@}CNb0Z$33wQVq zdyW*-b;z1YlASNA*9#>4tEvLgsz$p2g{ zpd6n7{`@p?3)vim6Ts%Div{G~Ae;a%ex|sEL=DCX_>Er1J>$a961RZxV4MI#QUrX! zSBhnn9lHlVY;DJ zwJ)(e`tlk48>@TyE7N`~N4)HoRrS~?{m`jnWL=`_o8-CK1@NCV Nh>G|mye3qx`9If+zm@<1 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_64.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_64.png new file mode 100644 index 0000000000000000000000000000000000000000..739c120f3925da35d71acb5affa4d588becc2d4e GIT binary patch literal 3338 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_67.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_67.png new file mode 100644 index 0000000000000000000000000000000000000000..45dd3161ce7ccb4ef6621108db25faca4159449c GIT binary patch literal 4058 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 Xo_K$EQN7+*v0Q6x9c^w{@uL0-JXGm1 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_68.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_68.png new file mode 100644 index 0000000000000000000000000000000000000000..3b96d097ff43c76559f1c783d1123aab8439ef42 GIT binary patch literal 4160 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_69.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_69.png new file mode 100644 index 0000000000000000000000000000000000000000..d185d3b47de7e929e1c5d17070f1a851728f19d7 GIT binary patch literal 7124 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 TalUu_y$1BOjkPK@@%R4+BAJ2l literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_70.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_70.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc130563ba02a59954befea0b3486448ab0edd7 GIT binary patch literal 6301 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 D|LIG% literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_71.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_71.png new file mode 100644 index 0000000000000000000000000000000000000000..e62e9595729c46e83e1eb19c95d847586af904f3 GIT binary patch literal 3309 zcmbuCc~leE7sn?=5|kw_C;~!IQA9;n3obAySVUP=q__Z4ky2a;Dj@sB6+tjoEuaXo z^#HY0;(`zanIHB!LZP52s?}=2IemlkAh*|Kd=ior7uohJRnFKeLhTm)Jmnw-$wI$j@N1%>Ucnj67jK3RiK)Az7;p>Cl-u#y zUK%nmUC0~b>&DuSWS=s5uI$Ew2{#4iq-}i?7r9tfh99ymaNAS};p-89hd*+M(HmJ^>NjwUK9%>mQT0J!W5!izh>fiC+wFsY~V~<;ZHr9Xj+r&}Z~7 z_pV9Oz2OAYY_u6QJoRt&?kdQG^IJ4Z0oOIC!~&AdPQ@!CDz*-AO6QENf&vdq2qS79El>T+w^8Lb&- z^K9e>dVI<4FRVqvo2A1LROIygHc$4BK+sxp&@1$)gF+-9=i z7WiN)B`heRy_YAWOkd1dI&$+FOGw|t8{a*V61TZ$%|-Zwpz_v8*@5L(s*lb?IOwrW z{i@2@z4_-i3@u#kYSL?R)tGPIWVqs?E!FyR(gIFrJS!KH=h#-`KfduG;j zx3a|S$+F@jea7)R-~p^Atglox;M2!!CNpZGhL~*Gl!3H*i``)eTa9NyC2hnDDm_`$ zB%hdHrEZyj%hP-%?PRzy8Qn2OIs1HUN2%KP(WS`7D2kREK zvxaDf!arOYl7a(RHU0`JsUyU}7SI23?;AAdKIn;bz?W+eK@q-1=Va2)G{akQ4~DGs zQ9T9?!u}CN50UdlRfCY_(o_rXx%@LUy~iV|w$~8x*7`gUPGHb0Pn&1&_<>RdIXM5sRFb5l1A=7`M{O&Ur2Vy3YRZtNuzN{B!P&D?>iG z#tzLdV#-U&?bLpOF*lXfI7a68^hc0+Aj_HD!^wGcQ+v6M5ex1TEZ|1lYTHt_z`EFd zyb%gVy0rt>_rl0M)Q%yp`Tc=)dxo+>V@GJ^?|ANhSkge1()ENMxm#jvL5+La6k+)1 z>rR(ga0AVPTUHU9$--r&%EQFOCk3RLxcdv%0NdbJ0{&w>N%;`_iC}OSA4}g<1OZ`$ zL3v&6^AopcgG-ysRXy1cEs+E`BSq+EcJ71Bp#K4Q$obP`Z$uQe%?s8i>X?o}jpNfP z19O~HsK6i@U%5gj{~L;xXfc;HNTclgAhC~lwt6P+2LzCJiQw&b79e1VVBk*F&|2s%ahRxHIWT2XmCWOBeLec`7{dGR*9&|a4Y!lgN% zMZ^UgVwx6vqJ|f%6vcq#pq)o>->GBCm92 znbQKM@3lGwSTL7c8=ZNDGvTC?WAXYg-?=K;r!HELma0~SI33d3jv0ly6o3{}b1itt z&n4mddfWv$3gv7K{+0?OxoEOuO?7d-!>duzu{u(`05{NHb~t^wtKAoyj+adM zv4T;bjEcgC%6`pJ{kL_?OBP-4`F=D*Z64xML|-xMQnfm2%tu|2SK*z&BxuxQpkrPm9G3F|@ z)fmf~Ce4Y78h`E8s2B}ak5@uP(g)2~+^BsNMb$J1+Sa*>->WG|ExM4Q-nG2Ccma%@ zM?DxRccPlz(s2VM9%6SrU6MZ8!0KZg3MXRBJe3M7T@ zCOPB|?AFtk19EJ!sR=l(y7>2eG$jbsopG3js!uv-+xdjh3u~0;ZuPY1ZB(7CGfo`@ z;o4^6g>+K2MT)Ga-tvXA3Zxg;wo%72voCNWWf`CV^Bnb^^!a5V0kecyG|vm5A{n3} zSl|0d>Y61-PE7+W2!`Y(OSbgAZW#bQ!p{1HK!}o7U3tb5u|r?}swsW3F0S(kXfY!@ zzPsz(`6hA<%$|=3E~|n~(=co|{`vW^D3{dq2@rgYVk+?BUn@MJbjG}%>XrMhvl+Ef z7QA*&`%YtN(Us8N$5d3={hsF9@?2$ch}oZBw@Xzj?lxqCNX}FzFg5h zz?`7(>c-ZOoKyl}7|TOXl^b#|K)Kr cwE8&Ne`x6HJ`=ne{C7aUn*zMcH|{(AC(EWBh5!Hn literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_72.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_72.png new file mode 100644 index 0000000000000000000000000000000000000000..4682a7a21480efda36bf4b95e173ebde6f009f49 GIT binary patch literal 7143 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_73.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_73.png new file mode 100644 index 0000000000000000000000000000000000000000..fc427385c7bff7a36bddc04a122176e42aa68489 GIT binary patch literal 2273 zcmcK4dr(tX9tZG~2MLH6a1apXVMVc4Of1?ek%UyOM&%{gqJX?CZzUr%mk5$8YH4+a z7Pq^GM}tx-iZP%Nzyyfv(r6n9?Sht9k~TJx0$$b|34}oQW}VLdTixCB&+q*1oO9;P znfv{G77@1FX_4n50Du#F&&~q?;ISzl*b}gF{~NytSRtmdLRkPbl{s3H?67`&#Qx}A zSbaIfVsTDRPFY!*N~H=94^K!)U^1CLK0Z_`Rin`eg+c^D_ z^H?F|9SDo!cQHBIyjcM3S?ryx==`C{(ZTXznF}1bCUA(o_ixq(q~gZkf6YG9=X7AdQC-lljmk6T|jZOI_oT2 zYS$!62^$-zIT&CzY?)do48!VLk$2Z}H3+Sj>$uo>CW{Z_dN z9)jQpGAW_0WmV?}@8~VaGtisjcp{QkpQ#?jZU5HoNnFIhp&Bi=B>!T-(~tJ0+|UOA zoH64}cEmbVYmh)hSPl}_tv2GLA253V&Mq9v# zgshIyfe;P3{smV_BJJTElSn&39k2w^uBWO`0|x4NLfUw? zf=9;Z>-i0OZx@Fx==8W&GZoi&Gl86T$%v1bTk2c^Jtet3)HIlnaSn9LQcU)Hc)Wa?gFb!g`ZQ+(K_qLbqx(YLZ5q`DC6=|Vd!i8?ynP(KeXqy1Netdf3E!OffS^mERCW<&y76r!YA&=B)TqBKk6eFIdOcQnZ$YzAZHKT zB5{-5tZU5davBW-P10m{OtSeK8)(g}e@|X|^*dcC=p|r?X?{5zB5IYoahAt^E_5It zw4FcqQ?cd!&6tJr8vDcVKhjQhcfo_BcGEZ=GHn_LB_Bv4Xa@jV<~2rXNd99m&aX$ zW;P{G%P6@Y9<^pUeu`Q0;^4z^{-iV{SuODYBv1G?*CEk8%20hWwXc2ry#c-FR9I>+ z-PGS$pnyI|D7BjCKC~S5pn+7h;P+k6se9Zl$JAr~C5$p=%#U2-7$2!U%|^ZRxl`yr ztD^=kC_V{eCw?bWeC1s|J3yZ@rgT{4cfXY3=|3 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_74.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_74.png new file mode 100644 index 0000000000000000000000000000000000000000..95018356388c92fbf3ad4bcdac96dfc9ffef677b GIT binary patch literal 1394 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7+9Er6kFKIlR%0k-O<;Pfnj4m_n$;oAYV7Y zC&X1=UjF>~^YQWV{{H^`{r&Uj&%b~FK0iNyety2bzW)04>)*eBzkmP!|Ns93bx2-q zo((kTgQtsQNX4zUcQ*QJ2MVxWxX++_f$^$tNzWI&uI0F z`M|}94?(65=gu?8{$+fSqf@b3O5u5WL*GA!0!y(y;k*+*8#}nyGpx8bz4+h4->SbD z-_&o={Ku8YXTt>4kdQO^vin=JKeHibos9Sp1vjf&r(zY%tPiGglWwnKEUIIB@uEMy z@%P=k#di}`o}RD!D*fwn;g7Ugdh59R7aP{^d#ii@J-;BrOGB2mK;}W-ZrinMdVUr+ zJpHYF;Oe_~d)C=MJB$G9uQFKLGnaf}Z#cd2!QQL}NTfM@-8bhm|6Toy{0aY?eLsd56h9Dr0gTw>*>mi& zwm-ZNG0X2*({;F6_md9>!_8X%al)N2Xw=$p-+BLT-fKQ(&H8Vv?_ZeTci8-LNnvb- zOz+Rnx%ofq>O0WmK$|tHxR3+cen~`a6#%b^S8Nzq({=DlSI6w9?^xJ>7nZi5aQ#u1LFb@`=DUP{1ACm1X zq`2c&v7PuSxnQw9!<=5${7~j6kjT|L-t-+FxmSM|owG05?_%HZm*4DY{K2!0?jQ|4 zxkbNL+-<9enkC5{w;E#Td0{JFWl&bi)-@4nCF zqoofEO`e_KzW3?xzlxy35*e%!NjNJG5!mqPwY-}Mi_~4|JrW=hPgg&ebxsLQ0A~iW AasU7T literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_75.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_75.png new file mode 100644 index 0000000000000000000000000000000000000000..d327d38ff18506ae3b4a602c4063b01a755fb845 GIT binary patch literal 6153 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_76.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_76.png new file mode 100644 index 0000000000000000000000000000000000000000..e07ef38593abbaed0330ed5530068a7a457d6546 GIT binary patch literal 3460 zcmcgudo-2X7N6g@pV%ISyz=OHRdTlCWJmF-kaOgfM@nodk+40ANEW@66H!E7TSX_y zBc(dU-lbCt*(G{NTMs!B?c~wHw(oA-`_H|1jC030)}e}~;% z9OY#-WdT6mY0YX609?AnfliV_Q@KI26v*4`*4hEoX39+mQlzoDo3p2VWMrhPt7~<2 zb!KL!P$*4y_%&xMfN)CZKX9VP_fbfqtMR$guE#4A%O@0=+e2lE0Xu~8HIZkm zVXp>MV(a@;I}m>rBtlo|T$Hj>hgvgmcGJU)Cc@?{Q=-=P`={@34vh9?9Qu;vxe!fC zo>y5byc)JD$~x|VJ&|M%j8$z5Z)-R{G%)IHRzupeefO0wd%Qnih-wLMd zU6M`?gq6&|grQ+Fo+)W;-K@+XR&x}6mv#fv#%|mXAEu<9nUGYewv7WXcwa&8{^ILG ze3(F;P7O$r-sH)k6u6s7GtjMEKdZ zXn2t@$ZLE6d6##3AFU6l{$Z5{45XG=IbqFVZ418ix$RW$S^=9o;Ycf9y*p2HD}1dO zq9G%RbJh!Covwoqgt-`e$<)j=cHyA>4zgu?c^xZdgFe;6&7C$~oRvKMSzV_w%bZo?%sBrygy)C7K-s`e-Xq=A@b*uw?X3 zzlC}%oRk(T?RTthiU3A3rw{9QhjFYa#>MoH$D#N3k z;4{$r%F&YI*hXOE#DjFVyJQeUcEFu%jH^prrQgK}Yvg-r=BG8_rof#=sj-maw*mPL znsK@m*s~O1A?+A&H3=M6z^cE8hG+w*B-CZlkUO~kv4sH&<)$4r`tUQ(+4|xh#-ERT z^2hUmtwNMOyg{XG*msl{9<2DL$9G z#cIA#mV2OXYP$hF{K=$@mq|%xv;T zWifakj44CKUOl(3Gy1Ul_>mHMc^SwZS=hrb3qTlb+(&$t6TvYZ@{ua?9voeF#3|=6 zJd%&2_=C|GO*k^LaBwNvu!E<(v3HTZH-bs4xGMuUn-xtd26w=cgF*)$rg&)c|Tz`5Z4C93Q->^>6o1RGo zzrrGB2In!41}8H~5iv}q!s%{R;N086>BtrYjEt{?m)X~+UW;cX#XV|~zJCEWG1QRt zu_|%Q6oy+>Y#Sy;7rWcP_n#VH1)e&8?NcCAz}Hq_8Kjth=JKu)jQ|sfTx?zQB<%)*+D2v)v?5;wbO}S!x1ZT^-bsO}WgX`3XOf|AV zaC5SQjURxn(;|&#IF6OSy-gJs^H|h=DI13P3f2Vo`|=`pYbBg%8CPi{;ds zyxQgHSctc^Qz;9nUEIE)`Z1`(LT&P1l86CaR4iaN(K`=aZ!OhBDdU$W@h3YP`5=%_o zuOOy&V}wnAm)Fhw90hIVHeS6X5>t{3;7ljgUU~D!$FMkKrM*|XYs&C^1^XZ|zE5|1jHz%=#zl)PnBhcGu&*ZM&V)|x$5J;UyPDK={u zNp{I)(gbNZJ1DHECoZN^)afxWLT$MO*Lp_(DLI>;|5mLi_WRcAdcCeDCce8Mxn<8f zaXA_aBRb{vFrOV literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_77.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_77.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bba5e9b865dea0bc17048b809de6056e9c967e GIT binary patch literal 15076 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 XU;Lc8{FiduZVG6r>#J3&+J*fOvh2=( literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_78.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_78.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2dad9a9bf16646ba30bb0b8a8ce107834b06c9 GIT binary patch literal 2702 zcmZvec~leU8i&a=)Cnjs37fQzm=S^^7!+i2tf7r0YzZm~A_!5hqIl3$Y9|&U!MSA+ zLU1coAuM_hSG}NATOy)H4aTi1&`W9M*f1=yF4qKFg0kJw_MVeA{`0)^zUMvj$IN+t z-&d3%63lS$ag$N7~snsT{{8_EbMTAue%6 zdU|?wb@kNL6gB7=iS)9wa|np$MG;?4)m`_REa&yp;UZ$1vOt8U1P1dLQ5`zmuM1!K-ElXBRv&fxG|h|Twko|0(?~-(o^xJomry%y(lvAx_9yE= z3|*^R2br)+qJtg>bI8+-WK^VE!8%7x&iiJVJ)t%RhDPbuxb4D9h~oJMlP9!wjkdQP zxkK&zMw|)EFg<}h(zJ$lO83|&!U1*5sGVZXYk;kCmzwSQ zZ~*z-kw91JGN>I_X*@j`o<|-6GpR{9^bk8jwA1;p4|$9sL}PS5tTJk{+t=F+LN^$h z=*PMcw*(9)V&~VGK**TL>pg|sq;{SXS%KcBAE5G7p5YX7|Ds&GI%-E8uXi5OI7@M? zzC@El->zOn_CWuVohBL>V6Knpn-O}<6(*Lp7w}1Ew0^%#amd*GnALL$y=rmlzJ%ug z=G5JS=8rg4w4lvvbz=>8cW15W*_ozZ?@#V|Hq?^>)vqtFcQa2;c$C6oe{wRdM&Efr zv(Mv+`2t(?i~U}-im<4bqbXD!E94c|v!r7#ndTg}Xf_a_j?#^(JiH@NB{Al#a1tZr z$R{;7I*G6emnWuv=;hT7#15)j(t#OjlpKkzxpr7kna2pmNW$`9s_d4GB*wNXDmkT^ zeeQ3X&Nqz`n|iIfUBOXm^4$no2k|ILK{a9fsOCCh(TDn-L?yb3mEHpkB%9Jl>?z&r zDwKUgSd5|b|B0^CO|0|ozs=5m0L&4)OZU2ivO2ZJ%r_%^O8rDFB5Nl$$sO@ z2htYzbFzDc<*B1nD!iE7z|f#ubPdd1)NHknVF-inGP=G@&nWa1<#5#sNlpnCB{&J9Fj5-^sPxf(N^QTC8G~?Tm3Rk81yXG=a9AJX zSE3zgVmctyAHc7Jsjz=77bw@qCYNdl&CIWmbFx-^0NepDl!ODv^>N81T4NB)9Wlx7 z;cZ|pyjT(hRO{oh@B;ZeD8hmYaJ?OZ?Uk(C9!L>unD_$7sf883bt*gW+%xym11?P)=)@R!i>KiPm! zDZ2;OeKD;yNA}fY+SxSq#m}`=yp1Zxc3$TAy^6`0y39!!I;tHJh->=&6~8`E^KN?p zmahMdIHZHm8_v9NyW-NFlJv+wcMkX4#_y7_(|7{}qHC^qfpqnJNfsRtA3YZWDC*<7 zJr&ni`|c>AvYE9cs>XDL@d1*6J;lx7Ty=y51&ZoLo+=)Biggny!*IM842I`O!T_Z} z=vm6^gP30;)ER-dgVY%z2?h=dqCJ(o{*}xq#6@-zzXm44^CVp0s369(gg0=I`96{$ zyMT{?o8f@kWx&^h*i02~u$}ocQuY@YtQ4_!!AcQp7pxSqa=}^=YZt5(v39{q5o;H$ z6tQ-}N)c-ptQ6_N%MlQ><#XHv5n{F+$LkRSvtj<5F5SfI6lqQIi$FC!)O9^f3%BUA>ucFoKf&U0&R~T literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_79.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_79.png new file mode 100644 index 0000000000000000000000000000000000000000..552295067781f5d46439ec2ba09d03628d423c9e GIT binary patch literal 8229 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 literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_82.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_82.png new file mode 100644 index 0000000000000000000000000000000000000000..113edd0d466676fcc5c6dd40fd68eda4842130ed GIT binary patch literal 5076 zcmZ`-c{o*V*I)Zgj^S`jCBjK&iJVNSY(r+Eh$2pt5@+_uluu_gd@sTX(#pgC#{kS^xkj z)>h{G0C2n^4#;?(dR3&@%u|GuCiW%(l}UojM~FO|?r7({$KT(7@7}%T<>g69No+RT z%gak%UcRlZO-oBFFE4LuYDz>z#Msz4Dk`eJzMjkF^6rzPPv`=O+gY2NIEQ_i%;^g4 z-XXTfP@KNV_3BO&zjwy#jRMx-$TDm@7_Z=m=yn8{whbkk1|8(y#yiyLfikq~!#duB z)&wmFDR8{32&3*#BzOz{Nn!D?`A64dvhXp#@|u-4gsJT(13xU0SU7A)6@s;X+Ov_o zHs`X3$dR?l%=Nb}^1c-NVj2z1Sw|)jA}nJ_;CL-W#FGZanp7H~>_`qj)Xd@6gJaSa z;aU_Nvt+dK*o%iON%(n&C;*NrGkme1_(A=KPp$4osQvKI1)3B%ujB6ow8NhjiNk8D zs#kG<%E~bcghUWqRG@h8qB{O233N}rC9=YBm~^2_sT1cMkZ1SZ zQNhjZ#9b=`I5tuE#_-&=3nLHS%Tkj!s}|j59Ae;?CjT;d+gk_Aa;2C^5u6aAl2cQNM3+Xj740GRo+FcU)`Qg8y|d6FKQ^ zzCkOYs-nqz61l$@Re*U0=WxbXtntI4(fiBqr_=8s`*h``Hy$t8R?+;p)9hKvPmp-) zck(R%1Hl;7&|NR;PSlc)?;&PyS9Ig%t3h=C(46JkTLQa(M)_r$@0yL}<7|h@O;Nb4!Q8RybdZ%k*|%xE zXFV}l3_JEp-!rQ^Xpji5=N3xzNkA8lFRhmG4~jqqThuk^hq4&tZkq-B)=6LtL4P85X0f8^k?2Ie8} zzX7vCHE;3Mb%tipaR^u#{x*l(j|Y8bke0SC1mM+Ewh|%1bbJn%iU;G0V6X_Eckxjr z!jjo|A|6?b#S4jeB|b=@0U%IZCBchpK5+;c>9*cM&E_d0?0C~dX}mm0YnV~TsOV!B!EIVM@PC<8c<82 z!>(b(1-!Q9&07s(gTkyUp|K7S_FjJD^Yg?&ldaGxu^xi#dXUV!Tu%?=0phlAmnKyZ z^kV9z50XRC*XqrHRk8)%yLCk>+ry8u5SyhnDkDz+(du2zvNw zo{gV~*UC{bRep_Rij@E>T?{4)6u05_;VQCu6V$OrvK2pOCjk49T2lJSb4(>FlBOuB^>t+MC=Jf*AgO6kJi-n_&fQQ{Ci1@|2| zeRAG@79E~`dL8Um&&QV`)K^+hewc1o@*2dWXL9|W*q)rF@A~;ZxwVEeV1|0$={^M! zD%*!uw?=bYN9BUtF|8HRn)O$D7uns}`Kn~?^AI+FFr!M}4&T>BPZ6@tdj!+1et&XZ zWxmLrWoxAK2iW3R-J22*^%ED~>D!JiEr$hM5gU=u6ZY|OC~lVJt~$Uj7;o)2_e3-o zfj-ndz84HZfBn*RYq575haT@tI^puxwK`QA>+U;cr(IlP?wC^Q??Aw$ab5~qx{v8^ z>2!;smFuXCIl6KSyJGdJj;O`)uh zoqom7n2WPvd{*E#jLv&c{~~1!uj9LzZYA#8kmcKc_j*E$)_%LX7&d9K@a3*;xiImO zyLz?jj}s&EnFq5U-Hm^dtbZ}pSn0NhjAxDTKps2PrNCpza$fjYM(n2Wgg+yW39FyH zdO#-nKEh%9UjO`MtSjCl+^)lax4mVe_MDSY^>VHE@Z%rrD#if=NZTvJOFI($)a?Iu z5y4)Z;l(6RMy386M4AS(#N`1!He*NH0PUFt@;u<#uI#QSOaPnHTik^KZ2nH8@SxK( zat%v6Hip-fq1EccY2^vH_&*O{Wl9iKWZ$gC${+~wXWxT4d9XxD1i zcfW=eD`)U~v^S~phK$2HhQq9L*+S0xpx`~8*Dz3j0Nn5= zZCe(WZUZfRc=Oz96<~3hOEm+qfT!-BuB^-|&%sgk=iOhfX9%McgHaPv-ooflIfnVA zFg&$xh0hgE1NjMSK!78}+9(1sNH)^>6>$q7hautXl`*o5P+5rQqsWTn1zQ>*0*{K4I|F%ZZ=c5fCSgZyq-xPt5DLI8kr-ymOn(^IjATl- z$Uy9Ro^iAs3UJTx)bm7!!HK)&W@=M%ZMymmBjv zYB1Uz;VhkAzS`6p#+AWwdJ0Yg)tLJPo`#aymT3Qi41uFV{5;lVTVZR*=P!XJU1U_H z29GbkaW@*c$2NexjOYy$t`AApd1Y&%%G<0pp!oMb;eh)8x@N4U9(mq8_5F5%E-)j` zl=eDR^l8HIBq~^fpwDaQEeug$x>&bpj!R=m#J9tErlfL42nBoX7c2y2T8bVp_=xO2zUjOZO(4Hlz zcx<`b8j|0M)XHM68xX7a4`cdR2GtkeonKX(VCB}tW)So^xsn*+k!@spNm)^ElaDR; zOG53)UIuZefJ;aDznb?d2nU@J$BD$Qd_QJ%l0<6~csl%bS7q$g+@_)4Cpf^VHmmp-0fai&4N(kCt z{0+zQCP5;@IehEEU2uzp@t>6SJErn}<&VSCK;^qHgwg5X z@jO;O_I;GYE3U?Se%PL4($WA8E#FtDQ>T>+P6)7W$bdy%{)L>KMb&Q&s$QEynA8xR zAFg{IXLr?YB_aEbL2ZE(l4^48NmWCvIto3xrg4d_)&GX^-Ge{U@dd zv$;vitGcHVVck_xTvd!I!*o(;Ue)1=2xG)a*lJqp>ayjvEtJ`6xA_2&NHyutx~p*< zkMtdQ)@O!rf>w{MW;|xlSZt5Qo0u1LJ{ycyd+>u9=9+?{aVa}5gZ3j|KH87hdp6C8 zrN@Trrry+o8%`U@Z$!2=l2t3|%G%nGtmPriTX$2g_vPTYSMCa%HfCo_&M3q4K|R^p z9<5T=+;rT5$$P|LFK|;nZF%MIO;3VAVw4j9vn8_Z-R{-T_T`)YexxDlgl-+oYxO5k zkB|JSk69!gh>;|qC;6~iw4C?bgLF)i*p1BupLL+%-%}BW-wwqBSWhHG#OpyEo^fIo zR|PC*F|4+dNsz3e0LKQGtS`Yp(6caDi%TQHCnWiUfYti~A{<59yEaDe!D9kQv%U(= z`Wgx1L@K@i!hdk~!DE>oEVd=1EpRn{cspQWaP&~>wF_&p*mNTo^OpPqw6f1z#gQ@f zpE7{*s^L-GT!^f+6)7U!#4=JKrClt9zw|MHOPalkhOqUHLVgHeXW0~$?6mFqstke^ zsb5uSDH<~~RsWT&Cvo|oH20`OxT?vRYxbU{6d3r5vW+Rdnw+4J(d_`%XY`Ide5bd+ z>dz^&T)7+)(0nO(Wv}SIRlOLHly{sh2@=KzGl6kOGnb7sf>U+R^UXd6tn_n--q%mz zy1fhGzt7GbU(#_0Oo5slW<2w_?nFe$@m0%5b&)elmOpqq=4LI06&?cAb&!a|#1h(G zO#t@jv&|V4lD|>nS{umF{#d>u8<^iT7(BA%g~)orL!ge3rGVwRZBNz=0hT4@gnM*h z)KIE@eo>!*GVF^celNS@Xa(E7C?ovvC1q+g>{$*l)qLd%1qS(ZWvpMGS6i!2Wk;sM z&K47+$$DomL!*Ie_I8NM!_!;X-^$DSM@g1_l>ddMg?x>1h90c2;-c?xT?FPvz^+ygsF+YQ6J zC^+r>r5C56cE_wrc=tPm<9aS-Ih#xU3`)M12VDUlofc)eX;9Znk#T-Sfr?77|AW*jF}L4FmUAg2fyxw2qyS z<8RmK9pj!C?`Q?7gL&Lrj7`mdxZycQnU{lYv_I`Dw#I|-UzX}6qVTc2;CH?z6d#VS zHnS~*W(Tl(A>Zel3r}~0RphD?y^!~c?{5dQD2I}SZfrrOA0uw0n19NzaN7Zvwu5by z;X#CxDdolm9H$eh2n-DU zRt*VV(S{l^Qcclw55OQ479xz7-y)5HRguKOEdoR9NttxKb|9YBW-&aE+meN-Qq|sc zZfNv3I{AG)(;PK8=1;4Ck-W(WjOb9SQ@HHMQZs@@HWogMNX-#T?yl(5x-U_${0kQC zF`PfT1-g5^_+J@J9|CM**Ux7~mjXRnPuPNX5S}B4Y{{5?CI&4N@bpo+{|Up51!PE+ zhkKDA(aqN3_vUV=B~s#KF>m{Mj~-9cxEbKX?A+B7lj)&y9R< zW!H|Sc+G^PZZxZBXcm||cn#`*#OCdP;Ol?9JcL^ok#YM}Ko5&wTJu`(aWF44WyJg! D?GY2J literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_83.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_83.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc663e4951e9c29838167fcaae69ffd95537d3f GIT binary patch literal 13495 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 Q4ZFuNLkolFhpEy32VjQr?*IS* literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_84.png b/documentation-site/static/img/kenney_pattern-pack/PNG/Double/pattern_84.png new file mode 100644 index 0000000000000000000000000000000000000000..760d0bc0028041e4330f82030b2a36a5df8d3889 GIT binary patch literal 4083 zcmX9>dq5M%^Pk;pk_*pEqC6Dv2m*c)B^6XeghL4gMTym~wZ2G2l==iq1rcN;d~GTy z3RtNiL~AQ;smA*FQ5CsXZLvkgs+6`?BDP9>BA`;`@w?*vF*`T2JF_=?GoRTH4YOh$ z?S|O_fMc9K`b_{VvKWX&9Axt@UK9tiB5Gz7z|kW6-gl(pyVejtSJ&FwT2xfDZr!^2 z`uY(gMjSbEBsVuVGBPqTF)=78=*g2ORaI5a&dyh^Tp1V`5Erdo<2?t!d2L*D)ZEP9 z{`%vm?H(7E^tLtHuOa_^lUGCjr}AR?;;=5x>whM)*YLNXO1EUJ+v2jY<*Y(8d&q(= zTheEz1A;5vcU^sNsI0iZH#B(hZg<6@x+ATT71y$JZuaGF+|oDDUgj^DhH}m(JGy{| z6Q@Rao4F2iCCj{1jq-*li=D-blbiB5UWVU??cmOMM5FKho1n=~8)3@R3hiV8>_svD zsjS?soLBRcg%;vuhhqGiWR%g4Gv!UEX$lUExNwHeGQ>C+yFoR4q6)2+x|M((j1|g= z(>4?{l1iw9R%6OrNuM$tGD-?#Z59t>2%Zn^@QE_CTJBZ=!yrPKPx_a$#*w({mOF9# zP$)0a(KLny11_9KfetYa!9(C6e8O75B6Z6H1&k5gh#t%+hT|o?gBGJy0_{5}!WsQ44#(Q_*;(Ym=&{vmP$zC~AUUO;(Kx z!s$NR#6UXSbY!3}_3?CL-2xPZkBDN8HZjQLY)ZVc2c2T)PwZE|WXlfYbZ_mtzR}%W zhof)|JeivE$PcD4@xxIVTlRms>KitxGLcO~y-g=xeq7^k z`dlUK6c!B_nu~-Pum?3VHQS5+>SN+>z;bf8`CjJ|G8Ps|wHoV$s>W`Oc06`dmi=C| z{3TmUQay!yVOwVCFCPfk9gI_r--qve5M{FyVnBjN-~VT|GgfOTGD#kzulhE9y$Tkh z>xz)v@vGD=Idj7H<7#zEe_C^aAfuPyN5bY-W@xnDl2K|tn}0CPXfJGl|KjSR_Qgzm zJA6S5&hKWiEySwkcR}YHi{)7DO*QDxyak)^@9-Q~EBVMTCi-i4{ma$Y9QEsX5j=*f z(032Q7UKFkUztI}XTGy)hV5~@qh%`X{_$3^FqZZ~0MVCE2vj`8)x^N@H%}(T8b|QH z6r;P}kIBKWU?nzHv8fqs z+w9o74OWm&>1`m7(c+x&ium?Zh z70InRp;h;-)V9PHy$JDPXuzDunPb10RMaacKek;){2o@Z;k%q0#oDZvjiPX%;vHVnS2y6gkD%L<1 z9|*m$8vDk0+>`AVKNr}r(4Pv!5~SOu{&Up zbj#T7Fi6tnY#|JiZaG^3gCrCf9e6;#2E0I{w2_{?aNYwK!h^p{&EO-{C^-kzf!GhA z2h7u;0`k3K7JSD-5X@$%D;-4yN1nwt8ONXw37ZE!$Q%V8D4&BJFqMS_P%_k?GDH~4 z1Gd?5fI6hM1jt4`YFGh}iQrBrqYjyECY(W;YRG`gMDV1+s6%d>0llb4MFAEmc!0x1 zi*8lT+Nj`gcK?M4Is!3B*ai7u(~IZR;R7zP`PH>hB4FW5(5WU`sbO6q8dG$jmJ89~-mB@Dm&`64ZDDi`{q?&=~b@awR1?5_n`bc7UM zsxrebo~@S8A7u9?8?NUvmoZFHWVWreek1;}V-|nuK@8 zu6GJup23$OvU?<7ZQB43HEXfeKXv?-m9w3#cF>}(txTCGPIpO@)A6S5rsd+6{|mxi zp;>?WfF~R?pN7?n)w7N-9JGFtoLn)?g^CMZ+(+{e%)~91X6Pmh ze`$)LUCBRL^7=!wNXO}4wr!w$3iQOHqt=|X!4FMQT2?0p{)Q@pH15<1{oH@!^;V|Q zles5SA5I=SNSm8 zuXk7q_n3359)WW~gN*YLCY^gT_mo4UZkZ&sYQTr|1_~JGpnGw0$ZZ`?YDbSRKpiwyqUXlz%kgefuU8tgJtpC>F^F28S3+p)0?e_K*DhTc%Vg8Kr8f@|);p8n+zA_+b!_cgmoI|Dq55 zV3JfnWN)(#Ct}+}SHq`^mpb5!&lO&BN6X1MrL(x-m)yRy6Aj5IC{Y}o9F*#zrT0Hn z2AHx}Y~68AYKRygGjeCgOY~4LirtR~pfA$ZW7#Y>pyuy65 zcgV*Jt9;VCN)E2g`KaYmLdof88@Ei1oZZ>HV%x3WxxX%~8lBx$^65ZEn2xi#8Yeij zn@;s+h5e6%jp+Q@cMiyDQ$}IqVtl?Xd8>rGF=blCLjT}DLN1)n2)VjA>CCFwuA38n zsLPyiDJSpdrWKxRD|#RN&V$EekG}55V_7kfZ*75fBV7X@NNmd5JMzqyZ*yE3DB^P* z_dD4RCfMo^dd77KDtg*? zKh}8XT15cjp>|;JO~zyQt$TQOoc|dB@T8%HuEs@${Zii!&nlKkbXlfUQ}-SO|p0lrcxVkd8tn<01N8& zH{>2T5)DmoN}Y1%+H4JELY?CHt^0qo5H5Dmd!M}jJ_CqP#E&j{1`rCC(dhhhuc4Sn zO(n3rs7i(`(5{CQKh4P#y>|Q1-|v6Li(XGD`L)mA;>0-BF~)@61_e0s{YmvX1CARP@sQ>Q}%L{H4JFiqbJi~`*0 zB-F-n-pC@c`tkc@em;;6GP3!$WTy&bkb|E{A)iphR|&^-%L=7KmEa_{O0nKt0J4F0 zq_Ed%jJF7z8_15fD(`44U}Fs37$+t~2h3N72J{ZwuLLi8?eA6>(voqZLjh{~GRgFV zE?iW3tH2MQ9m389qiV-J>~fCBtW-Fsu^YQRXG-#0EFl z+)$9A1}U8d>ybrGmq7#J+(mVRj82EIkwrz*!Av+$(4Yo6je$;NQPOGu21!+mww^_;uEKv6@7TBam)V$PZqco literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/Preview.png b/documentation-site/static/img/kenney_pattern-pack/Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbc10d9cd9ab6cd754840f3f1b5e05f552da5f7 GIT binary patch literal 54123 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 z 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 Uu@9yS0rc;ls)kCrlDYr?1G|x~B>(^b literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/Tilesheet/patternPack_tilesheet@2.png b/documentation-site/static/img/kenney_pattern-pack/Tilesheet/patternPack_tilesheet@2.png new file mode 100644 index 0000000000000000000000000000000000000000..70b85bc02a977a7196f45aaf6fb639b97535f8ce GIT binary patch literal 421928 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�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

)t5GtnYfg}i!QJcx9UZu` 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à!9`~ag$|~G}_V3iqY{F z%rpV331ce?=qs~p6=+2H-APLjOykXS)PxsjuEpps5~GDAHo_71hpMXbdPBx%N8MEKuuX$3s0@?~yu6j|&P@+T)PnqkHh zUw-F$uxeqKwTQ2DPsG}LyA}^J`U2#RJnB{q<~5(}N-W zG6#}%=0YLgzth{~uF&idQnRYdSV@5WatHR?(s2=Zmn)jozWs(o3HYAL{{G?9Dne;7 z{-JSCa<2z2qRlO(xzBV#Ani+nKmZ^?au1qm3zhiP>D;$xJeMZv^2^%Vo_tF)xiIY{ zr=EW=p8M4HPi-n&%{0p@xsB4xQ{OOlm}Cc;Wk6$t$;HpZK1UpFwOBRq9^eJ4zT|Y) zWf$Z+k7lxRbMHS2gK`Hjm;LoXn&YrZmV1yGzg7sb)0tN&vsoj zgji5}su05uvBJ<}U)JdA`_a|ws^IrYT9MuUFmpC5^vrRQ|G1YrAwVUox}I87_dHxK zqOtH(mIvnK({^vHu`+${?Cwaa>%d2e@AZ@lKDehYoo_)~$F{}BDU-U4h8|O?pYu<0 zU;r}B;yfiiry$+0(p813;nUGGVG_!|V5txzfJk^K_6;*lvTiZB3Mm<~)VoFwU_&KT zbDgXd4pzXf>K|SJ!EoMd({rPOmB+DBwv<^O>kXG27cpE+Khz@g;JBn}(f264E7(I^<>POp zqVtSQ$O!_1(fbZ|+k-68fhEx{_>b2@fO$+Uw-<%xG!~*Jm537fVd(f?zV*Y>EE`hL zY~uqOAhT$*jW4KGWod;N$SgxW!n$J1k0Oax*w0DWDDM?~@PlhL4RpT*x+i1{nrH>> zT#npnl|vc=44oh@!{gEhb&?CLwj9Kz-zgDWFw}}|e|dyLWQ~fKyb)kKFUJ~qQqqob z=y}d);r8bSa?3V>CP!1qox0)s@P^O5?R=g1wB3fI9Z8v|sukD2w>O0oxfi}108mxC+k;{etwntMu<9AH$9)vv^oQ+878$mfVa1bZRtuynizpuzPDsi zwGF}{LIOe2u4Zer%ODj2wD!F}&E)W6d4U7HbLoj(D%gx~#4?57F4HtkgyU*xATJSYYIn1=_$^8XVefDL)zi*om%=jFOXEv*^M59DuCGk zbgTq=oC&^b$K-;rzuS3jQO*kyRohFC+-8h3;#iki35qj4e9D9YJGux-1}{-Vxhz=^ z55ls2cm2t(P%L#SAIQJ@Och96!SBwOmkAw89(K$eFrn~rJPxk0XEB>PaWlScY9tY% zPx;M~zsuaoL}xfF{i0rbx+vEPxu0@FU=9XMD+lGVQAT_qNuQze>E3{1l!e>{A+PZY zKgs&^*gE?k3#*L=H~1!0WzDXF`4g+{14g`6rxs;0Sh=Ns;8yA`)ON1SUc8W^9>j1g zzxzq#!B6rD4+X}1Fu9lcJNnYso?p{wKNHvGw>fIYE5Na(qF--(RJK(h$xJ(s-J#{H&2X&g)KOxN~Bk0`Z=ht|@D21HY%3kNm|k{k99H?m zXfHV33yRWM;>#Pqk603mk0m&wG(dm|<|1E+MC!H^?c6=>XqpO+bSdtZeZ~Yx(PVtd z6x*{@@ckz71#?>c_A_^|X%Iz4tS^b;vfOzk2hP-}xa~r%d#akO`r2&=>C*Q|(?U~# zY@M7M-y`&a@vP*g#~dGQ_+1D4Jne1E4qesm5M2xDL}zosBJ~>Mx+9V2dv+qJMvm3$ zQVbCN$AlBcRQ@LylIH6?otqB2dL&H+mQS*r{$IX+dVh~M-Wk#xrZAKpygB%uT8x(! zWc2RBF^-a%h2+c#xcj!Sj)PSy{&ch|?I5hcVJbxvO=Ol?Va9{JjyUFM->O^#&bR{C zvLuJOvo@b@=@*ef2}U8pSP?`!cF0sFR<=+gq-XOOW0mn%1Nzlkk?|9=hj{*UlVg~O z6|?tOYqpY<(2$A!dle|sC{IR(nYXAC`d9fkSQ3B!Uv^r98Hq}sanFYdO;p{kt|j^;oO5NNMA=gzOCU?R3H83m?(z$%+#<~ ze}=r}nY_7r!uAA;LK7AFAd5X2hjwO2AyOfffQg@)6~I=%J2d)p1HiH_;9aIy9!uMh zB-~!I?=~&xWXVm@iN;D5dgK56uZ3ZTO@ctj>Oe54h~}|i0RxC-?7Sc!x zT~tjn$3;z@%WoI9SDu#(ZDCv-hr=;RBk42J8lD(G#-5NcxV&8n6nXFQvsMwL;IXhj z8&aB#hfQ0d9e>mRaG_=Boq76Ha^1=!lnnSp)nu=J-W!Eqs-%x$*X@k^I=0v%_qC9u ztftfSwQuYtn@hL+9?;?#f9^rSZEGP>nijOO-H^3z>9GQeAhdv>WVvVm9{SFjluuTn z_=q$7pZTkq8j~9rb!G>DsaquFUxYwS0&@7egx6LHI||<1ulsrZsJM(WiO1WB3kDr!aeOEpvs)C)TbRN; z{6%2S?T&p8_IGIy`Ikf_4{JEc0Hjm|kC6eyF8E;@_9o%D{WaE0#_pA7c2Q3AKl=Ws zf4c$3FE7$UTJh7r@nb31HyiEa{AjDFO>W7uwTnRu3|eW;S^Gr9W>RwKpEuqs>P)f- zc{921s}k{1))b)nbi0h__nVAG1-s`a_|ECR$`fsU)0NL#4 z)QVb|dbi0pfmh+rv~`#`cEQ>Eguh~0KAfFvdxXShehNM({I`-g3bxPK=$^$w_WU__ zgz_|x&bT+I4?!A?NA6A zk+ok3^%JEki68-(Cx`;{A5=GSyXuw!X1l1nCaqLEQNw3FEp5IEPD|9}(24P)=|Rt= z^Nn^)*z=9*Lg^maxq z@jDnyOr@7$rR78z5AlVjffj*{u9PQwiiib848oBxykw+-*G^;O-!tB$o>ab$_H)vk zSLwZiUiYgrv$Q?E-f|1MLY-83$czFkS&jlEz(yOzxOFWVW|Znw+OizXAJwQgOu(I- ztB7kja9qS5UGrmHq#+n><#)>*pij+yl1GN6oj;%7>8s$p-DX}q<5sv!XO z3rn0VfQT?KcHBcUX_2XhfwXM6ZS3q94|PR(?(2-5m&Q~?lKg^OAWu5AFtXE;ZFc*> zFMhC?+uQV{uN-=sA=?lW1tn~mq?dt`m&_a{s;+HHpR@k(SQJLPKx|?4qCuV9Igd@s z|9y=kCXY$#jc8`}lfbVVlhH~sw+TCK^RH^Po>m2YtWOHb_O{%dK;9wrSFfwD{lk0* zdEqI2=%~NS*Q1pue9JdLjmwu}?tO>Cid#n(#d8r`awS^qO20yKUK77dyFa*g41YNo zWT-)hin7(KH_RB4?Hu+CGSnpBAH|{apE%U8Ezd04TYQ4|qH@$5wU;m! z8#T6ltJ(SE0@!S|PLF`n_ZWlXydg0HT|Q8XEgQ1TMhdEdlVIG%H*+EnpRFqj`^`Ou z@HsR1S+v(L(E8zAnwn@$ny@b|XHoH(^8N5aMdKC3SgP#t`wSpem_lsxDK-19{iO3oqBp` z#Lb0l)2i*iE-Pqg@vmwAUXPpirRA5bbw0eG9gFa|kXA)_W*^q^BKRf!O2U0j=@{%p z@rW||M+3Uz3N`fG3Y_~}W1v)s4t|WsxgIMC*pp6kl322SOlOROgCF;Ov;otHzJSwZ zhuJVBdAFxC1vsmy)4epMp*6Vo<%uCyKD(V-x*wD+7f|ou`v2nOA`%*UX<`I&d&`Qi zg6C4@fSaBbPk08$ma%hK^pJUehyAe8u}fEO$&6E@-wK@lJe+J0fajVMy+m3mfM4ms z!|@#UFL|xU#0L`HcdsDB0uD3OP=79IA4;=Z`49q%urI~ybRS~Ikcw0bJNb0Ccj>?X z+WWRcHu%?rUFNEZHVvLUsI2$`MtVhPQ?Wd7H8&|sof*E%m~!ik7gu%khVk){CKEAP z{STOOQJD0ZcDsg{^tt;)xFxcwcwD=^+(@ff#)YPt^=dXP_x38o$J+218sF$5K2uX) z`wPTnHZB2LqwBYAjkNLlS~s|aNJuMLa0eIEY?>cc2Pi=76}vV-CF($8f9yahlgOrSxItj&C;X^Ns)tj+~>KoEF~a zP1g`p8cQ*;*Xt1*as=<6ML+6?^#9FcB}A!i%i_08ka=nB{qoehw0A24^2Ud#R(CMOhqFS~lTY`3S@7Z3qeJndW zj5@DG0lB}i__ccLMRJ937JbZa(BThnYi(Ye84S`>JNh~)0CKJ;KmGA$HHCf-%5!dR^c_d*Z1SQniaQMP+S$+w88Nm|ph-Ow);t zKnEnQCeU8nFKkCU`EL_`&evsPGh62Z$i7bohE!*}>Wt@r8l*IUfTx2Q0%_>|K7UVWTbuE|307y$g7dL2@Ua{Cv9vy5im3oDk5LjMzMLq5TvZ zkdmjBV|169062I^n;jqSzlfiR`Wf@IaE%j2VY+1Vs!Q26wd+(rkv?4@h;`y{Y*9~_ zI(z@#Q^AIJpX&8L&$@{5`F~9A7TNf^=foG`iJA9qYX~K70#Oo{88!;qbc9mlS+wds z-f(^?nb9w?IXKU25Ms%nqz^N_{vj(tdV_J62(~NROY|Z53d_@+_|;ihqvw6g1K>Wb zVGJEFurcMdSWRVH%korwLRtQ+-H0A##y~m#6_RSg?jv9x4Zb?wPycyGQV{gPg{Tu@c@X;l^43qfzGoGHK7v$Pjm9oQi4z2=;vT0V zal=@g^e@JFY04V2m0dua65oX3@zxG`mm(@CK!9ZBXhNkp^9!q()Ar@*P8IQO;a@Bo$K8_|?1H&FFikpU7KlVp_HK%74uK zvvIb6M;VOUXy#6?u@XI;lQqiHc_OnfW*K+GlR3lDmI+P$`tvcNtNhQO$#Rw&novGG z%gny%Z&2Drr*lPEA%rQh$_cQmi+M(os0~Qz75-&6Uo#RA2$A-OuD% zr^Nm>@8Z0zOJgvM1ZXAAT@4s5_Sv!85J+*o-efLG5U|unS7oSQ9wf=}q!6_<;8rf= z9MTg!anEDf@}{MWh+bIMt}uHkn2ms^0pramrMLG5IM>HtWB%pFdX>e{8_)?SMEf^p zL}7mE=@=3=Ne(1xR7`^95WUDQUqy@~Ha3$xocsT3b*Cpz0z{rUX$NM9XpR=~^0L((v+zT7O(lp9mmJrCZJ zNHkqZ%YLUXR>133G-8 z5GczL3WVIp2*xy}pBI`0Q%uCpT;f9;rZ|xS{-^ngI>j9&{xQv^RhY=}Pdh#xbBUBB zftH(nWPV)~{y5!`k8&5{77$|#k^vRL%9}L-vc2lbQ)7d7-`SFc%5m8&l#J>l$z3BR z;M{Ddwpy<6fuOcsqSH+YpioD6cNzOVSZ=#t(h+=PdGrqd5&ahpBep+jSp2}xa3VWcjUa=Lbeg`}pL=6}d z1ADsx8=4o-ab2qy#;=3_ri=62d4*oD+_hdpmV^#*iN1~GIi)`PgBy+kU{Q>}W^53K z8-E~{O&8x@HS0j8e#MUrrzJ-KF$13w96c5SWbDdn6Zs~17(B0q8Pv^ppJH?PJmR?DS>6PR>W3d~yDBo2$3+DF$tIT=sBk-5S;gsFEOYWzB1S z62COeu)`fo9ur9qfIBFjkW{+cZ+hq8O+X%d$@jkeKP&xuUs;vl{ zOSsdG%*UBzH9mu1Xl>ZfSfy@`E}j9v5jQy+AbLp4pB58>PI64T`w94jyL5}Vjwx}Q z)r!neDnqLT0^s(D2V5!%x=v#lW>=-EeKiiWI4PSKnZ9sj+17GV3RuBf^@Y^Af{dc8 zAmMaCTsIW++_rSgZwcn3BFycmyM4N~Q*nb1bQOl)bDGp({z3!J9_ZU)zw`^uX}k3L za1ue#zUxFRGNoVaz>K2fC->&iw`gsWcrOoHqC~e;h1Q8oq)u>0^~0T-5R)aScxVnY zwC7-nx)!gm4y2%E&$5n=h|O6pS_bF@Aa-B0IBqZ5N88A|05;!N!Xa4p;9lF>nd6C2s`kn452S&pHqH# z*Qaw&GJkuqc)!C^Bgc%+{Id2>Vf&TlJQQ42cp4!4u~}!j?zWKyC{Z6i55@mv4tgqh z=&ez1Iy6l&*(3&JJr}^R`SxmBd5UsR%aykV$l5#%RC*1u^675ug;ccoB>233pv8b< z;{gR@=K+FvAQ*7Auupjs4}11wqv+t!`NoAed}B%lPVx!j6Q}lR~}11cI2iS%eZhMKgSj*In4*~11FaksWXT909C>!3%!b_{HA&vINYob0Wd{@QoC zJW7cC^4%6zlZTgD>U~Vn7Y*GcJ3XL^4UqNySskxdS}>H>_1jy1VE=>}n}`bpa7tRl zH6ZS%%sxmoN8q&v;qJy&!g61MS};TUM&Br!4&#r|z#nNr`j-|JNzK^G!TgGnsOK6T zPkeoaz%2WZB0??fxlhrrm>X~BAcz}b>3RAKT+(Ixv{>-+-4vEb;8_muEpvrt~$Rc;KGbq^6d67F$rSs~Bl^r+=LXs8`bPOhW zi9;?cBBxBk0!%}JQ2_~Pw;w7G$qw2jS$d;M@W4#`)OCXt!(-?n_42ED5F0s)?RtjK z>VQ92tu0wK7s%gXyr@FXx1u%{(Q=@zc)4-10k6DTaYF|5WqfS6_MXM4Fa!V20)&3o zy2y@ZhG!PstE^;!vLu=oXA?vlh57=zK7?uI1D(H-Szg3@T3OLl(lDtfWCI3Zu*5n5 z!nu8?F*#m2$YcjFifbqrcU9*gg8_%Z%wGi4T3C$%)jjdG%LSzK)o=X6+nb%sJucrh zV0q-7<#6445ojHOQoX z(~L#(W}TF-mR4e_mFgK!d~%KGPV6E_0N4Qq4G@4JnDapN3Qt%rQ9O=MV<{w^YOpay zrx6cma|Sa-7cRRLTwwOvQb)A^<-|5g+f}&TR(&C z6CJpuE#%ej|M6REYJRb@UHg*xWiTr60$e!FFEm?yL`~%8Iwl8@k#*g?Eu@?D{g7HI ztqrUjtA2#ypg^(y)fi?{OkQs_&h4Y-(oh#cmv8#89Fj-O5u)agk`Aw-*gPth99bT*D&*T3JCW4b;-_6ZBNTBlAXrT@>GL;`h-E zhnS4L00~MmzBw|?dCBV2H`IDMKoWt^=pYo1rDRUh@U%!B$%O^bkN_;H5dI&MqJAFI zA6vh>&_1I&%Pq28Z~GZBi`E&B$3qb0g}UvA$9mgVwxKJquws8p`ju$oEEUZw7r^%56Z$?rls|x-G@GZ;d!$9H&ml8KIsQfI_8%w zu+UEk0fE_LTlBl6#={x*<&l~E4?Es-d?*;53jYyQCiQ(gSGj2JEyDY1(iJ#+X_wTw z3R?*OnapX;qVN}5#pTm~j$>?1V}oh?@x*`ea#`D;!d0~*(3KO*W8=}RqN2;w_}~y% zvWCs?({GT0F413~gn(Iw>{v(Goz+4+7>cJTHZN7n6wb$;KFTK`Kr9C|wZ2dq&rveM zrK1jM|0yI90+vAf*YPp4X}SxrQ~xIB(_nHe9^Wi07ch7eNlqCt#eR|GG;gRqa5fBk z-R$gLbC7LrcE)kLoZp7!lfByjyVKxX7mQ|-sePra_Gh;ySN~x-Z@7gEgM(7xi7O!( z_}o@eh%_qwtd0-j)OiO$-}vwQxXJWyDzQvcxKwEi&5ERc<&TUzj{5vUF)Y0-z0NnANEh zgYkTcfUTUiTL<&r-_o_l3PTsf`hLpku)9SM^=6H;{fE z-}Xn4icJ+UKK^e?%8I~)#(CK-uEFF=e@};-UFSM@Mp5erWC+0V_kAQcC#VNvo32P_ zDDNYbmY4 z5%N!P&HPs4wo($ijU)S24?@0Z8!}=W z1Um@d{dBD%I)V@?Qbti*5$|pL*DHpHd`Vd{yf5ywB{Z0tPumM4m$;Ln}s`SuJthU(IShY{Q*4^1>b#Dr^O3`a0h+01f^VW|@sWJhMx5$v_g z>(SyTBMpijbFVeHRa*gx@Lz0W_vPC3zCG6lLcrvi4j(YHrqt>oDC_uMR3)cL&8-P( z*Dv82pi1l3bk*93a{B3%@8xMOIfewme@3bPka_JB-M-r=r16^{Spy}jDQHkVH&}M7 zOL`%hEK>L%X``h0}eN7!ljA?A;IETWax z(R`=VJ<$spWGFpl!AB1OWo=zIw-GgT=>wft*fBEFCGYFhL+ZpObzx#=>m)u`PEKIx zxy9Jut(MLr=b@6@_iygRiJ;5>#=VESJMn#V`ajF$A#4jl&?11S(LwhEh=x|;2z)z( ziRo-0C?J>?C1bbEDSqkirf2f85)=QQkVxitciui=Xy@~{ z&iR$Xv38#;)V5u2IoS~zTqpN`yfb;oJpK}G|HqrCoBB5qbd7`yb2SKai;9d9T%!E@ z{qRjkj|Ij%@v-*q!YZ}o*LjuC>Rq1rsH7@Se1vs_yhh-c`fu22k=NJv_6&#%@FS>8 zS}rZHU;83MnJ6=!L;*xWR%!3W{ysMz$Z+hCW9jorln>_PvK2mN3}<|`Mh7H;QGm7N z32()$mvvsn>x^E*9DI)iBJeT(2>~!Bz1S#8{(^U1HoaIc!QTbcq@qv0`MLlDPiPO; zhsp|kM6zU@g!UDqw%zs$ZaJP!*87&M`d4tJftKGD64uYEh)Eq18pJ9knBhNVw@198!R!$vM(zwai2tmiF}uC!;e@!Js|r<>A2DwJsAz}(Dcaec z_@JDlNI3Z?#;MROAgaHWVw$kn3-y!o} zUfkK1Pkct`(~ExjjfKIu@>R>VZFj{Ih33ra1=C6M6iJQm3L>KQ==!Hj6{yQFO2V6&?J2ZJed}GJ?)e@ZTe_(r4SY)^;L#jT3ERV!q#NZqtx-c~`t?c3<0G zu-_iL7@p2<#~CWIJnx9mlW+W#PPs|>2e*P`UsVz}5gG1JWhpXiymIu6;dFX=69vk3 zVlx-G%fzwv!V?WhK7p$O51@ZjzJOcMYZ1=c&}XPt{z2GN%$OJkE#Ix!xB#BDQifQQ zcp&(eb}@K1H>&^QJnCjTth-^vb@~as9x_$B|BqY6ey^E+&mW+y`4*npO1v~j45e5` zwCiK!Y&m^~t9WEB5a95rs^GR8cpgjywM}eRkU*w8ttyHG+?fUyrK47f2>989(Vz_% zd8pl+{f9Qxe zOT%F?IXOS&cmi^0*`7`?=lelc+HlFJ^^Tg#0b<}S$5q4^7YxGTVJxl=i(ij63I30J z?^xTtrrb)e4qLC6e11i;u{j+-VJhiHx*{=1U0D)^z4~LLSm|mMVf!mZYP9Q9!W7be z#d39ROP=d!yJt5Uf9bqR;rT;EK0@z4?7nurFkF5oj4@a`<@VM%imz73o1b~lv4U%{ zF?HFw93L?h$(hq>yC5Hho>=8!P6F^}uq%h18Dros&BwAe+SZ;dpv5*&Vn{gs=V#5- z?*5h;di)Gu2yS8Y^gL27v*h|CVL!_(p5>y-;qqOE%Q&y-p3plk3O|Dxb1r-T*nVcu zh^=|{tkI?u`MqlN{xM!MXxUkTxuh1prk=j3drehaLauk@s`6R=kKp1bnW;UoqI>F+ z>U2GK||O0a1vu5Z6CDZYzrlxeH5=4qOXAb z*y6~PDZc66)oh&j>a(9N>%}PKG?iZ?REmQQ)wzdasNYsJkr7K($<+x|nSrvC5y-lu zRJZr;x%+s`1bS78gPzsfiOLfeFwa%C!u+#QK(&>WC zA#+1Z9OU2GpJ)RoU3fI4xOLnrILj{;{(3!Q$7J|XGD13W!Lu#ET(QFeg@=HTaL@oc z=wp$Dm9iHd2D6cRJN=I9{rA;#*C46H!yWIP_1WraKRQM-3P!22u*~Hwn_1}j@mdac zH#^%1!w2<))Uvk?qWvy8Vz-&*-`~e4sr@1k78HOZjTWm*y%tOZ)3CBb5Kn^PGNJ5% zrjHtGumRuUVJ^b*#@Ho<3&e9b?NjOy=e{1DEh;jA_t=+$&?vcDGD^$87Y+?oljBRt ztswz28Yho|&Uo6S`^LLx1SaPMWnVc>)9)=#%wudFLa#q9Q^@J&0|;NsmtHjL=iHKa z(Y*D}`)d%6n%X3G=g;$l%G&+R#lIPFW(IJ!-h)vQ^Jr3UT2;`k>RJw6VYkSdD>LyW z;nqY2AY!PP8PF&EO!NunDm)vIKvYD?h^FTDCh7YOu$C3KduB;e?Z+Yo;K-X3O!~F* zzVpB^!jUqFIZO7=P8Lp(8}ML_}0xcbR*)@U_6ZCPbOl&V$M$fSApU> zMrS01YlLk21g=->)5RcICMRhFB_F26>;?ts4q-S~0TL4yBSw`QW{LS8^sY6ZsD^F2 zddbt(5eTUWsr^r-NR{N7-M1%pZ{?}?V(#)h(*;Odp}s_j?x(w7r?|ucqt5Th%{r za(V=Vj^X9(h@okTe_jWg9Vg@d-ZbO2Xek$rY=sJz5CAl}(!wj`+L7gco!+vM1bH_< z=a!&E+TP5$v7w5dgo@s%r}F%1ON6&`1H@39eK;TUZ)PSZxncvU!k$xzE2J~8^0K?) z;EyI904N*b14LWZKqDgW!-EN*ZmKHCdvVWf2E&6&Ny28ZO-GQ&kgu4VQhRzm z8K{&a5I+22_jT;WcBb^=w^U*nk`aUJegS2v-&x3_9~vOxuVd2ndh1Z@8#+K48&LJ- zO$JpX8!$&-ShED-X>*S$W{HN|>w^$PxZ@%$%i@RT^77?y_-MM_(^ZZ+I7H!Ot7J;F zniVQ_OB+smv{hnXjC6>d#h6s8_PTU`c7O+#9m`@HPXaKKAGHU%i{ z(3gH?V#+}Q8Gu!UzvB=l6W$1bq39P*!Q+k1YP12QnoccBVHo7q%91HW1MtSO|M?$_pPGhF z1Z=RRg0!a8!U=_x5>8m~Xj6-$NOKm^hal##{1} zMyY}A#{4q{tiQ*xk=erX)m|=!3BG^iM1v~bg`Q27wH5gRn@llRqxsSyZ~EH65+k*C zHpZ3u8{)Spp6P^z%ON(YT%YswIN-}wkFLi;;4zx9YTvhXDE}S;Sb0;_K8s9t%vjvtb`F}@1ok_cKUwh-;*cCLmitlRM6z{pW-S4lV>cK!fa#)k|hQA0daDxy^ zE4TYv@M1jin0QRc0S9#hqh_uI{h?_^1nCY|lMx z!|UD?J9B%)9f0X$bh?qc;32O{n>VpZ6RN9GYTIA`UggTt{Bfq~#o^dxr3G(HOjIT^ zfgi#)+)yOqFFM2RWI$CDaMIX=j0$)4I6LO3!X_uue4Wh=33|W`_KF^u2xZ_2Hjj)V z`8b@h-v2dg@Yf~%k4rQ&v}8%b@qD|%OpMW-e}e32Pyk#xF77IN3qc*K0pA7pto~&q zwkqiUNyi)z-}%K7k*cadEz{n4d5)<}|z~CMa?_tS!^$>7@yq`V=&%Q_a%qSPmub|~YMdt7-`0iCn zDjZ_tjOh+=xSr;>RkjH7lO%;S@Lq+@Vw*Dobo_(VctA-Hc@w48hrk3P7e$<|Bdl#f zDpPHs1C@@Rt>Y^*Fwq5XEc%DG*K)|0V+S>n%g^yEru;PDdgm&~^NuyWKFjnIHW58^-iby?&`Zr_EM z*Mt6q^k;>M%jb12*p&)1APWA;((bl2NguddzaR^O-T;x?7nU^kor)7iC*b9$oym9ih&$_p+u?x6otX< zRUVDN0zQ`d(85|SUpvU}H*Yl-em?_x9G={IdPg3Y5$Rv`x=Q3=@8_asKMAV+&_yXv z%|3@5XhuPq`J@qkjY~i(TYLvAM_0YZ=oEDnOFUT=BIVAfEH}#^hp0z<#{SO}Ro#)ve5}ANx8&<9 z1Fo4k)qA+`+V8!EZ5^v0iw~sUxlRwu!zsf|loqRS1<&*!^z-5=`S7q2Aa;9u=!fGT zYP4VyG8CUL`QF`iHu4J?`cWOtLJVZI#(LUBKMYe+qQ%pHgAY7Cf#b3O;D20IKA&1p zV`p{b@|L20HLWlJ=v~5VanQXER_jr7KaOxoe?l%aWXxJcyJ>jd*73s*G9syxQN857 z5w1c9^iV9n`PCoZTd?=ClHeh8m^~>c(S(Nuu_bvokrK0hKqIkbM1Z&=ViwFr3F!Z`hKXFOc7=h6dDM5hXs$2tLeRzW48rMkB}21$3I$g5+jv z^I7Q{d}1UV606^AA*eb+`ae{eU5W!W(Ep39DtP9tD9^$*xfRzI;pbfure-V~LJ@3Q zB*ZG4{(-HBT-oW2{Sz&{JjzWZkBTc~#1z2sq(T%NCa0PIY-t*v%2swI$?$UFzW=iw z!^oIH)H-s{cShhK>F3bb{wnq|A8_YSso7YM^>K)u*cwVyz|Kw5ZDKSFgw(1h{gcZB z3>}5;FM|>Se~lShVGw|RZZC+^H?rQ?()Z>c)rK-*iwxVh&DPP@zPdas7kP8uBD@Uo z5FK$IZO7OvBV-Qtrra%dJ+y~kbou>0rG4DflApWppc`59o!a^4l7NH>hfNywx(5`X zN_f@;_$cL!^x3bO&*VIX;iV=0RFtEK*}v8!$qOHd*$p2ZYDBB#BIKa4_`NCVK1x-C z1Y-Ptf!HskR0XtLd+wYO(R$yoHJEnEie-dn@T$C`8vnK$2?1_%$@dZR^>ZQoB_NA? z^J+M?f1CFG`7&*~b75VB+V$)*+#be*kGKmDhORG{Wtp71C<e7Kxc0XhQQ=9`I=VFiUY~v4Yl&@#d$k z`VoAR9XNb$pooI-wChc7&q`T^Cpu_hi^&bf;%)!{WE-zM*Y!7G7W=bL%c-3oar=D? zndM3P>ggSOlJeX!c>BiemxiOcXT$K)J=bs~-xaEQQjp>qeePG~$Z*O@@)EMv9ydi(*gd zoQXef+-iH@fPJw)40_~ec&=x_4fodIY7d8XNk7>I6J-G+G3y6`Q-P--MNN;xpF zDKFVS!BDoXA1K@}%I;lsUTI)?kpa>L(UHRq>%m8_f+GqMVb7APJfo{zmOiutA+H`; zo&pZV^BdOJ-zxDTPZCKMU2oC$BX(r{hV3L5Wyy-xL>wN))oH(=IrQu0gf#(Xx~81y zR_Yp@lqeJ;{NdnKCPAT3abfH8h+c13z|^~^F2KAp5#XO5BTWxBO>=W-M0VKV>_T&?W-mEaQtfiCKSR;Zb=u z5{MdkMe0D~2mtQmXU$7{3e>U4L(h0xf_*~nF@R*wR9?qaYRqtO1b~pD+-pgVj!z(C z?7_l5=aE@@LXgpx@w`f(z#lQEBebtvY`Yd+VIEDXzdY=@Ffbu8i<%{XPt>XjDZVTx`&Z?$~6BZVUaWW5;5O#0zAQ2s2Z>$hXQUTwxg z>tdrmV|489SE(6e&hK#T65!4NJ?1f%2z1jw<|l|vOOvrL(pe|?iyVO&6tqmwUq9T| z`n*Zx(Ph^JkuAZy1?Sok2?idJ!K3X3G7>$nHcJEZZhmz=gVLis;DGh2WZRSm851R0wwiWhM)*6YeDu&dh@G zP?*MPV_dQHHr92)bMHq^i?gqErl=}_6|e-kkuJN(urO>?>}_-|8W3kqE2?57<8>6` zfh{AKrhNOy+<)m6iGFV{zcI-JKW3RS$m8p34$J>79_7)ByBUi>XL#Kqza9fjdm@C5 zKI{(dM|{WTh47}O_^lw?qsl5_WU2!?=f+}LCVrjZ3jJC_Xu_Y#x&~nXB)M& zs~nlm71PG=Uj=*_!T|}RoL2<}AM@PJEr+gHoyC${X(`$eC+k}|)kv1Up=cHWZQ-jX zJwgcQxA(7n=uGCs4=0DYR)1Su`Ha`X?cMDXy>cr%t+?nS?@G>^{k}W#9=|hrWFnQ* zmd3md#f^p`&n*ct=P{gx)NLjD?rt=C!Q$&xhPlzk)g0m0b8k1Z%@4$Z(ykWjFGvwL z$)g3c8xobmJBI&QOS(DVg+i`q7f8%j%QaOsS%FH^CNvBH8EEqQS4@_mefWrF%kgK! zZpyFj}T~K+GHMTqxV#}6Zh&i zT63aoYra&twUAy@=NVS#vfQEXD`hN@M0gN0_4y=X+~|2)6Cy{5@9PfVM6UVW$=k&~PX5Rm7TT0_+evW~Xu8M`0cIa+wbucmM zfTLMtB=-b-_Gv~_XrE%*_cH=6RLlqhGYmR|6a}U&>1hqWxE>#$TNX>*q5EM%z@m4!9nm&=}c=Iq(N%w_QHZK#*;8d?MB#p7#^5 zFtG@6nZ|Z!YUFrNe_DHBX84nP^Vv&f^L%?YtL2j!Vw0txioW--+kJ6asT}1%A93pu z!H=P%L&R|1gcq*oY+*rW`Y&@r=>ez}bp zxlB4>GUqyRQ}*t&A52)+Cp{y+8ITQLcE1&hxGrMwRzg;Z` zE)lt>+D)-Ko%!L|bh<1ac6SzI114UJeqHbz319Fd!WkOR1WS03Mc5kE*QGa#QVaZw zNQ!Ie1A@E9-@f8GHraEdZJ?G3uMN5aMEeQF~I3xalb?RqtwfTPW|=(f(VZB((Yav%USPW}Ss5#x}8;@TIB>t>Jyzm~>5; zV`OG7^j1bV*&rW!-{utbxBiJswzUgG4V}P3b{teRU=Lno4leN#3%~_hq*#3#-Vu4g zfL^tvVR{a{P$0{bCyH=^@bj#=o6lZHPTZ@n#4Mz3{M#vHb}9NEyoGK0FcapU2D889 zK(Iki2mtMO#r(`}aHG16O-Yx=?03#l8uacZl0x_Xs%(4_+spfIiF5h=MK4`JNkvCy zIuD`iHO`xgtCiMz$}Nujpu*+0smJ{BFun49yRI#Dw+YW+sx!!o| zn}GV@u`2qPK}IaBJI@VFK#YXI=i)u*o<>4s=2%&5v^v~*;bjnUG@ zmGSuyiu}EQFy_Ws-Qv``M7Er)Z%1hTCButG$x8LG3v|9s&75sKwrK6OOX|f{F>)~~ zX*2b4(vMudN2p*9pg2B;hXnQrl;Ny)`divWDteJVvJOmpy<}JCQVmLS3GQqK%;+&q zO_Ure?-~;?nA{P(s0yV*fXdUa|BdpqI5-f%&_8%r-a&7%-56mB(VKBAB-j02uzQHn#@= z=ey(fSiRyyv~!P@X)yv~=Lvp`OVRr7hTdv1^PZP$q3YQF86V_moK=P ze+HGSv}Ow8z_OyQ{0#>2lZIjLI5|Bh0K=pgFApAGc2zgQ-sCCvTMzA;L#oa(v3J20 zT{;Q+ONC+^&U@D7+U#Ee!tWgz87IN)KylBzICaoUJiu39B)nw=8<9oD%0>>A^)Pyr7X7Ez7*gn^ro+_S2tAsWZ( z{FomLza4`F_r&|ypSA)rbh_@*>H(|R?S6@Z&+KUV2ZbsCQYrmSUS)`W%R58JUyJ%b z9~vLQ?6`VmTk;}`cS>dV;gUmFxBrH&nQ>5{?V*Yb(} zvd8E}IV;e9KAmZ6b-X+V2PrO%u(P!nirKRjbGmL;Tex?HU|1kpl{ACCjN=JJUoz70 z;kSqLfNP}jDzqzC_BOi_mQqm=I(F+? zaMS7_dsYnSU!f9y@mn)|X&0Oh68TIPQv!jnwRv}x8Aai1C5k_l$yI5XwhaGKdgJ!K z8ZUt3c!P|?;}51<9YOi%{SFc)BH&uzBd_5LAvykOXdzN& zGt!8tF_Zx~VTTD!Bt&tCXJFt*obA+%hoU3e$SG&5eh1aKFrT9CmyV2H0<(N34+Dbq z#pmwl7zv^b+}Un;p(-+%cXgd)9N;_ctQjI0W~mM=5a_GR_TssxRF_IQ_zjO^fV&sL>EY@Votdqrsh;H zol+naNKjavzFw&4{O#WJCpSj!>&6ZO%A=w-*n;U%)}UWuW!dUPb9hN7JR06>OQ*YW zv8L2!E}bov*o)m*XUfR8Z!I%_h~GOP_qD+OJhF+KX7W-Q7Nxi3y)Ot0M+e+VGY;p? zAlU7s7rpn&Z%d11H1Jz?$wdEYnM#!^sp=7xKli^rsMGFDRvifl|KL0;&MJv|5e?Fp z$@oIU>Uz;*-Z7D)1!dpqo!&;ai9#7jxgApe0vBEC09-fz5lg60l3Kfgb!QKC3II^# zT{cK0<^pzZ-wfL;%ng-R@sVc%^WaI`xE>ivM*JP9bq3h{wOo3RAhjw7f{sxAjzqUn z{@+If((?}U?%FMTqn`gY!kPVN)9mVAK92f zv!Cvf__7HcI0qAcF&o+0I{{v8=R1;$>W|w16EYDlHJ~lCsW<;(O(==1&GG8#BLPVJ zhhS^JdNyYmT^efrHmLZ|T=<#dzW-D%o25d@$s|UNt{pt{!~dklC|CZt%*s>Q3t3N- z`Nz(mZky^ZKWB$pJgxXk6%_4sgytg3H|y5$6S`c9Ce3I`5^`@;&=8;-wB&@|^Uiuq zi<WnI%;z z$g6=0zmI2ei0D=|Q=mnHSA;=fPP+Fg6q?0Q&sYBd8ZlHq(SfoT-1N?QC31dg#s}6! z_4$YUPN_S*83OFr_poXe1tlvcJN$MUgr*r0DMmLT1h5iMXI$2p=N`3rh?&EC01Yxz z3#@_``P%+0?At`n|zt_`YWZIjBalh@D!C*xS9F*|~Kj z?f$OaodVr%{xd0wP<0%X+QxxQaUZ%7&)r+A5G2!-IAe@5r&Y9Aw-@Rpr>csIcR1KX zCg01bXr|lsCo{)urDYf=W~e%N{p`Gcg%dEmmd?2qQ!avkt0xO4#a)Mfu#0zn*sB$8 z;efN{UV%dn8~O%qjz9c1K!*Rmo7;vK6SPPpusmD5ggS4)va80TzBPnCCbAux;+KA? z_%oAE1NLfBbS}3qmr-iE#;#b&3;~Kr{^p7akLx#@;H=a?{Gd%ZIz;(Eh|z(r$baKe z5qXVBlv*YOb1TAmQW^ubA#}K=HS2t=9e}lXz_ZUbLwhIq_8}s8PPteZ8jelp_7Q6& zU8r(V|9wh6IgkuGK;=n#^h;p4tTBKSAt@3>Iv#Ju@Dt;`rR+9NmHP?i%r9(!gwzNO z+q5Bze^67mWs(nIHTSPE_nN&wj<#{H`XQgXlv$+%Eb@TfTz-uZIIEJsexw8|LRjTnK)ufG&Z~EPZ2>i>Pt};{xl36IUxiDlnW-y zrYl4fykREF(jjpd{?i;#6fFQs3;_7=@VpV{{?6Ppz=?J!Ix2@_DU_cBWBIPK>+xaf z^7FSvA|hroU@zL+G*wy<2G2yTYk*9A0Jcs31{JL<>o9n?&m%|hQW`HV=3Y<#SZd=;5mJ2-9h4$H?|V;nKi6nb*R}Qw+DtT6!=% zu3~RoY~P)nP-vw?6gwXJQ?LV{)GwcUl%W4tiJ%uDFt-{S9Zfmx!d(k#gG7oMb-$WH zo=OW}>96Ejm*dm<#|Nc4ccYlC2KG+*=|JvgnLc?C=)JYuI>^2cjCG>QnXn4|fk)rS zZzbQuEQ)=@xJ`~yJ_u)|KxM{4 zE5cu9;@!eW+Nb2e&;tNkJ$(;0>#{cOtuAoW*KAcAw`a=6XA{LyXNj|HMheHy=iIFy zp|@|-`sx))|E4hF28*>Am_0{r7O$X^cOgN4y^;h?*UAZ=*&LS6ow~Xko-a0M>V`xE z!>wN3u2-jlN2o*p5t_%nvVh0H|E&6(ce{def?%TZuNo5$ZgcZflfX+3CGd1D>pDQy_+U|X;n6K~@Z`wb$e94b z0!@|Qt)K!oH9H>LZb!Pb=bMjM+8vtb(tMOpW$Iad?Notq1$2il}WXO=GM9wzm){JDCJ>~P~h>WLCggOj;`~)hE zCh2=+xQWay1+)vCJ#(BYJI{Pven{8p4mZqd)sU_9kNJCZ10E#nY1tnl%j9~{w>O`7 z^jc>DKaNn@|KyFJ@PqBkcZGr{QK|iR#1joEVI0#c9ZQ7%z99jDU3=oP9x}I@RWM21 zjF$HEUd{ushl(=(waa;csss%Y0A$2;&e3Pm*B}VfI5O}ngIgLFnNTmNvjike@qTlI z-)iBh`B_V<5lT0J!uTF=3%B^EhRMq(6!I|Tr(wltU_`Ws?;D?@C$0^n-sA-hnN2jE zwSu=_J3Icu&?WWFDG7G_%|b~uYG}@9duK!GEfT9KB2z~i;<5AbmSMJ# z_H`Wu!m%789cQ6LjirO^!iGzrXi2gDD`CjIeupiXilva8bs7lSpV?h-ArwDw*{>Zv z<~W>ir9qH^lTA>WcX~k8A@`^7Qb4;4HEKg)h-R_2PiPKl$0=EFv@IPVpt|bnzt+B# z{9)@&fE46vJvj9ns`$Qpx5eaH^?2Q!Q7w~Hf3ua#9V#sQOJ*Iw>;Uzs5>#_SkG}>} zM)Q^k4Bv`|?h@Li*4On;$H#a^_np5mGc4FGEkgdXyR$2!l{vGN<^{y24C(IyEKL%D z1Tg2lG;U&aeLA2vOuQE73hYavE23j?z7_lR7?-+tVswRTIdNMsUvTlsgaJ_e1Hk z7;`L1mb5Z9gAYx9$2KnfGb@bbAqt+)u>k+)7fj{XOj>~1Au6(M=-n+v9sF-l>*D_+ zTcRrQz(yXN3X`MX!V9;T@d@HcpfpMK=ELEM4(>xP=nZ!szsQmKd>h!QBm_R61HIef zhm09ehfMJ;s3g+`iVY5m1zDDanPB}5@g<>tvt9b~wmYnDF${hVE`n+7jGPEm94D+e z|JatfanxHKZE@Z9#YrwIloy2g-jdVH@3SDpoDqJ$QZN4f;cfHNiLQVzzR;7hwAp|k zWy~__{%laSSM_B-v zz7tDpcf}589tL+z=o>a=OP;K}iJ*B-SSC7zukrK46wRxVIiU!t4dFPuR{3jx29{QI zB-lg6Y{u!~vzm_h%}Hof67E`jW{v@f5^AUX3`!aF)h>gq8T)Wjhz;Hmg8QF+x>3}u z#JhPp5JNkDqfXCl@a2pb9nOLdhzD1ZkEZWelwCY)TTy3rpA+?o2^P0c{t&;e z*oNVC+;m90anGFjc>I-Q>(CCZ>T@qIgwCy=rwEKjzmTD^MX(i;3r0ZI2~cgnUJKxG zRs1}YA>g5g!6_e=6BtkXVk}~8?~aZ;*FD=iJr(LbPYp!YX?-*|d>7{d1zg`oO@+5( zHFbTrUg=vz(F5>y?{rL>V2tRx!x`cw-Tzpc>Lcx5bk$sNvcyn?6k_#?L<#BHx%qJp z5qP&R;y!(`qm)WyqL}X(MU=U=Y)l7Kyf1J1f|9)44?Ml{nQd2=g%pIM7IK&>fuE)} zPw|KOs3NGR=QvafxVEM1saN|>mh$lqaWYl)$UP#-T|6+dCgS9)>)Xwa4}%X-ga9FL zt17yGC0fygrZ+3~%pL#d1qCntXdvA>r#M3^o1H@)bV3f-8z=2I^J&1Dw-$X)mhiN49JpmIE?UD7-;9?ISB~g;tVVsax)zNY&j$Pk(!zjq>LH zPv#_AGt~sw1|=u+d)^K?mS7DHW{7KXLHg5Av1P)1e4f-OKF^U{`xxmT0JICV4y?a! zGcKd_b5_7q(1(b;2C-aEl(=NXBIy7CFUMJwG*p5074C<5z3nlhkkZ`yh15eBb)O!J zc8h8~fWUq92Sw2QLdu9lFU>Ce{{y$cYtVIQ#!J2mhm;ES&UmM^81-HG8716seb;+i zK3Qi1TlCSu&4W$@QyndUolA@jXALquc(F$^TKX}gH)87ghTha7NqBs}y2%74qxb96 zyN~FBsP(R&%JL8yZt`^5bC4)}?iZEkoy`%|tiM7V!++u391~w{P^l)%4eCRI7BZnh zUd~HsHc|XP(xR^W%rlw8ofM3(X9jN& z3ryCC?KY*|Q@`&|yz`xhQAjIcrK{*87Ghc7<0w0DZS zT4b+ittkn6AAFoB6Dkr;sQcbdPj0V&p4>Xt$lB4$XGChKq4YsTkSe$^hO6}iSN!og z7b}F~&5}&$P=`rKI2ID+4b7-#aFl?MSe5&N7uXK9K}hO4-580Nz5dJ>U1 zH#E{`EIt?gb`T!c%0&-+^IuN~K!0$H1&~)giu?m|WKqBQ05@d!o%@~GgX4?R3=pv5 zkMuvs!6;Oy)Ln~jeFA3rJN{xkQ5!~OZYx*z^Z2JungpVLE6rg~tXh6vL@&eO8b=j_ z^{#?L)_l#vCZ&!J>H*`-o)g}vKaz?whcmPSllpk@Nv93jdvJ!Gb%VG^im6s@s|+6y zJO)VP*5Y?utZn@G$jtk_EhnVFR?nsz&qvaA8{Fhir4t2+tbJ$dbAl6ll`xK)l`4I( zDR!c5)?VZn;6(!D4P)KnT23^jHPf;sI=NQry*3qgPaiDi`;6Oh>8(!g!Pd7#uVB-QM% zt7N0>or{@R8B+EHmW7LGbo=@qP=Dglou@XR$X{e;(BQ&hM~rj*LMH1$wN>^$e3Qsk z*=~J#_Vcm&5+pCt*I+d|$;>vx2`3#)$bAtO{5cSX=%YXA+htYCn@BKG@A z(W59^zHhI`UQKAG0yPtEsxpIakUE20+s4oqzE3Z3j4}GDRCc!c{WGx_hGrL|S3l*i zV`?#hz#Y%@Qj8_jMDaD?qAyS>X3M?awPm$I%i^s&F%@I!#B1Ga_gHKh`m?4ei)eP> z&+PG6(Q#`Sq-$8QSHJE}VDISDHsUeEIn0rIKno z+GV=%{7DlQg2Tnv8cUxmR55Q^?yGV4hWVnJ%|(D12~hVB3yw=VdyGmnVd>8 zIvDn-M{f`o_F(P3X!`tVcWJH!MRIwT^P}YZCeSr2S1$s~B0)6jdc^?4$v>XYa{zwc z$UUgcIU5>hBS|$zBYXc+z;*Z#udCOCkmL6{-`{`jG{Ooh2HK^Twr7~59~qlH@yD^i zZ-Z7oUq8iFVtVF*R3Q3QKDgAU;vw$LX427@fjbC~jD8USZPycnfVpW6hetin1*+zg zL9LJzet?_SweWM_!Pu9%yYRMVkBSfM4Gh!C7EK=NkpSJ($RdI3EPH5GIGbS)Ekw*5 zj|<;v;m$l_<_RWX8-DHXh%LhpvO-QC;Ct+pRF4gxfKgMk9})MLZA!eLCru2_X;%rW zHKDGtpa>u7j8L+YHb*|8vdL^cNFPBpqklG(a!%e5+{Y#A-vm>#$<#;ti^`%YwYCxh z0-4S%hAQd;kzb(+RctF$1oNX|`Qq zuLB9nW~e|(`ep4#;iqnK)%>ctDXo-js&93Y*ZDc)3uF@?EQ<>9GL&EGfVr9+i!q|9 z;%6~j6YEL5qjk`HxTil@PG_Qcw#f2H)NHmy3#0CXJYRS7%RH@5gh?8yBnHu@75?XV zA}*8JkD{X3JUiVSBL+SVEgxZ_)(^ml;Lf9NwwI7aF1z4=s}bay>i6;OH3m_Na-Woz zSg6-}u2G8ai6)vaDSe_D5SUPz-22@OZpm_R@AKay491025E;cVb%O9jgBYlK%#9)E zO@c#fBZh{%JGo@a*KMiqmJ+~@I+6e>?L{8QBH-kgr8hE2`rAFlVb3JuIONOPD?lhZ zRtTP%NS~pXRBPY<2qB@TRaGe^UY)()$>2aK#6qY{6GZmY!DG$&rP@pIwcG0E_s{m5l_k zRprcIfki|P5jtGXs*p4XNU)HeP$eJ&#?AWX-N!ir#Sxdwha!Z=izvnzkGIw$BYgd_ zL&+3#X(@s1WoU0HMH91_i;~ks&B$#b)5HmiMs|-lVr4)f9z$QDYQNyg-@AA9KBQSyaZiypkJ3V-5RRf5qTJR){FkX}}S7V}e8|;;4e%VWxs%e|d zhjraXNXBi9k9N&~(tgLNup|WM^LxR>C_a@5PgxP|m29@Vc@*=UXO?i+lH=}`qmu5c z^?Q!R(jJEM;+_6VE0ZmFdJ#H+$0Zm|m4dnL%vqCnM`|aUXsB|Nc;TRYF)z)xMnRn% z5f)d?Ljtfed=Cpywz%>sFR^F1`!!7Dy;L2r{46R02Y6TWmIzzs`I&S2EWK5uapMri zM|L>cn_Sy1v z7WY+Tn=-c#D0+3z1aBA=H9;7)7mJZNb<;(kwA+yE>vNvtB(2-hDSd4e-3!P-Eo z*hnMQH1;e;WZua-+-xUZ+x3Y_b!hP82RXC6z^swX!KQgZr<@c< zi1kBT~_B0v!q=< zu2Yqt(oXfRbP0EhKXaxIgJS5>%U7;V=X^v|sZllPKH_}9OT?IKpGRFi7$tdV8mMZ3 zPk0Y_I8uep%sc-oBj&eXHL8~V#jtSp2$uZO*oxTlV0wPa;@tetF>>ADBND*x@6+9G zK{7XnOltGTLM!+}NaM{gNwx4v`UKUm@I%$KQD`^Lau__v6?RN_$K2GfpV_waP7kMWtpf@Q9JkK-RLS)wy& z=tDMAql{K4?1x`p@T$uGy4$W@xpPp^ps}Y%Gdo(ycppT31YC z{!|K8|9ms(pKc83<2a{|#ZM$Ux0t9o?Ey8S<&Pbb4#^lMGs$ybVatrunFqsO#bp&hFNmSkh=bB~fck1f4bCOEiNA|D9#63o zEb-&nQtuS-9csb`Wz2FvloA~dL}Vq08Hk1Nn#KQw7PtB_w^ zT*qa+A>^S}_}*a-X9q9uik}A8+pJcY&#x@?FZX}5w!|EQ!m35;yO^T`g4tiy)gQHm zmA`Uzi`RRy|G>MY2L=xi&mR7!X{_fWagS(~4G{Q0vY+=mw7^f$YAi*w_`oORmXA9( z>Hz?ux|s|0J6ecFhD}-c! zj{h-OmqZzi>)GN&)@xpn{4)Wo5Eh@q9hFl2P!5)*j%XaWg!6wq3{fL4k@%A)qa8EH zA%7qGh^mEE#n%vjOd^OC>U}&EVev{t4NWlzifjn)HtibT=o52C@Pdtlj z(hyOA24nWaJZkmE@28e_zqu0smA_^N}ct&>7lq=08dJ{ zhbwW31B5Ip8-U3S_T6FxZ$%9QYE!^dwvVgi%Rr!$i+vv|qb-h20%+6fDx3+B8AVml zesMW-$;ZU1G%|^g*i3mIa@BjvCWv13IjJb+|nne>8K)~SaBhgcw5 zj0=;S!~puurHbyLpzcYKnh_?)bh55M+(mnR?#|LGAz{Bu1}aH4V~BWFySm^e*~CrP_u!jrg6I?b|M-bj_h5Uk4UE{g08}FFo*v z+y~1h)_d#r?&gvyG7^2QxS`rC3Wf=DOiroTYq383w~-h)uYE4lKI-CZfodcL_mRclJOaXO6rG{%WS6xSapK#0 zTz<{-&7C{<$o)0)jvq6ok7A-5u1~B&>$8#Ee1>-hd((MWyIlIWrAAJdbHXuSPWthv z{ZwV%e&<6sR2udf9Vj24V3T`#^0=Kiax||H-XnSQYQ&+?iTCCO!TZ9SO;2bE(~7Yk z`eeZij3IZA(qIHz|N7jWdt0rD&&BMTbk;DLhfV+6n9~qs^#;Q$Nl@Dj8w!=-$^5!k z^Lnk6@3N?Svm7hO*{%G|b-(M{&5@pPDY{7gZakMh)nqyEP3J*fKk}*WKv&CNd@Y%z zLD+Ec?)p)}j)j2|w4H+u_%rozq4-p2Yna)w$21G5sc;~QWtKMVZG0H=ELo4o8`AA@ z@Or3QIo`@B%J%3|Q8l#T8KK53?Hjz7Oa9<_Ivc`E4xj^+0zh5>R5btQuUG7K7^eg_ z^- zkgRJ}IU;B%k{VBbqvOokvlrledYNVk@`Om37_DRZHK7aLZaO!#^H9%cu9Ly{CnP{7yTUXrS|Vkg?7W!R1K* z_#c1mva9#IvNxlH8*-;=XDth#m0O~~1+DK-CEsZF`&?RcS+&%PajQapVH8WfaP8B= zVgp|63yi5Dgq&HBrl=~A)?D^34gVmXH~tJ&2=S+ny6XR=kuU)lL|NNtgq`qWvO@>t zPYl-T^^eglszmKe}R3-DQ9VL@d|(QaeS;eNw}g zu+SSdsmV*pWU)NTHcHV<#{J~U{V7k@>QRwCURGn*fRn86%gDzspEhcTa!G%lj3ii> zxwo|WrqvFpS$T>~bg%vX--77^Yi;tKW22xZ#19>e2IzCyNNGZ6!ax-j)g^{j9ipYfKF@1lr$WqXV7%tgHQ<>RVQY zWN6~Hm=*~X@?^lpKHVBTa6%35u&pjSslJG<_|^IK=>Wp2ZRq3;BTVa~fOcpx zHm&JRzoBsBU5@RC+^zy4zckMKlE;VFS& zf2I$iTV-CQrMcSXm<*~`3OR9h!KQjs1XWhUoWM0AtsbQr)2HTkwzaJBc%2{NYbzD( zEH?>ldjp&(xpyW@KT`rHF#b&t{?7}3zye0CYlfcc?DvZPxp|+w{wZD1H}6%o++&nA zT|vsi(v1tN``m}Y$8f|o$-T0Z=;h1(AZ!^tFj)}VnYHw`2U0Zg@rMS<5NI(Sn@^h{ z5E~Hes9E`9Upjqe8-oKm;np^=auWBFw~5_|W-Hg5r1y~bYqwS4dg|}P^<%Y>VNy4I zLn|BK_+~QZL)$R0;yx?}F5v;ep{cm{pfZ(+Z17Css4{$X$~u$jkL~Kv+_sD-Wn!py zCGtjN{1qaCC;3K7*fM==cfX`;XItu15{=@(Umh#sHEjn2F}vURuefU|y(1D9p(J^s z_eFIgc$^&V6XWK*3=ht#Ddv`2gu2(=xEr7AaMA91x4{#v+Ip8+%O>AwW;peILzEg# zxdc&s=9UZPMWymsu1qmnlKuZV%>7>I}5*3BKO+)uzhEnE|J%E1HZjfhig)KWaD~fO$k( zgsT|5!(Kmpgv{q`5wCLlD!jIkq0u6xb}nQ8O>xjt(Q!yGy}U6tSYaAdTnrSI+v;`@Sb?K~(1R3YG0_H;s7(nY~2>YY)y zY?S@F0~bVTy*_4&YHoot=Xj?E%K?f)?p9Vy{zQBz(7ACye%Q@7P2<+l926PSI`6gf z$GdhXhGh{W8lx!PCU78h6M^POhOY^MF1`mpmdB~M*BF2TyoD=D^N8|YecI)u&Je>( zx*AGNWaD;m=SrMk=3LV5X5V6YN#+)sFFfJ!sZnvU#WKp9ezJR9spRWdOei2r0R~vK zP#JtVZgs#!j3@cmx!fwW{p@?bt+`d5%ToFiFT_uCEMu&M+Wr0_RM>8!XP{pvMG~Rf zQT9Sz+r9b$m!nc_q<8>SJ@UrzRv@^;d5l)k;iA&E?n7VhKxA+QovAru9vbvN2HJOt zVskms?Jzpl#sIb-I)qiL6NMtL!tP&=x%#EP`Q&?i7;CJmfo!X!IC72kXE7&}9(Z;K zTSlTD2Lfc{f^jr0?dQSP!c*i>q|6&GywlCii|chdbz$Y%3NuSSX);gF9YG-b`Y*m1DH8MOIe2~D z79Kb~~e-=W#7` zoPS{OT?cor#Dj&{dvLFv_35`eW%W#7J?xbMzLA{!bntL_3_3S?HQYaEIsvRNg+yI~ zhIY>kRbr;)*#6MA2#+qAycnuYeH)A1;xU-yyRvUvf9f-}^9JH}7%9O~2_+m|mj&AC z@7&fam>%FnM4J-`JyIrqN|3Mn3L9%J5-)@&ygLTbk$l~DeBXM1L!P0ikL>_+1I^;g zE3}P|I-axTg~6z(B0$?hnhe#q=cTeGRr-k-(7u+zJ-|l}L)eajCYXUmY!FKEAoE2e z_n4g5!Lm`w<=zpP`9|8Kw zo9JCbaG5kEU*QW5v#))0;Xh5JwK)Oua1l%ELE*Qqs?_^*Wd6x!wlst?6KTE7zSz&t zQ*~i9ItqW|Aau8h7Xk5qE)uWNfqivze;{_qCcz;xiy0!b;=EpqZTPTeMzH%)ORm_$ zU6TW<=^y6Z8`2{<2p6O(!Nz&EP)pL5Vm4vjVIMgw2=h2^|Cf!(1|trq`n4FzbFRZTJAl6a6fh;fdmE1 zIEgtoI$T~qs4M|OZ(%KgzRS7v)u9CHCNg{1y?7A2DfpQuh1DsZ0j}tpaRVhVwIYEd z&L_~|^cw41WVYc$KCzE$EkAG=W1)oN{})SLLS~n}#t3yKkJRO+-(J-%{|t1w4-)8# z4Y-$7Nefy|Ru4Sug5eSyt&$k9A>$i>nI1Brg?1|4Xpk71ec~ zjC~g~wY1gA3wVb>zqCcB>XrPO(Vx0O2B*7L2hSdFEw^>w zgKvSh!WOg@&^vX?U~NyA>FY=rYtG0wNo1NH3t%$i1xt4lc|86qD?e*2fP0>Z?R1~L z=Z*}ANs=D&$)UTQOtqCeySf48dW)g1q6>`fk=tzt>Gn#?9;R2d&};Mb3gO|;_(D7M zhC|BNTx|7~CpYT(fP-=ZsU0!VFk9R-7xAg4f;`%T)*@xg>-q|)dghIx$_G&3mznZ| zBU7~=V*)Qs6q z&eL2kHW0EGSFe-6Wz`M3k7#eX;Dza&aaP}t5W0ME8i zN)&!Nx~#@kVHctP_>Wmr_*|zR1V}%YZ@&OXdcWSB9xj++gL{sgcd zMh}#5zsWK)K~M%O@yty5Rv?w7W{u`+;or0{ZB&5aN$cm_(1A zE}a;)SRTD@vG@-Q;7AWHCI@=l5R zt0i;d-E%F2c&i=WO&Cf+9p3_9s#8eX&A;c_>NZj`GFagu;MF+=v-ZEoXL`zXqILC# zmUN!kX{7s$v2|AmohoT+fn_}W&zr-{}D&xQ32Qe)9&L; zeUp^XS#)?-M8htmYj({SOW|o#l*W<$5;=kIou(4`m?&?&hX%^8hf&_cisWf*(erzm z>UC$cs`)t4$LH+{rdDLyR_D03?$2p?n_#B23tIO_RP&ghIoyJkZ`C=<#6zD;^Po$k ziTG6kRe9~^QQq^= zs9<`1Qsmv^_uf_$NUfy6;heZa=V%eu{7AyQq~-@^4RuqDlP zMSi)}rR23AQ=O?vCx{&$2DKyulgke^F_x5h({bv zq3u*VY}ccXvWJrj*zV~9aftVcgu8R~9mkDct_{VjEh>-ZjGh@$?gxGF666m5JKTNy zly-+Kk)Ni`8pe+`deu`kg`#J$3)Pf`?){BE#bR5SHN$FDm?{_sEr|~GL(6du*ii!| zz?f|tf}k1)sBY*q9IYX9KeqOU?7T4HdLRuC+mRnPD(;KEK^f$F9i0TE9)D|Hmqv#t z7d!zlTiI)_qGwtYNj1%ulVs1cPZ5&mL3VrfgksZge9bgL)Mh0mSd{-?bs0S`iaW4b zdUXq2g;rqr)?qfDBTu>+VKATgmpr?z-ozi2r~84mSi`EtKRQ;;al;X6q2-92uI|19 zKpXUO`&BrA!lY^0&jJP3t*2z|t-AqttE2#yH)mz{ty^>UlcX-kX)AOEj*O)f>0TOfvsLT0!5$8OVG&3BL{%LeKxIzpB zti%dt;KJaNgN8O_W>;<=&L(yKcgVh^??7@Kk!($Une(>2Dmf<42!+4juJC;Dw-v-J zV6{D2r7W)1I_bP8S#p18WdborDfSdzSZQRWiUH}5;yqnE1| zC&%&iKY_%byi}m0l6U^~utUx=O?$oK0sEXANgM4JDZoSKH*6cFm#w4EAW+3yom&3& zoR+IL5c%>xskCFI8S;}7q+kY#d*P)4F+s%>QJD-D37K69JPLfX)ih3;R5Q^^$vcL}k*7s}xpO4Y>y~}V;;AKbJOIn_3`)}AC_Wfm5^L_IE^M*I~&JMTl zl?q6>G6DZuM`GApsG)0zrr^))Bh{kPw(LJ&-TQaXme1vGpzSI}rue>nj(Sk>GplH? zo0<<2yUcY@+E;pcIXR<;U5!P|$w2kClO{X-Hke!CQNE(~I%Xz%b7x98itfo<0+~PR zJb$VlUr}#X=U%DWDl=%VbHU!<$nhC!K_#9d$0JNZ+st{P=$-?sjR&}3} zkMoafAi1P_ZvKGAWO$>3ds^SxoB(C6$E>(npAHvrf~&=UM}+A-5>0NHeM%H1IgxrA zPT{S$e{%(eBhJ4`4ZcT3-!2UW+xDQ2=PS*38N50=erP7QIus_!IGSq8bb>6i;`Enh zYI?=rLp5Qqv%YxYG*f( z32{qRf0=2kCch{~1`io9ZWH`!5v8I9YPbwIyoQfpCoDiGQpQXI{ms3Uv4Q%7*uaE* zEauncCelpAz{9)VhF6)3Sy$md-@m#(FAgbw`7Mtuk1A<+zau9dmaWZUW1WU#f?KA& zoAA9y-GoNvj&^33@GGUNr1O~QjdBL* zaX867_4)tf>Kpv>{KK}dJ1pDF zw%4+UT+7C4t7T*9ZrQbLEZbOKwy}(5+uiToPtWtb|G@P*Ki}&#j$@ai>v*%*g%yKh z_2L-iN{`=Z1mn-_c{CTyuG=pIv01hcfehE(jG?jASNgC4R+mVMyh&G4!iH(z`RAhD zEE7xxR^s6f(7oLvRT9-v>>K!AK7$PY)dYF+6OsP4z?5`!hAoL_f6;X8s(D0xfFJTx z)M5^!5Dv^aY4-`gJI$2$r8n8(!e@=gli@76ZC;V->G20+o2?)BO(=EeBt3606rxss zikfSorX!2tTsdHoAIQlh+pwv=x7_colEu5pTb694jc?yK{=(=Q&wH6KwgZfCzkrD$ zwbWcTE`9}~(Er)kq4ISagNzGU^RHtjMrSP-}KHZ*S$W}lf-AMU-N&YF8S%# z7FVRXMqV_PbH@w_b1ep`>1Z+o@{Q=DESw2isI4b4jrrWtwR3AB z2Sz*2g$^tKa`g@bH#lynoz{-!%#8vL2sCD<2N_1PQ|mc7h3&qMOnrSvP~-3Q zHKW4LE{;+m(8(^=S%Jo1?nj`<-$(J#k)5KnnnPav1h0ByAQNxlGQ7L4Vz2z2T2#)R z=b)n~V&J)D34)7h=pO7(qpO10d-vgw&6;K2_qzO635O0egKFNR^4?po&*M9x;@2Px zEgDfn$4oNLv&0{dlBMyl&rhIJ|E1ed1UC!c&u96ATGZstFsqG4^626fyfT)6V+*Xq zE(mu%GvkE*wPgz&5o{;DD0MfaCMmJG=jP3k3uxrXB;+npc1K~`LRc8;WtrT(3tAmH zQ~Ef+{}00R}h zSo@RIJexOi_aKh@fQfCEhBFq`=VVTfoN(w4I9}A3xt<%sXIbWH8A~jLIf%GlQ!S5*x z=4%TIJ*=5`EL_RQ{f}0TCfd%wBE6>B-kW4BthS{s8F61ZloC4A(GvU=7`)qPSWQF#S0LMX|2S;l}J4TXd_Dblz9iOB57j=LWQv+gPx*P44skXg5f;9u^zPjipIa(_RY zYyXA*G}Ke+Ubms62YZco(isr}O=p;^TKGgZfGz9mJRDobSJ7gfn2D_e+y^r1}m|&RV zEdAFL(D%O8eONjmk~Q2Lxo5D#C?zJ+0zGo(&>Ie|$>a9VA9{(@4S#1ueU=}Srv^ke zFWuLXALy2aY+T}B>60RsH{CAke{G*m&v1xaqvnC$to&1!nnsmW{z0${B96~`m!z6u z-uIa_%S?cmey;vzdDN~ht^{JD(`Ppu2xF)iEm~~W@BUS1v3`=s7n@< zCU$bixPIPtUT}F!K*@b~HHsh{vIj_OK)Fo$vCKVz8bXC)zwvjJYjLmiGZuH*c{mQJ z?#UTz6>c7EN7y^oJ&`d1x!4W=x?1*hHj$;Ap>|L4Q5`5PKLFcrF)l0Ole=SVMo?bxZ3cjl;l1rKT`$cTHrVfDsoBqHmy zw;KjU3v#Pl5xR9qVx`?aU;DbFvrmQ~urNsuxN@L$XO+E7=N%)dgQYFfzSRovM;KmMxlWUIk zs0>r6Uvui3xHiRP0}@v;jw>|;wmlyQ4x7E)SFd1zm%w9U5$))Y_uBudb(15%_6-4v zVz=O!MBqysFarimVedAKbtDQ(KG1%(s?k%?EUtKEL>Uz z?Ndq)@anT@0s=DM#2g&hCu(Dmv}J+K9*e?Afu%55qh+{ZmA<_IwL5N2v0sVtV-KG= zt%jB(8O!prAmZoub6R7xcL(TcIz5EFD5sY-!`lYL?g016Fua|l9{G7_?*-8|=`~aS z?8q8h`ju<6U2Xn<>W;4JWc!L#WelCzd`Q}f&C+HDD?|i_V3oXK+fQ+tB=iv=x*p+KMdgwdMI=TOC7i!+D0u8i%P|LuAZDFw>eo!S{EVW@Fg!DZU9P7lfmInV-U(;;B+R z-1=JeB>uOSdh}*U?>hyK{9mf;j(rJ`gy-AmzbZD!U2IUY=Zo<@yK><`R33YX&U^Sw zJw*mWSe9t$&GWUa9E2X!dkl8l$B%^D-!OO@mYzDTsl4t^=)F%+WBpOkW>(5^ZPv_j zi-`@uXuhWdwR??So=KN~Hig4+TGi}c;qBoDu7{$o5&9}kns(>`>!~6hJck+%tBl0T z;)>ogEn`rxIul5&8l6-9Tca!5>GfLu&#Fxb`saJhU{=3bL-;kpuiJ!<^aG#%;ko;PtRmIj^jw13ADD@x*W!D+TT`$Sqb9ZRi&IA*0 zvcLe8fuZ)hkAKvG?}&ho-;3D-@n)TOPj|8rB9`|mudTNn6~)O|EiV<^T;*T5>i3)| z_U65@_)u-#bP}BJ#VOjqZK~)$uxii>u}uIy2G5I+042BS$6oSGfeHJu<)4z)PX-KcJQIWNU(?!U z(yqsAoNBd0smpvkAJTb-&$8p)`BxsecB~4>u5V!P8{xtJzYhf-fUF1ZytCFV_ph2* zF;DDy&3s!A2osPb?7A(*H44@#l}P)5sU-{8`ef2%#&)Ii#3=GiTd@60$bunO7y8>9kod)qP1YVhoW+0rY z*Gob>BM|b0x7&xb1a_->mI|`+7^}oza6}+(_%8Urs%&k$77AA!fzD5-AD0uoJwrY? zt4TSkV6#urYXw_l?J;`&Ol(&<`20g?8h0qYGrt7GTyBYTOR>qFWcmZ-tRppID!4Q; zMq28>__NJIRru!M47Wl%W+Yp7zn`}Bs1@ObIjb1WOU?Deg;?ZvrVrxISQ+pKclzH% zf77b^%a{1&+d!p`Cae8R>g8A;C>Swn#31+i)%VcXSDs~brL5Rl!`?T=Xfi?C>+KuK zr_QZelXtdiutNyjD=m<7*2@IOjjW@w@C}!neH!NR)6lt_+to&TvX>&TLM4m=M)%4N zI~vzWX9U;hUNoO!RldBm!?uKHoaD;F{wHyP^d!!+UU&bAyuhL1?|g&9oa`JxRSu+% zUs(;<4-K-Fh;PyfHx*PlsNFqs=;ts^B6gn$-azO_GPUlBgrmw~48Jj*G4#%3yV+|c zUGT*o<*0qH!ME&Mne)xhbRC{(SceBx_N$of`5XNWl&SWWzIE2*zKY)RIt{jW+4sZg zbo%8chyH*@{-x?GA`&;JvuI9Hp!qNLso_^xRVe?AC%j29iEy#7LYeI|t%9cMiR74e z8!Q%x$sT&Iuq;;cNcSkPY|&Dx7-1`!wF|K(7BVFn<09xp-*K#bUaaA#B;2L`^ADdBX+-@#aL(( z7!d6K!}4isPzv2eu^O8?S02y#J&TUSpSG(qmVReEgk>kk>#xEKU{dinY17WbKM-CZ zMfE>;9LGm?P~^x-FX}>7M2TMvZ2TZ3V@sUC2ut1=rC7Z_LFOLCotk(7Wcv>{6fi9FB3%s9TI0@P&O_MC9OeI(hn za4EHSm{ZF5EuZa~k`$UGS>$a@RkBL@iSH&R!dMYaNPGCj6J++yl#tiF+U>JA>D{9R7A2WM)MV(ay@XmgpzI=E^mB)5#zd8Yj=fq z1EEXU7TnSddRo5t;`&nXHsb8`6suVPB2T^pCy2|~K>y_ED6T+!LeVR#`N4)jc3$-v zudo0br#YY46UrHP@dPPz?ly!lB=F+a>Ie~m-3OSj-K}F1*Xh2+HvCs@=(4IIhHrhP zMnSufPP!$`}t3`CJs_nQS3GjvYBXOS*?y;hf(%>zLo)TzZD4_&>z+gFw!<>z@eUJGjPp?Z$%C>IYkz6lL7pH|*H zGH&?#+p~03N5C5c23){*5{`pcO)njG$YP=uNcuVLW5{*<&TefPH7U&YN6N>$02W(K z*!AS)!vqc71wGaf={@l`&z;Y|A2gD$nlIs)!6~c#PwWptl!26~bCh^!f9?1xIp$yi z``2O$B9OJA$PNf$g?ksfSKHJ^uH3WhQs-CdWXsKOsyjxkab3I>%?}vL%cyMZ%?vvl zk!N0jH~h3lu}Eis`*2Dl$)mV#H#(*a0NOnMzzsK@U?FFH9DV< z*KC8ck6Hz~!IzL_b`w%?P5F84^&qtygFScOCZy1l77>Vp?sfM-;{DbB=vnINcIXdq ze;Vy(a!?-CrthShxV^Lp@ze$Z zl+q47@4-55?2!S{kJqJ@={Air6hZsFG!zYzk#eC+8yOh^l5GWR!m%9zvm_K%w? zSI-?=uV}LZhgd+)cTpJ`W4=!Gg7Bl|K$JH`)II+Jyfk#?MopE;&H{fAJ9eonj9$r_%C zz$lh#{ak}UtfOC5bpwOpj!{024+mtM=)(yy!YZCLF7Ik7VXfF4FCzwcY?;cop;N02Y`v@RVW@w!>2t0- z_4fOT%DGt9VJ>xDM~7lp2fk@?;kt%>@vpLvzjc+gI8rV7_>MbX8Ls@iO3#;{svwdD+x;ui>K3 z@#u5v1~|-pwOn{-cdBwbiZj1>DG27gg?!)CT9A86_jrQT-Nkx!o0ra!>BeutstB41 zDZO&2n>#w}+*ipL898>kP}kuV%!92rQQV`jGzm3D<=~D{8Bop;3KheryUoW+gU2hx z`F9uKxn*b%26}Jue;o%v%wb=}>vvsEzvzoimz#uo3N8C+eVB!Krs^?0hb|Ua`RTGB z807D}tx5WQVc*lusSbG=xLJG(3G6z(etMmY!TlwfC17xsn?;1PVbbb_?uD!P2P=4F zu+?q8op9#ERa_uT2RTq&mX=74n?2wZ(3o=VU0G5d*qT5o&cB1Zp3Nctv0Gyq^GP z{I-u)o5^8Eh6i`#?)2bRH>iv>mFUdGNAeo#+IoL3+%XfeRccjF`AS50f%_FFDYb*6{HyatzpX5~nEshEKCyG(+?0*-slVc%{0i{ld0Rn#*v7?T<{xa0Zq;cc>;0;UcratV?L9oH= ztT1qC*!}K6?jV?0ccz&(QFp&)#d1~GF~`7*LPyZ5J?1sNGNe6DiCeCF#%hb0hP>%3l9l=sNt7jGU0mh#hwbK)svRDyR_!!V%*i((Z zKS2I{Y*9BLso}tArof3 zd_4DJmEq@j1#TqqDMa;e!vkd=of;z;La0Y5vy+!oFK9QfsorVwk4ckce*4tqQwXe9 zY`oJ=S&8$VNyghWokyYKvMS{ZqCmOAtBuF@^_W{*(`wb5D2Lp#=4)u;0y zg|Y&|TYXM1j>4UBsT~P@PXG=&gn*JOZr+pc8_l9!W})^TuEP`2CFs+;+d2 zm*J2%fY&nH`(4Wqm)r1ItR593QwsBP4Z}e-FvmhEH)VRfpN|lknOndEz5dkPkc{T^D#G*t8YCj2$GTarcH7cLjpR}d!~s1ly0ATzs?1kdPOTdwiHN) zVPKKSnLD;vKB#+0&Fnk97J>`CG+NvOQ~8lN z)Q*Pf+Ttg?1yGT}8tsj{JxAX77EX#k;1=aTW+8dddr=OYE-^Zll)ZbpVMc}7o?HiR z^oX9}8}D|D$o^ely+9k42W^y-#d$D>rEY8>?58aMG^t()d+1*@9Eg8`zkvs?MQ1ue z_=iLMj4d<}eOg>1ashSDS?5(V3mPwNN!o@P!4BUYcJOhq96jkfues)59AwG~E7$De5Ao52E;l z1eTc@vi@M*({b88`na;Z#$G2j=+wg3+`P;AGhp>Xe48zE5`$dG)#q7Mgz3W1%1~zo z2K=Be3lw-jjD=G%ofUd-YqoCmrx17W8c8bcJ%_|FwmcTi%uly7vcwhFDaoBrgLY9a z_r1mnbQY|T4t53#52QHgse0SG^0>&C!poLeKWH{>+iMnDeBUh^_?AlQLIrv3FU~)(LVc5c_sOoM>&iPAP_`Cx;GIIiT( z^U@PPOD_5>kP%F(_hnGAOMK@B$u)lDxTDR~7#+1}Ac+;>dw)^Q!Of?$t(Q|Tt+c4A z3>_jpy7{q?01yTI7J}`pFXKBvQ?&?>kB&Rk_lKSB(%k$#0y^#bz;CXN5?}Fp0}R9<>L%f^t z(8o(Qd@d^@I;s3#Y_zm^H^cmJFx8yhkyKQg z>-@-EkVa`rv3TB}i*>U?nJs>c$(}|X7)iQe`}G>#B89oAWi+DEAK(yO0#3jvZ$E=p zb2M`2Ud9gF4ZD08fNYD~wJglE=UnX*=x&H!zH@$^x`iZW$iB+nk`88^VX3V zAn`o(S8atqo#GMV+|RgN2tqvJP;6DK5=8;IQuYib~k&& zgg~Bei>rbkmkLREu6q9WlSkdQ6s*tN2opa@^+jH^MpvPJeDo-=r7QS?l3gQ`*v*=; z()#_gNx$#dY0M@6jXUd&*7xNbtj%&P0!%r6I+l09T;p|0`HNMK+crvV{^Bex`dT~Q1h51E8gu+ZT7{a~7 zpXdyVo89939h8HxvjLM;2o4j#*$Rc^#gzFA+A!|ey96O=C6wbR>7Lj7_h7O6@$?UY z0rA#t;>ck%k;ElsdRx-(%Euqxy<_~?q90YS4&+3vMEy=Vb!qTO&*3c{75?!seL zB!Svm@}QQ|lO8YY7j~D)IX!mGP<*!iqJ%8KWDPRO2yl`^O%@SaRY3pGvsd#SI)3}| zn#HDm_-^s_)m{SAM`gEx5ml96@f`;v_i&anC2Y)RJ;>mxQ1u`V>O-+`OZR{cGEUX$7K*!PQ2<3F06Wh1r>|PY%)> zk`FQ64Z8Lkb4yy{4b-@EZ~qCZ;#=2L^nkw2f+KCBBbeZ@$J44at#v-7H)B$* zt{lFJe-fg1d%VB|DEGGUVJ83Bt*xt@EbSCkH$Zi8QP~@L6S%JT65i0XHF0Qal^GPq zMZ2mca}RNRN_WGKyaL4rm-?xEbD5+s4KQDF=ndYQ(XYJUP$OLf(P=AMV4XM6PHe#LLi9L+a2%D?B3G|ZHb5IY&?kRt(kfRVE9na(gb5mH4@dS0YgYT z1N5y!LnxnwD3~ity49wnlb@T*lP;H(L@2peDcH0PlF9EyTi*IQ!DfrMGJb$7>?s|J zLv_h3X)db{oNPq-!q~1y#yyW_|33){5y8JXwLE_F^$mpAb-&eWRw_#YH$BAcZThV! zfiMN1&Q&k0mbBFNd63MLw--DYaI>PJ_|xBH=;nvpMCr@J6Vaqq^_tTH0oxX0=s(6C z`{c2b+tNF+u&CuM%L6`5O)!8hydS(ims?)B_Itp|d;xL0yQiOA@y=0h{N9Gn&j8S; z%d8=bl>i(iEkte8pz=;wL%3UyzrcB?p!d{OZ3GCQlRQ9|zs`nVvFmA5r|IGT6hf|0 z-M>cO(w+D1213jPeC+kce;fJ!2#WQ>Q}7WUOoQA$O7N#%!8s?m*y7Vm3gC}86syyZ zZS(#$%e=w*;21*WD|aZ&dum3EVCh5Jk>yd4=-rddxlQqx$F$aIBW0IzA$3%XKamE? zEikrQ`LU(I8zkVoZeuun;Q?^vgA2HYV&j3J?-_PUaqeD;2@La)UU(H!+ZCrPn6Kwo zFO=NTm@}^tfrzK12c;G+E)Vd_AbQmIS)|Q71(}hS1w|^r; z!l5VE(KEeb$9?&Jhf<>!%9I74Py+ZN1A}g4ffG@H85;NO-+vpd)bkZ;HHnDe-3{H} z4ir|!J4>yN|1SefIdA;#18EVO!7d&UgYMq_$Ddbq6 za5+gOd0S(Tu9_WVEgari*^p=Fh5qI!1P{E=((nxrECyPg_a#n2h#E6SPqTUU*#PFi zU+z(5^?dVtecPSK!qZ?1rA3%U+wQ`nr|9zRP$67BEt=jve=(D(#JkLWPhxnnqnpTO z-Nplt!O_5E8!Sb4S6b~{F&wxTrcNhu=|)`vwKQcpb(3_O82Z3XPN|? z+6ffWKpX~~a$lE)NKx2C@_Oa3xJVIONoL~3Uec4pH2Io|5h=VXTg@aUN2RTYi|op5jevs5U4Y z@E)D2?0TOUf zV2CvmJ7SLEyp7bq|AFhMCdTC(LADilJ4B=G#QnS_h<`!Rw>6!YVRSJ-0LGeRl1K#W z0{!{Bs!$&SVf@(+ieHDV{xB3S4}%>alXW$4Z03G=$t$`mf>u*agVlf;-FTx!>(4Lh z=zR!d@n~B`Hm(u9eTe=R|76d+eV+1r5;=W$Q$cBK1Bu4_a971+oyz#3 zmt>lYma%RTW$T`!*4ctnOlCu+1V~CeqTr#V=$t6 z+G2)2bjx|6K%l`AHc6^R!s2W`AUD!#3nfnyUFP?LiEgszf}6w38Zc(+nM z$2BnqW8uCBeM^}34JJ1iWb!Uf2>E!8{cK0bl~lb{{b+cO$JtIX_Nw95es&8!S(5QX zAfH)QvCwSc7LtRrxpw>lGC+VVM(yOnXMiId@0GF0CDQ+^Aum<=OEoM=4D;o;V++o3 zL4MJGIPm5l6J8&@($_*4zuzmG5Y6A{mW*5B)Z`3y`iHPA>(M*Ce}w6vf(nTm3LuNk z%MvCLn7J01#@3>rQp1avZdArVG2FPnX@{P zaE=_66hMV@DFr3c$14d6&(nXHvji=OV~b%Xg!)gTl_3g80;}1Ik-ZS1Sf{qL7P^Yf>{-37{iyrMZcyT^$`uqD@ ze+dGv+#+k>`|_7ZS}rWKc-y#Bu@;rzaTk%*0k}xWjzBQaB+EmXZOMBRy$Ara8e?=r zy%HJh0G`AbM*UE~$duMhtqY+c=`&^_JZ+x$llC~6+8sj#*w%mZ9y{4_l*YGjxvqqM z3X<>{zxLxs*H5HE8+Tq!4$+N-Syi+mC;%RQ%)#cjU-D1c!R`JZ+aZJpI&q<$RymeI zgR~>7bp_ zzrNyuqo%H)kYS=AvCfA0W8Pf~3%K>_kyGOsAEkFW)YtBu@9L7bHARhOfA#;AbP-)w z_lfBmIZ=O0|0B|Ey0ZBR-lVx)30~~vM*7y<9A506s02FNa5;qeLlQ|~37_){P)-@C zR(PW(MIot6xPHlt>w1u`^$G?&Xu}&QVMAQRsLP6cOhU%AJ%866K4L9 z^7yyy>FVE6QSLJ!hs-<&8gfA#zhGe=MUa6$c?&Ss5h5tkME- z`kTIVVyL>H>AwY=LYdoR8u7!lcMW1YSnBTT09V({81SVorqhlq5o~)$fA&OCh3c92 z+)DPLa=WEtsEwH?F=(|+51fhzRxXbr?szf~SBj)rr-1>JSJDE^dA76ubXY)GhL0x6 zH%tQ2-`|^OE@AuOfJg=tXO!tap>JACmZEQ&fi;Z<{5;?W+LzyHdR0+IDaG}-ZC=8_ zfLUm80kU!bmWU@7pFwlJoRDf*z6OM-&;8T9B;_w**ISR*B^*08$eoeoYqv5mYFVGM zEZCyn-xvVbjy@WoM*qb}`_m4zj_)T5k@?tw z`e=yX$XbSTjn63i(4ONb2_v3KsC~ z3(p|78FNHnRnBxd%LYA~6QY>saq+8Xjk-REF@6`{y>!;e!4bgdY|2xSb*0eyaM>|}>TN^acI@H5LaSH{IIC<&6N(Fs=u`@a1ms7X_i{e{c{8TX zk4EkK5cU8$pSTXE&0qe?*$Ty~A+RgfESiWm4MJ~4DCTvD=3Q}drt~^)Nsf=XFR_{p z;NHr$gS;1tCjnEn9%rFELFQO#u>caQ@f6ZWPxy9{yS`1PQZUoYiZ`Rs9=Y>TJsD{@ zv-GCT&8@QrJouMk><^#;1^A%%AfTyfK$HAedIkP!x2Xg8`|!oFO?7NT)sK{kA4cpB zIcO^VW?*v!*@zb!?>8@(g$EK;i%VU8y6nOLNbF5me{}E>duy?>-m=Qur0#}Qx|nBF z`;qk)HLYU>Y%{?dd)yF+?ozSRTmurYut;X#3I@;~Ag6^AQ~=*rY>RM-i@g*HiEr^n z7es*QGpJp_-Nf6#^P>a&M{SEG6;LJ?YUl^xsk=<4mrGw$Q|8LY_U{ zeSGbE>%F0C&Oi4q0|m4pd!0Rv?*)R=ML{njXke-#=o)=;o`D~6pu|V()4L_qeDV*X zLe+rn>Rmm0*V8ZcTft(Tg<-H}a*<&HE_}Ndpt-&bD^Pq4BmL@M?~)b4fq5R9g)Sni z?a4RYm#wDM#luGC*$iZViAh7&&R9Q)Sv+MY=7k&+eqfUQ0&h(ZEY_loy~7?qVm&BB zqvM*&i}bcd|5WR%Fxq`2Hq|mz%ZQy1ODg*bZiiZ@X%L9TXo!y5-Svew09VRRw{wf|B zY%I`XirVTp?y?v0_!M$5rB_Ob&=n6*Fu#jHI*kVEh;W=o{Gc+H^&VFh~0L($iiXtepnIi}F`3=YHY_g1uAEV6w{loGvxT4T&ygK7#71Hrs zwu=0kG(xi#XKbJ%YWCPL*jF%AsE_nOOG8kKv=@zLk0unobG124ip_Xeim!(3^F&<; zP0;H*3}X{tjCFzPwVZe$6A+u>vRDf13(3P>$%NiuPN+9_eRG#xucz;#q7tf0D;@A zbji_UO=MtX7he9U>tt#t-S@V+uSg+ppH}*eg)ax%|M@JJSkhb>UQPyD%|?lu`exBv zLr)Li{xU#mzL_#FO}^*PEw_kV!jRYvZ+&BK5ObKZf<8ZLInw! z=`BprT}*;56eLa`E?r_+z7auaWKNX;+2TWiR9;YQ{GGM5kJ#qA!~CHb&JnZ&`N|-d zH@u4o)SoC97x#EiCYh>W9`?f{E-E>oOKRp%<5-l$&P{?o?TD8!8k_MQSd9kIokmpT zYSL}Es#nQxo{*To4}6VV-gw#2PA6sto%oSCB!=$O01X*#-reK0e5`AGB&Va6nr`sG z{!7*`8pSU^HGXz-cX>onKyL4{w>5n}y+x$hq5w`tZAv$K6@1ggE2~+Qu3qy!#ijce z&00P{h(N?$(*~7$;)Mgkfhj@;o_|ETi{xDUjiV{=Jw^@z=og+j0{n+gGwgCLf0vu8 z@Td^?G(jt&Uho7};pc7e%^#-KTFtw*Gn&v(9@sAyL*N(5lRp5q*OYmpskLZzS;>p2 z7WyDV+sl}zhvi?k6GJ)lW~XRKP#&w`{*-}d=1qo-L|-7v(942U)cNH>7;Y|EX8y}a z;TUT2v97UiA>2l_AN+JZJHU`JutD z{B-oX8dyD;V=wcO@vG*%C_M58j`%(^fnfI5B70>|S3HJuE-{J%T&JF}wW13ttTucp@(VBr_MJSb!4mk*9ch zfWl!Z7!LfX`Ei>gCDnlCmsAXS_5>a{nA4Z39NPBIbo~fjYYe$9b$XclQo+rjK=9(1 z4uHP&U5~yZoSMvqyhwW>f^PqHwC!bh=VB?%M#df8NQ-0U&|Eo}u8IS8Jygtnuxe_%O}#THf@~+zh}7MYrhw7U@m7G;#G{5UX<8jDRkc@c1a(`2 z+Dj~n$rF`a$N*XX@k74FBjJ#h9%<-P%oH{f5PttkD<7vziMy=2=wx-l{uGk*e1+1D z22_+OW@md88(acXKI^tLC=v%_uhi)A#MIo}OvYH_x&! zw6k+*AK(9I(>nU?oWeMNJgs=`Ka`U6CEAx&oh$O0z zn(+^n!vwllyI183nik#3wq!mV5)M~M3bO8UhWtS9;dL>(foFhFOY*IS@@@}gSNQ2L zShyr0K(pmnvTr7%)N_TkF=f6CYeW~4Pnx=gy(n8o)wDBrI%2A0Ck9=8diRDn6Aiuc zM}kw~4&jdeTS<6ifX%;;Q?JJIBL-Mg!NWays?!X^vAGVZe!g`^ zhKB>!U}-=5fns85L@DU;i?B}IIawW=~lM{3g+c;)}kj19I!Fi)v z7MRgluWFX3%CR*@B}M?E$cs2x?cqSsSe|H`#-f~c6L~Kv`pHh9Tu{5m=`;6mE)?#b z<)P-!y_FaIs=?wkj$#T<#eS5wf5ElX*-1DE3 zklUdW9>PJJU>_yfGxhJ)5iBnLsZ~Q`^GTG_dn@iw(y6WX53~50Z*3xnRW~-t#WM4N9hJmifIQ`t{Yl$RQEpuKigVPOG%;kpB8_ zx}9`QxDFq}fjEFpwe#y8x#sn|DSr zsulv6FK#E{7bkBExou`)~-)u%e{e&q+iUNglak+J|nuA>QTsq?J@VlX6j z>L9~oXTtqgX{2cY2ff(m-eX- zrxZ%9P-Ak{=BOaUW{a^`$!d0&%G5sRjQ__wNM)0IkaeqAickSWv9)~8x)?Q)@s)eJ zYNpIuar@%Wir&xy%btMNrb%s(l z=6zo9?Y!plJt01W?0nn*8C!aI!9B!mrt)Y&-q<44Qi<>9$WjyL@RD!A8tbiWvpTy6 zsh*xZ)|gq89KcbABP{SJ$doON2Qg^Hx-ndHfGgR>gLX|Q*3IdrX8keorT?DAW$I`0 zr&wMK&lukvZ6x1REw!=9=kwhhCo1)p+?Op01mKRgD$YA|v}SFdc!-L`%@(sAZ~XYV zXUpoZGl;9Y`0?R)-XzyWaDfIC>E=b|kg>e*5_*u2@2J&%fQHs8e2QIruc%knodKvd zgT(7>h?TZt)9n+_XmN?RzWwBv%6@Kby=B%((qaH}{Mr&dzpfk(41NWx56W~%UF>oD zF4RJH0$HiMh-EjjlAc07Rso%00>8?0-=0ZgejoaKFaRK;iDl!0cbUm; z@Cr$8bBB=!~$Zhrty*u3zrD5#>y#rFuSrW`2T3fSFDq5 zxS+fvGAu;$eGdh(q2{n}hOK4*ZGiw@-<8*-$J{5kje670;ALywPP-MtDYJI8PhC;q>Rn)>ip|473){s{uQyUa~QWz$(Q1HczD| zp!N$i_n^`FE)QQq%=pjP7U=qj=Cq=pSeYGU;~1MvA?dwAvT_n8?Z z<%dB$?})2XkWV%(<#vnoWt;XFC2xHm*YUXSa#{@5Bd#Y8OE)eMh2%rDIDm*sVuN=Z z8%q316t-PZQC*K}XED-*F3Tze5^xG5=GSR`1J#Cj8mM+uNb+7QOuq<#VkAQ#zw!7t z8*`pp%oT82ZCJzC5(!4%{uzK{3r>t`y$TpgNZ0>qF>*PwHSvOnR@0fknjyl|iioda zQ)epou7F{}_Dvyr+}969GS!EIJ0LZ9Vmy#0AtX(xp<(#uT;BLuM1%&Q=%Hbpn|F3dlIyBwaYk#yvkzqyflFk3%J_9cYcRQ$Q$pLzNGN~%KGYu zD8HcJvrC7Bq_m`jA}LEQB_$z}k`fXEQc|n1bV-RwNC=2@DWxbK3KA01T~g8=d!P0D zzW4rc_Yc@-&YX#J&V1%G0C|rVfVq3zq1M~NAv|UHM zTM4-b>S<6abjfA93Kaqgdz6Ln>W*OlE7fX~_pb{Bx0Fq9-5W1#2snbOPIN|ATUjN~ zpJ`j4ikO?5&|Xb2TibuocFZ#nbsDoc$sdo=Vz8XFKR?;96Nb$eQa|}wqJ*0SCb|Fe zGECqAM>`(Q2l9Ju*4M^=3PnerSTZi`Tpje3D+HDcJkL9YjMAyA5dP49(nWYe2c5rn zg4YwhxQ=`ObLx1~?l$jtsc9?vQYd$IK^3ptIfgrtJcz-vHxWTW{A=P)=TvX^P%Rh& zUxO>{pA9)N8MoW&29F!B^|g&fkTNCk=HWxrDWpTwOOD>rYJ_hu^8jRp#xohk1Htwl zT$;URQLH!~;g7C=pamrly0oce_GU3#&1YeJpaG5+d?Av3D8y^FEc4%!8B%yZo#5fr z(&OU6M?$6DmCU4l!>rUo#r`c0p>{L^beArp$Mqz4qC*EsNSO4`KO5e_WC(n(8$OmR zRd8ov&j9fau(K3p@CPDZCo+YRPEs5Yf(hr~HwAYFUxt+@u>&7Tt&YtXlKBbie}b9M z143z6OzhYAfsgROEXKO|KQYd&b{U*y>8AEJi`JVk;s!?+-Yr_CUV6jf)pz)IihHMO zSKa)Fmwa^_@$Eg6+4$XzvdYIVs`fu<3rUR#wxcrj{ijJU+7E~ax4K`c87+B)%P8pg zFKT~vEn$dN{+19YXR2?X+xN}tWJ~E$$F~j)ZT``<*f38x@~xk}M<%>F{?h@=kkwoh zO;gjA`!V45PFi@nnXnI30~1~!W5wri^h|ZOI&I)R#!hg z0n7@{k7-p|pEc=~W|nVQZl^g(FtCyC$2l1tS0r>^$P^Y4+KP>g!svbm@DPc*i2GaD z-0I72YNBM;PtJQ2T7M7M2q`%uQ_$WLC@KM%lAvbcjA)S)Ql&~bvQ0!#FrO@f#Rv~Q zyqV>!h3Q(iWc>@#FMr{t0+Vkg_K%~eE&l^qG-&naiki1~GL?rv&y)3t{=Ku^H)=lY za=l!V>EUinsn~|=D8;mmi^`J}GY2L*L6T<|26?-ZH^o z5dUoVdHUOYGPAx{d6wE9cC{R9PRt@-*T(jl)WJ$(mtv=2{;Ro^1L?W2#9NLryr(Nh%wy(-u3m}ogYg0oLrzbL=a`qMdq&Mq3KvQotH-pBwI56 z($nT-yKf!gA131%rCUuPBq_vQRY~r`p-baz@iRVziILdozr2V}#>w~I_9!r+DI;q< zN$$=vE3?U29u^b}PhR|jXjA;~c!4hYL9UtlnD-E}ekx_FS)rIfu4=_{SWKmC*@3ey zrwCWjliBSr(QKnJPAp^z0ax3IK=?CNHNo)OF~W)m6TiFElq^zeI)=*So{K`LYyu)wri^?q45bndP_k`{G+uSzVuGX|3Ln#;bs$iQ zke-YWy<=92!@paI>q4!?cgKMumd^T{{t3ge<||5$flR4cS!9FKwi4`gwX8kESqs^9O=5B<*ZtM@vxsd%cq3|MH$0ei9SVN0TX1Sapjm;0Ox7Po0)C1#)ZzNe>MKT4f=tMg zCy45NuMDl);!EV(2Ajc-p_m#iyX~oRg*J?%!ZP*Wv-YG6Ld>qhdB!%p9bv>6PFjBY z?XJ}`gApP|Bw6ly+@bA;l;doA#0g6_*;$JMI*y2N`xPEKQV~=(58epDJSLHJWDST) zWcz3q#fyGEaMH{Dwx#_>yz$Fvs-BKyVuUQ1jqN`=>Y+>880z&U=EC=Z+YZA05$Q} zZTZ(Z%&s6=h2>-yI5-xPc{|VJ5$O~_I3VsLq3av+o2oz}i6K%|;Yg0UH9#bk8Pa5r zT9dL`s$Q$3uyFGs%X#C`W)7Wf>MFAYgZLHD;~I!+NtAusy<7ih%4PAqSY`qy5 zv@E!Z28e;UmokDF{9aENu<{MYXm=%Y(Sb}M(edXBcW@f$1q&b-LvF&G=7*PDIdfv_ zn6h5=&V_*Z6I2KbPY|IiEzGj65wJyI9urAJn#)OK`68Nq$bWxBbU}Y^}$=U z{!^aSiPrs+L`vLVYbJHs?ZJky<8UH;7%uFc70i;wqmH-1%)FkY99>!9P9||cYf-G3 zcrnNOM_cjo1p(|Gn^b{OjRzjQX|-5fIYv$gP_ze#gs?#R8djq)mV3VOlaswUzhq{S z1rLbE5WW6YTyA2!dM#lU26?z0!H&T+;b7(|!q2V^uRn~RVFD}CPK=iy+AZxKjnskl zrd9!N1@`R<37E&DeNnt3qYQ=CQm6nrlyU2^-4+u;l-`&2v&At5((92bVy9WCXm7r2 zYACQ(zc-ZLGY!2g$A>*JHeexvv6S#R3E;Q7zDIw2*+?=j*mC@IcQ*HMM+EtcA-a3( zHD~i~+n4t`Y(^s2m6X1&RSQ3y(8-m0paK2>T)jDI?ygStDBjgnXZ5oXC`b9|F}BxQ z_*X-7hkrQ;=i)rt#&{ovL+Dm5Zp-lZ7oMRi3Dn0YXBHFPk{w$X3k8I`9jE|}YP=MA z;)gQtG|g3c5ux52?j&5vjE%@9>DHomw7bN0uy_Rojm)OL>wI9)^vZx$YrsvEwU()<>#5zq z>Qmg^nfEZ&%>}!_M?Zp0J$~0e`%j~c6zlVao? zbO+ybkcijPbMp5&5HNFa3$zMGPbvBjIGoCg<#@f79X$<2Lq}6iVPo z*P?exoDe%5S&w9l1*&I&>f#a)V^O0GVYdn8fIsF){@B0455tc#o;ZH+29Ua|#&b;- zci>k&64k#?#)FG4fuWaz)1v$*A?R=#SU9=lXh-%P*r0o=2Ohp)lxGkQv5 zVCKa6Nq^0c7ml z-&~KYwHAI?238af?7Sx8hWI%E;X5;wP*fRvga7|1jhn9^+1&-L40D-!;^ z(z4TiC>6O+`YL8d4uF!O#5O7P#6E%7E(;Rc%k5?=PCPKARLq$ka3xCU zAfD>wbGnHOn)bjp*Y_m~lSd21&gbS4#k{q=GDUTS0uGe+=?0XeH8uZKCo4snm@DZ{ zvBs<-xye;bm1+9rUe*1ro#W2!+iv$W&y+Z;7v3^^EXI9pPaP_H#S7+37J6uG7Ce2ZZ%9ix4BeG(eLRP;-C^_5LB(O*JB^-%lJy5lP>agn-F{wfLTVr-TBq5Im28VnU4BELe`8C3B=OMVNH$ulGwhjy6LkY zrdTAqW{0P0$67bpkz%jt{$d*&r$Q)z1|()#)%>6=F0+a#PYTwopXL%edMnTAd2r6#h?j2R!8-<=fG znEuXa@@Bq~Yln^F(<7gBa()eP+fBq}lAX^FhR&l2{#X%ZYN-QND$!uPI#FzjiQG{f?Uxz^C;&tyMfR<_% z`kO-Qt2l`0T_2KZjiLsg)Sq6w@b+l3lIEDupM1$!Yhhxlh-(J{I*l3~!!!kcGY0~| zl$skIY?jW0I=D2n(|2CbPAiVbH@C$IGFj75jnELI-z-|s znO@K-I{GX~UlF&ZJ%)G#A_cQJUVOh<1QDyHv>+nS8&yyo3hx`lq;Z?wf%OrCG4)A=eN%~=(T{yoF? zHUyi{q>_F8xalE2yvb}k?^R)Gu9bAd{ow~QM(lfMOR_OvPW+ZF-}?Vds8|=hG%zVL zzIfdC^N8qsodrZk@`T)^#~*4hTfLCUt*!mnpXfve~&krZO;d@s~9tH*c#U^ z#upboREiIkLK1A3NvMI-P@;IP#ooD>F)rA~aMg1_NM}Wk-Iajz8&7DBy8L!7lb5SM z?x5Ine!Wdl45UZ&W>E(b!kc=wUj9jp{B_XS_7<7x_-P!5(J{QT;DrFC!yyQmo1q2M!bQ&p{sstATuwh z64-HKI*2z1_BokVBHh+kVej(H>t`|1UMkSpApEWkPuOXdp1KWx_uf&Xc=@xK87fMV zSL5Yr?Oz?0+~-LlYyYop_&*ckMj>pdGan-~i z2_^m8^MZH`3A6zqd4|OTB<&S3*$_jm`WZ#PtGIV%u6X8N37eMAKU~b#u(&(Fd}>~R zlq!A@v4m}ZVY@Ky*Ddv$mz1*blc;`k!vaX~aD8AZuX>sNR$Jf*I`Gk#O#4sf?@wCy zM>W7(mk||I(P3P~z#t9GE|uBy!J0Z^6N~`BWZ}R6*V=ub-_1bEjo#r-3&%d9S|xAk ztK%_IQ67a71#k&9Eb?PNJfA-Ge%Yq|qLfdEjyZHW^17OYz3z{<;f<#;gF2&Fr!JR~ zj8n*cRUR zrU6YDy4gDrad!(D`eA3x4#9QlnBK0Pf>(`>K9z7RDE`{EdePH1(Gh8PSD9jt!pk+Y z(lMT-bDEk8Z9FV^g)S`dD0b_M{ndMFkIpfdDLsm0_%)8be?GOcLg)mL+V4x|WDG|y zRRl=>CB4n$R&#ytV^!+}AvN^re4K1-&Ho=O0}e&z-P#X_1>%Tu2CY+PT|#z3a7Uq& zvXYd80P{^!h4aZW1A1h}a42cknXQ-@Yg@FjT;qWBT)^Goyzx2g9j}Mjkvxjr5CF8E z%~f#KWL*_zx!f=O&<&2(Hgop45Z7RUS#p}z%wiq{X%_NidgtakW*Qj#R=k<%}dTWO&t<+tG*iP1_@C1>Z$vWS$`Qv~Sc+=eiQ0LpVl|*5<#a zeuxJs9O!&6#{MZA0e4x$W7c&NOnJl!W-Jcl-}CF*Ue#M4sLLv{FxMP!MGxB`))fAU zQ=CTQ9r?2xaw+a4bx@hxJUm>73U^ofF^y$irs?h1@}4qxiYH*HSvzV{d>fUIdBglf~pN3=)2HfqpisxHXCTkA^$BI9!9w*VAQNm;i!8Z_=s+S}%8{#L6)mxhrO%=O>OT6|Hma!3 zk2U+6WMO5tY+7lXpE3$~IF43>ip4dNhX+MbFP9n8#3f5Ypar98m~-K`cPQsgBF{03 zr>XWN=0B-SDM10AVi{Gvn&i(>AIKiIV~js2-~x?L=FONDc&mLD=Ixl<<#b-)o50-U;mLiy>~eHlwNhZSkB;|<^{zt3iFoRPW$e|)(9IvD?L0E zCtt`upX5s?YI&Nbonvbk@P{mQD0}n*if4ze%enyn4Z@gs6SEgD2vQh{z`MHuDd1T~ zh0>7xX&l@VS`RN2$xN)F48r!+ z=8>#ZKjp9D<@f6?BZ3~jV{u^XZ{sA84>Zn01LI^LsZJhC98Qsyi5sMz-~R1r;8wtgwWviq!#m^UbheZl%NSO! zt1F)MH@76DGvp^>q`)0AsGDrViw!CX@Fx9>WHNuf3P3R-DCiX$j1k0vYM2nu%?>V@ zj#wR<`u=E`s?qTtnz2Y92|!T6nk$v-vPSsXYpTygmUF9uCF-u;*&>CHi$~?4Eb|F| zJE2eQ*Lfo}UGSDMxb4qajslR6&rZXe)c>N|{6wMCUR;DF1koD*igh5V8&IfVgVGp} z)xg^~RppY=zQZX>QwFn`L3#x!Ch2jrQ+ zCnwU_T}^5|j$8%eyjDqCa-v?r|R=g@qXFr^y z61eta;!YIjQ6#{4re~!2Aqy0hL0v7_rnmucIR%XsP;zgs1Eo^eZOoAlv^Gd>=+`Bu zX}kI;MEUrl1P-)Z`I6n1N}b?t;@&^0k#nh(?_J34}R5y@uu+EVGS=>>`mo0;a zKI33)tGu9$QR<|;|I3ckB1X;#XULS23wzf2K@HsVTXi0$&V9vb!_G0mMh5p{%4VxK z#)QVCA&G&jH>?Q>wx2&{WCzmFlM1A}=>O5(dz;~fvYSVWXVBHL($~+rzgz);S0B6H zaFtKHz8}_Ra-X{Q`tG8vKOvxRBsFrxL+b*G6-+++!v;cZXnQi2cx#pQpW5odyJ8A( z>j6wA1^=cQbXE*t#NM890Z?7b8TBl8Z2wvmWlQ1N-v@mnw%>ge^z0r)OuZl=M|jqI z2`m^gEfBzBck-1LnQEzs!Jd&U21B8BH(3DOXnc|Xzu)NByADichjUjZVkoo-p literal 0 HcmV?d00001 diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_01.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_01.svg new file mode 100644 index 00000000..eb2fc0f9 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_01.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_02.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_02.svg new file mode 100644 index 00000000..6f079f10 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_02.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_03.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_03.svg new file mode 100644 index 00000000..9dca55c9 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_03.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_04.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_04.svg new file mode 100644 index 00000000..19c9bd0a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_04.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_05.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_05.svg new file mode 100644 index 00000000..59eaabe2 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_05.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_06.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_06.svg new file mode 100644 index 00000000..9632cf3e --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_06.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_07.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_07.svg new file mode 100644 index 00000000..6f0bd013 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_07.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_08.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_08.svg new file mode 100644 index 00000000..41f289cf --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_08.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_09.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_09.svg new file mode 100644 index 00000000..fe0f2425 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_09.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_10.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_10.svg new file mode 100644 index 00000000..67ec5bad --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_10.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_11.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_11.svg new file mode 100644 index 00000000..25a2a563 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_11.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_12.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_12.svg new file mode 100644 index 00000000..7da1ac2a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_12.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_13.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_13.svg new file mode 100644 index 00000000..e87dc9c5 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_13.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_14.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_14.svg new file mode 100644 index 00000000..d1a6b06c --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_14.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_15.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_15.svg new file mode 100644 index 00000000..fa6f0814 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_15.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_16.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_16.svg new file mode 100644 index 00000000..e55cb734 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_16.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_17.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_17.svg new file mode 100644 index 00000000..351b4479 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_17.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_18.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_18.svg new file mode 100644 index 00000000..7212b700 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_18.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_19.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_19.svg new file mode 100644 index 00000000..bfbefee4 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_19.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_20.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_20.svg new file mode 100644 index 00000000..c3cb4250 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_20.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_21.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_21.svg new file mode 100644 index 00000000..5a124493 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_21.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_22.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_22.svg new file mode 100644 index 00000000..d6ee96b2 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_22.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_23.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_23.svg new file mode 100644 index 00000000..6a98eba6 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_23.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_24.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_24.svg new file mode 100644 index 00000000..72d76514 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_24.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_25.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_25.svg new file mode 100644 index 00000000..c247570a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_25.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_26.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_26.svg new file mode 100644 index 00000000..aa84dbc6 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_26.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_27.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_27.svg new file mode 100644 index 00000000..52fa49af --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_27.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_28.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_28.svg new file mode 100644 index 00000000..291a0ed8 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_28.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_29.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_29.svg new file mode 100644 index 00000000..941893e7 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_29.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_30.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_30.svg new file mode 100644 index 00000000..5fff9a49 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_30.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_31.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_31.svg new file mode 100644 index 00000000..011ef798 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_31.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_32.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_32.svg new file mode 100644 index 00000000..fcb2b55f --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_32.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_33.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_33.svg new file mode 100644 index 00000000..5f73daef --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_33.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_34.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_34.svg new file mode 100644 index 00000000..886a7066 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_34.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_35.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_35.svg new file mode 100644 index 00000000..239118c2 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_35.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_36.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_36.svg new file mode 100644 index 00000000..ac933f2e --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_36.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_37.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_37.svg new file mode 100644 index 00000000..d0190aab --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_37.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_38.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_38.svg new file mode 100644 index 00000000..34b64cb1 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_38.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_39.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_39.svg new file mode 100644 index 00000000..011d0243 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_39.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_40.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_40.svg new file mode 100644 index 00000000..60cf46da --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_40.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_41.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_41.svg new file mode 100644 index 00000000..472c7eb9 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_41.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_42.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_42.svg new file mode 100644 index 00000000..24ea06de --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_42.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_43.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_43.svg new file mode 100644 index 00000000..4ff24c57 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_43.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_44.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_44.svg new file mode 100644 index 00000000..cbcecc27 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_44.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_45.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_45.svg new file mode 100644 index 00000000..ac5d4a0a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_45.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_46.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_46.svg new file mode 100644 index 00000000..36b5f755 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_46.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_47.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_47.svg new file mode 100644 index 00000000..6eb899b4 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_47.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_48.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_48.svg new file mode 100644 index 00000000..7c1a88ae --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_48.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_49.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_49.svg new file mode 100644 index 00000000..bcc19785 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_49.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_50.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_50.svg new file mode 100644 index 00000000..5604adee --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_50.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_51.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_51.svg new file mode 100644 index 00000000..dec9fcf4 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_51.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_52.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_52.svg new file mode 100644 index 00000000..df6c06ce --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_52.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_53.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_53.svg new file mode 100644 index 00000000..73645b4c --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_53.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_54.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_54.svg new file mode 100644 index 00000000..73acca06 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_54.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_55.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_55.svg new file mode 100644 index 00000000..289286e2 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_55.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_56.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_56.svg new file mode 100644 index 00000000..17acb9dd --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_56.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_57.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_57.svg new file mode 100644 index 00000000..257eb3dc --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_57.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_58.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_58.svg new file mode 100644 index 00000000..ef29c228 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_58.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_59.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_59.svg new file mode 100644 index 00000000..9bdfb428 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_59.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_60.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_60.svg new file mode 100644 index 00000000..9605aa61 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_60.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_61.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_61.svg new file mode 100644 index 00000000..83e5cc9c --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_61.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_62.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_62.svg new file mode 100644 index 00000000..6cddd69c --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_62.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_63.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_63.svg new file mode 100644 index 00000000..1c1fe6de --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_63.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_64.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_64.svg new file mode 100644 index 00000000..aacd44dd --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_64.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_65.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_65.svg new file mode 100644 index 00000000..2867969f --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_65.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_66.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_66.svg new file mode 100644 index 00000000..9f5af42a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_66.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_67.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_67.svg new file mode 100644 index 00000000..5c1994ed --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_67.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_68.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_68.svg new file mode 100644 index 00000000..71a84771 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_68.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_69.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_69.svg new file mode 100644 index 00000000..3062bedf --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_69.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_70.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_70.svg new file mode 100644 index 00000000..767e9c6d --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_70.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_71.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_71.svg new file mode 100644 index 00000000..17413b76 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_71.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_72.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_72.svg new file mode 100644 index 00000000..0dfbb82d --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_72.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_73.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_73.svg new file mode 100644 index 00000000..cfcfde97 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_73.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_74.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_74.svg new file mode 100644 index 00000000..ada4712e --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_74.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_75.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_75.svg new file mode 100644 index 00000000..7721a5dc --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_75.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_76.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_76.svg new file mode 100644 index 00000000..599d737f --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_76.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_77.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_77.svg new file mode 100644 index 00000000..a4efb934 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_77.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_78.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_78.svg new file mode 100644 index 00000000..f697350a --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_78.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_79.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_79.svg new file mode 100644 index 00000000..052939be --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_79.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_80.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_80.svg new file mode 100644 index 00000000..9e330abe --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_80.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_81.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_81.svg new file mode 100644 index 00000000..5c9fd8fe --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_81.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_82.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_82.svg new file mode 100644 index 00000000..59caf45e --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_82.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_83.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_83.svg new file mode 100644 index 00000000..de1062f7 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_83.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_84.svg b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_84.svg new file mode 100644 index 00000000..e9091bf3 --- /dev/null +++ b/documentation-site/static/img/kenney_pattern-pack/Vector/pattern_84.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file From 6887b5f72c51346657e354ee0c9787e1436b68ab Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Jul 2026 05:20:43 +0000 Subject: [PATCH 4/7] feat(demo): render terrain as a real textured mesh, not sprite strips Rotated-rectangle-per-segment terrain rendering left visible gaps wherever the slope changed between adjacent segments, since neighboring strips only share their exact top corners and diverge below it. Replaces that with two approaches: - Rolling Ball demo: a genuine triangulated mesh, generated from a Catmull-Rom spline through sparse control points (rather than a jagged polyline), drawn with a custom shader that blends a tileable "border" texture near the surface into a tileable "fill" texture below it, both independently tileable/tintable. TerrainShape's collision points are sampled from the same curve as the render mesh, so what's drawn always matches what the ball touches. Since the mesh has an arbitrary vertex count, it's drawn with its own non-instanced gl.drawArrays call (terrain-render.system.ts) rather than through the sprite pipeline, coexisting with it via renderContext.clearStrategy = 'none'. - Physics demo: a simpler, gap-free fix - one axis-aligned bar per surface point instead of one rotated strip per segment - since its hill is a secondary element of a demo about general rigid-body physics. Adds Kenney's CC0 pattern-pack textures for the new demo, and updates the Terrain guide's Rendering section to cover both approaches. --- .cspell/project-words.txt | 3 + .../docs/docs/physics/terrain.md | 79 +++- .../pages/demos/physics/_create-terrain.ts | 82 ++-- .../pages/demos/rolling-ball/_create-game.ts | 40 +- .../demos/rolling-ball/_create-terrain.ts | 390 ++++++++++++------ .../demos/rolling-ball/_load-tiled-texture.ts | 25 ++ .../demos/rolling-ball/_terrain-curve.ts | 129 ++++++ .../rolling-ball/_terrain-render.system.ts | 58 +++ .../demos/rolling-ball/_terrain.frag.glsl | 39 ++ .../demos/rolling-ball/_terrain.vert.glsl | 20 + .../src/pages/demos/rolling-ball/index.tsx | 29 +- 11 files changed, 696 insertions(+), 198 deletions(-) create mode 100644 documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts create mode 100644 documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl create mode 100644 documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl diff --git a/.cspell/project-words.txt b/.cspell/project-words.txt index 6f552162..63f3d4cc 100644 --- a/.cspell/project-words.txt +++ b/.cspell/project-words.txt @@ -6,8 +6,10 @@ autofetch backquote Batchable Baumgarte +Beziers blits cachable +Catmull commitlint dbaeumer deadzone @@ -78,6 +80,7 @@ texels thresholded thresholding thumbstick +tileable tintable unblurred undersamples diff --git a/documentation-site/docs/docs/physics/terrain.md b/documentation-site/docs/docs/physics/terrain.md index 435a5f50..a7a2e8d1 100644 --- a/documentation-site/docs/docs/physics/terrain.md +++ b/documentation-site/docs/docs/physics/terrain.md @@ -75,20 +75,69 @@ the narrow phase - for very large worlds, prefer several shorter The engine's sprite renderer draws rotated/scaled quads and has no built-in terrain mesh renderer, so visualizing a `TerrainShape` is left to your game -code, the same way the [physics demo](/Forge/demos/physics) hand-builds its -boundary walls out of `PolygonShape` and a sprite. A common approach is to -draw one sprite per segment: a thin rectangle spanning each pair of surface -points, rotated to match the slope and tinted a solid ground color via +code. Two approaches, from simplest to most capable, both demonstrated in +this repo: + +### Quick and simple: one sprite bar per point + +The [physics demo](/Forge/demos/physics) hand-builds its rolling-hill floor +out of ordinary sprites, the same way it builds its `PolygonShape` walls: +one thin, axis-aligned vertical bar per surface point, reaching from that +point down to the shared bottom edge, tinted a solid ground color via [`getSharedWhiteTexture`](/Forge/docs/api/functions/getSharedWhiteTexture) (a 1x1 white texture, so the sprite shader's tint multiplies through -unmodified). See the [physics demo](/Forge/demos/physics)'s -`create-terrain.ts` for a complete example, including computing each -segment's position, rotation, and width from the same `points`/`depth` -passed to `TerrainShape`. - -For a longer, more elaborate course - and a player-controlled body actually -rolling over it - see the [Rolling Ball demo](/Forge/demos/rolling-ball): a -much longer `TerrainShape` with varied, seeded-random hills, and a ball -whose `AngularVelocityMotorEcsComponent` spin turns into rolling motion -purely through friction against the terrain, no special-cased "rolling" -logic of its own. +unmodified). See its `create-terrain.ts` for the complete example, +including computing each bar's position and width from the same +`points`/`depth` passed to `TerrainShape`. + +:::caution +Render one rotated rectangle **per segment** instead (each one's top edge +matching that segment's slope) and you'll get thin gaps of background +showing through at some of the joints: two neighboring segments only share +their exact top corners, so wherever the slope changes from one segment to +the next, their side edges diverge below that shared corner. Axis-aligned +bars, each a little wider than its point spacing so neighbors overlap, +avoid this regardless of how steeply the terrain slopes - see the +`barOverlap` in the demo's `create-terrain.ts`. +::: + +This approach is quick to write and reuses the ordinary sprite pipeline +entirely, but it can't render a perfectly smooth diagonal edge (the bars are +always vertical) or independently-tiled textures along the slope. + +### A real textured mesh: the Rolling Ball demo + +The [Rolling Ball demo](/Forge/demos/rolling-ball) goes further: a much +longer course whose smooth silhouette comes from a Catmull-Rom spline +through sparse, randomly-placed control points (see its +`terrain-curve.ts`), densely sampled into both `TerrainShape`'s collision +points _and_ a triangulated render mesh - the same points drive both, so +what's drawn always matches exactly what the ball touches. + +That mesh is textured with a custom shader (`terrain.vert`/`terrain.frag`) +rather than the sprite pipeline: two independently-tileable layers, a +"border" texture near the surface blending into a "fill" texture below it +over a configurable depth and blend width, each with its own tile size and +tint (see `CreateTerrainOptions` in its `create-terrain.ts`). Since this +mesh has an arbitrary vertex count - not the fixed six-vertices-per-quad the +sprite pipeline batches - it's drawn with its own direct, non-instanced +`gl.drawArrays` call (see `terrain-render.system.ts`) instead of going +through `createRenderEcsSystem`. + +:::caution[Coexisting with the sprite pipeline] +A custom draw call like this runs as an ordinary `EcsSystem`, registered +_before_ `createRenderEcsSystem` so sprites (the ball) draw on top of the +terrain mesh underneath them. But `createRenderEcsSystem` clears its +destination the first time it's used each frame (see +`RenderContext.clearStrategy`), which would wipe out the terrain mesh drawn +just before it. The Rolling Ball demo sets `renderContext.clearStrategy = +CLEAR_STRATEGY.none` so neither system's automatic clear fires, and instead +does the frame's one real clear itself, first, in its own system - see the +comment on `renderContext.clearStrategy` in its `create-game.ts`. +::: + +Textures meant to tile also need `REPEAT` wrapping, unlike the engine's +`createTextureFromImage` (which hardcodes `CLAMP_TO_EDGE`, correct for a +sprite frame that must never bleed into a neighboring frame in the same +atlas). The demo's `load-tiled-texture.ts` loads a texture with `REPEAT` on +both axes instead. diff --git a/documentation-site/src/pages/demos/physics/_create-terrain.ts b/documentation-site/src/pages/demos/physics/_create-terrain.ts index 8171cf58..9fbd4ead 100644 --- a/documentation-site/src/pages/demos/physics/_create-terrain.ts +++ b/documentation-site/src/pages/demos/physics/_create-terrain.ts @@ -1,8 +1,5 @@ import { EcsWorld } from '@forge-game-engine/forge/ecs'; -import { - positionId, - rotationId, -} from '@forge-game-engine/forge/common'; +import { positionId, rotationId } from '@forge-game-engine/forge/common'; import { Vector2 } from '@forge-game-engine/forge/math'; import { PhysicsBodyId, @@ -26,7 +23,7 @@ import { wallThickness } from './_create-boundaries'; const groundColor = new Color(0.36, 0.62, 0.32, 1); const hillAmplitude = 60; const terrainDepth = 400; -const pointCount = 9; +const pointCount = 40; /** * Builds a shared `Renderable` for terrain segment sprites: the standard @@ -69,9 +66,9 @@ function createTerrainRenderable( /** * Creates a rolling-hill `TerrainShape` body spanning the play area, - * replacing a flat floor, plus one sprite entity per terrain segment (a - * thin rotated rectangle following the slope) to render it. Demonstrates - * `TerrainShape` as described in the Terrain physics guide. + * replacing a flat floor, plus one sprite entity per surface point (a thin + * vertical bar) to render it. Demonstrates `TerrainShape` as described in + * the Terrain physics guide. * @param world - The ECS world to add the terrain entities to. * @param renderContext - The render context used to build the terrain sprite material. * @param renderLayer - The render layer the terrain should be drawn on. @@ -135,39 +132,50 @@ export function createTerrain( physicsBody: terrainBody, }); - for (let i = 0; i < points.length - 1; i++) { - const surfaceLeft = points[i]; - const surfaceRight = points[i + 1]; - const edge = surfaceRight.subtract(surfaceLeft); - const segmentWidth = edge.magnitude(); - - // The outward normal (away from the solid slab) in the terrain's local - // space; the segment sprite is centered `terrainDepth / 2` units in the - // opposite direction so it spans from the surface down into the ground. - const outwardNormal = edge.perpendicular().normalize(); - const localMidpoint = surfaceLeft - .add(surfaceRight) - .multiply(0.5) - .subtract(outwardNormal.multiply(terrainDepth / 2)); - - const segmentPosition = localMidpoint.rotate(angle).add(position); - const segmentAngle = Math.atan2(edge.y, edge.x) + angle; - - const segmentEntity = world.createEntity(); - - world.addComponent(segmentEntity, positionId, { - world: segmentPosition, - local: segmentPosition.clone(), + // Rendered as one axis-aligned bar per surface point, not one strip per + // segment rotated to match its own slope: a rotated strip only shares its + // exact top corners with its neighbors, so wherever the slope changes + // from one segment to the next, their side edges diverge below that + // shared corner and open a sliver of black background between them. Bars + // stay axis-aligned (in the terrain's own local space) and a little wider + // than their point spacing so neighbors overlap, which closes that gap + // regardless of how steeply the terrain slopes, at the cost of a subtle + // staircase instead of a perfectly smooth diagonal edge - invisible at + // this point spacing. + const barOverlap = 1.2; + + for (let i = 0; i < points.length; i++) { + const point = points[i]; + const leftGap = + i > 0 ? point.x - points[i - 1].x : points[i + 1].x - point.x; + const rightGap = + i < points.length - 1 + ? points[i + 1].x - point.x + : point.x - points[i - 1].x; + const barWidth = ((leftGap + rightGap) / 2) * barOverlap; + const barHeight = terrainShape.bottomY - point.y; + + const localCenter = new Vector2( + point.x, + (point.y + terrainShape.bottomY) / 2, + ); + const barPosition = localCenter.rotate(angle).add(position); + + const barEntity = world.createEntity(); + + world.addComponent(barEntity, positionId, { + world: barPosition, + local: barPosition.clone(), }); - world.addComponent(segmentEntity, rotationId, { - local: -segmentAngle, - world: -segmentAngle, + world.addComponent(barEntity, rotationId, { + local: -angle, + world: -angle, }); - world.addComponent(segmentEntity, spriteId, { - width: segmentWidth, - height: terrainDepth, + world.addComponent(barEntity, spriteId, { + width: barWidth, + height: barHeight, pivot: new Vector2(0.5, 0.5), tintColor: groundColor, renderable, diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts index 3b1ad512..7a1677d0 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts +++ b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts @@ -1,4 +1,6 @@ import { + CLEAR_STRATEGY, + Color, createCamera, createRenderEcsSystem, } from '@forge-game-engine/forge/rendering'; @@ -13,8 +15,10 @@ import { positionId, } from '@forge-game-engine/forge/common'; import { Vector2 } from '@forge-game-engine/forge/math'; +import { getAssetUrl } from '@site/src/utils/get-asset-url'; import { createInputs } from './_create-inputs'; import { createTerrain } from './_create-terrain'; +import { createTerrainRenderEcsSystem } from './_terrain-render.system'; import { createPlayer } from './_create-player'; import { createRollEcsSystem } from './_roll.system'; import { createJumpEcsSystem } from './_jump.system'; @@ -30,6 +34,12 @@ const terrainWidth = 8000; export const createRollingBallGame = async (): Promise => { const { game, world, renderContext, time } = createGame('demo-game'); + // The terrain render system draws directly, outside the sprite pipeline + // (see createTerrainRenderEcsSystem), and owns the frame's one real + // clear; without `none` here, createRenderEcsSystem's own clear would + // wipe the terrain right before drawing the sprites on top of it. + renderContext.clearStrategy = CLEAR_STRATEGY.none; + const cameraEntity = createCamera(world, { isStatic: true, cullingMask: renderLayers.foreground, @@ -39,12 +49,25 @@ export const createRollingBallGame = async (): Promise => { const { rollInput, jumpInput } = createInputs(world, time); - const terrain = createTerrain( - world, - renderContext, - renderLayers.foreground, - terrainWidth, - ); + const terrain = await createTerrain(world, renderContext, { + totalWidth: terrainWidth, + border: { + textureUrl: getAssetUrl( + 'img/kenney_pattern-pack/PNG/Default/pattern_25.png', + ), + tileSize: new Vector2(160, 70), + tint: new Color(0.42, 0.68, 0.35, 1), + }, + fill: { + textureUrl: getAssetUrl( + 'img/kenney_pattern-pack/PNG/Default/pattern_39.png', + ), + tileSize: new Vector2(90, 90), + tint: new Color(0.4, 0.29, 0.18, 1), + }, + borderWidth: 40, + borderBlend: 14, + }); const spawnPosition = new Vector2( terrain.spawnX, @@ -77,7 +100,9 @@ export const createRollingBallGame = async (): Promise => { // run before createPhysicsSyncEcsSystem, so this tick's input reaches // this tick's physics step - see the Applying Forces guide's registration // order caution. The jump/respawn and camera-follow systems read the - // physics step's results, so they run after it instead. + // physics step's results, so they run after it instead. The terrain + // render system must run before createRenderEcsSystem so the ball's + // sprite draws on top of the terrain mesh, not underneath it. world.addSystem(createRollEcsSystem(rollInput)); world.addSystem(createAngularVelocityMotorEcsSystem(time)); world.addSystem(createPhysicsSyncEcsSystem(physicsWorld, time)); @@ -91,6 +116,7 @@ export const createRollingBallGame = async (): Promise => { ), ); world.addSystem(createCameraFollowEcsSystem(playerPosition, time)); + world.addSystem(createTerrainRenderEcsSystem(renderContext, terrain.mesh)); world.addSystem(createRenderEcsSystem(renderContext)); return game; diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts index d42271a9..f08a3b20 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts +++ b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts @@ -8,91 +8,86 @@ import { } from '@forge-game-engine/forge/physics'; import { Color, - combineInstanceDataSegments, - createQuadGeometry, - getSharedBlackTexture, - getSharedWhiteTexture, + ForgeShaderSource, + Geometry, Material, - Renderable, RenderContext, - spriteId, - spriteInstanceDataSegment, } from '@forge-game-engine/forge/rendering'; +import terrainVertexShaderSource from '!!raw-loader!./_terrain.vert.glsl'; +import terrainFragmentShaderSource from '!!raw-loader!./_terrain.frag.glsl'; +import { buildTerrainCurve, heightAtLocalX } from './_terrain-curve'; +import { loadTiledTexture } from './_load-tiled-texture'; + +// How far apart (in local x) the sparse control points the terrain curve is +// built from are. Small enough that a smooth curve through them still reads +// as "rolling hills" rather than a handful of disconnected bumps. +const anchorSpacing = 400; + +// How many curve points to sample per anchor-to-anchor segment. Both the +// TerrainShape collision points and the render mesh use this same dense +// sampling, so what the ball touches always matches what's drawn. +const samplesPerSegment = 20; -const groundColor = new Color(0.36, 0.62, 0.32, 1); const terrainDepth = 500; -const pointSpacing = 35; +const maxStepHeight = 50; +const minHeight = -180; +const maxHeight = 180; -// The width (in local x) of the flat platform centered on local x = 0 - -// where the ball spawns - before the terrain fades into its full -// rolling-hill height variation. Landing on a flat platform first, rather -// than a slope, makes the starting point read clearly as "home base", and -// centering it (rather than putting it at one end) means both roll -// directions lead into the same amount of varied terrain. -const flatStartZone = 700; +// The number of anchors, centered on x = 0, held flat at height 0 so the +// ball spawns on a predictable platform instead of partway up a slope. +const flatAnchorRadius = 1; /** - * A few sine waves at different amplitudes/frequencies/phases, summed - * together, produce smooth, varied "rolling hills" terrain rather than - * either a single uniform wave or jagged point-to-point noise (which would - * create slopes too steep for the ball to roll over predictably). Fixed via - * a seeded `Random`, so the terrain is identical on every page load - handy - * for a demo where players compare notes on the same course. + * Texture and tiling options for one of the terrain's two texture layers + * (see {@link CreateTerrainOptions}). */ -const hillLayers = (() => { - const random = new Random('rolling-ball-terrain'); - - return [1, 2, 3].map((octave) => ({ - amplitude: random.randomFloat(25, 70) / octave, - frequency: random.randomFloat(0.0006, 0.0016) * octave, - phase: random.randomFloat(0, Math.PI * 2), - })); -})(); - -function heightAt(localX: number, halfWidth: number): number { - const rawHeight = hillLayers.reduce( - (sum, layer) => - sum + layer.amplitude * Math.sin(layer.frequency * localX + layer.phase), - 0, - ); +export interface TerrainLayerOptions { + /** URL of the image to tile across this layer. */ + textureUrl: string; - const fade = clamp( - (Math.abs(localX) - flatStartZone / 2) / flatStartZone, - 0, - 1, - ); + /** + * The world-space size of one tile of the texture: x tiles along the + * curve's arc length, y tiles into the ground. Smaller values repeat the + * texture more often over the same span of terrain. + */ + tileSize: Vector2; - return rawHeight * fade; + /** Tint multiplied against the sampled texture. */ + tint: Color; } -function createTerrainRenderable( - renderContext: RenderContext, - layer: number, -): Renderable { - const { shaderCache, gl } = renderContext; +export interface CreateTerrainOptions { + /** The total width of the terrain, in world units. */ + totalWidth: number; - const material = new Material( - shaderCache.getShader('sprite.vert'), - shaderCache.getShader('sprite.frag'), - gl, - ); + /** The texture tiled across the terrain's surface, from the surface down to `borderWidth`. */ + border: TerrainLayerOptions; - material.setUniform('u_texture', getSharedWhiteTexture(gl)); - material.setUniform('u_emissiveTexture', getSharedBlackTexture(gl)); - material.setColorUniform('u_emissiveColor', Color.white); - material.setUniform('u_emissiveIntensity', 0); - - const { floatsPerInstance, bindInstanceData, setupInstanceAttributes } = - combineInstanceDataSegments(spriteInstanceDataSegment); - - return new Renderable( - createQuadGeometry(gl), - material, - floatsPerInstance, - layer, - bindInstanceData, - setupInstanceAttributes, - ); + /** The texture tiled across the terrain's interior, below `borderWidth`. */ + fill: TerrainLayerOptions; + + /** + * How deep (in world units) the border layer extends below the surface + * before blending into the fill layer. + */ + borderWidth: number; + + /** + * How wide (in world units) the blend between the border and fill layers + * is, centered on `borderWidth`. + */ + borderBlend: number; +} + +const defaultCreateTerrainOptions = { + borderBlend: 12, +}; + +/** The static terrain mesh built by {@link createTerrain}, ready to draw with `createTerrainRenderEcsSystem`. */ +export interface TerrainMesh { + readonly geometry: Geometry; + readonly material: Material; + readonly vertexCount: number; } export interface RollingBallTerrain { @@ -111,32 +106,183 @@ export interface RollingBallTerrain { * on the ground, accounting for the terrain body's rotation (see below). */ worldSurfaceYAt: (worldX: number) => number; + + /** The terrain's render mesh, for `createTerrainRenderEcsSystem`. */ + mesh: TerrainMesh; } -/** - * Creates a long, varied-height `TerrainShape` ground body spanning - * `totalWidth`, plus one sprite entity per terrain segment to render it. - * @param world - The ECS world to add the terrain entities to. - * @param renderContext - The render context used to build the terrain sprite material. - * @param renderLayer - The render layer the terrain should be drawn on. - * @param totalWidth - The total width of the terrain, in world units. - */ -export function createTerrain( - world: EcsWorld, - renderContext: RenderContext, - renderLayer: number, - totalWidth: number, -): RollingBallTerrain { - const renderable = createTerrainRenderable(renderContext, renderLayer); +function buildControlPoints(totalWidth: number): Vector2[] { const halfWidth = totalWidth / 2; + const anchorCount = Math.round(totalWidth / anchorSpacing) + 1; + const random = new Random('rolling-ball-terrain'); + + const controlPoints: Vector2[] = []; + let previousHeight = 0; + + for (let i = 0; i < anchorCount; i++) { + const x = + i === anchorCount - 1 ? halfWidth : -halfWidth + i * anchorSpacing; + const isFlatZone = Math.abs(x) <= anchorSpacing * flatAnchorRadius + 1; + + let height: number; + + if (isFlatZone) { + height = 0; + } else { + const step = random.randomFloat(-maxStepHeight, maxStepHeight); + + height = clamp(previousHeight + step, minHeight, maxHeight); + } + + previousHeight = height; + controlPoints.push(new Vector2(x, height)); + } + + return controlPoints; +} + +interface TerrainMeshData { + positions: Float32Array; + distances: Float32Array; + depths: Float32Array; + vertexCount: number; +} - const points: Vector2[] = []; +function buildTerrainMeshData( + curvePoints: { position: Vector2; distance: number }[], + bottomY: number, + angle: number, + position: Vector2, +): TerrainMeshData { + const positions: number[] = []; + const distances: number[] = []; + const depths: number[] = []; + + const pushVertex = ( + localPoint: Vector2, + distance: number, + depth: number, + ): void => { + const world = localPoint.rotate(angle).add(position); + + // Y is negated here to match the sprite pipeline's world-to-render + // convention (see sprite-instance-data-segment.ts's + // bindSpriteInstanceData, which negates position.world.y the same way + // before it reaches the GPU). + positions.push(world.x, -world.y); + distances.push(distance); + depths.push(depth); + }; + + for (let i = 0; i < curvePoints.length - 1; i++) { + const left = curvePoints[i]; + const right = curvePoints[i + 1]; + + const bottomLeft = new Vector2(left.position.x, bottomY); + const bottomRight = new Vector2(right.position.x, bottomY); + const depthLeft = bottomY - left.position.y; + const depthRight = bottomY - right.position.y; - for (let localX = -halfWidth; localX < halfWidth; localX += pointSpacing) { - points.push(new Vector2(localX, heightAt(localX, halfWidth))); + pushVertex(left.position, left.distance, 0); + pushVertex(right.position, right.distance, 0); + pushVertex(bottomLeft, left.distance, depthLeft); + + pushVertex(right.position, right.distance, 0); + pushVertex(bottomRight, right.distance, depthRight); + pushVertex(bottomLeft, left.distance, depthLeft); } - points.push(new Vector2(halfWidth, heightAt(halfWidth, halfWidth))); + return { + positions: new Float32Array(positions), + distances: new Float32Array(distances), + depths: new Float32Array(depths), + vertexCount: positions.length / 2, + }; +} + +function createTerrainGeometry( + gl: WebGL2RenderingContext, + meshData: TerrainMeshData, +): Geometry { + const geometry = new Geometry(); + + const positionBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.positions, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_position', { buffer: positionBuffer, size: 2 }); + + const distanceBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, distanceBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.distances, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_distance', { + buffer: distanceBuffer, + size: 1, + }); + + const depthBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, depthBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.depths, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_depth', { buffer: depthBuffer, size: 1 }); + + return geometry; +} + +async function createTerrainMaterial( + renderContext: RenderContext, + options: CreateTerrainOptions, +): Promise { + const { gl, imageCache } = renderContext; + + const [fillImage, borderImage] = await Promise.all([ + imageCache.getOrLoad(options.fill.textureUrl), + imageCache.getOrLoad(options.border.textureUrl), + ]); + + const material = new Material( + new ForgeShaderSource(terrainVertexShaderSource), + new ForgeShaderSource(terrainFragmentShaderSource), + gl, + ); + + material.setUniform('u_fillTexture', loadTiledTexture(gl, fillImage)); + material.setUniform('u_borderTexture', loadTiledTexture(gl, borderImage)); + material.setVectorUniform('u_fillTileSize', options.fill.tileSize); + material.setVectorUniform('u_borderTileSize', options.border.tileSize); + material.setColorUniform('u_fillTint', options.fill.tint); + material.setColorUniform('u_borderTint', options.border.tint); + material.setUniform('u_borderWidth', options.borderWidth); + material.setUniform( + 'u_borderBlend', + options.borderBlend ?? defaultCreateTerrainOptions.borderBlend, + ); + + return material; +} + +/** + * Creates a long, varied-height `TerrainShape` ground body - a smooth curve + * through sparse, randomly-placed control points (see `_terrain-curve.ts`), + * rather than a jagged polyline - plus a single triangulated mesh to render + * it, textured with a tileable border layer near the surface blending into + * a tileable fill layer below (see `CreateTerrainOptions`). Pair with + * `createTerrainRenderEcsSystem` to draw the returned `mesh`. + * @param world - The ECS world to add the terrain entity to. + * @param renderContext - The render context used to build the terrain mesh's textures and material. + * @param options - Sizing and texturing options for the terrain. + */ +export async function createTerrain( + world: EcsWorld, + renderContext: RenderContext, + options: CreateTerrainOptions, +): Promise { + const { totalWidth } = options; + + const controlPoints = buildControlPoints(totalWidth); + const curvePoints = buildTerrainCurve(controlPoints, samplesPerSegment); + const points = curvePoints.map((curvePoint) => curvePoint.position); const terrainShape = new TerrainShape(points, terrainDepth); @@ -175,60 +321,30 @@ export function createTerrain( physicsBody: terrainBody, }); - for (let i = 0; i < points.length - 1; i++) { - const surfaceLeft = points[i]; - const surfaceRight = points[i + 1]; - const edge = surfaceRight.subtract(surfaceLeft); - const segmentWidth = edge.magnitude(); - - // The outward normal (away from the solid slab) in the terrain's local - // space; the segment sprite is centered `terrainDepth / 2` units in the - // opposite direction so it spans from the surface down into the ground. - const outwardNormal = edge.perpendicular().normalize(); - const localMidpoint = surfaceLeft - .add(surfaceRight) - .multiply(0.5) - .subtract(outwardNormal.multiply(terrainDepth / 2)); - - const segmentPosition = localMidpoint.rotate(angle).add(position); - const segmentAngle = Math.atan2(edge.y, edge.x) + angle; - - const segmentEntity = world.createEntity(); - - world.addComponent(segmentEntity, positionId, { - world: segmentPosition, - local: segmentPosition.clone(), - }); - - world.addComponent(segmentEntity, rotationId, { - local: -segmentAngle, - world: -segmentAngle, - }); - - world.addComponent(segmentEntity, spriteId, { - width: segmentWidth, - height: terrainDepth, - pivot: new Vector2(0.5, 0.5), - tintColor: groundColor, - renderable, - uvOffset: Vector2.zero, - uvScale: Vector2.one, - enabled: true, - layer: renderLayer, - }); - } + const meshData = buildTerrainMeshData( + curvePoints, + terrainShape.bottomY, + angle, + position, + ); + + const [material, geometry] = await Promise.all([ + createTerrainMaterial(renderContext, options), + Promise.resolve(createTerrainGeometry(renderContext.gl, meshData)), + ]); - // The flat platform is centered on local x = 0, which - since the 180 - // degree rotation maps worldX = position.x - localX - is also world x = 0 - // (position.x is Vector2.zero), so both roll directions lead into equal - // amounts of hilly terrain. const spawnX = position.x; const worldSurfaceYAt = (worldX: number): number => { const localX = position.x - worldX; - return position.y - heightAt(localX, halfWidth); + return position.y - heightAtLocalX(curvePoints, localX); }; - return { body: terrainBody, spawnX, worldSurfaceYAt }; + return { + body: terrainBody, + spawnX, + worldSurfaceYAt, + mesh: { geometry, material, vertexCount: meshData.vertexCount }, + }; } diff --git a/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts b/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts new file mode 100644 index 00000000..0ff72b8b --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts @@ -0,0 +1,25 @@ +/** + * Loads an image into a WebGL texture configured to tile: `REPEAT` wrapping + * on both axes, rather than the `CLAMP_TO_EDGE` the engine's + * `createTextureFromImage` uses (appropriate for sprite frames, which + * should never bleed into a neighboring frame, but not for a texture meant + * to repeat across a surface like this demo's terrain). + * @param gl - The WebGL2 rendering context. + * @param image - The image to load. + * @returns The created, tile-ready WebGL texture. + */ +export function loadTiledTexture( + gl: WebGL2RenderingContext, + image: HTMLImageElement, +): WebGLTexture { + const texture = gl.createTexture(); + + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); + + return texture; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts b/documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts new file mode 100644 index 00000000..53920c12 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts @@ -0,0 +1,129 @@ +import { Vector2 } from '@forge-game-engine/forge/math'; + +/** A point on a curve built by {@link buildTerrainCurve}. */ +export interface TerrainCurvePoint { + /** The point's local-space position. */ + position: Vector2; + + /** The cumulative arc length from the start of the curve to this point. */ + distance: number; +} + +function sampleCubicBezier( + b0: Vector2, + b1: Vector2, + b2: Vector2, + b3: Vector2, + t: number, +): Vector2 { + const oneMinusT = 1 - t; + const w0 = oneMinusT * oneMinusT * oneMinusT; + const w1 = 3 * oneMinusT * oneMinusT * t; + const w2 = 3 * oneMinusT * t * t; + const w3 = t * t * t; + + return b0 + .multiply(w0) + .add(b1.multiply(w1)) + .add(b2.multiply(w2)) + .add(b3.multiply(w3)); +} + +/** + * Builds a smooth curve through `controlPoints`, using a Catmull-Rom spline + * (converted to an equivalent sequence of cubic Beziers, one per segment, + * via the standard `Bn = Pn +/- (Pn+1 - Pn-1) / 6` tangent construction) so + * the curve passes exactly through every control point with a continuous + * tangent, rather than a straight-line polyline between them. Densely + * sampling that curve is what turns a handful of sparse, randomly-placed + * control points into the long, natural-looking rolling terrain silhouette, + * both for {@link TerrainShape}'s collision points and for the render mesh. + * @param controlPoints - The sparse anchor points the curve passes through, + * ordered by strictly increasing x. Must contain at least 2 points. + * @param samplesPerSegment - How many points to sample along each segment + * between two consecutive control points. + * @returns A dense polyline approximating the smooth curve, with each + * point's cumulative arc length from the start. + */ +export function buildTerrainCurve( + controlPoints: readonly Vector2[], + samplesPerSegment: number, +): TerrainCurvePoint[] { + if (controlPoints.length < 2) { + throw new Error( + `buildTerrainCurve requires at least 2 control points, received ${controlPoints.length}.`, + ); + } + + const curvePoints: TerrainCurvePoint[] = [ + { position: controlPoints[0].clone(), distance: 0 }, + ]; + + for (let i = 0; i < controlPoints.length - 1; i++) { + const p0 = controlPoints[i > 0 ? i - 1 : i]; + const p1 = controlPoints[i]; + const p2 = controlPoints[i + 1]; + const p3 = controlPoints[i < controlPoints.length - 2 ? i + 2 : i + 1]; + + const b0 = p1; + const b1 = p1.add(p2.subtract(p0).multiply(1 / 6)); + const b2 = p2.subtract(p3.subtract(p1).multiply(1 / 6)); + const b3 = p2; + + for (let sample = 1; sample <= samplesPerSegment; sample++) { + const t = sample / samplesPerSegment; + const position = sampleCubicBezier(b0, b1, b2, b3, t); + const previous = curvePoints[curvePoints.length - 1]; + const distance = + previous.distance + position.distanceTo(previous.position); + + curvePoints.push({ position, distance }); + } + } + + return curvePoints; +} + +/** + * Finds the curve's surface height (local-space y) at a given local-space + * x, linearly interpolating between the two bracketing sampled points. + * `curvePoints` must be ordered by strictly increasing x (as returned by + * {@link buildTerrainCurve}). + * @param curvePoints - The dense curve to search. + * @param localX - The local-space x to find the height at. + * @returns The interpolated local-space y at `localX`. + */ +export function heightAtLocalX( + curvePoints: readonly TerrainCurvePoint[], + localX: number, +): number { + const first = curvePoints[0]; + const last = curvePoints[curvePoints.length - 1]; + + if (localX <= first.position.x) { + return first.position.y; + } + + if (localX >= last.position.x) { + return last.position.y; + } + + let low = 0; + let high = curvePoints.length - 1; + + while (high - low > 1) { + const mid = (low + high) >> 1; + + if (curvePoints[mid].position.x <= localX) { + low = mid; + } else { + high = mid; + } + } + + const a = curvePoints[low]; + const b = curvePoints[high]; + const t = (localX - a.position.x) / (b.position.x - a.position.x); + + return a.position.y + (b.position.y - a.position.y) * t; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts b/documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts new file mode 100644 index 00000000..2671fa15 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts @@ -0,0 +1,58 @@ +import { EcsSystem } from '@forge-game-engine/forge/ecs'; +import { + PositionEcsComponent, + positionId, +} from '@forge-game-engine/forge/common'; +import { + CameraEcsComponent, + cameraId, + createProjectionMatrix, + RenderContext, +} from '@forge-game-engine/forge/rendering'; +import type { TerrainMesh } from './_create-terrain'; + +/** + * Creates an ECS system that draws `terrainMesh` directly - a single, + * non-instanced `gl.drawArrays` call against its own geometry and material + * - rather than going through the sprite pipeline `createRenderEcsSystem` + * batches (which only knows how to draw quads). Register it *before* + * `createRenderEcsSystem`, with `renderContext.clearStrategy` set to + * `CLEAR_STRATEGY.none` (see `_create-game.ts`), so this system's own clear + * is the only one each frame - `createRenderEcsSystem`'s would otherwise + * wipe the terrain right before drawing the sprites on top of it. + * + * Assumes a single camera rendering straight to the canvas, which is all + * this demo needs; a multi-camera setup would need to track which + * destinations have already been cleared this frame, the way + * `createRenderEcsSystem` does internally. + * @param renderContext - The render context to draw into. + * @param terrainMesh - The terrain mesh built by `createTerrain`. + */ +export const createTerrainRenderEcsSystem = ( + renderContext: RenderContext, + terrainMesh: TerrainMesh, +): EcsSystem<[CameraEcsComponent, PositionEcsComponent]> => ({ + query: [cameraId, positionId], + run: (result) => { + const [cameraComponent, positionComponent] = result.components; + const { gl } = renderContext; + const { geometry, material, vertexCount } = terrainMesh; + + renderContext.bindRenderTarget(cameraComponent.renderTarget ?? null); + gl.clearColor(0, 0, 0, 1); + gl.clear(gl.COLOR_BUFFER_BIT); + + const projectionMatrix = createProjectionMatrix( + renderContext.width, + renderContext.height, + positionComponent.world, + cameraComponent.zoom, + ); + + material.setUniform('u_projection', projectionMatrix); + material.bind(gl); + geometry.bind(gl, material.program); + + gl.drawArrays(gl.TRIANGLES, 0, vertexCount); + }, +}); diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl b/documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl new file mode 100644 index 00000000..43a2f796 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl @@ -0,0 +1,39 @@ +#version 300 es + +#pragma forge name(rollingBallTerrain.frag) + +precision mediump float; + +uniform sampler2D u_fillTexture; +uniform sampler2D u_borderTexture; +uniform vec2 u_fillTileSize; +uniform vec2 u_borderTileSize; +uniform vec4 u_fillTint; +uniform vec4 u_borderTint; +uniform float u_borderWidth; +uniform float u_borderBlend; + +in float v_distance; +in float v_depth; + +out vec4 fragColor; + +void main() { + vec2 fillUv = vec2(v_distance / u_fillTileSize.x, v_depth / u_fillTileSize.y); + vec2 borderUv = + vec2(v_distance / u_borderTileSize.x, v_depth / u_borderTileSize.y); + + vec4 fillColor = texture(u_fillTexture, fillUv) * u_fillTint; + vec4 borderColor = texture(u_borderTexture, borderUv) * u_borderTint; + + // 0 near the surface (border texture), 1 once past the border band (fill + // texture), smoothed across `u_borderBlend` so the two textures cross-fade + // instead of cutting sharply from one to the other. + float t = smoothstep( + u_borderWidth - u_borderBlend, + u_borderWidth + u_borderBlend, + v_depth + ); + + fragColor = mix(borderColor, fillColor, t); +} diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl b/documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl new file mode 100644 index 00000000..68bfc4b1 --- /dev/null +++ b/documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl @@ -0,0 +1,20 @@ +#version 300 es + +#pragma forge name(rollingBallTerrain.vert) + +in vec2 a_position; +in float a_distance; +in float a_depth; + +uniform mat3 u_projection; + +out float v_distance; +out float v_depth; + +void main() { + vec3 projected = u_projection * vec3(a_position, 1.0); + + gl_Position = vec4(projected.xy, 0.0, 1.0); + v_distance = a_distance; + v_depth = a_depth; +} diff --git a/documentation-site/src/pages/demos/rolling-ball/index.tsx b/documentation-site/src/pages/demos/rolling-ball/index.tsx index f0d16a33..998bc3f4 100644 --- a/documentation-site/src/pages/demos/rolling-ball/index.tsx +++ b/documentation-site/src/pages/demos/rolling-ball/index.tsx @@ -2,6 +2,11 @@ import React, { JSX } from 'react'; import { createRollingBallGame } from './_create-game'; import gameCode from '!!raw-loader!./_create-game'; import createTerrainCode from '!!raw-loader!./_create-terrain'; +import terrainCurveCode from '!!raw-loader!./_terrain-curve'; +import terrainRenderSystemCode from '!!raw-loader!./_terrain-render.system'; +import loadTiledTextureCode from '!!raw-loader!./_load-tiled-texture'; +import terrainVertCode from '!!raw-loader!./_terrain.vert.glsl'; +import terrainFragCode from '!!raw-loader!./_terrain.frag.glsl'; import createPlayerCode from '!!raw-loader!./_create-player'; import createInputsCode from '!!raw-loader!./_create-inputs'; import rollSystemCode from '!!raw-loader!./_roll.system'; @@ -18,10 +23,10 @@ export default function RollingBall(): JSX.Element { metaData={{ title: 'Rolling Ball Demo', description: - 'A demo showcasing TerrainShape with a long, varied-height course and a player-controlled ball that rolls via friction from an AngularVelocityMotorEcsComponent.', + 'A demo showcasing TerrainShape with a smooth, textured, curve-generated course and a player-controlled ball that rolls via friction from an AngularVelocityMotorEcsComponent.', }} header="Rolling Ball" - blurb="A standalone showcase of TerrainShape: a long course with varied, seeded-random hills, and a ball you control directly. Roll input drives the ball's AngularVelocityMotorEcsComponent, and friction against the terrain - ordinary collision resolution, nothing special-cased - turns that spin into rolling motion up and down the hills. A small camera-follow system keeps the ball in view as it travels, and a jump impulse fires while grounded (tracked via PhysicsWorld.collisionStarts/collisionEnds against the terrain body)." + blurb="A standalone showcase of TerrainShape: a long course whose smooth silhouette comes from a Catmull-Rom curve through sparse, randomly-placed control points, triangulated into a single mesh and textured with a tileable grass-like border blending into a tileable dirt-like fill. TerrainShape's own collision points are sampled from that exact same curve, so what's drawn always matches what the ball touches. Roll input drives the ball's AngularVelocityMotorEcsComponent, and friction against the terrain - ordinary collision resolution, nothing special-cased - turns that spin into rolling motion up and down the hills. A small camera-follow system keeps the ball in view as it travels, and a jump impulse fires while grounded (tracked via PhysicsWorld.collisionStarts/collisionEnds against the terrain body)." createGame={createRollingBallGame} interactions={ <> @@ -48,6 +53,26 @@ export default function RollingBall(): JSX.Element { name: 'create-terrain.ts', content: createTerrainCode, }, + { + name: 'terrain-curve.ts', + content: terrainCurveCode, + }, + { + name: 'terrain-render.system.ts', + content: terrainRenderSystemCode, + }, + { + name: 'load-tiled-texture.ts', + content: loadTiledTextureCode, + }, + { + name: 'terrain.vert.glsl', + content: terrainVertCode, + }, + { + name: 'terrain.frag.glsl', + content: terrainFragCode, + }, { name: 'create-player.ts', content: createPlayerCode, From da96c1c85b0b7f43b072e8942d5451dd87766911 Mon Sep 17 00:00:00 2001 From: Storm Muller Date: Thu, 23 Jul 2026 08:43:00 +0200 Subject: [PATCH 5/7] fix(demo): update terrain border and fill textures for Rolling Ball demo --- .../src/pages/demos/rolling-ball/_create-game.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts index 7a1677d0..ffbaf696 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts +++ b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts @@ -53,20 +53,20 @@ export const createRollingBallGame = async (): Promise => { totalWidth: terrainWidth, border: { textureUrl: getAssetUrl( - 'img/kenney_pattern-pack/PNG/Default/pattern_25.png', + 'img/kenney_pattern-pack/PNG/Default/pattern_19.png', ), - tileSize: new Vector2(160, 70), - tint: new Color(0.42, 0.68, 0.35, 1), + tileSize: new Vector2(160, 150), + tint: new Color(1, 1, 1, 1), }, fill: { textureUrl: getAssetUrl( - 'img/kenney_pattern-pack/PNG/Default/pattern_39.png', + 'img/kenney_pattern-pack/PNG/Default/pattern_37.png', ), - tileSize: new Vector2(90, 90), + tileSize: new Vector2(30, 30), tint: new Color(0.4, 0.29, 0.18, 1), }, - borderWidth: 40, - borderBlend: 14, + borderWidth: 30, + borderBlend: 10, }); const spawnPosition = new Vector2( From 332e2ac632287fc304bc3ab978316c35fff828c2 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Jul 2026 07:27:50 +0000 Subject: [PATCH 6/7] refactor(rendering): move terrain rendering into the engine Move the Catmull-Rom curve builder, textured mesh builder, and draw system that previously lived only in the Rolling Ball demo into src/rendering/terrain, so any game can render a TerrainShape without reimplementing this pipeline. Add a tile option to createTextureFromImage instead of a separate tiled-texture loader. Rewire the Rolling Ball demo to consume the new public API and revert the unrelated changes to the physics demo. --- .../docs/docs/physics/terrain.md | 165 +++++++----- .../pages/demos/physics/_create-boundaries.ts | 12 +- .../src/pages/demos/physics/_create-game.ts | 2 - .../pages/demos/physics/_create-terrain.ts | 188 -------------- .../src/pages/demos/physics/index.tsx | 7 +- .../pages/demos/rolling-ball/_create-game.ts | 2 +- .../demos/rolling-ball/_create-terrain.ts | 188 +++----------- .../demos/rolling-ball/_load-tiled-texture.ts | 25 -- .../src/pages/demos/rolling-ball/index.tsx | 25 -- src/rendering/index.ts | 1 + .../utils/create-texture-from-image.test.ts | 36 ++- .../utils/create-texture-from-image.ts | 13 +- .../terrain/create-terrain-mesh.test.ts | 206 +++++++++++++++ src/rendering/terrain/create-terrain-mesh.ts | 236 ++++++++++++++++++ .../create-terrain-render-ecs-system.test.ts | 140 +++++++++++ .../create-terrain-render-ecs-system.ts | 33 +-- src/rendering/terrain/index.ts | 4 + src/rendering/terrain/shaders/index.ts | 5 + .../terrain/shaders/terrain.frag.glsl | 2 +- .../terrain/shaders/terrain.vert.glsl | 2 +- src/rendering/terrain/terrain-curve.test.ts | 114 +++++++++ .../rendering/terrain/terrain-curve.ts | 33 ++- .../utilities/create-shader-cache.ts | 8 +- 23 files changed, 944 insertions(+), 503 deletions(-) delete mode 100644 documentation-site/src/pages/demos/physics/_create-terrain.ts delete mode 100644 documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts create mode 100644 src/rendering/terrain/create-terrain-mesh.test.ts create mode 100644 src/rendering/terrain/create-terrain-mesh.ts create mode 100644 src/rendering/terrain/create-terrain-render-ecs-system.test.ts rename documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts => src/rendering/terrain/create-terrain-render-ecs-system.ts (63%) create mode 100644 src/rendering/terrain/index.ts create mode 100644 src/rendering/terrain/shaders/index.ts rename documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl => src/rendering/terrain/shaders/terrain.frag.glsl (95%) rename documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl => src/rendering/terrain/shaders/terrain.vert.glsl (87%) create mode 100644 src/rendering/terrain/terrain-curve.test.ts rename documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts => src/rendering/terrain/terrain-curve.ts (77%) diff --git a/documentation-site/docs/docs/physics/terrain.md b/documentation-site/docs/docs/physics/terrain.md index a7a2e8d1..9e1e02f8 100644 --- a/documentation-site/docs/docs/physics/terrain.md +++ b/documentation-site/docs/docs/physics/terrain.md @@ -73,71 +73,112 @@ the narrow phase - for very large worlds, prefer several shorter ## Rendering -The engine's sprite renderer draws rotated/scaled quads and has no built-in -terrain mesh renderer, so visualizing a `TerrainShape` is left to your game -code. Two approaches, from simplest to most capable, both demonstrated in -this repo: - -### Quick and simple: one sprite bar per point - -The [physics demo](/Forge/demos/physics) hand-builds its rolling-hill floor -out of ordinary sprites, the same way it builds its `PolygonShape` walls: -one thin, axis-aligned vertical bar per surface point, reaching from that -point down to the shared bottom edge, tinted a solid ground color via -[`getSharedWhiteTexture`](/Forge/docs/api/functions/getSharedWhiteTexture) -(a 1x1 white texture, so the sprite shader's tint multiplies through -unmodified). See its `create-terrain.ts` for the complete example, -including computing each bar's position and width from the same -`points`/`depth` passed to `TerrainShape`. +The engine's sprite renderer draws rotated/scaled quads and can't render a +heightmap's silhouette, so `@forge-game-engine/forge/rendering` ships a +small terrain-specific pipeline alongside `TerrainShape`: a smooth curve +builder, a mesh builder, and a draw system. All three are demonstrated end +to end in the [Rolling Ball demo](/Forge/demos/rolling-ball). -:::caution -Render one rotated rectangle **per segment** instead (each one's top edge -matching that segment's slope) and you'll get thin gaps of background -showing through at some of the joints: two neighboring segments only share -their exact top corners, so wherever the slope changes from one segment to -the next, their side edges diverge below that shared corner. Axis-aligned -bars, each a little wider than its point spacing so neighbors overlap, -avoid this regardless of how steeply the terrain slopes - see the -`barOverlap` in the demo's `create-terrain.ts`. -::: +### Building a smooth curve + +[`buildTerrainCurve`](/Forge/docs/api/functions/buildTerrainCurve) turns a +handful of sparse control points into a long, natural-looking silhouette: a +Catmull-Rom spline through the control points (converted to an equivalent +sequence of cubic Beziers under the hood), densely sampled into a polyline. + +```ts +import { Vector2 } from '@forge-game-engine/forge/math'; +import { buildTerrainCurve } from '@forge-game-engine/forge/rendering'; + +const curvePoints = buildTerrainCurve( + [ + new Vector2(-400, 40), + new Vector2(-200, -20), + new Vector2(0, 0), + new Vector2(200, -60), + new Vector2(400, 20), + ], + 20, // samplesPerSegment: how many points to sample between each pair of control points +); +``` + +Feed the same `curvePoints` into both `TerrainShape` (mapping each point's +`.position` into the `Vector2[]` it expects) and the render mesh below, so +what's drawn always matches exactly what the body collides with: + +```ts +const points = curvePoints.map((curvePoint) => curvePoint.position); +const terrainShape = new TerrainShape(points, 200); +``` + +[`heightAtLocalX`](/Forge/docs/api/functions/heightAtLocalX) looks up a +curve's interpolated surface height at a given local-space `x` - handy for +placing anything (a player's spawn point, a patrolling enemy) exactly on +the terrain's surface. + +### Building the mesh -This approach is quick to write and reuses the ordinary sprite pipeline -entirely, but it can't render a perfectly smooth diagonal edge (the bars are -always vertical) or independently-tiled textures along the slope. - -### A real textured mesh: the Rolling Ball demo - -The [Rolling Ball demo](/Forge/demos/rolling-ball) goes further: a much -longer course whose smooth silhouette comes from a Catmull-Rom spline -through sparse, randomly-placed control points (see its -`terrain-curve.ts`), densely sampled into both `TerrainShape`'s collision -points _and_ a triangulated render mesh - the same points drive both, so -what's drawn always matches exactly what the ball touches. - -That mesh is textured with a custom shader (`terrain.vert`/`terrain.frag`) -rather than the sprite pipeline: two independently-tileable layers, a -"border" texture near the surface blending into a "fill" texture below it -over a configurable depth and blend width, each with its own tile size and -tint (see `CreateTerrainOptions` in its `create-terrain.ts`). Since this -mesh has an arbitrary vertex count - not the fixed six-vertices-per-quad the -sprite pipeline batches - it's drawn with its own direct, non-instanced -`gl.drawArrays` call (see `terrain-render.system.ts`) instead of going -through `createRenderEcsSystem`. +[`createTerrainMesh`](/Forge/docs/api/functions/createTerrainMesh) +triangulates `curvePoints` into a single mesh and textures it with two +independently-tileable layers: a "border" texture near the surface blending +into a "fill" texture below it, over a configurable depth and blend width, +each with its own tile size and tint. + +```ts +import { Color, createTerrainMesh } from '@forge-game-engine/forge/rendering'; + +const borderImage = await renderContext.imageCache.getOrLoad('grass.png'); +const fillImage = await renderContext.imageCache.getOrLoad('dirt.png'); + +const mesh = createTerrainMesh(renderContext, { + curvePoints, + depth: 200, // must match the TerrainShape's depth + position: Vector2.zero, // must match the RigidBody's position + angle: 0, // must match the RigidBody's angle + border: { + image: borderImage, + tileSize: new Vector2(160, 70), + tint: Color.white, + }, + fill: { + image: fillImage, + tileSize: new Vector2(90, 90), + tint: Color.white, + }, + borderWidth: 40, + borderBlend: 14, // optional, defaults to 12 +}); +``` + +`createTerrainMesh` loads each layer's texture with `REPEAT` wrapping on +both axes (rather than the `CLAMP_TO_EDGE` `createTextureFromImage` uses by +default for ordinary sprite frames, which must never bleed into a +neighboring frame in the same atlas) - pass `tile: true` to +`createTextureFromImage` directly if you ever need a tiled texture outside +this pipeline. + +### Drawing the mesh + +Since the mesh has an arbitrary vertex count - not the fixed +six-vertices-per-quad the sprite pipeline batches - +[`createTerrainRenderEcsSystem`](/Forge/docs/api/functions/createTerrainRenderEcsSystem) +draws it with its own direct, non-instanced `gl.drawArrays` call instead of +going through `createRenderEcsSystem`. + +```ts +import { createTerrainRenderEcsSystem } from '@forge-game-engine/forge/rendering'; + +world.addSystem(createTerrainRenderEcsSystem(renderContext, mesh)); +world.addSystem(createRenderEcsSystem(renderContext)); +``` :::caution[Coexisting with the sprite pipeline] -A custom draw call like this runs as an ordinary `EcsSystem`, registered -_before_ `createRenderEcsSystem` so sprites (the ball) draw on top of the -terrain mesh underneath them. But `createRenderEcsSystem` clears its -destination the first time it's used each frame (see +Register the terrain system _before_ `createRenderEcsSystem` so sprites +draw on top of the terrain mesh underneath them. But `createRenderEcsSystem` +clears its destination the first time it's used each frame (see `RenderContext.clearStrategy`), which would wipe out the terrain mesh drawn -just before it. The Rolling Ball demo sets `renderContext.clearStrategy = -CLEAR_STRATEGY.none` so neither system's automatic clear fires, and instead -does the frame's one real clear itself, first, in its own system - see the -comment on `renderContext.clearStrategy` in its `create-game.ts`. +just before it. Set `renderContext.clearStrategy = CLEAR_STRATEGY.none` so +neither system's automatic clear fires - `createTerrainRenderEcsSystem` +does the frame's one real clear itself, first. See the Rolling Ball demo's +`create-game.ts` for the complete setup. ::: - -Textures meant to tile also need `REPEAT` wrapping, unlike the engine's -`createTextureFromImage` (which hardcodes `CLAMP_TO_EDGE`, correct for a -sprite frame that must never bleed into a neighboring frame in the same -atlas). The demo's `load-tiled-texture.ts` loads a texture with `REPEAT` on -both axes instead. diff --git a/documentation-site/src/pages/demos/physics/_create-boundaries.ts b/documentation-site/src/pages/demos/physics/_create-boundaries.ts index 4e09ac36..302ed9cc 100644 --- a/documentation-site/src/pages/demos/physics/_create-boundaries.ts +++ b/documentation-site/src/pages/demos/physics/_create-boundaries.ts @@ -21,9 +21,8 @@ import { getAssetUrl } from '@site/src/utils/get-asset-url'; export const wallThickness = 40; /** - * Creates static rigid bodies for the side walls, bounding the area in - * which shapes can fall and collide. The floor is a `TerrainShape` instead - * (see `createTerrain`), rather than a third flat wall. + * Creates static rigid bodies for the floor and side walls, bounding the + * area in which shapes can fall and collide. * @param world - The ECS world to add the boundary entities to. * @param renderContext - The render context used to load the wall sprite. * @param renderLayer - The render layer the boundaries should be drawn on. @@ -40,6 +39,7 @@ export async function createBoundaries( const { width, height } = renderContext.canvas; const halfWidth = width / 2; + const halfHeight = height / 2; const createWall = ( position: Vector2, @@ -77,6 +77,12 @@ export async function createBoundaries( }); }; + createWall( + new Vector2(0, -halfHeight + wallThickness / 2), + width, + wallThickness, + ); + createWall( new Vector2(-halfWidth + wallThickness / 2, 0), wallThickness, diff --git a/documentation-site/src/pages/demos/physics/_create-game.ts b/documentation-site/src/pages/demos/physics/_create-game.ts index bdc93362..8fbbda16 100644 --- a/documentation-site/src/pages/demos/physics/_create-game.ts +++ b/documentation-site/src/pages/demos/physics/_create-game.ts @@ -11,7 +11,6 @@ import { } from '@forge-game-engine/forge/physics'; import { Vector2 } from '@forge-game-engine/forge/math'; import { createBoundaries } from './_create-boundaries'; -import { createTerrain } from './_create-terrain'; import { spawnShapes } from './_spawn-shapes'; const renderLayers = { @@ -39,7 +38,6 @@ export const createPhysicsGame = async (): Promise => { const physicsWorld = new PhysicsWorld({ gravity }); await createBoundaries(world, renderContext, renderLayers.foreground); - createTerrain(world, renderContext, renderLayers.foreground); await spawnShapes(world, renderContext, renderLayers.foreground); world.addSystem(createCameraEcsSystem(time)); diff --git a/documentation-site/src/pages/demos/physics/_create-terrain.ts b/documentation-site/src/pages/demos/physics/_create-terrain.ts deleted file mode 100644 index 9fbd4ead..00000000 --- a/documentation-site/src/pages/demos/physics/_create-terrain.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { EcsWorld } from '@forge-game-engine/forge/ecs'; -import { positionId, rotationId } from '@forge-game-engine/forge/common'; -import { Vector2 } from '@forge-game-engine/forge/math'; -import { - PhysicsBodyId, - RigidBody, - TerrainShape, -} from '@forge-game-engine/forge/physics'; -import { - Color, - combineInstanceDataSegments, - createQuadGeometry, - getSharedBlackTexture, - getSharedWhiteTexture, - Material, - Renderable, - RenderContext, - spriteId, - spriteInstanceDataSegment, -} from '@forge-game-engine/forge/rendering'; -import { wallThickness } from './_create-boundaries'; - -const groundColor = new Color(0.36, 0.62, 0.32, 1); -const hillAmplitude = 60; -const terrainDepth = 400; -const pointCount = 40; - -/** - * Builds a shared `Renderable` for terrain segment sprites: the standard - * sprite vertex/fragment shaders, but sampling a 1x1 white texture instead - * of an image, so each segment renders as a flat, tintable rectangle rather - * than needing a ground image asset. - * @param renderContext - The render context to build the material with. - * @param layer - The render layer terrain segments should be drawn on. - * @returns The shared terrain segment `Renderable`. - */ -function createTerrainRenderable( - renderContext: RenderContext, - layer: number, -): Renderable { - const { shaderCache, gl } = renderContext; - - const material = new Material( - shaderCache.getShader('sprite.vert'), - shaderCache.getShader('sprite.frag'), - gl, - ); - - material.setUniform('u_texture', getSharedWhiteTexture(gl)); - material.setUniform('u_emissiveTexture', getSharedBlackTexture(gl)); - material.setColorUniform('u_emissiveColor', Color.white); - material.setUniform('u_emissiveIntensity', 0); - - const { floatsPerInstance, bindInstanceData, setupInstanceAttributes } = - combineInstanceDataSegments(spriteInstanceDataSegment); - - return new Renderable( - createQuadGeometry(gl), - material, - floatsPerInstance, - layer, - bindInstanceData, - setupInstanceAttributes, - ); -} - -/** - * Creates a rolling-hill `TerrainShape` body spanning the play area, - * replacing a flat floor, plus one sprite entity per surface point (a thin - * vertical bar) to render it. Demonstrates `TerrainShape` as described in - * the Terrain physics guide. - * @param world - The ECS world to add the terrain entities to. - * @param renderContext - The render context used to build the terrain sprite material. - * @param renderLayer - The render layer the terrain should be drawn on. - */ -export function createTerrain( - world: EcsWorld, - renderContext: RenderContext, - renderLayer: number, -): void { - const renderable = createTerrainRenderable(renderContext, renderLayer); - - const { width, height } = renderContext.canvas; - const halfHeight = height / 2; - const terrainWidth = width - wallThickness * 2; - const halfTerrainWidth = terrainWidth / 2; - - const points: Vector2[] = []; - - for (let i = 0; i < pointCount; i++) { - const t = i / (pointCount - 1); - const x = -halfTerrainWidth + t * terrainWidth; - const y = -hillAmplitude * Math.sin(Math.PI * t); - - points.push(new Vector2(x, y)); - } - - const terrainShape = new TerrainShape(points, terrainDepth); - - // Rotated 180 degrees: `TerrainShape` always extends its solid slab - // `depth` units in the +y direction from its surface points (in its own - // local space), but this demo's gravity pulls bodies toward -y. Rotating - // the body flips which world direction the slab extends in, so it faces - // the right way for bodies falling under this demo's gravity. - const angle = Math.PI; - const position = new Vector2(0, -halfHeight + wallThickness / 2); - - const terrainBody = new RigidBody({ - shape: terrainShape, - position, - angle, - isStatic: true, - }); - - const terrainEntity = world.createEntity(); - - world.addComponent(terrainEntity, positionId, { - world: position.clone(), - local: position.clone(), - }); - - // `RotationEcsComponent.world` is negated relative to `RigidBody.angle` - // (see the "Coordinate spaces" note in the Bodies and Shapes guide), the - // same convention `createPhysicsSyncEcsSystem` uses for every other - // static body. - world.addComponent(terrainEntity, rotationId, { - local: -angle, - world: -angle, - }); - - world.addComponent(terrainEntity, PhysicsBodyId, { - physicsBody: terrainBody, - }); - - // Rendered as one axis-aligned bar per surface point, not one strip per - // segment rotated to match its own slope: a rotated strip only shares its - // exact top corners with its neighbors, so wherever the slope changes - // from one segment to the next, their side edges diverge below that - // shared corner and open a sliver of black background between them. Bars - // stay axis-aligned (in the terrain's own local space) and a little wider - // than their point spacing so neighbors overlap, which closes that gap - // regardless of how steeply the terrain slopes, at the cost of a subtle - // staircase instead of a perfectly smooth diagonal edge - invisible at - // this point spacing. - const barOverlap = 1.2; - - for (let i = 0; i < points.length; i++) { - const point = points[i]; - const leftGap = - i > 0 ? point.x - points[i - 1].x : points[i + 1].x - point.x; - const rightGap = - i < points.length - 1 - ? points[i + 1].x - point.x - : point.x - points[i - 1].x; - const barWidth = ((leftGap + rightGap) / 2) * barOverlap; - const barHeight = terrainShape.bottomY - point.y; - - const localCenter = new Vector2( - point.x, - (point.y + terrainShape.bottomY) / 2, - ); - const barPosition = localCenter.rotate(angle).add(position); - - const barEntity = world.createEntity(); - - world.addComponent(barEntity, positionId, { - world: barPosition, - local: barPosition.clone(), - }); - - world.addComponent(barEntity, rotationId, { - local: -angle, - world: -angle, - }); - - world.addComponent(barEntity, spriteId, { - width: barWidth, - height: barHeight, - pivot: new Vector2(0.5, 0.5), - tintColor: groundColor, - renderable, - uvOffset: Vector2.zero, - uvScale: Vector2.one, - enabled: true, - layer: renderLayer, - }); - } -} diff --git a/documentation-site/src/pages/demos/physics/index.tsx b/documentation-site/src/pages/demos/physics/index.tsx index 8ddffef3..95d39c70 100644 --- a/documentation-site/src/pages/demos/physics/index.tsx +++ b/documentation-site/src/pages/demos/physics/index.tsx @@ -2,7 +2,6 @@ import React, { JSX } from 'react'; import { createPhysicsGame } from './_create-game'; import gameCode from '!!raw-loader!./_create-game'; import createBoundariesCode from '!!raw-loader!./_create-boundaries'; -import createTerrainCode from '!!raw-loader!./_create-terrain'; import spawnShapesCode from '!!raw-loader!./_spawn-shapes'; import { Demo } from '@site/src/components/Demo'; @@ -15,7 +14,7 @@ export default function Physics(): JSX.Element { description: 'A demo showcasing the physics engine.', }} header="Physics" - blurb="This demo showcases the engine's built-in 2D physics: rigid bodies, gravity, collision detection and resolution. A pile of circles and squares falls onto a rolling-hill TerrainShape floor between two walls, bouncing and colliding with the ground, walls and each other until they settle. Click anywhere on the canvas to trigger an explosion that blasts nearby shapes away from the click point." + blurb="This demo showcases the engine's built-in 2D physics: rigid bodies, gravity, collision detection and resolution. A pile of circles and squares falls into a walled area, bouncing and colliding with the floor, walls and each other until they settle. Click anywhere on the canvas to trigger an explosion that blasts nearby shapes away from the click point." createGame={createPhysicsGame} codeFiles={[ { @@ -26,10 +25,6 @@ export default function Physics(): JSX.Element { name: 'create-boundaries.ts', content: createBoundariesCode, }, - { - name: 'create-terrain.ts', - content: createTerrainCode, - }, { name: 'spawn-shapes.ts', content: spawnShapesCode, diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts index ffbaf696..cec75ee0 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_create-game.ts +++ b/documentation-site/src/pages/demos/rolling-ball/_create-game.ts @@ -3,6 +3,7 @@ import { Color, createCamera, createRenderEcsSystem, + createTerrainRenderEcsSystem, } from '@forge-game-engine/forge/rendering'; import { createGame, Game } from '@forge-game-engine/forge/utilities'; import { @@ -18,7 +19,6 @@ import { Vector2 } from '@forge-game-engine/forge/math'; import { getAssetUrl } from '@site/src/utils/get-asset-url'; import { createInputs } from './_create-inputs'; import { createTerrain } from './_create-terrain'; -import { createTerrainRenderEcsSystem } from './_terrain-render.system'; import { createPlayer } from './_create-player'; import { createRollEcsSystem } from './_roll.system'; import { createJumpEcsSystem } from './_jump.system'; diff --git a/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts index f08a3b20..650a11a7 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts +++ b/documentation-site/src/pages/demos/rolling-ball/_create-terrain.ts @@ -7,16 +7,13 @@ import { TerrainShape, } from '@forge-game-engine/forge/physics'; import { + buildTerrainCurve, Color, - ForgeShaderSource, - Geometry, - Material, + createTerrainMesh, + heightAtLocalX, RenderContext, + TerrainMesh, } from '@forge-game-engine/forge/rendering'; -import terrainVertexShaderSource from '!!raw-loader!./_terrain.vert.glsl'; -import terrainFragmentShaderSource from '!!raw-loader!./_terrain.frag.glsl'; -import { buildTerrainCurve, heightAtLocalX } from './_terrain-curve'; -import { loadTiledTexture } from './_load-tiled-texture'; // How far apart (in local x) the sparse control points the terrain curve is // built from are. Small enough that a smooth curve through them still reads @@ -79,17 +76,6 @@ export interface CreateTerrainOptions { borderBlend: number; } -const defaultCreateTerrainOptions = { - borderBlend: 12, -}; - -/** The static terrain mesh built by {@link createTerrain}, ready to draw with `createTerrainRenderEcsSystem`. */ -export interface TerrainMesh { - readonly geometry: Geometry; - readonly material: Material; - readonly vertexCount: number; -} - export interface RollingBallTerrain { /** The terrain's static `RigidBody`, for reference (e.g. grounded checks). */ body: RigidBody; @@ -141,136 +127,16 @@ function buildControlPoints(totalWidth: number): Vector2[] { return controlPoints; } -interface TerrainMeshData { - positions: Float32Array; - distances: Float32Array; - depths: Float32Array; - vertexCount: number; -} - -function buildTerrainMeshData( - curvePoints: { position: Vector2; distance: number }[], - bottomY: number, - angle: number, - position: Vector2, -): TerrainMeshData { - const positions: number[] = []; - const distances: number[] = []; - const depths: number[] = []; - - const pushVertex = ( - localPoint: Vector2, - distance: number, - depth: number, - ): void => { - const world = localPoint.rotate(angle).add(position); - - // Y is negated here to match the sprite pipeline's world-to-render - // convention (see sprite-instance-data-segment.ts's - // bindSpriteInstanceData, which negates position.world.y the same way - // before it reaches the GPU). - positions.push(world.x, -world.y); - distances.push(distance); - depths.push(depth); - }; - - for (let i = 0; i < curvePoints.length - 1; i++) { - const left = curvePoints[i]; - const right = curvePoints[i + 1]; - - const bottomLeft = new Vector2(left.position.x, bottomY); - const bottomRight = new Vector2(right.position.x, bottomY); - const depthLeft = bottomY - left.position.y; - const depthRight = bottomY - right.position.y; - - pushVertex(left.position, left.distance, 0); - pushVertex(right.position, right.distance, 0); - pushVertex(bottomLeft, left.distance, depthLeft); - - pushVertex(right.position, right.distance, 0); - pushVertex(bottomRight, right.distance, depthRight); - pushVertex(bottomLeft, left.distance, depthLeft); - } - - return { - positions: new Float32Array(positions), - distances: new Float32Array(distances), - depths: new Float32Array(depths), - vertexCount: positions.length / 2, - }; -} - -function createTerrainGeometry( - gl: WebGL2RenderingContext, - meshData: TerrainMeshData, -): Geometry { - const geometry = new Geometry(); - - const positionBuffer = gl.createBuffer(); - - gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); - gl.bufferData(gl.ARRAY_BUFFER, meshData.positions, gl.STATIC_DRAW); - geometry.addAttribute(gl, 'a_position', { buffer: positionBuffer, size: 2 }); - - const distanceBuffer = gl.createBuffer(); - - gl.bindBuffer(gl.ARRAY_BUFFER, distanceBuffer); - gl.bufferData(gl.ARRAY_BUFFER, meshData.distances, gl.STATIC_DRAW); - geometry.addAttribute(gl, 'a_distance', { - buffer: distanceBuffer, - size: 1, - }); - - const depthBuffer = gl.createBuffer(); - - gl.bindBuffer(gl.ARRAY_BUFFER, depthBuffer); - gl.bufferData(gl.ARRAY_BUFFER, meshData.depths, gl.STATIC_DRAW); - geometry.addAttribute(gl, 'a_depth', { buffer: depthBuffer, size: 1 }); - - return geometry; -} - -async function createTerrainMaterial( - renderContext: RenderContext, - options: CreateTerrainOptions, -): Promise { - const { gl, imageCache } = renderContext; - - const [fillImage, borderImage] = await Promise.all([ - imageCache.getOrLoad(options.fill.textureUrl), - imageCache.getOrLoad(options.border.textureUrl), - ]); - - const material = new Material( - new ForgeShaderSource(terrainVertexShaderSource), - new ForgeShaderSource(terrainFragmentShaderSource), - gl, - ); - - material.setUniform('u_fillTexture', loadTiledTexture(gl, fillImage)); - material.setUniform('u_borderTexture', loadTiledTexture(gl, borderImage)); - material.setVectorUniform('u_fillTileSize', options.fill.tileSize); - material.setVectorUniform('u_borderTileSize', options.border.tileSize); - material.setColorUniform('u_fillTint', options.fill.tint); - material.setColorUniform('u_borderTint', options.border.tint); - material.setUniform('u_borderWidth', options.borderWidth); - material.setUniform( - 'u_borderBlend', - options.borderBlend ?? defaultCreateTerrainOptions.borderBlend, - ); - - return material; -} - /** * Creates a long, varied-height `TerrainShape` ground body - a smooth curve - * through sparse, randomly-placed control points (see `_terrain-curve.ts`), - * rather than a jagged polyline - plus a single triangulated mesh to render - * it, textured with a tileable border layer near the surface blending into - * a tileable fill layer below (see `CreateTerrainOptions`). Pair with + * through sparse, randomly-placed control points (see + * `buildTerrainCurve`), rather than a jagged polyline - plus a single + * triangulated mesh to render it (see `createTerrainMesh`), textured with a + * tileable border layer near the surface blending into a tileable fill + * layer below (see `CreateTerrainOptions`). Pair with * `createTerrainRenderEcsSystem` to draw the returned `mesh`. * @param world - The ECS world to add the terrain entity to. - * @param renderContext - The render context used to build the terrain mesh's textures and material. + * @param renderContext - The render context used to load the terrain's textures and build its mesh. * @param options - Sizing and texturing options for the terrain. */ export async function createTerrain( @@ -278,7 +144,7 @@ export async function createTerrain( renderContext: RenderContext, options: CreateTerrainOptions, ): Promise { - const { totalWidth } = options; + const { totalWidth, border, fill, borderWidth, borderBlend } = options; const controlPoints = buildControlPoints(totalWidth); const curvePoints = buildTerrainCurve(controlPoints, samplesPerSegment); @@ -321,17 +187,29 @@ export async function createTerrain( physicsBody: terrainBody, }); - const meshData = buildTerrainMeshData( + const [borderImage, fillImage] = await Promise.all([ + renderContext.imageCache.getOrLoad(border.textureUrl), + renderContext.imageCache.getOrLoad(fill.textureUrl), + ]); + + const mesh = createTerrainMesh(renderContext, { curvePoints, - terrainShape.bottomY, - angle, + depth: terrainDepth, position, - ); - - const [material, geometry] = await Promise.all([ - createTerrainMaterial(renderContext, options), - Promise.resolve(createTerrainGeometry(renderContext.gl, meshData)), - ]); + angle, + border: { + image: borderImage, + tileSize: border.tileSize, + tint: border.tint, + }, + fill: { + image: fillImage, + tileSize: fill.tileSize, + tint: fill.tint, + }, + borderWidth, + borderBlend, + }); const spawnX = position.x; @@ -345,6 +223,6 @@ export async function createTerrain( body: terrainBody, spawnX, worldSurfaceYAt, - mesh: { geometry, material, vertexCount: meshData.vertexCount }, + mesh, }; } diff --git a/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts b/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts deleted file mode 100644 index 0ff72b8b..00000000 --- a/documentation-site/src/pages/demos/rolling-ball/_load-tiled-texture.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Loads an image into a WebGL texture configured to tile: `REPEAT` wrapping - * on both axes, rather than the `CLAMP_TO_EDGE` the engine's - * `createTextureFromImage` uses (appropriate for sprite frames, which - * should never bleed into a neighboring frame, but not for a texture meant - * to repeat across a surface like this demo's terrain). - * @param gl - The WebGL2 rendering context. - * @param image - The image to load. - * @returns The created, tile-ready WebGL texture. - */ -export function loadTiledTexture( - gl: WebGL2RenderingContext, - image: HTMLImageElement, -): WebGLTexture { - const texture = gl.createTexture(); - - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - - return texture; -} diff --git a/documentation-site/src/pages/demos/rolling-ball/index.tsx b/documentation-site/src/pages/demos/rolling-ball/index.tsx index 998bc3f4..62b644e9 100644 --- a/documentation-site/src/pages/demos/rolling-ball/index.tsx +++ b/documentation-site/src/pages/demos/rolling-ball/index.tsx @@ -2,11 +2,6 @@ import React, { JSX } from 'react'; import { createRollingBallGame } from './_create-game'; import gameCode from '!!raw-loader!./_create-game'; import createTerrainCode from '!!raw-loader!./_create-terrain'; -import terrainCurveCode from '!!raw-loader!./_terrain-curve'; -import terrainRenderSystemCode from '!!raw-loader!./_terrain-render.system'; -import loadTiledTextureCode from '!!raw-loader!./_load-tiled-texture'; -import terrainVertCode from '!!raw-loader!./_terrain.vert.glsl'; -import terrainFragCode from '!!raw-loader!./_terrain.frag.glsl'; import createPlayerCode from '!!raw-loader!./_create-player'; import createInputsCode from '!!raw-loader!./_create-inputs'; import rollSystemCode from '!!raw-loader!./_roll.system'; @@ -53,26 +48,6 @@ export default function RollingBall(): JSX.Element { name: 'create-terrain.ts', content: createTerrainCode, }, - { - name: 'terrain-curve.ts', - content: terrainCurveCode, - }, - { - name: 'terrain-render.system.ts', - content: terrainRenderSystemCode, - }, - { - name: 'load-tiled-texture.ts', - content: loadTiledTextureCode, - }, - { - name: 'terrain.vert.glsl', - content: terrainVertCode, - }, - { - name: 'terrain.frag.glsl', - content: terrainFragCode, - }, { name: 'create-player.ts', content: createPlayerCode, diff --git a/src/rendering/index.ts b/src/rendering/index.ts index 7ea4934b..01746e6d 100644 --- a/src/rendering/index.ts +++ b/src/rendering/index.ts @@ -13,3 +13,4 @@ export * from './render-context.js'; export * from './render-target.js'; export * from './ping-pong-target.js'; export * from './fullscreen-pass.js'; +export * from './terrain/index.js'; diff --git a/src/rendering/shaders/utils/create-texture-from-image.test.ts b/src/rendering/shaders/utils/create-texture-from-image.test.ts index 648677a3..752749ae 100644 --- a/src/rendering/shaders/utils/create-texture-from-image.test.ts +++ b/src/rendering/shaders/utils/create-texture-from-image.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/naming-convention */ import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; import { createTextureFromImage } from './create-texture-from-image'; @@ -6,12 +7,16 @@ describe('createTextureFromImage', () => { let image: TexImageSource; beforeEach(() => { - // Create a mock WebGL2RenderingContext + // Create a mock WebGL2RenderingContext. CLAMP_TO_EDGE and REPEAT are + // given distinct dummy values (rather than left undefined) so tests can + // actually tell which one a call used. gl = { createTexture: vi.fn(), bindTexture: vi.fn(), texParameteri: vi.fn(), texImage2D: vi.fn(), + CLAMP_TO_EDGE: 'CLAMP_TO_EDGE', + REPEAT: 'REPEAT', } as unknown as WebGL2RenderingContext; // Create a mock image @@ -56,4 +61,33 @@ describe('createTextureFromImage', () => { ); expect(result).toBe(texture); }); + + it('should wrap with REPEAT on both axes when tile is true', () => { + (gl.createTexture as Mock).mockReturnValue({}); + + createTextureFromImage(gl, image, false, true); + + expect(gl.texParameteri).toHaveBeenCalledWith( + gl.TEXTURE_2D, + gl.TEXTURE_WRAP_S, + gl.REPEAT, + ); + expect(gl.texParameteri).toHaveBeenCalledWith( + gl.TEXTURE_2D, + gl.TEXTURE_WRAP_T, + gl.REPEAT, + ); + }); + + it('should default to CLAMP_TO_EDGE wrapping when tile is omitted', () => { + (gl.createTexture as Mock).mockReturnValue({}); + + createTextureFromImage(gl, image); + + expect(gl.texParameteri).toHaveBeenCalledWith( + gl.TEXTURE_2D, + gl.TEXTURE_WRAP_S, + gl.CLAMP_TO_EDGE, + ); + }); }); diff --git a/src/rendering/shaders/utils/create-texture-from-image.ts b/src/rendering/shaders/utils/create-texture-from-image.ts index 07b98d46..5c872312 100644 --- a/src/rendering/shaders/utils/create-texture-from-image.ts +++ b/src/rendering/shaders/utils/create-texture-from-image.ts @@ -3,19 +3,28 @@ * * @param gl - The WebGL2 rendering context. * @param image - The image source to create the texture from. + * @param pixelated - Samples with nearest-neighbor filtering for crisp, + * blocky scaling, appropriate for pixel-art assets. Defaults to `false`. + * @param tile - Wraps with `REPEAT` on both axes instead of `CLAMP_TO_EDGE`, + * for a texture meant to tile across a surface rather than a sprite frame + * (which must never bleed into a neighboring frame in the same atlas). + * Defaults to `false`. * @returns The created WebGL texture. */ export const createTextureFromImage = ( gl: WebGL2RenderingContext, image: TexImageSource, pixelated: boolean = false, + tile: boolean = false, ): WebGLTexture => { const texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + const wrap = tile ? gl.REPEAT : gl.CLAMP_TO_EDGE; + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap); if (pixelated) { // Use nearest filtering for crisp, pixel-art scaling diff --git a/src/rendering/terrain/create-terrain-mesh.test.ts b/src/rendering/terrain/create-terrain-mesh.test.ts new file mode 100644 index 00000000..e6e5d4b3 --- /dev/null +++ b/src/rendering/terrain/create-terrain-mesh.test.ts @@ -0,0 +1,206 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; +import { createTerrainMesh } from './create-terrain-mesh'; +import { buildTerrainCurve } from './terrain-curve'; +import { ImageCache } from '../../asset-loading/index.js'; +import { Vector2 } from '../../math/index.js'; +import { Color } from '../color.js'; +import { RenderContext } from '../render-context.js'; +import { ForgeShaderSource, ShaderCache } from '../shaders/index.js'; +import { terrainFragmentShader, terrainVertexShader } from './shaders/index'; + +// Mock WebGLTexture constructor for instanceof checks in Material.bind +globalThis.WebGLTexture = class WebGLTexture {}; + +describe('createTerrainMesh', () => { + let canvas: HTMLCanvasElement; + let mockGl: WebGL2RenderingContext; + let renderContext: RenderContext; + let fillImage: HTMLImageElement; + let borderImage: HTMLImageElement; + + const createOptions = ( + overrides: Partial[1]> = {}, + ) => ({ + curvePoints: buildTerrainCurve( + [new Vector2(0, 0), new Vector2(10, 5), new Vector2(20, 0)], + 4, + ), + depth: 50, + position: Vector2.zero, + angle: 0, + border: { + image: borderImage, + tileSize: new Vector2(20, 20), + tint: Color.white, + }, + fill: { + image: fillImage, + tileSize: new Vector2(30, 30), + tint: Color.white, + }, + borderWidth: 10, + ...overrides, + }); + + beforeEach(() => { + canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 600; + + fillImage = { width: 32, height: 32 } as HTMLImageElement; + borderImage = { width: 32, height: 32 } as HTMLImageElement; + + mockGl = { + VERTEX_SHADER: 'VERTEX_SHADER', + FRAGMENT_SHADER: 'FRAGMENT_SHADER', + COMPILE_STATUS: 'COMPILE_STATUS', + LINK_STATUS: 'LINK_STATUS', + ACTIVE_UNIFORMS: 'ACTIVE_UNIFORMS', + TEXTURE0: 0, + TEXTURE_2D: 'TEXTURE_2D', + ARRAY_BUFFER: 'ARRAY_BUFFER', + STATIC_DRAW: 'STATIC_DRAW', + CLAMP_TO_EDGE: 'CLAMP_TO_EDGE', + REPEAT: 'REPEAT', + TEXTURE_WRAP_S: 'TEXTURE_WRAP_S', + TEXTURE_WRAP_T: 'TEXTURE_WRAP_T', + TEXTURE_MIN_FILTER: 'TEXTURE_MIN_FILTER', + TEXTURE_MAG_FILTER: 'TEXTURE_MAG_FILTER', + LINEAR: 'LINEAR', + RGBA: 'RGBA', + UNSIGNED_BYTE: 'UNSIGNED_BYTE', + + createBuffer: vi.fn().mockReturnValue({}), + bindBuffer: vi.fn(), + bufferData: vi.fn(), + + createTexture: vi.fn().mockImplementation(() => new WebGLTexture()), + bindTexture: vi.fn(), + texParameteri: vi.fn(), + texImage2D: vi.fn(), + + createShader: vi.fn().mockReturnValue({}), + shaderSource: vi.fn(), + compileShader: vi.fn(), + getShaderParameter: vi.fn().mockReturnValue(true), + getShaderInfoLog: vi.fn().mockReturnValue(''), + + createProgram: vi.fn().mockReturnValue({}), + attachShader: vi.fn(), + linkProgram: vi.fn(), + getProgramParameter: vi + .fn() + .mockImplementation((_program: unknown, pname: unknown) => + pname === 'ACTIVE_UNIFORMS' ? 8 : true, + ), + getProgramInfoLog: vi.fn().mockReturnValue(''), + + getActiveUniform: vi.fn().mockImplementation( + (_program, index: number) => + [ + { name: 'u_fillTexture', type: 0, size: 1 }, + { name: 'u_borderTexture', type: 0, size: 1 }, + { name: 'u_fillTileSize', type: 0, size: 1 }, + { name: 'u_borderTileSize', type: 0, size: 1 }, + { name: 'u_fillTint', type: 0, size: 1 }, + { name: 'u_borderTint', type: 0, size: 1 }, + { name: 'u_borderWidth', type: 0, size: 1 }, + { name: 'u_borderBlend', type: 0, size: 1 }, + ][index] ?? null, + ), + getUniformLocation: vi + .fn() + .mockImplementation(() => ({}) as WebGLUniformLocation), + useProgram: vi.fn(), + uniform1i: vi.fn(), + uniform1f: vi.fn(), + uniform2fv: vi.fn(), + uniform4fv: vi.fn(), + activeTexture: vi.fn(), + } as unknown as WebGL2RenderingContext; + + vi.spyOn(canvas, 'getContext').mockReturnValue(mockGl); + + const shaderCache = new ShaderCache([]) + .addShader(new ForgeShaderSource(terrainVertexShader)) + .addShader(new ForgeShaderSource(terrainFragmentShader)); + + renderContext = new RenderContext(shaderCache, new ImageCache(), canvas); + }); + + it('does not throw when building a mesh', () => { + expect(() => + createTerrainMesh(renderContext, createOptions()), + ).not.toThrow(); + }); + + it('builds 6 vertices (2 triangles) per pair of consecutive curve points', () => { + const curvePoints = buildTerrainCurve( + [new Vector2(0, 0), new Vector2(10, 0)], + 5, + ); + + const mesh = createTerrainMesh( + renderContext, + createOptions({ curvePoints }), + ); + + expect(mesh.vertexCount).toBe((curvePoints.length - 1) * 6); + }); + + it('binds the configured border width uniform', () => { + const mesh = createTerrainMesh( + renderContext, + createOptions({ + borderWidth: 42, + }), + ); + + mesh.material.bind(mockGl); + + const calls = (mockGl.uniform1f as Mock).mock.calls; + const borderWidthCall = calls.find(([, value]) => value === 42); + + expect(borderWidthCall).toBeDefined(); + }); + + it('defaults borderBlend when not provided', () => { + const mesh = createTerrainMesh(renderContext, createOptions()); + + mesh.material.bind(mockGl); + + const calls = (mockGl.uniform1f as Mock).mock.calls; + const borderBlendCall = calls.find(([, value]) => value === 12); + + expect(borderBlendCall).toBeDefined(); + }); + + it('uses an explicit borderBlend when provided', () => { + const mesh = createTerrainMesh( + renderContext, + createOptions({ borderBlend: 30 }), + ); + + mesh.material.bind(mockGl); + + const calls = (mockGl.uniform1f as Mock).mock.calls; + const borderBlendCall = calls.find(([, value]) => value === 30); + + expect(borderBlendCall).toBeDefined(); + }); + + it('wraps both textures with REPEAT rather than CLAMP_TO_EDGE', () => { + createTerrainMesh(renderContext, createOptions()); + + const wrapCalls = (mockGl.texParameteri as Mock).mock.calls.filter( + ([, pname]) => pname === 'TEXTURE_WRAP_S', + ); + + expect(wrapCalls.length).toBeGreaterThan(0); + + for (const call of wrapCalls) { + expect(call[2]).toBe('REPEAT'); + } + }); +}); diff --git a/src/rendering/terrain/create-terrain-mesh.ts b/src/rendering/terrain/create-terrain-mesh.ts new file mode 100644 index 00000000..9ef2310b --- /dev/null +++ b/src/rendering/terrain/create-terrain-mesh.ts @@ -0,0 +1,236 @@ +import { Vector2 } from '../../math/index.js'; +import { Color } from '../color.js'; +import { Geometry } from '../geometry/index.js'; +import { Material } from '../materials/index.js'; +import { RenderContext } from '../render-context.js'; +import { createTextureFromImage } from '../shaders/index.js'; +import type { TerrainCurvePoint } from './terrain-curve.js'; + +/** + * Texture and tiling options for one of a terrain mesh's two texture + * layers (see {@link CreateTerrainMeshOptions}). + */ +export interface TerrainMeshLayerOptions { + /** + * The (already-loaded) image to tile across this layer - the same + * convention `createImageSprite` uses, rather than loading a URL itself. + */ + image: HTMLImageElement; + + /** + * The world-space size of one tile of the texture: x tiles along the + * curve's arc length, y tiles into the ground. Smaller values repeat the + * texture more often over the same span of terrain. + */ + tileSize: Vector2; + + /** Tint multiplied against the sampled texture. */ + tint: Color; +} + +/** + * Fields of {@link CreateTerrainMeshOptions} with a sensible default; + * callers may omit these. + */ +export interface CreateTerrainMeshDefaultedOptions { + /** + * How wide (in world units) the blend between the border and fill layers + * is, centered on `borderWidth`. + */ + borderBlend: number; +} + +export interface CreateTerrainMeshOptions extends Partial { + /** + * The dense curve points to build the mesh from - see `buildTerrainCurve`. + * Pass the same points used to build the corresponding `TerrainShape` (by + * mapping each `TerrainCurvePoint.position` into the `Vector2[]` + * `TerrainShape` expects), so what's drawn always matches what's touched. + */ + curvePoints: readonly TerrainCurvePoint[]; + + /** + * How far (in world units) the mesh extends below its lowest curve + * point. Must match the `depth` passed to the corresponding + * `TerrainShape` for the mesh to align with the collision volume. + */ + depth: number; + + /** + * The world-space position of the mesh. Must match the corresponding + * `RigidBody`'s `position`. + */ + position: Vector2; + + /** + * The world-space rotation of the mesh, in radians. Must match the + * corresponding `RigidBody`'s `angle`. + */ + angle: number; + + /** The texture tiled across the terrain's surface, from the surface down to `borderWidth`. */ + border: TerrainMeshLayerOptions; + + /** The texture tiled across the terrain's interior, below `borderWidth`. */ + fill: TerrainMeshLayerOptions; + + /** + * How deep (in world units) the border layer extends below the surface + * before blending into the fill layer. + */ + borderWidth: number; +} + +const defaultCreateTerrainMeshOptions: CreateTerrainMeshDefaultedOptions = { + borderBlend: 12, +}; + +/** + * The static terrain mesh built by {@link createTerrainMesh}, ready to draw + * with `createTerrainRenderEcsSystem`. + */ +export interface TerrainMesh { + readonly geometry: Geometry; + readonly material: Material; + readonly vertexCount: number; +} + +interface TerrainMeshData { + positions: Float32Array; + distances: Float32Array; + depths: Float32Array; + vertexCount: number; +} + +function buildTerrainMeshData( + curvePoints: readonly TerrainCurvePoint[], + bottomY: number, + angle: number, + position: Vector2, +): TerrainMeshData { + const positions: number[] = []; + const distances: number[] = []; + const depths: number[] = []; + + const pushVertex = ( + localPoint: Vector2, + distance: number, + depth: number, + ): void => { + const world = localPoint.rotate(angle).add(position); + + // Y is negated here to match the sprite pipeline's world-to-render + // convention (see sprite-instance-data-segment.ts's + // bindSpriteInstanceData, which negates position.world.y the same way + // before it reaches the GPU). + positions.push(world.x, -world.y); + distances.push(distance); + depths.push(depth); + }; + + for (let i = 0; i < curvePoints.length - 1; i++) { + const left = curvePoints[i]; + const right = curvePoints[i + 1]; + + const bottomLeft = new Vector2(left.position.x, bottomY); + const bottomRight = new Vector2(right.position.x, bottomY); + const depthLeft = bottomY - left.position.y; + const depthRight = bottomY - right.position.y; + + pushVertex(left.position, left.distance, 0); + pushVertex(right.position, right.distance, 0); + pushVertex(bottomLeft, left.distance, depthLeft); + + pushVertex(right.position, right.distance, 0); + pushVertex(bottomRight, right.distance, depthRight); + pushVertex(bottomLeft, left.distance, depthLeft); + } + + return { + positions: new Float32Array(positions), + distances: new Float32Array(distances), + depths: new Float32Array(depths), + vertexCount: positions.length / 2, + }; +} + +function createTerrainGeometry( + gl: WebGL2RenderingContext, + meshData: TerrainMeshData, +): Geometry { + const geometry = new Geometry(); + + const positionBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.positions, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_position', { buffer: positionBuffer, size: 2 }); + + const distanceBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, distanceBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.distances, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_distance', { + buffer: distanceBuffer, + size: 1, + }); + + const depthBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, depthBuffer); + gl.bufferData(gl.ARRAY_BUFFER, meshData.depths, gl.STATIC_DRAW); + geometry.addAttribute(gl, 'a_depth', { buffer: depthBuffer, size: 1 }); + + return geometry; +} + +/** + * Builds a single triangulated mesh visualizing a `TerrainShape`'s + * heightmap, textured with a tileable "border" layer near the surface + * blending into a tileable "fill" layer below it (see + * `CreateTerrainMeshOptions`). Since the mesh has an arbitrary vertex count + * - not the fixed six-vertices-per-quad the sprite pipeline batches - draw + * it with `createTerrainRenderEcsSystem` rather than through + * `createRenderEcsSystem`. + * @param renderContext - The render context used to build the mesh's geometry and material. + * @param options - Sizing and texturing options for the mesh. + * @returns The built `TerrainMesh`. + */ +export function createTerrainMesh( + renderContext: RenderContext, + options: CreateTerrainMeshOptions, +): TerrainMesh { + const { curvePoints, depth, position, angle, border, fill, borderWidth } = + options; + const { borderBlend } = { ...defaultCreateTerrainMeshOptions, ...options }; + const { gl, shaderCache } = renderContext; + + const bottomY = + Math.max(...curvePoints.map((curvePoint) => curvePoint.position.y)) + depth; + + const meshData = buildTerrainMeshData(curvePoints, bottomY, angle, position); + const geometry = createTerrainGeometry(gl, meshData); + + const material = new Material( + shaderCache.getShader('terrain.vert'), + shaderCache.getShader('terrain.frag'), + gl, + ); + + material.setUniform( + 'u_fillTexture', + createTextureFromImage(gl, fill.image, false, true), + ); + material.setUniform( + 'u_borderTexture', + createTextureFromImage(gl, border.image, false, true), + ); + material.setVectorUniform('u_fillTileSize', fill.tileSize); + material.setVectorUniform('u_borderTileSize', border.tileSize); + material.setColorUniform('u_fillTint', fill.tint); + material.setColorUniform('u_borderTint', border.tint); + material.setUniform('u_borderWidth', borderWidth); + material.setUniform('u_borderBlend', borderBlend); + + return { geometry, material, vertexCount: meshData.vertexCount }; +} diff --git a/src/rendering/terrain/create-terrain-render-ecs-system.test.ts b/src/rendering/terrain/create-terrain-render-ecs-system.test.ts new file mode 100644 index 00000000..07aa12ed --- /dev/null +++ b/src/rendering/terrain/create-terrain-render-ecs-system.test.ts @@ -0,0 +1,140 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; +import { createTerrainRenderEcsSystem } from './create-terrain-render-ecs-system'; +import type { TerrainMesh } from './create-terrain-mesh'; +import { EcsWorld } from '../../ecs/index.js'; +import { PositionEcsComponent, positionId } from '../../common/index.js'; +import { Vector2 } from '../../math/index.js'; +import { CameraEcsComponent, cameraId } from '../components/index.js'; +import { ImageCache } from '../../asset-loading/index.js'; +import { RenderContext } from '../render-context.js'; +import { ShaderCache } from '../shaders/index.js'; +import { Geometry } from '../geometry/index.js'; +import { Material } from '../materials/index.js'; + +describe('createTerrainRenderEcsSystem', () => { + let world: EcsWorld; + let canvas: HTMLCanvasElement; + let mockGl: WebGL2RenderingContext; + let renderContext: RenderContext; + let terrainMesh: TerrainMesh; + let material: Material; + let geometry: Geometry; + + const createCameraComponent = ( + overrides: Partial = {}, + ): CameraEcsComponent => ({ + zoom: 1, + zoomSensitivity: 0.1, + panSensitivity: 1, + minZoom: 0.0001, + maxZoom: 10000, + isStatic: true, + cullingMask: 0xffffffff, + layer: 0, + ...overrides, + }); + + beforeEach(() => { + canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 600; + + mockGl = { + FRAMEBUFFER: 'FRAMEBUFFER', + COLOR_BUFFER_BIT: 'COLOR_BUFFER_BIT', + TRIANGLES: 'TRIANGLES', + bindFramebuffer: vi.fn(), + viewport: vi.fn(), + clearColor: vi.fn(), + clear: vi.fn(), + drawArrays: vi.fn(), + createBuffer: vi.fn().mockReturnValue({}), + } as unknown as WebGL2RenderingContext; + + vi.spyOn(canvas, 'getContext').mockReturnValue(mockGl); + + renderContext = new RenderContext( + new ShaderCache([]), + new ImageCache(), + canvas, + ); + + material = { + bind: vi.fn(), + setUniform: vi.fn(), + program: {} as WebGLProgram, + } as unknown as Material; + + geometry = { + bind: vi.fn(), + } as unknown as Geometry; + + terrainMesh = { geometry, material, vertexCount: 42 }; + + world = new EcsWorld(); + world.addSystem(createTerrainRenderEcsSystem(renderContext, terrainMesh)); + }); + + const addCamera = (overrides: Partial = {}): void => { + const entity = world.createEntity(); + const positionComponent: PositionEcsComponent = { + local: Vector2.zero, + world: new Vector2(10, 20), + }; + + world.addComponent(entity, cameraId, createCameraComponent(overrides)); + world.addComponent(entity, positionId, positionComponent); + }; + + it('does not draw anything when there is no camera entity', () => { + world.update(); + + expect(mockGl.drawArrays).not.toHaveBeenCalled(); + }); + + it('clears and draws the terrain mesh once per camera', () => { + addCamera(); + + world.update(); + + expect(mockGl.clear).toHaveBeenCalledWith('COLOR_BUFFER_BIT'); + expect(material.bind).toHaveBeenCalledWith(mockGl); + expect(geometry.bind).toHaveBeenCalledWith(mockGl, material.program); + expect(mockGl.drawArrays).toHaveBeenCalledWith('TRIANGLES', 0, 42); + }); + + it('sets the projection matrix uniform before binding the material', () => { + addCamera(); + + world.update(); + + expect(material.setUniform).toHaveBeenCalledWith( + 'u_projection', + expect.anything(), + ); + + const setUniformOrder = (material.setUniform as Mock).mock + .invocationCallOrder[0]; + const bindOrder = (material.bind as Mock).mock.invocationCallOrder[0]; + + expect(setUniformOrder).toBeLessThan(bindOrder); + }); + + it('binds the canvas framebuffer when the camera has no render target', () => { + addCamera(); + + world.update(); + + expect(mockGl.bindFramebuffer).toHaveBeenCalledWith('FRAMEBUFFER', null); + }); + + it('draws once per camera when multiple cameras are present', () => { + addCamera(); + addCamera(); + + world.update(); + + expect(mockGl.drawArrays).toHaveBeenCalledTimes(2); + }); +}); diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts b/src/rendering/terrain/create-terrain-render-ecs-system.ts similarity index 63% rename from documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts rename to src/rendering/terrain/create-terrain-render-ecs-system.ts index 2671fa15..9a20501d 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_terrain-render.system.ts +++ b/src/rendering/terrain/create-terrain-render-ecs-system.ts @@ -1,15 +1,9 @@ -import { EcsSystem } from '@forge-game-engine/forge/ecs'; -import { - PositionEcsComponent, - positionId, -} from '@forge-game-engine/forge/common'; -import { - CameraEcsComponent, - cameraId, - createProjectionMatrix, - RenderContext, -} from '@forge-game-engine/forge/rendering'; -import type { TerrainMesh } from './_create-terrain'; +import { EcsSystem } from '../../ecs/index.js'; +import { PositionEcsComponent, positionId } from '../../common/index.js'; +import { CameraEcsComponent, cameraId } from '../components/index.js'; +import { RenderContext } from '../render-context.js'; +import { createProjectionMatrix } from '../shaders/index.js'; +import type { TerrainMesh } from './create-terrain-mesh.js'; /** * Creates an ECS system that draws `terrainMesh` directly - a single, @@ -17,16 +11,15 @@ import type { TerrainMesh } from './_create-terrain'; * - rather than going through the sprite pipeline `createRenderEcsSystem` * batches (which only knows how to draw quads). Register it *before* * `createRenderEcsSystem`, with `renderContext.clearStrategy` set to - * `CLEAR_STRATEGY.none` (see `_create-game.ts`), so this system's own clear - * is the only one each frame - `createRenderEcsSystem`'s would otherwise - * wipe the terrain right before drawing the sprites on top of it. + * `CLEAR_STRATEGY.none`, so this system's own clear is the only one each + * frame - `createRenderEcsSystem`'s would otherwise wipe the terrain right + * before drawing sprites on top of it. * - * Assumes a single camera rendering straight to the canvas, which is all - * this demo needs; a multi-camera setup would need to track which - * destinations have already been cleared this frame, the way - * `createRenderEcsSystem` does internally. + * Assumes a single camera rendering straight to the canvas; a multi-camera + * setup would need to track which destinations have already been cleared + * this frame, the way `createRenderEcsSystem` does internally. * @param renderContext - The render context to draw into. - * @param terrainMesh - The terrain mesh built by `createTerrain`. + * @param terrainMesh - The terrain mesh built by `createTerrainMesh`. */ export const createTerrainRenderEcsSystem = ( renderContext: RenderContext, diff --git a/src/rendering/terrain/index.ts b/src/rendering/terrain/index.ts new file mode 100644 index 00000000..b3d313a0 --- /dev/null +++ b/src/rendering/terrain/index.ts @@ -0,0 +1,4 @@ +export * from './create-terrain-mesh.js'; +export * from './create-terrain-render-ecs-system.js'; +export * from './terrain-curve.js'; +export * from './shaders/index.js'; diff --git a/src/rendering/terrain/shaders/index.ts b/src/rendering/terrain/shaders/index.ts new file mode 100644 index 00000000..1eee6bbe --- /dev/null +++ b/src/rendering/terrain/shaders/index.ts @@ -0,0 +1,5 @@ +import terrainVertexShaderSource from './terrain.vert.glsl?raw'; +import terrainFragmentShaderSource from './terrain.frag.glsl?raw'; + +export const terrainVertexShader = terrainVertexShaderSource; +export const terrainFragmentShader = terrainFragmentShaderSource; diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl b/src/rendering/terrain/shaders/terrain.frag.glsl similarity index 95% rename from documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl rename to src/rendering/terrain/shaders/terrain.frag.glsl index 43a2f796..5ffa98ff 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_terrain.frag.glsl +++ b/src/rendering/terrain/shaders/terrain.frag.glsl @@ -1,6 +1,6 @@ #version 300 es -#pragma forge name(rollingBallTerrain.frag) +#pragma forge name(terrain.frag) precision mediump float; diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl b/src/rendering/terrain/shaders/terrain.vert.glsl similarity index 87% rename from documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl rename to src/rendering/terrain/shaders/terrain.vert.glsl index 68bfc4b1..69e037db 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_terrain.vert.glsl +++ b/src/rendering/terrain/shaders/terrain.vert.glsl @@ -1,6 +1,6 @@ #version 300 es -#pragma forge name(rollingBallTerrain.vert) +#pragma forge name(terrain.vert) in vec2 a_position; in float a_distance; diff --git a/src/rendering/terrain/terrain-curve.test.ts b/src/rendering/terrain/terrain-curve.test.ts new file mode 100644 index 00000000..c30a20d1 --- /dev/null +++ b/src/rendering/terrain/terrain-curve.test.ts @@ -0,0 +1,114 @@ +import { describe, expect, it } from 'vitest'; +import { buildTerrainCurve, heightAtLocalX } from './terrain-curve.js'; +import { Vector2 } from '../../math/index.js'; + +describe('buildTerrainCurve', () => { + it('should throw an error if fewer than 2 control points are provided', () => { + expect(() => buildTerrainCurve([new Vector2(0, 0)], 4)).toThrow(); + }); + + it('should start at the first control point', () => { + const curve = buildTerrainCurve( + [new Vector2(0, 5), new Vector2(10, 5), new Vector2(20, 5)], + 4, + ); + + expect(curve[0].position.x).toBeCloseTo(0); + expect(curve[0].position.y).toBeCloseTo(5); + expect(curve[0].distance).toBeCloseTo(0); + }); + + it('should pass exactly through every control point', () => { + const controlPoints = [ + new Vector2(0, 0), + new Vector2(10, 40), + new Vector2(20, -20), + new Vector2(30, 10), + ]; + const samplesPerSegment = 6; + + const curve = buildTerrainCurve(controlPoints, samplesPerSegment); + + for (let i = 0; i < controlPoints.length; i++) { + const sampleIndex = i * samplesPerSegment; + + expect(curve[sampleIndex].position.x).toBeCloseTo(controlPoints[i].x); + expect(curve[sampleIndex].position.y).toBeCloseTo(controlPoints[i].y); + } + }); + + it('should produce a straight line for evenly-spaced collinear control points', () => { + const curve = buildTerrainCurve( + [ + new Vector2(0, 0), + new Vector2(10, 10), + new Vector2(20, 20), + new Vector2(30, 30), + ], + 5, + ); + + for (const point of curve) { + expect(point.position.y).toBeCloseTo(point.position.x); + } + }); + + it('should produce monotonically increasing x and distance', () => { + const curve = buildTerrainCurve( + [ + new Vector2(0, 0), + new Vector2(10, 50), + new Vector2(20, -30), + new Vector2(30, 0), + ], + 8, + ); + + for (let i = 1; i < curve.length; i++) { + expect(curve[i].position.x).toBeGreaterThan(curve[i - 1].position.x); + expect(curve[i].distance).toBeGreaterThan(curve[i - 1].distance); + } + }); +}); + +describe('heightAtLocalX', () => { + it('should throw an error if given an empty curve', () => { + expect(() => heightAtLocalX([], 0)).toThrow(); + }); + + it('should return the exact height at a sampled point', () => { + const curve = buildTerrainCurve( + [new Vector2(0, 0), new Vector2(10, 0), new Vector2(20, 0)], + 4, + ); + + expect(heightAtLocalX(curve, 10)).toBeCloseTo(0); + }); + + it('should linearly interpolate between two bracketing points', () => { + const curve = [ + { position: new Vector2(0, 0), distance: 0 }, + { position: new Vector2(10, 20), distance: 10 }, + ]; + + expect(heightAtLocalX(curve, 5)).toBeCloseTo(10); + }); + + it('should clamp to the first point before the start of the curve', () => { + const curve = [ + { position: new Vector2(0, 7), distance: 0 }, + { position: new Vector2(10, 20), distance: 10 }, + ]; + + expect(heightAtLocalX(curve, -100)).toBeCloseTo(7); + }); + + it('should clamp to the last point past the end of the curve', () => { + const curve = [ + { position: new Vector2(0, 7), distance: 0 }, + { position: new Vector2(10, 20), distance: 10 }, + ]; + + expect(heightAtLocalX(curve, 100)).toBeCloseTo(20); + }); +}); diff --git a/documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts b/src/rendering/terrain/terrain-curve.ts similarity index 77% rename from documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts rename to src/rendering/terrain/terrain-curve.ts index 53920c12..185bdc47 100644 --- a/documentation-site/src/pages/demos/rolling-ball/_terrain-curve.ts +++ b/src/rendering/terrain/terrain-curve.ts @@ -1,11 +1,17 @@ -import { Vector2 } from '@forge-game-engine/forge/math'; +import { Vector2 } from '../../math/index.js'; -/** A point on a curve built by {@link buildTerrainCurve}. */ +/** + * A point on a curve built by {@link buildTerrainCurve}. + */ export interface TerrainCurvePoint { - /** The point's local-space position. */ + /** + * The point's local-space position. + */ position: Vector2; - /** The cumulative arc length from the start of the curve to this point. */ + /** + * The cumulative arc length from the start of the curve to this point. + */ distance: number; } @@ -35,15 +41,17 @@ function sampleCubicBezier( * via the standard `Bn = Pn +/- (Pn+1 - Pn-1) / 6` tangent construction) so * the curve passes exactly through every control point with a continuous * tangent, rather than a straight-line polyline between them. Densely - * sampling that curve is what turns a handful of sparse, randomly-placed - * control points into the long, natural-looking rolling terrain silhouette, - * both for {@link TerrainShape}'s collision points and for the render mesh. + * sampling that curve turns a handful of sparse control points into a long, + * natural-looking silhouette suitable for both a `TerrainShape`'s collision + * points and a matching render mesh (see `createTerrainMesh`) - the same + * points can drive both, so what's drawn always matches what's touched. * @param controlPoints - The sparse anchor points the curve passes through, * ordered by strictly increasing x. Must contain at least 2 points. * @param samplesPerSegment - How many points to sample along each segment * between two consecutive control points. * @returns A dense polyline approximating the smooth curve, with each * point's cumulative arc length from the start. + * @throws An error if fewer than 2 control points are provided. */ export function buildTerrainCurve( controlPoints: readonly Vector2[], @@ -85,18 +93,23 @@ export function buildTerrainCurve( } /** - * Finds the curve's surface height (local-space y) at a given local-space - * x, linearly interpolating between the two bracketing sampled points. + * Finds a curve's surface height (local-space y) at a given local-space x, + * linearly interpolating between the two bracketing sampled points. * `curvePoints` must be ordered by strictly increasing x (as returned by * {@link buildTerrainCurve}). - * @param curvePoints - The dense curve to search. + * @param curvePoints - The dense curve to search. Must contain at least 1 point. * @param localX - The local-space x to find the height at. * @returns The interpolated local-space y at `localX`. + * @throws An error if `curvePoints` is empty. */ export function heightAtLocalX( curvePoints: readonly TerrainCurvePoint[], localX: number, ): number { + if (curvePoints.length === 0) { + throw new Error('heightAtLocalX requires at least 1 curve point.'); + } + const first = curvePoints[0]; const last = curvePoints[curvePoints.length - 1]; diff --git a/src/rendering/utilities/create-shader-cache.ts b/src/rendering/utilities/create-shader-cache.ts index 5102e4ad..041bc4d4 100644 --- a/src/rendering/utilities/create-shader-cache.ts +++ b/src/rendering/utilities/create-shader-cache.ts @@ -27,6 +27,10 @@ import { spriteVertexShader, toneMappingFragmentShader, } from '../shaders/index.js'; +import { + terrainFragmentShader, + terrainVertexShader, +} from '../terrain/shaders/index.js'; /** * Creates and initializes a ShaderCache instance with predefined shader includes and shaders. @@ -71,7 +75,9 @@ export function createShaderCache(): ShaderCache { .addShader(new ForgeShaderSource(crossFadeFragmentShader)) .addShader(new ForgeShaderSource(bloomThresholdFragmentShader)) .addShader(new ForgeShaderSource(bloomCompositeFragmentShader)) - .addShader(new ForgeShaderSource(toneMappingFragmentShader)); + .addShader(new ForgeShaderSource(toneMappingFragmentShader)) + .addShader(new ForgeShaderSource(terrainVertexShader)) + .addShader(new ForgeShaderSource(terrainFragmentShader)); return shaderCache; } From e937c2eba1ed252405920de3f07be6ae0eb884b6 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 23 Jul 2026 07:40:19 +0000 Subject: [PATCH 7/7] fix(rendering): rebase terrain onto dev and respect camera clearColor Rebase onto the latest dev, which added a required clearColor field to CameraEcsComponent (breaking check-types and, in turn, the docs site's API generation/broken-link check for this PR). Update the terrain render system's mock camera and its own clear call to use the new field instead of a hardcoded black, matching the convention the sprite render system already follows. --- .../terrain/create-terrain-render-ecs-system.test.ts | 2 ++ src/rendering/terrain/create-terrain-render-ecs-system.ts | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/rendering/terrain/create-terrain-render-ecs-system.test.ts b/src/rendering/terrain/create-terrain-render-ecs-system.test.ts index 07aa12ed..7b5ab2f3 100644 --- a/src/rendering/terrain/create-terrain-render-ecs-system.test.ts +++ b/src/rendering/terrain/create-terrain-render-ecs-system.test.ts @@ -11,6 +11,7 @@ import { RenderContext } from '../render-context.js'; import { ShaderCache } from '../shaders/index.js'; import { Geometry } from '../geometry/index.js'; import { Material } from '../materials/index.js'; +import { Color } from '../color.js'; describe('createTerrainRenderEcsSystem', () => { let world: EcsWorld; @@ -32,6 +33,7 @@ describe('createTerrainRenderEcsSystem', () => { isStatic: true, cullingMask: 0xffffffff, layer: 0, + clearColor: Color.transparent, ...overrides, }); diff --git a/src/rendering/terrain/create-terrain-render-ecs-system.ts b/src/rendering/terrain/create-terrain-render-ecs-system.ts index 9a20501d..79fd8348 100644 --- a/src/rendering/terrain/create-terrain-render-ecs-system.ts +++ b/src/rendering/terrain/create-terrain-render-ecs-system.ts @@ -32,7 +32,10 @@ export const createTerrainRenderEcsSystem = ( const { geometry, material, vertexCount } = terrainMesh; renderContext.bindRenderTarget(cameraComponent.renderTarget ?? null); - gl.clearColor(0, 0, 0, 1); + + const { clearColor } = cameraComponent; + + gl.clearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a); gl.clear(gl.COLOR_BUFFER_BIT); const projectionMatrix = createProjectionMatrix(