ludic/kw-disable.html
2026-09-17 22:10:03 +00:00

42 lines
No EOL
2.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>disable — Ludic</title>
<meta name="description" content="Deactivate a property, model, or handler without destroying its data.">
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="docs.css">
</head>
<body>
<header class="nav"><div class="wrap nav-in"><a class="brand" href="index.html"><span class="logo">L</span> Ludic</a><button class="nav-toggle" aria-label="Toggle menu" aria-expanded="false">☰</button><nav class="nav-links"><a href="index.html">Home</a><a href="api.html">API Reference</a><a class="nav-cta" href="https://git.workshopsoft.io/workshopsoft/ludic">Source ↗</a></nav></div></header>
<main class="wrap item">
<div class="crumbs"><a href="api.html">API Reference</a> <span>›</span> <a href="api.html#ecs">Entities &amp; the ECS</a> <span>›</span> <span class="here">disable</span></div>
<div class="item-head">
<span class="kind-badge kind-keyword">keyword</span>
<h1 id="top">disable</h1>
</div>
<code class="sig">disable Prop on entity</code>
<div class="desc"><p><code>disable</code> switches something off while keeping it intact, so a later <code>enable</code> brings it back untouched — a reversible pause rather than a destruction. <code>disable Prop on instance</code> clears that instance's has-flag for the property, so queries stop matching it, but the field values stay in storage. It has three scopes: one property on one instance (<code>disable Shield on self()</code>), a whole model (<code>disable Enemy</code> drops all its instances out of every query), and a handler (<code>disable AiThink</code> stops it running each phase until re-enabled). Each toggle is a single flag flip, so nothing is copied or freed. Disabling a property fires any <code>@OnDisable(Prop)</code> hook. Contrast with <code>detach</code>, which structurally removes a property (a later <code>attach</code> re-seeds fresh fields).</p></div>
<div class="examples"><h2>Example</h2><pre data-lang="ludic">program Stealth {
property Position { column: int = 0, row: int = 0 }
property Velocity { delta_x: int = 0, delta_y: int = 0 }
model Enemy { Position, Velocity }
handler Boot phase Start {
spawn Grunt { Position { column: 4, row: 4 }; Velocity { delta_x: 1 } }
}
handler FreezeEnemies phase Update {
if Input.key() == 'p' {
for (velocity) in query [Velocity, {Enemy}] { disable Velocity on self() }
}
}
}</pre></div>
<a class="back" href="api.html">← All symbols</a>
</main>
<script src="ludic-highlight.js"></script>
<script>Ludic.highlightAll(); Ludic.installCards(); Ludic.flashTarget();</script>
</body></html>