diff --git a/src/lib/components/Canvas.svelte b/src/lib/components/Canvas.svelte
index ef93737..9717208 100644
--- a/src/lib/components/Canvas.svelte
+++ b/src/lib/components/Canvas.svelte
@@ -85,6 +85,9 @@
/** @param {Function} fn */
const run = (fn) => fn();
+ /**
+ * @description is required to rerender the scene if something has changed
+ */
const invalidate = () => {
if (frame) return;
diff --git a/src/lib/components/controls/PointerLockControls.svelte b/src/lib/components/controls/PointerLockControls.svelte
new file mode 100644
index 0000000..14931bc
--- /dev/null
+++ b/src/lib/components/controls/PointerLockControls.svelte
@@ -0,0 +1,142 @@
+
diff --git a/src/lib/index.js b/src/lib/index.js
index a4e3a76..95558fb 100644
--- a/src/lib/index.js
+++ b/src/lib/index.js
@@ -14,6 +14,7 @@ export { default as OrthographicCamera } from './components/cameras/Orthographic
// controls
export { default as OrbitControls } from './components/controls/OrbitControls.svelte';
+export { default as PointerLockControls } from './components/controls/PointerLockControls.svelte';
// lights
export { default as AmbientLight } from './components/lights/AmbientLight.svelte';
diff --git a/src/routes/docs/_content/02-reference/index.svelte.md b/src/routes/docs/_content/02-reference/index.svelte.md
index 00f95ea..ae60513 100644
--- a/src/routes/docs/_content/02-reference/index.svelte.md
+++ b/src/routes/docs/_content/02-reference/index.svelte.md
@@ -161,6 +161,10 @@ TODO
TODO
+###
+
+TODO
+
## Helpers
###
diff --git a/src/routes/examples/_content/03-first-person-camera/index.svelte b/src/routes/examples/_content/03-first-person-camera/index.svelte
new file mode 100644
index 0000000..24eecd9
--- /dev/null
+++ b/src/routes/examples/_content/03-first-person-camera/index.svelte
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/examples/_content/03-first-person-camera/meta.json b/src/routes/examples/_content/03-first-person-camera/meta.json
new file mode 100644
index 0000000..a7a0f66
--- /dev/null
+++ b/src/routes/examples/_content/03-first-person-camera/meta.json
@@ -0,0 +1,3 @@
+{
+ "title": "First Person Controls"
+}
diff --git a/static/example-thumbnails/first-person-camera.jpg b/static/example-thumbnails/first-person-camera.jpg
new file mode 100644
index 0000000..9cd78bc
Binary files /dev/null and b/static/example-thumbnails/first-person-camera.jpg differ