Player
Description of the player
field¶
interface PlayerState {
selectedTool: string
selectedArea: SelectedArea | undefined
playerErrors: {
id: string
values: object
}[]
camera: {
position: number[]
target: number[]
distance: number
type: string | null
availableCameraTypes: string[]
focusDuration: number
}
selectedToolOptions: {
focusEnabled: boolean
doubleClickEnabled: boolean
multiSelectionEnabled: boolean
selectionEnabled: boolean
}
selectedNodes: SelectedNodeMap
networkState: 'DISCONNECTED' | 'CONNECTED' | 'CONNECTED_WIFI' | 'UNKNOWN'
refreshLayers: boolean
orientationCube: {
side: 'left' | 'right'
}
}
selectedTool
¶
Updated by: UI
Tells which selected tool mode is enabled. The possible values are the following:
annotate
quotation
select
multiselect
multiselect_add
multiselect_remove
focus
color
Data model¶
Examples¶
Changing the selected tool¶
selectedArea
¶
Updated by: UI/Player
Set the boundaries of a 2D box in the view space, used to select multiple nodes.
Data model¶
Examples¶
Set the boundaries of a selected area¶
{
...
"player": {
...
"selectedArea": {
"bottomLeft": {
"x": 90,
"y": 1198
},
"topRight": {
"x": 756,
"y": 883
}
}
...
},
...
}
Operations done by the Player¶
When the operation has been acknowledged by the Player, it removes the field entirely.
playerErrors
¶
Updated by: UI/Player
Stores information about an error that occurred in the Player, so that the UI can create a dialog window to show the information to the user.
id
can either be an error code or a description of the error.values
is an object containing additional information.
Data model¶
Examples¶
Remove all errors¶
Once the UI has processed an error, it can remove it from the state:
Operations done by the Player¶
When an error occurs, the Player adds an element to the array.
camera
¶
Updated by: UI/Player
Information of the camera through which the user observes the scene.
Data model¶
camera: {
position: number[]
target: number[]
distance: number
type: string | null
availableCameraTypes: string[]
focusDuration: number
}
Examples¶
Change the camera position and/or target¶
{
...
"player": {
...
"camera": {
"availableCameraTypes": [
"third person",
"first person",
"blueprint"
],
"type": "third person",
"position": [
2.2613277435302734,
0.7330776453018188,
-6.118821620941162
],
"target": [
2.2613277435302734,
0.7330776453018188,
3.966489315032959
],
"distance": 10.085310935974121,
"focusDuration": 0
}
...
},
...
}
Changing the camera type¶
{
...
"player": {
...
"camera": {
"availableCameraTypes": [
"third person",
"first person",
"blueprint"
],
"type": "first person",
"position": [
28.779422760009766,
18.87126350402832,
29.975875854492188
],
"target": [
28.779422760009766,
17.87126350402832,
29.97500228881836
],
"distance": 1,
"focusDuration": 0
}
...
},
...
}
Adding available camera types¶
{
...
"player": {
...
"camera": {
"availableCameraTypes": [
"third person",
"first person",
"blueprint"
],
"distance":10,
"focusDuration":0,
"position":[],
"target":[],
"type":null
}
...
},
...
}
selectedToolOptions
¶
Updated by: UI
Enables different features of the Player.
focusEnabled
: Iftrue
, clicking on a node will focus on it.doubleClickEnabled
: Iftrue
, double clicking on a node will focus on it and make the other nodes transparent.multiSelectionEnabled
: Enable multiselection.selectionEnabled
: Enable selection.
Data model¶
selectedToolOptions: {
focusEnabled: boolean
doubleClickEnabled: boolean
multiSelectionEnabled: boolean
selectionEnabled: boolean
}
Examples¶
Changing the selected tool options¶
{
...
"player": {
...
"selectedToolOptions": {
"focusEnabled": true,
"doubleClickEnabled": false,
"multiSelectionEnabled": false,
"selectionEnabled": true
}
...
},
...
}
selectedNodes
¶
Updated by: UI/Player
Define the selected nodes.
Data model¶
Examples¶
Select multiple nodes¶
{
...
"player": {
...
"selectedNodes": {
"61f9208694fae90010ed3768": {
"colorId": 0,
"node": {
"type": "node",
"id": "61f9208694fae90010ed3768",
"uuid": "62c2336f-5ceb-4c66-e5f1-428b1b7b7495",
"attributes": {
"name": "middlewareTestFile.fbx",
"file": "61f9208519bc49000dec2885",
"numChildren": 6,
"numAttributes": 16,
"layerColors": [],
"children": [
"61f9208694fae90010ed375c",
"61f9208694fae90010ed375f",
"61f9208694fae90010ed3761",
"61f9208694fae90010ed3763",
"61f9208694fae90010ed3765",
"61f9208694fae90010ed3767"
]
}
}
},
"61f9208694fae90010ed3767": {
"colorId": 0,
"node": {
"type": "node",
"id": "61f9208694fae90010ed3767",
"uuid": "4b841af5-5e1d-5b56-3474-2562600a764b",
"attributes": {
"name": "Cone",
"file": "61f9208519bc49000dec2885",
"numChildren": 1,
"numAttributes": 16,
"layerColors": []
}
}
}
}
...
},
...
}
Remove a selected node¶
{
...
"player": {
...
"selectedNodes": {
"61f9208694fae90010ed3767": {
"colorId": 0,
"node": {
"type": "node",
"id": "61f9208694fae90010ed3767",
"uuid": "4b841af5-5e1d-5b56-3474-2562600a764b",
"attributes": {
"name": "Cone",
"file": "61f9208519bc49000dec2885",
"numChildren": 1,
"numAttributes": 16,
"layerColors": []
}
}
}
}
...
},
...
}
Replacing a field of a selected node¶
{
...
"player": {
...
"selectedNodes": {
"61f9208694fae90010ed3767": {
"colorId": 0,
"node": {
"type": "node",
"id": "61f9208694fae90010ed3767",
"uuid": "4b841af5-5e1d-5b56-3474-2562600a764b",
"attributes": {
"name": "RedCone",
"file": "61f9208519bc49000dec2885",
"numChildren": 1,
"numAttributes": 16,
"layerColors": []
}
}
}
}
...
},
...
}
networkState
¶
Updated by: Player
Informs the state of the connection to the network. Mainly used for the offline mode.
Data model¶
Operations done by the Player¶
The Player sets the field depending on network connectivity:
refreshLayers
¶
Updated by: UI/Player
Notify the Player that it needs to refresh its internal list of the Layers of the file.
Data model¶
Examples¶
Refresh layers¶
Operations done by the Player¶
When the operation has been acknowledge by the Player, it resets the field to false
:
orientationCube
¶
Updated by: UI
Stores the side where the orientation cube should be displayed.