<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Stages on GS_Play Gameplay Framework</title><link>https://gsplay.genomestudios.ca/tags/stages/</link><description>Recent content in Stages on GS_Play Gameplay Framework</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://gsplay.genomestudios.ca/tags/stages/index.xml" rel="self" type="application/rss+xml"/><item><title>Body Stage Variants</title><link>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/body/</guid><description>&lt;p&gt;The Body stage owns &lt;code&gt;state.position&lt;/code&gt; for each tick. Five variants ship with GS_PhantomCam — each with its own kinematic model (orbit math, spring damping, path interpolation, band response, etc.). All variants share a target-routing front-end via the &lt;code&gt;CamTargetMode&lt;/code&gt; enum documented in &lt;a href="../#target-routing"&gt;Stage Pipeline&lt;/a&gt;. Per-variant state inheritance support is summarized below; see &lt;a href="../../../cam_core/state_inheritance/"&gt;State Inheritance&lt;/a&gt; for the full protocol.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://gsplay.genomestudios.ca/images/phantomcam/CamBodyStage.png" alt="Body stage slot on the Phantom Camera component"&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id="contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#default-follow-body"&gt;DefaultFollowBody&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#orbit-body"&gt;OrbitBody&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#dynamic-orbit-body"&gt;DynamicOrbitBody&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#leading-follow-body"&gt;LeadingFollowBody&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#track-body"&gt;TrackBody&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cross-variant-summary"&gt;Cross-Variant Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See Also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="default-follow-body"&gt;DefaultFollowBody&lt;/h2&gt;
&lt;p&gt;Simple follow camera. Tracks a target at an authored offset, position-space spring damped.&lt;/p&gt;</description></item><item><title>PhantomCam Configurations</title><link>https://gsplay.genomestudios.ca/docs/learn/recipes/phantomcam/phantomcam_configurations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/learn/recipes/phantomcam/phantomcam_configurations/</guid><description>&lt;p&gt;A Phantom Camera&amp;rsquo;s behavior is the composition of one &lt;strong&gt;Body&lt;/strong&gt; stage, one &lt;strong&gt;Aim&lt;/strong&gt; stage, and zero-or-more &lt;strong&gt;Additive&lt;/strong&gt; stages. The same &lt;code&gt;GS_PhantomCameraComponent&lt;/code&gt; becomes a follow cam, an orbital cam, a tracking dolly, or a third-person shoulder cam depending on what is slotted from the editor&amp;rsquo;s type-picker.&lt;/p&gt;
&lt;p&gt;Each recipe below names a Body pick, an Aim pick, and any Additive picks, plus the key field values that produce the target behavior. For the concept, the per-tick pipeline, and per-stage field references, see &lt;a href="../../../../the_basics/phantomcam/phantom_cameras/"&gt;The Basics: Phantom Cameras&lt;/a&gt; and the &lt;a href="../../../../framework/phantomcam/phantom_cameras/stages/"&gt;Stage Pipeline API&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Stage Pipeline</title><link>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/</guid><description>&lt;p&gt;Every &lt;a href="../"&gt;Phantom Camera&lt;/a&gt; runs the same fixed pipeline per tick:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Body → Aim → Reposition additives → Noise additives → Finalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Body and Aim stages produce the cam&amp;rsquo;s smoothed ideal pose; Reposition additives correct it for collision / tug volumes; Noise additives perturb it for shake and impulse; Finalize commits the result to the entity transform and the engine camera component.&lt;/p&gt;
&lt;p&gt;Stages are &lt;strong&gt;not&lt;/strong&gt; &lt;code&gt;AZ::Component&lt;/code&gt;s. They are reflected polymorphic types — derived from &lt;code&gt;IBodyStage&lt;/code&gt;, &lt;code&gt;IAimStage&lt;/code&gt;, or &lt;code&gt;IAdditiveStage&lt;/code&gt;. The editor&amp;rsquo;s type-picker enumerates registered derivations from the &lt;code&gt;SerializeContext&lt;/code&gt; class hierarchy, so other gems can extend the catalog cleanly without touching the base component.&lt;/p&gt;</description></item><item><title>Aim Stage Variants</title><link>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/aim/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/aim/</guid><description>&lt;p&gt;The Aim stage owns &lt;code&gt;state.rotation&lt;/code&gt; for each tick. Two variants ship with GS_PhantomCam; other gems (notably gs_performer) register additional variants through the same &lt;code&gt;IAimStage&lt;/code&gt; interface. All variants share a target-routing front-end via the &lt;code&gt;CamTargetMode&lt;/code&gt; enum documented in &lt;a href="../#target-routing"&gt;Stage Pipeline&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aim &lt;strong&gt;does not implement state inheritance&lt;/strong&gt; by design — inheritance is body-only. The destination cam&amp;rsquo;s aim runs fresh on the inherited body pose.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://gsplay.genomestudios.ca/images/phantomcam/CamAimStage.png" alt="Aim stage slot on the Phantom Camera component"&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id="contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#aim-origin-convention"&gt;Aim-Origin Convention&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#decoupled-ideal-rotation"&gt;Decoupled Ideal Rotation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#default-look-at-aim"&gt;DefaultLookAtAim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#clamped-look-aim"&gt;ClampedLookAim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#extension-surface"&gt;Extension Surface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See Also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="aim-origin-convention"&gt;Aim-Origin Convention&lt;/h2&gt;
&lt;p&gt;A subtle but important rule: every Aim variant uses &lt;code&gt;ctx.camInitialTM.GetTranslation()&lt;/code&gt; as the aim origin — the cam&amp;rsquo;s current world position at the start of the tick — &lt;strong&gt;not&lt;/strong&gt; &lt;code&gt;state.position&lt;/code&gt; (which the Body just wrote this tick).&lt;/p&gt;</description></item><item><title>Stage Composition</title><link>https://gsplay.genomestudios.ca/docs/the_basics/phantomcam/phantom_cameras/stages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/the_basics/phantomcam/phantom_cameras/stages/</guid><description>&lt;p&gt;A Phantom Camera&amp;rsquo;s behavior is the composition of one &lt;strong&gt;Body&lt;/strong&gt; stage, one &lt;strong&gt;Aim&lt;/strong&gt; stage, and zero-or-more &lt;strong&gt;Additive&lt;/strong&gt; stages. The same &lt;code&gt;GS_PhantomCameraComponent&lt;/code&gt; becomes a follow cam, an orbital cam, a tracking dolly, or a third-person shoulder cam depending on what is slotted from the editor&amp;rsquo;s type-picker.&lt;/p&gt;
&lt;p&gt;This page is a concept primer for the composition model. For step-by-step recipes (third-person shoulder cam, orbital player cam, static showcase, first-person clamped look, tracking dolly, group-framing cam) see the recipes collection.&lt;/p&gt;</description></item><item><title>Additive Stage Variants</title><link>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/additives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gsplay.genomestudios.ca/docs/framework/phantomcam/phantom_cameras/stages/additives/</guid><description>&lt;p&gt;Additive stages stack — multiple may run per cam. Each declares its phase via &lt;code&gt;GetStage()&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Reposition&lt;/code&gt;&lt;/strong&gt; — runs BEFORE noise. Corrections (collision, occlusion, tug reposition). State after this phase is captured as &lt;code&gt;m_stablePose&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Noise&lt;/code&gt;&lt;/strong&gt; — runs AFTER reposition. Perturbations (camera shake, drift, impulses). State after this phase is captured as &lt;code&gt;m_finalPose&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href="../../"&gt;Phantom Camera component&lt;/a&gt; partitions additives into &lt;code&gt;m_repositionStages&lt;/code&gt; and &lt;code&gt;m_noiseStages&lt;/code&gt; once at slot-assign time so per-tick code does not re-check the enum each frame.&lt;/p&gt;</description></item></channel></rss>