<?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%2FTopology</id>
	<title>SDK 6.3/C++/Topology - 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%2FTopology"/>
	<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/C%2B%2B/Topology&amp;action=history"/>
	<updated>2026-07-26T22:48:32Z</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/Topology&amp;diff=16964&amp;oldid=prev</id>
		<title>WowBot: Split C++ Native API into per-module pages with minimal examples (WowBot)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/C%2B%2B/Topology&amp;diff=16964&amp;oldid=prev"/>
		<updated>2026-07-26T09:47:44Z</updated>

		<summary type="html">&lt;p&gt;Split C++ Native API into per-module pages with minimal examples (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]] · [[SDK 6.3/C++/Native API|C++ Native API]] / Topology''&lt;br /&gt;
&lt;br /&gt;
Cube geometry: facelets, faces, places, orientation and twist events.&lt;br /&gt;
&lt;br /&gt;
Shared types, enums and constants are listed on the [[SDK 6.3/C++/Native API#Types and data structures|Native API overview]].&lt;br /&gt;
&lt;br /&gt;
== Minimal example ==&lt;br /&gt;
&lt;br /&gt;
The assembled-check used by the official ''Twinkle'' sample before cross-screen drawing:&lt;br /&gt;
&lt;br /&gt;
 if(TOPOLOGY_isAssembled() == 1)&lt;br /&gt;
 {&lt;br /&gt;
     // safe to place objects across the whole face&lt;br /&gt;
 }&lt;br /&gt;
 Cubios::TOPOLOGY_faceletInfo_t nb;&lt;br /&gt;
 TOPOLOGY_getAdjacentFacelet(cubeN, screen.ID(), Cubios::NEIGHBOR_TOP, &amp;amp;nb);&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getAdjacentFacelet===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getAdjacentFacelet(u32_t module, u32_t screen, u32_t direction, Cubios::TOPOLOGY_faceletInfo_t* result)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a facelet neighbor in the given direction.&lt;br /&gt;
: Facelet can have neighbors on the same cube face or neighbors by module.&lt;br /&gt;
: This function provide a neighbor of the given facelet in the given&lt;br /&gt;
: direction. Connection status indicates if there is a connection between&lt;br /&gt;
: modules on which given facelet and its neighbor are located.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Neighbor facelet in a given direction with its connection status. The&lt;br /&gt;
: module ID will be MODULES_MAX and the screen number will be SCREENS_MAX in&lt;br /&gt;
: case of an error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getFacelet===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getFacelet(u32_t face, u32_t position, Cubios::TOPOLOGY_orientation_mode_t mode, Cubios::TOPOLOGY_faceletInfo_t* result)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a facelet located in the given place.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Facelet located in the given place, connection status indicates if there&lt;br /&gt;
: any connection to the module on which this facelet resides. The module ID&lt;br /&gt;
: will be MODULES_MAX and the screen screen will be SCREENS_MAX in case of an&lt;br /&gt;
: error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getPlace===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getPlace(u32_t module, u32_t screen, Cubios::TOPOLOGY_orientation_mode_t mode, Cubios::TOPOLOGY_place_t* result)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a place of the facelet.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Place on cube surface where the given facelet located. Face will be&lt;br /&gt;
: TOPOLOGY_FACES_MAX and position will be TOPOLOGY_POSITIONS_MAX in case of&lt;br /&gt;
: an error (e.g. incorrect arguments or topology malfunction)&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getOppositeFacelet===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getOppositeFacelet(u32_t module, u32_t screen, Cubios::TOPOLOGY_faceletInfo_t* result)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get an opposite facelet located on a diagonal counterpart module.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Diagonal opposite counterpart facelet. Connection status indicates if there&lt;br /&gt;
: any connection to the module on which that facelet resides. The module ID&lt;br /&gt;
: will be MODULES_MAX and the screen number will be SCREENS_MAX in case of an&lt;br /&gt;
: error (e.g. incorrect arguments or topology malfunction).&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getAngle===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getAngle(u32_t module, u32_t screen, Cubios::TOPOLOGY_orientation_mode_t mode)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get an angle to align images on a face according to the orientation mode.&lt;br /&gt;
: Display coordinates system is persistent on a module screen. Different&lt;br /&gt;
: angles are needed to align images on all modules with screens on the same&lt;br /&gt;
: face. This function returns the angle for the screen specified by the&lt;br /&gt;
: facelet. The angle is relative to the position 0 on the same face where the&lt;br /&gt;
: facelet is located in the given orientation mode.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Angle to align images on the same face according to the orientation mode, 0&lt;br /&gt;
: in case of an error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getFaceletOrientation===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getFaceletOrientation(u32_t module, u32_t screen)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a face orientation on which the given facelet resides.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Face orientation on which the given facelet resides, ORIENTATION_MAX in&lt;br /&gt;
: case of an error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
History:&lt;br /&gt;
: v5.0 - renamed from TOPOLOGY_getFaceletLocation() to the&lt;br /&gt;
: TOPOLOGY_getFaceletOrientation()&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getPlaceOrientation===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getPlaceOrientation(u32_t face, u32_t position)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a face orientation on which the given place resides.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Face orientation on which the given place resides, ORIENTATION_MAX in case&lt;br /&gt;
: of an error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
History:&lt;br /&gt;
: v5.0 - renamed from TOPOLOGY_getPlaceLocation() to the&lt;br /&gt;
: TOPOLOGY_getPlaceOrientation()&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getFace===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getFace(u32_t orientation)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Get a face number which has the given orientation.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: Face number which has the given orientation, TOPOLOGY_FACES_MAX in case of&lt;br /&gt;
: an error (e.g. incorrect arguments or the topology malfunction).&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_isAssembled===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_isAssembled()&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Check that all modules in a system are connected to each other.&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
: True if all modules in a system are connected to each other, false&lt;br /&gt;
: otherwise.&lt;br /&gt;
&lt;br /&gt;
===TOPOLOGY_getTwist===&lt;br /&gt;
Syntax:&lt;br /&gt;
 i32_t TOPOLOGY_getTwist(Cubios::TOPOLOGY_twistInfo_t* twist)&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
: Read the pending twist event into a &amp;lt;code&amp;gt;TOPOLOGY_twistInfo_t&amp;lt;/code&amp;gt;. Normally consumed by &amp;lt;code&amp;gt;AppManager&amp;lt;/code&amp;gt;, which calls &amp;lt;code&amp;gt;Application::on_Twist()&amp;lt;/code&amp;gt;.&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>