GettingStartedControls Part 1
This
The scene is built up using imported images and configuring various controls (such as TellTale, Gauge, DigitalClock, TextValue, Text, Flipbook). The use of a ForwardValue behavior will ensure that the Speed Gauge and an additional textual display will show the same value at any time.
Finally, the Panel is started to verify the coherency of the Speed Gauge and the speed's textual display.

Setting up the SceneComposer solutionSolution
Choose

Savea thenew Solution

Inside

You should have now the following file structure on disk:

The file GettingStartedControls.scs is the main solution file and can later be loaded via "Open Solution..." from SceneComposer.
Our GettingStartedControls solution will use a screen resolution of 1024x768 pixels. Since the default resolution settings are different we have to adapt them within the RenderTargets tabpanel on the top right ofand select [ Display (0) ]. In the SceneComposer.

Pleasebelow select "Display(0)" as can be seen above. This selection will showchange the propertiesdisplay's X and Y Resolution.

The "X Resolution" and "Y Resolution" properties have towill be changeddefined.
1024
Y Resolution
768

You
Preparing the Scene
Select "Scene2D" and rename it to "SceneHome" either by pressing <F2> on your keyboard or via the context menu "Rename".

Save the solution using
Tip: It might be a good idea to make a backup of your solution now! If you destroy something during execution of the following steps you always have the possibility to restart with a clean solution. To make a copy just make a copy of the GettingStartedControls folder or create a copy by archiving into a zip file.
Import
Deletion of unused ScenesImages
All content that we want to display is organized into scenes. There are available scenes for 2D and 3D content. In the beginning we will only use 2D scenes to keep things a little easier. In our current solution we already have scenes of both types available. And because we don't need a 3D scene, we will delete it now.
The contentimages needed for this solution will be imported. Some of athem solutionwill isbe alwaysused displayedas inplain thestatic Solutionimages, Explorerbut onmost thewill top left side of SceneComposer.

In the Solution Explorer a tree view isbe used to visualizeconfigure allcontrols.
Navigate to the

There are two scenes available. Pleasefolder, select theall Scene3Dfiles using your right mouse button and select "Delete"provided in thethis context"Cluster" menu. As an alternative you can select the scene with a left clickfolder and press the[ deleteOpen key from your keyboard to delete it.

There are some dependencies to other objects, therefore SceneComposer asks us how to handle it. Please select the following settings within the dropdown menus on the right side and press OK to discard the dialog.

You can save the solution again.
Creation of the first screen
The first screen of our GettingStartedControls application will look like this:

In order to start easy, the screen will consist mainly of static images. Only the gauge (speedometer) and the text displaying the current speed will have real functionality behind them. At the bottom border a few tabs are shown wherein the user can later switch between different screens of the application. These tabs therefore are not static image elements but controls which are able to react on user (touch) input. The orange tab marks our current screen which is our home (cluster) screen.
As already mentioned, SceneComposer is using scenes to organize content which can be shown to the app user. These scenes typically contain only parts of application screens. As a cinema film is using scenes to put in order segments of a story, scenes in our context is playing a similar role. During this tutorial we will create a scene per tab content and an additional scene which contains the tab bar itself.This will help us to not repeat ourselves. If we had organized the scene exactly like the screen content we would have to use a tab bar in every screen.
We are now renaming the left over Scene2D into "SceneHome" to have it easier later to find our home content. Please select the Scene2D and press F2 (or use the context menu) to enter "SceneHome" as the new name.

Please double click on the "SceneHome" to show this scene within the Scene Tree panel below the Solution Explorer.

The scene editor will show the whole content of an opened scene. If a scene is opened its visual content is also displayed in the Scene Editor window in the center of SceneComposer. If the scene is empty you can only see a yellow border which is representing the size of the application's screen resolution. You can zoom in and out using the mouse wheel. By holding the mouse wheel and dragging you can move around the content of your view while retaining the Zoom factor. To get back to the original 100% size, please use the icon in the toolbar (Set selected camera to predefined location and orientation)].

To be able to show some "fancy" graphics we have to import the images into our solution. We use the import images function of SceneComposer which you can find in the import menu.

You will now be asked to save your solution. Please confirm!
A Windows File Explorer titled "Import Resources" will be opened. Please navigate to the Cluster folder:
<cgi-studio-root>/cgi_studio_content/Resources/GettingStartedControls/Cluster
Select
The images are now processed and the "Import Images"Images ] dialog will be displayed:

The list on top is used to show the differences of the solution before and after the import. Green means that the images are newly added to the solution. Below you can see and change the target folder of the solution where the images will be stored. Please use
Afterand thepress import[ theOK Solution].


Configure Screen, Position Images

Repeat your actionsimage with the "NewWarning80Bmp".
Yourlimit scene could now look like this:

It is now time to improve the placement of the images to make room for the speedometer. Towill be able to move the images using the mouse, change the Editor panel mode. You can find iconsplaced in the toolbarScene whichEditor.

The current mode is for selecting elementsappears in the EditorScene Tree panel.
To be able to place an element to a predefined position, select the element (in this case the Navi60Bmp) either using a click on the element in the editor panel or in the Scene Tree.Tree Whenpanel anselect elementthe isimages selectedindividually (suchand asmodify below)

Its properties are shownY in the Properties panel on the lowerbottom rightright.
of
Render Node
TransformationsPosition X Position Y Navi60Bmp
38
121
NewWarning80Bmp 38
612


Configure
PleaseControls positionare image NewWarning80Bmp to X=38 and Y=612.
In a real application, elements will be placed using layout controls to be able to adapt to different screen sizes or culture settings. Nevertheless direct placement is often needed within layout controls or where an application designer specifies absolute placement.
With dragging the images directly from the Solution Explorer we used a direct method to create RenderNodes containing the dragged image. Normally we choose directly the node type within the Toolbox (top right of SceneComposer) and configure the properties in the next step.
Specialspecial types of nodes that already contain logic for handling of user actions (touch, click) and state changeschanges. are called Controls. YouThey can findbe these controlsfound in the Controls section on top of the Toolbox.Toolbox, which is by default located in the top right corner.

The most common control is a Button. In our home scene we used auses "TellTale"Tell ControlTale" Controls to indicate weather alerts, charging orstatus aninformation and incoming call.calls.


The [ Choose
ThisItem ] dialog will openbe theopened.

The TellTale's state can be configured choosing between On, Off and Blinking. For the blinking option the On Time and Off Time in ms can also be set. In the image below you can see the configuration for Tell Tale_Call].

You can now configure the TellTale controls' images and positions as follows:
| Scene | Tree |
|---|
Control
Rename Node to Position X Position Y State
On State Image
Off State Image
Tell Tale_Snow 387
612 Off NewWeather_BBmp NewWeather_HBmp
612 Off Ev_HBmp Ev_Bmp_HBmp

In the Scene Tree or in the Scene Editor select "Tell Tall_Call". This Tell Tale Control is configured to keep blinking. Therefore, the speed of blinking has to be configured.
On Time Ms Off Time Ms Tell Tale_Call
800 800

Configure Gauge Control
AnotherTo control which is used in our home scene isdisplay the "Gauge".current It is very often used for Speedometers or visualizationspeed of RPM.the car a "Gauge Control" will be used.
Please
The Gauge Control also appears in the Scene Tree.


Asthe youProperties mightpanel's have[ figuredTransformations out] section configure the Gauge weControl's haveposition placed looks differentaccording to the onetable.
from
Position X
Position Y
Gauge
319
217
Use the Properties panel of our Gauge to change the images and edit the values:

Clickcorresponding magnifying glass toicon.
the
Background Image
Needle Image
Gauge
NewClusterBmp NewNeedleBmp


Press OK and repeat the same steps for the Needle Image selecting NewNeedleBmp.

As you can see the needle"NewClusterBmp" needs to be repositioned in order to be in the center of the Gauge. In orderthe Solution Explorer select NewClusterBmp. In the Properties panel's [ Bitmap ] section tick the checkbox "Enable Pivot Hint" and configure the Pivot Hint according to dothe this,table clickbelow.
NewClusterBmp
Properties panel [ Bitmap ]
Item Name Pivot Hint
194 194 NewNeedleBmp
112
8


Do the same for NewNeedleBmp, this time using X=112 and Y=8.

The needle image should now be positioned to the center of the gauge.
-
You may need to trigger a refresh by hitting the F5 button on your keyboard if the images' positions are not updated automatically.
Now, place the control at the center of the scene (X=319, Y=217).
In the Gauge's Properties the Value property represents the current speed. Input Min and Input Max is the allowed range of speed (0-300 km/h). The Rotation Min and Rotation Max define the start and end point of the angles used (- 45° - 223°). The Internal Value Change Per Second property is used when a speed value is changed. That means in our case the needle moves up to 300 value units per second. Because the whole range is 0-300 within one second the speedometer will always be able to reach the targeted value. The Dampening Filter Constant is used to further smoothen the movement of the needle.
To display the digital speed please drag a Text Value control to the lower middle of the gauge (X=468, Y=492). You can find here the required settings:


The Format Text property is a template for the text using the standard printf value formatter syntax (%d for int or %03d for a 3 digit integer).
Add a text control to display the unit text "km/h" to position X=482, Y=522. Configuration:


The Text Value control will now be connected to the Gauge control, so that both controls display the same value. Select the Gauge Control in the Scene Tree and drag and drop a Forward Value Behavior from Toolbox -> Behaviors -> Value Processing to the Behaviors section on the right side of the Scene Tree Panel.


This behavior is responsible for copying the speed value from the gauge to the text value control. To do this, Text Value Node has to be configured as the behavior's TargetNode. In order to change the TargetNode, please click the corresponding magnifying glass icon and choose the Text Value Control, that can be found under Scenes > SceneHome > Text Value.


Next, we'll add a FlipBook control to the right upper corner. Drag and drop a FlipBook from the ToolBox Controls - Common to the Scene Editor with the following configuration:


The top center of our home screen is decorated with a Digital Clock control. This control can be found in the ToolBox under Controls - Common. Drag and drop it into the scene and position it to X=439, Y=116.
The first screen/scene is now finished. You can show the result in a SceneComposer Display View which represents the final rendered result via the view/Display/Display-0 menu.


To be able to simulate the final application it is necessary to export the asset of the application. An asset contains only used resources from your project (controls, scenes, images, …). This asset might be stored into flash on a real embedded target. For now we generate this asset to have it available as input for our Player application (simulation driver). To generate (export) the asset you can press CTRL+G or use the File Menu and select the "Generate Asset Library…" menu entry.


Use the Browse button to choose where the output file will be stored. Now press the generate button. The asset will be written.
If you want to run the Player from SceneComposer, you can do so by clicking the Play button in the menu bar.


Just make sure that the item Generate and Play is selected, so that an asset file will be generated internally, before running the Player.


In some cases you have to choose your target device. Set the checkmark in front of the SceneHome on the middle left. You now should see the newly created scene. You can now manipulate the Gauge value for example. Please use the controls on the left half of the Player and set the values as you can see above. When the Value "0,200" now is manipulated to example "0,35" the Gauge will display a speed of 35 km/h.

