The ButtonWidget JavaScript class. A button widget.
This widget must be linked to a BOOL attribute. The widget manipulator is a circular area. The color for the on/off states can be specified at object creation. When the area is clicked, the BOOL attribute is set to true, the button is shown in its pressed state, and the valueChanged signal is emitted. If the "toggle" property is set to true, the button will remain in its pressed state until it is pushed again.
The following properties are supported by the widget:
Property | Type | Default Value | Description |
data | String | - | The name of the automatically generated position attribute (if none is provided) |
data | Attribute | - | An attribute of BOOL type that can be shared with another widget or node. |
size | float | 1.00 | The size (half-extent) of the box. |
screen_space | bool | false | When set to true, the button position becomes relative to the screen rather than the scene. |
position | Point2d | Point2d(0,0) | Position of the box center in the scene, specified in fields. |
outer_color | ColorRGBA | 0, 0, 0,255 | The outer colour of the box. |
on_color | ColorRGBA | 0,255, 0,128 | The inner colour of the box, when pressed. |
off_color | ColorRGBA | 255, 0, 0,128 | The outer colour of the box, when released. |
toggle | bool | false | When set to true, the button will stay in pressed state until pressed again. |
label | String | "text" | Label text |
label_color | ColorRGBA | 255,255,255,255 | Label foreground (text) color. |
label_bg_color | ColorRGBA | 0, 0, 0,128 | Label background color. Accepts transparency values. |
label_font | String | "Arial" | Label font name. |
label_size | float | 10.0 | Label font size, in points. |
label_pos | Point2d | Point2d(0,0) | Label position, in fields. |
label_justify | String | "Left" | Horizontal label text alignment ("Left"/"Center"). |
label_screenspace | bool | true | Forces the label size to remain constant relative to screen. |
label_screenspace_offset | Point2d | Point2d(0,0) | Label position offset, in screen space. |
The following components constitute the widget:
Component | Type |
attribute | BOOL |
drag_manipulator | BUTTON |
painter | BUTTON |
picker | MONO |
local_transformation | - |
Create this widget to add a floating Master Controller in the camera view:
{
MessageLog.
trace(
" ---------------------------------------------------------------------------");
MessageLog.
trace(
" ---------------------------------------------------------------------------");
{
screen_space : screen_space,
pressed_color : mcColor,
toggle : false,
size : mcSize,
label : val_label_text,
label_color : val_label_color,
label_bg_color : val_label_bg_color,
label_font : val_label_font,
label_size : val_label_size,
label_screenspace_offset :
Point2d(0,-400),
label_justify : "Center",
label_screenspace : screen_space
} );
{
});
}
Make sure to setup the Master Controller node specifications properly. e.g.
<attributes>
<attr type="BOOL" name="screen_space" value="false" tooltip="Check this options for size to be defined in screen space."/>
<attr type="BOOL" name="button_value" value="false" tooltip="Button ON/OFF value."/>
<attr type="STRING" name="label" value="mc_btnText" tooltip="Master Controller label."/>
<attr type="STRING" name="label_font" value="Arial " tooltip="Label font ."/>
<attr type="DOUBLE" name="button_size" value="1.0" tooltip="Radius of the Master Controller Button."/>
<attr type="DOUBLE" name="label_size" value="18.0" tooltip="Label font size, in points ."/>
<attr type="COLOUR" name="label_color " value="255,255,255" tooltip="Label color ."/>
<attr type="COLOUR" name="label_bg_color" value="0,0,0,128" tooltip="Label background color."/>
<attr type="COLOUR" name="widget_color" value="255,0,0" tooltip="Color of the MasterController Button."/>
</attributes>