ludic/fn-world_set.html
2026-09-17 22:10:03 +00:00

43 lines
No EOL
3.3 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>world_set — Ludic</title>
<meta name="description" content="Write one field of a model instance by numeric id (reflection ABI).">
<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">world_set</span></div>
<div class="item-head">
<span class="kind-badge kind-builtin">function</span>
<h1 id="top">world_set</h1>
</div>
<code class="sig">world_set(target, property, field, value)</code>
<div class="desc"><p><code>world_set</code> writes a single field of a model instance by numeric id — the id-based counterpart to an ordinary <code>position.column = …</code> assignment, used when the property is not known at compile time. You give the target instance, the property id (from <code>world_prop_id</code>), the field id (from <code>world_field_id</code>), and the new value; the value is stored just as a direct assignment would. It returns nothing. Together with <code>world_get</code>, <code>world_has</code>, and the resolver functions, it lets a mod or tool mutate any field on any instance generically, which is how the reflection ABI mirrors the compiled <code>query</code>/field access at runtime.</p></div>
<div class="params"><h2>Parameters</h2><div class="param" id="param-target"><code class="pname">target</code><span class="pdesc">the model instance to write to, an <code>entity</code> handle</span></div><div class="param" id="param-property"><code class="pname">property</code><span class="pdesc">the property id, from <code>world_prop_id</code></span></div><div class="param" id="param-field"><code class="pname">field</code><span class="pdesc">the field id within that property, from <code>world_field_id</code></span></div><div class="param" id="param-value"><code class="pname">value</code><span class="pdesc">the new integer value to store</span></div></div>
<div class="examples"><h2>Example</h2><pre data-lang="ludic">program WriteField {
property Position { column: int = 0, row: int = 0 }
model Player { Position }
handler Boot phase Start {
spawn Hero { Position { column: 0, row: 0 } }
}
handler Nudge phase Update {
let position_property = world_prop_id("Position")
let column_field = world_field_id(position_property, "column")
for (position) in query [Position, {Player}] {
world_set(self(), position_property, column_field, position.column + 1)
}
}
}</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>