<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wowcube.com/index.php?action=history&amp;feed=atom&amp;title=SDK_6.3%2FC%2B%2B%2FApplication</id>
	<title>SDK 6.3/C++/Application - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wowcube.com/index.php?action=history&amp;feed=atom&amp;title=SDK_6.3%2FC%2B%2B%2FApplication"/>
	<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/C%2B%2B/Application&amp;action=history"/>
	<updated>2026-07-26T22:45:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://wiki.wowcube.com/index.php?title=SDK_6.3/C%2B%2B/Application&amp;diff=16938&amp;oldid=prev</id>
		<title>WowBot: C++ (WASM) and Rust API reference for SDK 6.3 (WowBot)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/C%2B%2B/Application&amp;diff=16938&amp;oldid=prev"/>
		<updated>2026-07-26T09:14:53Z</updated>

		<summary type="html">&lt;p&gt;C++ (WASM) and Rust API reference for SDK 6.3 (WowBot)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{notice|'''Official WOWCube SDK documentation.''' SDK 6.3, C++ (WebAssembly) API. Signatures are extracted from the canonical SDK headers shipped with the WOWCube Development Kit; the headers remain authoritative.}}&lt;br /&gt;
&lt;br /&gt;
{{SDK 6.3 nav}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''← [[SDK 6.3]] · C++ / Application framework''&lt;br /&gt;
&lt;br /&gt;
Every C++ cubeapp subclasses &amp;lt;code&amp;gt;Cubios::Application&amp;lt;/code&amp;gt; and registers it in the &amp;lt;code&amp;gt;OnInit()&amp;lt;/code&amp;gt; entry point via &amp;lt;code&amp;gt;AppManager::SetApplication()&amp;lt;/code&amp;gt;. The same source runs on all eight modules; use &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;IsMasterModule()&amp;lt;/code&amp;gt; to branch per module.&lt;br /&gt;
&lt;br /&gt;
== Entry point ==&lt;br /&gt;
&lt;br /&gt;
 // Application initialization callback. Called once when the cubeapp starts&lt;br /&gt;
 void OnInit(Cubios::AppManager&amp;amp; appMgr)&lt;br /&gt;
 {&lt;br /&gt;
     appMgr.SetApplication(new MyGame);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== class Cubios::Application ==&lt;br /&gt;
&lt;br /&gt;
Callbacks to override:&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Message(uint32_t type, uint8_t *pkt, u32_t size) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called when the module receives an inter-module network packet.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_ExternalMessage(uint8_t *pkt, u32_t size) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called when the module receives external data over BLE from the companion app.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_PhysicsTick(const std::array&amp;lt;Screen, 3&amp;gt; &amp;amp;screens) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: The &amp;quot;physics&amp;quot; callback; called recurrently with at least 33 ms resolution (or less, depending on load).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Tick(uint32_t time, uint32_t dt) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called every tick of the cubeapp application loop with current time and delta.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Render(std::array&amp;lt;Screen, 3&amp;gt; &amp;amp;screens) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called every time the device is about to render visuals; iterate the three &amp;lt;code&amp;gt;Screen&amp;lt;/code&amp;gt;s and draw.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Twist(const TOPOLOGY_twistInfo_t &amp;amp;twist) = 0;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called when the cube is twisted and its topological description has changed.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Tap(uint32_t count);&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called on a tap on one of the module's screens.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Pat(uint32_t count);&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called on a pat (tap on the opposite side).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Close();&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called before the application is closed.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;virtual void on_Timer(uint8_t timerID);&amp;lt;/code&amp;gt;&lt;br /&gt;
: Called when a programmable timer (see &amp;lt;code&amp;gt;SetTimer()&amp;lt;/code&amp;gt;) fires.&lt;br /&gt;
&lt;br /&gt;
Services provided:&lt;br /&gt;
&lt;br /&gt;
 uint32_t GetTime() const;&lt;br /&gt;
 uint32_t GetTimeSeconds() const;&lt;br /&gt;
 void SendNetworkMessage(uint32_t type, NetworkMessage *msg) const;&lt;br /&gt;
 void SendExternalMessage(uint32_t type, uint8_t *data, size_t size) const;&lt;br /&gt;
 void SaveState(void *data, size_t size) const;&lt;br /&gt;
 i32_t LoadState(u32_t *id, void *data, size_t size) const;&lt;br /&gt;
 void SaveState(SaveMessage* msg) const;&lt;br /&gt;
 i32_t LoadState(u32_t *id, SaveMessage* msg) const;&lt;br /&gt;
 bool SetTimer(uint8_t id, uint32_t delay, bool suspended = false);&lt;br /&gt;
 bool StartTimer(uint8_t id);&lt;br /&gt;
 bool StopTimer(uint8_t id);&lt;br /&gt;
 void KillTimer(uint8_t id);&lt;br /&gt;
 void ShowFPSCounter(bool b);&lt;br /&gt;
 bool IsMasterModule();&lt;br /&gt;
 if (this-&amp;gt;Module == 0) return true;&lt;br /&gt;
 inline int GetImageAssetsCount();&lt;br /&gt;
 inline int GetSoundAssetsCount();&lt;br /&gt;
&lt;br /&gt;
Public fields: &amp;lt;code&amp;gt;Cubios::Scene Scene;&amp;lt;/code&amp;gt; — the module's [[SDK 6.3/C++/GFX Engine|scene graph]]; &amp;lt;code&amp;gt;uint32_t Module;&amp;lt;/code&amp;gt; — index (0–7) of the module running this instance.&lt;br /&gt;
&lt;br /&gt;
== class Cubios::AppManager ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The manager pumps the event loop: network packets → &amp;lt;code&amp;gt;on_Message&amp;lt;/code&amp;gt;, BLE data → &amp;lt;code&amp;gt;on_ExternalMessage&amp;lt;/code&amp;gt;, twists → &amp;lt;code&amp;gt;on_Twist&amp;lt;/code&amp;gt;, taps/pats, timers, ticks and rendering.&lt;br /&gt;
&lt;br /&gt;
== struct Timer_t ==&lt;br /&gt;
&lt;br /&gt;
 struct Timer_t { bool suspended; uint32_t delay; uint32_t time; uint8_t id; };&lt;br /&gt;
&lt;br /&gt;
[[Category:SDK 6.3]]&lt;br /&gt;
[[Category:C++ API]]&lt;/div&gt;</summary>
		<author><name>WowBot</name></author>
		
	</entry>
</feed>