architwin 1.0.32 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +691 -95
- package/lib/architwin.d.ts +150 -27
- package/lib/architwin.min.js +1 -1
- package/lib/common/architwin.min.js +1 -1
- package/lib/common/architwin.min.js.LICENSE.txt +0 -23
- package/lib/convert.d.ts +2 -0
- package/lib/convert.js +18 -0
- package/lib/loaders/boxLoader.d.ts +47 -0
- package/lib/loaders/boxLoader.js +102 -0
- package/lib/loaders/gltfLoader.d.ts +60 -0
- package/lib/loaders/gltfLoader.js +168 -0
- package/lib/loaders/index.d.ts +5 -0
- package/lib/loaders/index.js +5 -0
- package/lib/loaders/planeGeometry.d.ts +29 -0
- package/lib/loaders/planeGeometry.js +119 -0
- package/lib/loaders/textLoader.d.ts +35 -0
- package/lib/loaders/textLoader.js +113 -0
- package/lib/map.d.ts +1 -0
- package/lib/map.js +77 -0
- package/lib/minimap.d.ts +5 -0
- package/lib/minimap.js +300 -0
- package/lib/superviz.d.ts +19 -0
- package/lib/superviz.js +337 -0
- package/lib/supervizTypes.js +95 -0
- package/lib/types.d.ts +199 -15
- package/lib/types.js +0 -4
- package/package.json +1 -2
- package/tsconfig.json +1 -1
- package/webpack.config.js +0 -25
package/README.md
CHANGED
|
@@ -24,18 +24,34 @@ ArchiTwin Library
|
|
|
24
24
|
- [Loading and Interacting with 3D/2D Objects](#loading-and-interacting-with-3d2d-objects)
|
|
25
25
|
- [What is an Object?](#what-is-an-object)
|
|
26
26
|
- [Loading Objects](#loading-objects)
|
|
27
|
+
- [Accessing List of Rendered Objects and Object Structure](#accessing-list-of-rendered-objects-and-object-structure)
|
|
27
28
|
- [Transforming Objects](#transforming-objects)
|
|
28
29
|
- [Transforming Object by clicking it](#transforming-object-by-clicking-it)
|
|
29
|
-
- [
|
|
30
|
+
- [Programmatically transforming objects](#programmatically-transforming-objects)
|
|
30
31
|
- [Undoing and Redoing Transformation Changes](#undoing-and-redoing-transformation-changes)
|
|
31
32
|
- [Adding Objects To Your Space](#adding-objects-to-your-space)
|
|
33
|
+
- [Programmatically Add Objects](#programmatically-add-objects)
|
|
32
34
|
- [Creating a Customizable Media Screen](#creating-a-customizable-media-screen)
|
|
33
35
|
- [Adding a Media Screen](#adding-a-media-screen)
|
|
34
36
|
- [Media Screen Parameter Reference](#media-screen-parameter-reference)
|
|
35
37
|
- [Attaching an image or video to a Media Screen](#attaching-an-image-or-video-to-a-media-screen)
|
|
38
|
+
- [Delete Media Screen](#delete-media-screen)
|
|
36
39
|
- [Getting the coordinates of a clicked area in the 3D space](#getting-the-coordinates-of-a-clicked-area-in-the-3d-space)
|
|
37
40
|
- [Setting Video Playback in the Space](#setting-video-playback-in-the-space)
|
|
38
41
|
- [Setting Animation Control in the Space](#setting-animation-control-in-the-space)
|
|
42
|
+
- [Meeting Guide](#meeting-guide)
|
|
43
|
+
- [Create Meeting](#create-meeting)
|
|
44
|
+
- [Start Meeting](#start-meeting)
|
|
45
|
+
- [Stop Meeting](#stop-meeting)
|
|
46
|
+
- [Utility Methods](#utility-methods)
|
|
47
|
+
- [Update Meeting Details](#update-meeting-details)
|
|
48
|
+
- [Meeting Info](#meeting-info)
|
|
49
|
+
- [Meeting Config Options](#meeting-config-options)
|
|
50
|
+
- [Meeting Custom Colors](#meeting-custom-colors)
|
|
51
|
+
- [Meeting Custom Avatars](#meeting-custom-avatar)
|
|
52
|
+
- [Meeting Device Control](#meeting-custom-control)
|
|
53
|
+
- [Meeting Bar Position](#meeting-bar-position)
|
|
54
|
+
- [Meeting Status](#meeting-status)
|
|
39
55
|
- [Function Reference](#function-reference)
|
|
40
56
|
- [Tags](#tags)
|
|
41
57
|
- [Sweeps](#sweeps)
|
|
@@ -43,6 +59,9 @@ ArchiTwin Library
|
|
|
43
59
|
- [Navigation](#navigation)
|
|
44
60
|
- [Camera](#camera)
|
|
45
61
|
- [Objects](#objects)
|
|
62
|
+
- [Meeting](#meeting)
|
|
63
|
+
|
|
64
|
+
|
|
46
65
|
## Installation
|
|
47
66
|
---------------------
|
|
48
67
|
### Install Using NPM
|
|
@@ -525,7 +544,12 @@ Space can also contain Image Slideshow Screens. This is similar to the Video Scr
|
|
|
525
544
|
Clicking on the right section of the current slide image will display the next slide.
|
|
526
545
|
Clicking on the the left section will display the previous slide.
|
|
527
546
|
|
|
528
|
-
The slideshow can be auto played in whole by clicking the lower-right corner.
|
|
547
|
+
The slideshow can be auto played in whole by clicking the lower-right corner.
|
|
548
|
+
|
|
549
|
+
**Meeting**
|
|
550
|
+
Space meeting feature introduces immersive way to conduct virtual gatherings and collaborative sessions. This innovative feature allows users to convene inside a Space, where participants represented by an avatar and can interact, communicate, and share ideas in a more lifelike and engaging manner.
|
|
551
|
+
|
|
552
|
+
Please check [Meeting Guide](#meeting-guide) to know how to use Meeting feature.
|
|
529
553
|
|
|
530
554
|
## Points of Interest
|
|
531
555
|
Tags are primarily use to mark locations or objects in space for quick and direct navigation.
|
|
@@ -639,6 +663,85 @@ import * as atwin from 'architwin'
|
|
|
639
663
|
|
|
640
664
|
atwin.nearbyObjects //Gets updated everytime the User camera moves
|
|
641
665
|
```
|
|
666
|
+
|
|
667
|
+
### Accessing List of Rendered Objects and Object Structure
|
|
668
|
+
|
|
669
|
+
Objects that have been loaded and **rendered** into the 3D space are stored in an array called _3DXObjects which you can access by doing calling it this way
|
|
670
|
+
|
|
671
|
+
```typescript
|
|
672
|
+
atwin._3DXObjects
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
All the elements in this array implement the `IObjectData` interface. Each element in the array contains all the data you would need manipulate the object.
|
|
676
|
+
|
|
677
|
+
*interface used* (TS)
|
|
678
|
+
```typescript
|
|
679
|
+
interface IObjectData {
|
|
680
|
+
collider?: any
|
|
681
|
+
object: IShowcaseObject
|
|
682
|
+
component: Scene.IComponent
|
|
683
|
+
node: Scene.INode
|
|
684
|
+
type?: string
|
|
685
|
+
}
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
Each object element inside `atwin._3DXObjects` contains the value keys:
|
|
689
|
+
|
|
690
|
+
**collider:** Collider components define the shape of an 3D/2D object for the purposes of physical collisions. A collider, which is invisible, does not need to be the exact same shape as the GameObject’s mesh.
|
|
691
|
+
|
|
692
|
+
**object:** The object key is an object that implements the `IShowcaseObject` interface. This is one of the most important values as the object contains all the information about an object such as its id,name,position,rotation,scale,amazon_uri link, and etc. You can look at the interface below to view the full makeup of the object key.
|
|
693
|
+
|
|
694
|
+
*interface used* (TS)
|
|
695
|
+
```typescript
|
|
696
|
+
export interface IShowcaseObject {
|
|
697
|
+
id: number;
|
|
698
|
+
showcase_id: number;
|
|
699
|
+
object_id: number;
|
|
700
|
+
user_id: number;
|
|
701
|
+
object_position: {
|
|
702
|
+
x: number;
|
|
703
|
+
y: number;
|
|
704
|
+
z: number;
|
|
705
|
+
};
|
|
706
|
+
object_rotation: {
|
|
707
|
+
x: number;
|
|
708
|
+
y: number;
|
|
709
|
+
z: number;
|
|
710
|
+
};
|
|
711
|
+
object_scale: {
|
|
712
|
+
x: number;
|
|
713
|
+
y: number;
|
|
714
|
+
z: number;
|
|
715
|
+
};
|
|
716
|
+
autoplay: boolean;
|
|
717
|
+
autoplay_distance: number;
|
|
718
|
+
offset_position: number;
|
|
719
|
+
offset_rotation: number;
|
|
720
|
+
position_unit: string;
|
|
721
|
+
showcase_object_name: string;
|
|
722
|
+
is_deleted: boolean;
|
|
723
|
+
is_read: boolean;
|
|
724
|
+
is_new: boolean;
|
|
725
|
+
object_data: I3DObject;
|
|
726
|
+
}
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
**component:** This objects contains functions and variables responsible for intializing, updating, and destroying a rendered objects mesh, texture, etc. This object also contains the three.js instance. Since the 3D space is rendered with Three.js under the hood. You can use this instance to invoke methods made available by three.js. This gives you a lot of flexibility and control provided you know how to use it. This documentation will not cover Three.js specific methods. Visit their [official website](https://threejs.org/) if you want to learn more about it.
|
|
730
|
+
|
|
731
|
+
**node:** The node is responsible for managing the lifecycle of a 3D/2D objects. The node can be used to `start()` and `stop()` a rendered model. Invoking `start()` will render the model into the scene while `stop()` will destroy it and remove it from the scene.
|
|
732
|
+
|
|
733
|
+
**type:** A string that states the file or object type of a 3D/2D object. The file type could be any of the following
|
|
734
|
+
|
|
735
|
+
**Valid Types**
|
|
736
|
+
|
|
737
|
+
| type | context | description |
|
|
738
|
+
| :----: | :----: | :---: |
|
|
739
|
+
| GLB | 3D model | A 3D model with or without animation |
|
|
740
|
+
| FBX | 3D model | A 3D model with or without animation |
|
|
741
|
+
| FRAME | Media Screen | A customizable [media screen](#creating-a-customizable-media-screen) |
|
|
742
|
+
| ZIP | slideshow | A zip file rendered as a image slideshow |
|
|
743
|
+
|
|
744
|
+
The `atwin.selectedObject` variable is an example of a variable that implements this interfacea and contains this data.
|
|
642
745
|
### Transforming Objects
|
|
643
746
|
|
|
644
747
|
Transformation such as translate, scale, and rotate are actions used to manipulate objects in a 3D space. These transformations allow you to change an object's position, size, and orientation respectively.
|
|
@@ -670,7 +773,7 @@ If you wish the to access the object data of the object that has been clicked on
|
|
|
670
773
|
console.log("Selected object data",atwin.selectedObject)
|
|
671
774
|
```
|
|
672
775
|
|
|
673
|
-
####
|
|
776
|
+
#### Programmatically transforming objects
|
|
674
777
|
|
|
675
778
|
If you need to transform the position,rotation, and scale of one or more objects without having to use the mouse then the
|
|
676
779
|
`setObjectTransformation()` method will allow you to do so. The method accepts the following parameters
|
|
@@ -688,10 +791,10 @@ The **transform** object contains the following key-value pairs. These values wh
|
|
|
688
791
|
| object_rotation | Vector3 | yes | none | Valid x,y,z coordinates|
|
|
689
792
|
| object_scale | Vector3 | yes | none | Valid x,y,z coordinates|
|
|
690
793
|
|
|
691
|
-
In this example, we will get a random 3D model from the array of rendered objects stored in `atwin.
|
|
794
|
+
In this example, we will get a random 3D model from the array of rendered objects stored in `atwin._3DXObjects` and manipulate it using the method. The object we will be manipulating in this example is a 3D model with a file type of GLB (You can also transform other object types such as a media screen). This will return a javascript object that contains the rendered object's data which implement the `IObjectData` interface. You can know more about that by going to this section
|
|
692
795
|
|
|
693
796
|
```typescript
|
|
694
|
-
const targetObject = atwin.
|
|
797
|
+
const targetObject = atwin._3DXObjects.find(obj => obj.object.object_data.object_type == 'GLB')
|
|
695
798
|
|
|
696
799
|
const transform = {
|
|
697
800
|
object_position: {
|
|
@@ -742,8 +845,14 @@ In order to add an object, you may use the `addObjectToScene()` method.
|
|
|
742
845
|
|
|
743
846
|
| parameter | type | required | values |
|
|
744
847
|
| :----: | :----: | :---: | :---: |
|
|
745
|
-
| object | I3DObject | yes | object |
|
|
746
|
-
| option |
|
|
848
|
+
| object | I3DObject | yes | object payload |
|
|
849
|
+
| option | ObjectConfig | no | valid config object |
|
|
850
|
+
|
|
851
|
+
There are two ways you can use the `addObjectToScene()` method. We will go through each one
|
|
852
|
+
|
|
853
|
+
#### Programmatically Add Objects
|
|
854
|
+
|
|
855
|
+
If you wish to add new object to your space to a pre-defined position, you can use the `addObjectToScene()` method an pass the object data along
|
|
747
856
|
|
|
748
857
|
```typescript
|
|
749
858
|
atwin.addObjectToScene(object:I3DObject, option:object)
|
|
@@ -776,7 +885,7 @@ The **transform** object is an object that contains the following key-value pair
|
|
|
776
885
|
|
|
777
886
|
By default, your media screen will show a blank white canvas if you set the mediaUrl parameter of the `addMediaScreen()` method as an empty string or `undefined`.
|
|
778
887
|
|
|
779
|
-
**IMPORTANT:** The link to your media you provide to the mediaUrl **MUST** be publicly accessible and have the appropriate CORS headers, otherwise,
|
|
888
|
+
**IMPORTANT:** The link to your media you provide to the mediaUrl **MUST** be publicly accessible and have the appropriate CORS headers, otherwise, your media will not load into the media screen.
|
|
780
889
|
|
|
781
890
|
There are many ways you can use this method to add a media screen to your 3D space. Let's go through each one.
|
|
782
891
|
|
|
@@ -806,9 +915,9 @@ atwin.addMediaScreen('',transform)
|
|
|
806
915
|
|
|
807
916
|
If done correctly, you should be able to see your media screen in your intended position. This method is useful if you already the have position,rotation, and scale values stored in a database or possibly in a local array
|
|
808
917
|
|
|
809
|
-
**Method 2: Adding with click method
|
|
918
|
+
**Method 2: Adding with click method using getTargetPosition**
|
|
810
919
|
|
|
811
|
-
The library has several helper methods that provide a range of commmon functionalities to help you achieve certain actions easier. If for example, you do not have your
|
|
920
|
+
The library has several helper methods that provide a range of commmon functionalities to help you achieve certain actions easier. If for example, you do not have your intended position coordinates stored in the database or in a local area and wish to click a specific area of the 3D space and get that the coordinates of the area you clicked, you may do some by using the `getTargetPosition()` helper method in tangent with the `addMediaScreen()` method to do so. You can [click here](#getting-the-coordinates-of-a-clicked-area-in-the-3d-space) to know more about the `getTargetPosition()` method
|
|
812
921
|
|
|
813
922
|
Here is an example of how you can use the two methods together. This is just one example, it is up to you on how you wish to combine different methods provided by the library
|
|
814
923
|
|
|
@@ -830,90 +939,6 @@ function myCallbackFunction(clickedPosition){
|
|
|
830
939
|
atwin.getTargetPosition(myCallbackFunction)
|
|
831
940
|
```
|
|
832
941
|
|
|
833
|
-
#### Attaching an image or video to a Media Screen
|
|
834
|
-
You can think of a media screen as a blank canvas whose content is totally up to you. If you wish to set the property media screen content, you may use the `attachMediaScreenContent()` method.
|
|
835
|
-
|
|
836
|
-
**Attach Media Screen Parameters**
|
|
837
|
-
|
|
838
|
-
| parameter | type | required | default | values |
|
|
839
|
-
| :----: | :----: | :---: | :---: | :---: |
|
|
840
|
-
| mediaScreenId | number | yes | none | id of object |
|
|
841
|
-
| mediaUrl | string | yes | none | valid public url to the media|
|
|
842
|
-
| mediaType | string | no | image | 'image' or 'video' |
|
|
843
|
-
|
|
844
|
-
**IMPORTANT:** The link to your media you provide to the mediaUrl **MUST** be publicly accessible and have the appropriate CORS headers, otherwise, you media will not load into the media screen.
|
|
845
|
-
|
|
846
|
-
In this example, we are using a link pointing to the media stored in an s3 bucket as the mediaUrl and a random media screen id. You will have to substitute the id with an actual id of a rendered media screen.
|
|
847
|
-
|
|
848
|
-
Example with image:
|
|
849
|
-
```typescript
|
|
850
|
-
const targetMediaScreenId = 12
|
|
851
|
-
const validUrl = 'https://stg-feelpet.s3.ap-northeast-1.amazonaws.com/0CB45E51-EC48-4727-906A-4CD8A13C0770.jpg'
|
|
852
|
-
|
|
853
|
-
atwin.attachMediaScreenContent(targetMediaScreenId,validUrl,'image')
|
|
854
|
-
```
|
|
855
|
-
|
|
856
|
-
Example with video:
|
|
857
|
-
```typescript
|
|
858
|
-
const targetMediaScreenId = 12
|
|
859
|
-
const validUrl = 'https://stg-feelpet.s3.ap-northeast-1.amazonaws.com/VID_20230203_165202.mp4'
|
|
860
|
-
|
|
861
|
-
atwin.attachMediaScreenContent(targetMediaScreenId,validUrl,'video')
|
|
862
|
-
```
|
|
863
|
-
|
|
864
|
-
When setting a video as the media screen content. You can use the `setVideoPlayback()` method to programmatically play,pause,mute,and unmute a video. You can navigate to the [playback controls section](#setting-video-playback-in-the-space) to learn more about the method. Here is an example on how to use it.
|
|
865
|
-
|
|
866
|
-
In this example, we are getting a random media screen from the `atwin._3DXObject` array which contains all the objects rendered in the space. Media screens whose media type is a video will have a variable called `planeElement` inside the object's `component` which contains an HTML video element that we can manipulate using the `setVideoPlayback()` method. Please take note that this variable is not acessible if the media type of the media screen content is an image.
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
*Interface used*
|
|
870
|
-
```typescript
|
|
871
|
-
export interface IObjectData {
|
|
872
|
-
collider?: any
|
|
873
|
-
object: IShowcaseObject
|
|
874
|
-
component: Scene.IComponent
|
|
875
|
-
node: Scene.INode
|
|
876
|
-
type?: string
|
|
877
|
-
}
|
|
878
|
-
```
|
|
879
|
-
|
|
880
|
-
*Example*
|
|
881
|
-
```typescript
|
|
882
|
-
const randomMediaScreen:IObjectData = atwin._3DXObject.find(obj => obj.object.object_data.object_type == 'FRAME')
|
|
883
|
-
|
|
884
|
-
setVideoPlayback('play',randomMediaScreen.component.planeElement)
|
|
885
|
-
```
|
|
886
|
-
|
|
887
|
-
You can use the [transform controls](#transforming-objects) to change the position, scale, and rotation of the media screen using the mouse cursor.
|
|
888
|
-
|
|
889
|
-
### Getting the coordinates of a clicked area in the 3D space
|
|
890
|
-
|
|
891
|
-
The 3D space you walk around is a three dimensional mesh under the hood. Every point in this space has an x,y,z coordinates. These are coordinates are important since it allows us to anchor objects into the 3D space and navigate around it. You may at times need the ability to get the coordinates of an area in the space. You can do this by utilizing the `getTargetPosition()` method.
|
|
892
|
-
|
|
893
|
-
**Parameter Reference**
|
|
894
|
-
| parameter | type | required | default | values |
|
|
895
|
-
| :----: | :----: | :---: | :---: | :---: |
|
|
896
|
-
| callback | Function | no | none | any valid function|
|
|
897
|
-
|
|
898
|
-
You can invoke the method by doing the following
|
|
899
|
-
|
|
900
|
-
```typescript
|
|
901
|
-
//pass a callback function to the method below to get
|
|
902
|
-
//the coordinates once the user has clicked on an area
|
|
903
|
-
function myCallbackFunction(coords){
|
|
904
|
-
//Line of code to do something else
|
|
905
|
-
return coords
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
atwin.getTargetPosition(myCallbackFunction)
|
|
909
|
-
```
|
|
910
|
-
|
|
911
|
-
The method accepts a callback function that is triggered once the user has clicked on an area in the space. The methods passes the x,y,z coordinates of the clicked position to the callback function you have passed into the method. When the method is invoked the original white circle pointer is replaced with the target pointer pictured below
|
|
912
|
-
|
|
913
|
-
<img src="https://drive.google.com/uc?id=1vD4ELNj_rjBVh3hOyYjMcO12Ffmse2Rz" width="50" height="50" />
|
|
914
|
-
|
|
915
|
-
The pointer goes back to normal after the user has clicked on any area inside the 3D space
|
|
916
|
-
|
|
917
942
|
### Setting Video Playback in the Space
|
|
918
943
|
|
|
919
944
|
Setting video playback refers to the act of adjusting various controls associated with the playback of a video in the space. It involves manipulating controls such as pause, play, mute, and unmute to modify the playback behavior according to user's preferences.
|
|
@@ -970,6 +995,435 @@ If you wish to pause the Animation of the 3D object, change the parameter to 'pa
|
|
|
970
995
|
atwin.setAnimationState('pause',17)
|
|
971
996
|
```
|
|
972
997
|
|
|
998
|
+
## Meeting Guide
|
|
999
|
+
|
|
1000
|
+
Hosting Live Virtual Meetings in 3D Space
|
|
1001
|
+
|
|
1002
|
+
The meeting feature in ArchiTwin Library is a virtual meeting inside a 3D Space. Each participant in the virtual meeting is represented by a 3D object called an avatar. The meeting feature enables an immersive way to conduct virtual gatherings and collaborative sessions inside a 3D Space. A popular application of this virtual meeting feature is for architectural design reviews. Architects, designers, and clients can gather in the shared 3D Space as avatars to explore and discuss the virtual representation of a building or project. This immersive approach allows stakeholders to experience the design from various perspectives, collaborate in real-time, and make informed decisions more efficiently, regardless of their physical locations.
|
|
1003
|
+
|
|
1004
|
+
The next few sections will explain how you can get started in creating or hosting your own virtual meeting inside your 3D Spaces.
|
|
1005
|
+
|
|
1006
|
+
### Create Meeting
|
|
1007
|
+
|
|
1008
|
+
Before you can start hosting your virtual meeting, we must first create a meeting.
|
|
1009
|
+
|
|
1010
|
+
````typescript
|
|
1011
|
+
atwin.createMeeting(
|
|
1012
|
+
spaceId: string,
|
|
1013
|
+
hostName: string,
|
|
1014
|
+
title: string,
|
|
1015
|
+
meetingStart: Date,
|
|
1016
|
+
meetingStatus: MeetingStatus
|
|
1017
|
+
duration: number,
|
|
1018
|
+
password: string,
|
|
1019
|
+
)
|
|
1020
|
+
````
|
|
1021
|
+
|
|
1022
|
+
The `createMeeting` method requires the following parameters to work.
|
|
1023
|
+
|
|
1024
|
+
| parameter | type | required | values |
|
|
1025
|
+
| :----: | :----: | :---: | :---: |
|
|
1026
|
+
| spaceId | string | yes | any string |
|
|
1027
|
+
| hostName | string | yes | any string|
|
|
1028
|
+
| title | string | yes | any string |
|
|
1029
|
+
| meetingStart | string | yes | any string |
|
|
1030
|
+
| meetingStatus | string | yes | '0', '1', '2', or '3'|
|
|
1031
|
+
| duration | number | yes | any number |
|
|
1032
|
+
| password | string | no | any string|
|
|
1033
|
+
|
|
1034
|
+
`spaceId` : string - The ID of the Space where the meeting will take place.
|
|
1035
|
+
|
|
1036
|
+
`hostName` : string - The meeting's host name.
|
|
1037
|
+
|
|
1038
|
+
`title` : string - The title of the meeting.
|
|
1039
|
+
|
|
1040
|
+
`meetingStart` : string - The date and time when meeting will start, `meetingStart` will follow ISO 8601 (e.g, '2023-07-19T17:34').
|
|
1041
|
+
format.
|
|
1042
|
+
|
|
1043
|
+
`meetingStatus` : [Meeting Status](#meeting-status) - The initial status of meeting will automatically set to `STARTED` if `meetingStart` is empty or null.
|
|
1044
|
+
|
|
1045
|
+
`duration` : number - Duration of the meeting in hour (e.g, 3, 2.5).
|
|
1046
|
+
|
|
1047
|
+
Note: `duration` can accept floating numbers like `1.5`. `1.5` is equivalent to 1 hour and 30 minutes.
|
|
1048
|
+
|
|
1049
|
+
`password` : string - Password of the meeting.
|
|
1050
|
+
|
|
1051
|
+
*Example:*
|
|
1052
|
+
````typescript
|
|
1053
|
+
<script lang='ts'>
|
|
1054
|
+
import * as atwin from 'architwin';
|
|
1055
|
+
|
|
1056
|
+
atwin.createMeeting(
|
|
1057
|
+
'1',
|
|
1058
|
+
'John Doe',
|
|
1059
|
+
'Daily Meeting',
|
|
1060
|
+
'2023-07-19T17:34',
|
|
1061
|
+
1.5,
|
|
1062
|
+
'password123',
|
|
1063
|
+
)
|
|
1064
|
+
|
|
1065
|
+
</script>
|
|
1066
|
+
````
|
|
1067
|
+
|
|
1068
|
+
Successfuly invoking the `createMeeting` method will return an object containing the meeting password, and meeting URL for host and guest which is used in another method called [startMeeting](#start-meeting).
|
|
1069
|
+
|
|
1070
|
+
*Return Example:*
|
|
1071
|
+
````json
|
|
1072
|
+
{
|
|
1073
|
+
"host": "http://localhost:5173/?meetingId=290d9f7d-fb14-4c8f-9d95-695cac59e44b&role=host",
|
|
1074
|
+
"guest": "http://localhost:5173/?meetingId=290d9f7d-fb14-4c8f-9d95-695cac59e44b&role=guest",
|
|
1075
|
+
"meeting_id": "290d9f7d-fb14-4c8f-9d95-695cac59e44b",
|
|
1076
|
+
"meeting_password" : "password123"
|
|
1077
|
+
}
|
|
1078
|
+
````
|
|
1079
|
+
|
|
1080
|
+
### Start Meeting
|
|
1081
|
+
|
|
1082
|
+
Star the meeting using `startMeeting` method.
|
|
1083
|
+
````typescript
|
|
1084
|
+
atwin.startMeeting(meetingUrl: string, meetingPassword?: string, meetingConfig?: MeetingConfig)
|
|
1085
|
+
````
|
|
1086
|
+
The `startMeeting` method requires the following parameters to work.
|
|
1087
|
+
|
|
1088
|
+
| parameter | type | required | values |
|
|
1089
|
+
| :----: | :----: | :---: | :---: |
|
|
1090
|
+
| meetingUrl | string | yes | valid public URL |
|
|
1091
|
+
| meetingPassword | string | no | any string|
|
|
1092
|
+
| meetingConfig | MeetingConfig | no | MeetingConfig object |
|
|
1093
|
+
|
|
1094
|
+
This `startMeeting` method will initialize the meeting and display pre-meeting settings.
|
|
1095
|
+
|
|
1096
|
+
`meetingUrl` : string - The URL that is generated from `createMeeting` method.
|
|
1097
|
+
|
|
1098
|
+
`meetingPassword` : string - The password set during creation of the meeting.
|
|
1099
|
+
|
|
1100
|
+
`meetingConfig` : [MeetingConfig](#meeting-config-options) - You can pass `MeetingConfig` object to configure and customize the meeting experience.
|
|
1101
|
+
|
|
1102
|
+
NOTE: Please check [MeetingConfig](#meeting-config-options) interface to see more customization options.
|
|
1103
|
+
|
|
1104
|
+
*Example:*
|
|
1105
|
+
````typescript
|
|
1106
|
+
atwin.startMeeting(
|
|
1107
|
+
meetingUrl: "http://localhost:5173/?meetingId=290d9f7d-fb14-4c8f-9d95-695cac59e44b&role=host",
|
|
1108
|
+
meetingPassword: 'password123',
|
|
1109
|
+
meetingConfig: {
|
|
1110
|
+
customColors: {
|
|
1111
|
+
primary900: '16 29 70',
|
|
1112
|
+
primary200: '141 164 239',
|
|
1113
|
+
primary: '58 92 204',
|
|
1114
|
+
}
|
|
1115
|
+
deviceControl: {
|
|
1116
|
+
videoInput: false,
|
|
1117
|
+
audioInput: true,
|
|
1118
|
+
audioOutput: true
|
|
1119
|
+
},
|
|
1120
|
+
meetingBarPosition: 'top',
|
|
1121
|
+
}
|
|
1122
|
+
)
|
|
1123
|
+
````
|
|
1124
|
+
Successfuly invoking the `startMeeting` method will start the meeting.
|
|
1125
|
+
|
|
1126
|
+
### Stop Meeting
|
|
1127
|
+
````typescript
|
|
1128
|
+
atwin.stopMeeting()
|
|
1129
|
+
````
|
|
1130
|
+
To end the current or initialized meeting use `stopMeeting` method.
|
|
1131
|
+
|
|
1132
|
+
Note: `stopMeeting` method will have the same result of using hang-up button in meeting session control.
|
|
1133
|
+
|
|
1134
|
+
### Utility Methods
|
|
1135
|
+
|
|
1136
|
+
**Get Meeting Participants**
|
|
1137
|
+
````typescript
|
|
1138
|
+
atwin.getMeetingParticipants()
|
|
1139
|
+
````
|
|
1140
|
+
This method will return the current meeting participants' space data (e.g, position and rotation).
|
|
1141
|
+
|
|
1142
|
+
*Return Example:*
|
|
1143
|
+
````json
|
|
1144
|
+
[
|
|
1145
|
+
{
|
|
1146
|
+
id: 123,
|
|
1147
|
+
name: "John Doe",
|
|
1148
|
+
avatar: {
|
|
1149
|
+
model: "myAvatar.gltf",
|
|
1150
|
+
},
|
|
1151
|
+
avatarConfig: {
|
|
1152
|
+
scale: 1,
|
|
1153
|
+
height: 0,
|
|
1154
|
+
laserOrigin: { x: 0, y: 0, z: 0 },
|
|
1155
|
+
},
|
|
1156
|
+
position: { x: 1, y: 2, z: 1 },
|
|
1157
|
+
rotation: { x: 1, y: 1 },
|
|
1158
|
+
},
|
|
1159
|
+
]
|
|
1160
|
+
````
|
|
1161
|
+
|
|
1162
|
+
**Get all meeting in specific Space**
|
|
1163
|
+
````typescript
|
|
1164
|
+
atwin.getSpaceMeetings(spaceId: string)
|
|
1165
|
+
````
|
|
1166
|
+
This function will return a list of all meeting in a specific Space.
|
|
1167
|
+
|
|
1168
|
+
*Example:*
|
|
1169
|
+
````typescript
|
|
1170
|
+
atwin.getSpaceMeetings(spaceId: 1)
|
|
1171
|
+
````
|
|
1172
|
+
|
|
1173
|
+
*Return Example:*
|
|
1174
|
+
````json
|
|
1175
|
+
{
|
|
1176
|
+
"status": "success",
|
|
1177
|
+
"data": [
|
|
1178
|
+
{
|
|
1179
|
+
"id": 9,
|
|
1180
|
+
"space_id": "1",
|
|
1181
|
+
"meeting_id": "04acd056-e563-46bb-a585-9069c4e75160",
|
|
1182
|
+
"host_name": "John Doe",
|
|
1183
|
+
"title": "Meeting in Space",
|
|
1184
|
+
"meeting_start": "2023-07-30 15:50:00",
|
|
1185
|
+
"meeting_status": 3,
|
|
1186
|
+
"duration": null,
|
|
1187
|
+
"password": null,
|
|
1188
|
+
"created_on": "2023-07-19 05:21:24",
|
|
1189
|
+
"created_by": 5,
|
|
1190
|
+
"modified_on": "2023-07-21 09:06:54",
|
|
1191
|
+
"modified_by": 5,
|
|
1192
|
+
"deleted_on": "2023-07-21 09:06:54",
|
|
1193
|
+
"deleted_by": 5,
|
|
1194
|
+
"is_deleted": false,
|
|
1195
|
+
"is_read": null,
|
|
1196
|
+
"is_new": null
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
"id": 10,
|
|
1200
|
+
"space_id": "1",
|
|
1201
|
+
"meeting_id": "35520e9d-1f1e-4135-9f7b-0e55cb7b9e05",
|
|
1202
|
+
"host_name": "John Smith",
|
|
1203
|
+
"title": "Space Meeting",
|
|
1204
|
+
"meeting_start": "2023-07-19 13:30:00",
|
|
1205
|
+
"meeting_status": 1,
|
|
1206
|
+
"duration": null,
|
|
1207
|
+
"password": null,
|
|
1208
|
+
"created_on": "2023-07-19 05:21:44",
|
|
1209
|
+
"created_by": 5,
|
|
1210
|
+
"modified_on": "2023-07-19 05:21:44",
|
|
1211
|
+
"modified_by": 5,
|
|
1212
|
+
"deleted_on": "2023-07-19 05:21:44",
|
|
1213
|
+
"deleted_by": 5,
|
|
1214
|
+
"is_deleted": false,
|
|
1215
|
+
"is_read": null,
|
|
1216
|
+
"is_new": null
|
|
1217
|
+
},
|
|
1218
|
+
]
|
|
1219
|
+
}
|
|
1220
|
+
````
|
|
1221
|
+
|
|
1222
|
+
**Get Meeting**
|
|
1223
|
+
````typescript
|
|
1224
|
+
atwin.getMeeting(meetingId: string)
|
|
1225
|
+
````
|
|
1226
|
+
This method will return meeting details.
|
|
1227
|
+
|
|
1228
|
+
*Example:*
|
|
1229
|
+
````typescript
|
|
1230
|
+
atwin.getMeeting(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b')
|
|
1231
|
+
````
|
|
1232
|
+
|
|
1233
|
+
*Return Example:*
|
|
1234
|
+
````json
|
|
1235
|
+
{
|
|
1236
|
+
"status": "success",
|
|
1237
|
+
"data": {
|
|
1238
|
+
"id": 16,
|
|
1239
|
+
"space_id": "2",
|
|
1240
|
+
"meeting_id": "bac67012-d2ff-47f6-b427-fc2538caac2b",
|
|
1241
|
+
"host_name": "John Doe",
|
|
1242
|
+
"title": "Meeting in Space",
|
|
1243
|
+
"meeting_start": null,
|
|
1244
|
+
"meeting_status": 1,
|
|
1245
|
+
"duration": null,
|
|
1246
|
+
"password": null,
|
|
1247
|
+
"created_on": "2023-07-20 08:40:32",
|
|
1248
|
+
"created_by": 5,
|
|
1249
|
+
"modified_on": "2023-07-20 08:40:32",
|
|
1250
|
+
"modified_by": 5,
|
|
1251
|
+
"deleted_on": "2023-07-20 08:40:32",
|
|
1252
|
+
"deleted_by": 5,
|
|
1253
|
+
"is_deleted": false,
|
|
1254
|
+
"is_read": null,
|
|
1255
|
+
"is_new": null
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
````
|
|
1259
|
+
|
|
1260
|
+
**Check meeting if exist**
|
|
1261
|
+
````typescript
|
|
1262
|
+
atwin.isMeetingExist(meetingId: string)
|
|
1263
|
+
````
|
|
1264
|
+
This method will check if meeting exists and returns a boolean.
|
|
1265
|
+
|
|
1266
|
+
**Check meeting if active**
|
|
1267
|
+
````typescript
|
|
1268
|
+
atwin.isMeetingActive(meetingId: string)
|
|
1269
|
+
````
|
|
1270
|
+
This method will check if meeting is active and return a boolean.
|
|
1271
|
+
|
|
1272
|
+
Note: Active meeting refers to `MeetingStatus.STARTED` or `MeetingStatus.SCHEDULED`.
|
|
1273
|
+
|
|
1274
|
+
### Update Meeting Details
|
|
1275
|
+
|
|
1276
|
+
Methods to update meeting details.
|
|
1277
|
+
|
|
1278
|
+
All update methods will return a response.
|
|
1279
|
+
|
|
1280
|
+
````typescript
|
|
1281
|
+
atwin.updateMeetingTitle(meetingId: string, meetingTitle: string)
|
|
1282
|
+
````
|
|
1283
|
+
|
|
1284
|
+
````typescript
|
|
1285
|
+
atwin.updateMeetingStart(meetingId: string, meetingStart: string)
|
|
1286
|
+
````
|
|
1287
|
+
|
|
1288
|
+
````typescript
|
|
1289
|
+
atwin.updateMeetingStatus(meetingId: string, meetingStatus: string)
|
|
1290
|
+
````
|
|
1291
|
+
|
|
1292
|
+
````typescript
|
|
1293
|
+
atwin.updateMeetingSpace(meetingId: string, spaceId: string)
|
|
1294
|
+
````
|
|
1295
|
+
|
|
1296
|
+
### Meeting Info
|
|
1297
|
+
````typescript
|
|
1298
|
+
export interface MeetingInfo {
|
|
1299
|
+
space_id: number;
|
|
1300
|
+
meeting_id?: string;
|
|
1301
|
+
host_name?: string;
|
|
1302
|
+
title?: string;
|
|
1303
|
+
meeting_start?: Date;
|
|
1304
|
+
meeting_status?: MeetingStatus;
|
|
1305
|
+
duration?: number;
|
|
1306
|
+
password?: string;
|
|
1307
|
+
}
|
|
1308
|
+
````
|
|
1309
|
+
|
|
1310
|
+
`space_id` : number - The id of the Space.
|
|
1311
|
+
|
|
1312
|
+
`meeting_id` : string - The meeting ID.
|
|
1313
|
+
|
|
1314
|
+
`host_name` : string - The name of host of the meeting.
|
|
1315
|
+
|
|
1316
|
+
`title` : string - The title of the meeting.
|
|
1317
|
+
|
|
1318
|
+
`meeting_start` : Date - The date when meeting expected to start.
|
|
1319
|
+
|
|
1320
|
+
`meeting_status` : [MeetingStatus](#meeting-status) - The status of the meeting.
|
|
1321
|
+
|
|
1322
|
+
`duration` : number - The duration of the meeting.
|
|
1323
|
+
|
|
1324
|
+
`password` : string - The password of the meeting.
|
|
1325
|
+
|
|
1326
|
+
### Meeting Config Options
|
|
1327
|
+
````typescript
|
|
1328
|
+
export interface MeetingConfig {
|
|
1329
|
+
customColors?: MeetingCustomColors;
|
|
1330
|
+
customAvatars?: Avatar[];
|
|
1331
|
+
deviceControl?: MeetingDeviceControl;
|
|
1332
|
+
meetingBarPosition?: MeetingBarPosition;
|
|
1333
|
+
}
|
|
1334
|
+
````
|
|
1335
|
+
|
|
1336
|
+
`customColors` : [MeetingCustomColors](#meeting-custom-colors) - This property allows you to personalize the theme of the meeting bar or modals by providing custom colors.
|
|
1337
|
+
|
|
1338
|
+
`customAvatars` : [Avatar](#meeting-custom-avatar)[ ] - This property allows you to have the option to use your own avatars in the meeting.
|
|
1339
|
+
|
|
1340
|
+
Note: You cannot have both the default avatars and custom avatar in avatar selection.
|
|
1341
|
+
|
|
1342
|
+
`deviceControl` : [MeetingDeviceControl](#meeting-device-control) - This property allows you to determine whether participants can use their video input, audio input, and audio output devices during the meeting.
|
|
1343
|
+
|
|
1344
|
+
`meetingBarPosition` : [MeetingBarPosition](#meeting-bar-position) - This property allows you to specify the position of the meeting bar or modals during the meeting.
|
|
1345
|
+
|
|
1346
|
+
#### Meeting Custom Colors
|
|
1347
|
+
````typescript
|
|
1348
|
+
export interface MeetingCustomColors {
|
|
1349
|
+
primary?: string,
|
|
1350
|
+
primary900?: string,
|
|
1351
|
+
primary200?: string,
|
|
1352
|
+
secondary?: string,
|
|
1353
|
+
gray?: string,
|
|
1354
|
+
success?: string,
|
|
1355
|
+
danger?: string,
|
|
1356
|
+
black?: string,
|
|
1357
|
+
white?: string,
|
|
1358
|
+
gray100?: string,
|
|
1359
|
+
gray200?: string,
|
|
1360
|
+
gray300?: string,
|
|
1361
|
+
gray400?: string,
|
|
1362
|
+
gray500?: string,
|
|
1363
|
+
gray600?: string,
|
|
1364
|
+
gray700?: string,
|
|
1365
|
+
gray800?: string,
|
|
1366
|
+
}
|
|
1367
|
+
````
|
|
1368
|
+
|
|
1369
|
+
*Example:*
|
|
1370
|
+
````typescript
|
|
1371
|
+
const meetingCustomColors: MeetingCustomColors = {
|
|
1372
|
+
primary900: '16 29 70',
|
|
1373
|
+
primary200: '141 164 239',
|
|
1374
|
+
primary: '58 92 204',
|
|
1375
|
+
gray800: '250 250 252',
|
|
1376
|
+
gray700: '233 229 239',
|
|
1377
|
+
gray600: '201 196 209',
|
|
1378
|
+
gray500: '174 169 184',
|
|
1379
|
+
gray400: '126 122 136',
|
|
1380
|
+
gray300: '87 83 95',
|
|
1381
|
+
gray200: '57 54 62',
|
|
1382
|
+
gray100: '38 36 42',
|
|
1383
|
+
}
|
|
1384
|
+
````
|
|
1385
|
+
|
|
1386
|
+
#### Meeting Custom Avatar
|
|
1387
|
+
````typescript
|
|
1388
|
+
export interface Avatar {
|
|
1389
|
+
model: string;
|
|
1390
|
+
thumbnail: string;
|
|
1391
|
+
}
|
|
1392
|
+
````
|
|
1393
|
+
`model` : string - Source link of the GLB file or 3d model object.
|
|
1394
|
+
|
|
1395
|
+
`thumbnail` : string - Source link of the thumbnail image.
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
#### Meeting Device Control
|
|
1399
|
+
````typescript
|
|
1400
|
+
export interface MeetingDeviceControl {
|
|
1401
|
+
videoInput: boolean;
|
|
1402
|
+
audioInput: boolean;
|
|
1403
|
+
audioOutput: boolean;
|
|
1404
|
+
}
|
|
1405
|
+
````
|
|
1406
|
+
`videoInput` : boolean - Enable or disable video input device.
|
|
1407
|
+
|
|
1408
|
+
`audioInput` : boolean - Enable or disable audio input device.
|
|
1409
|
+
|
|
1410
|
+
`audioOutput` : boolean - Enable or disable audio output device.
|
|
1411
|
+
|
|
1412
|
+
#### Meeting Bar Position
|
|
1413
|
+
````typescript
|
|
1414
|
+
export type MeetingBarPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
1415
|
+
````
|
|
1416
|
+
|
|
1417
|
+
#### Meeting Status
|
|
1418
|
+
````typescript
|
|
1419
|
+
export const enum MeetingStatus {
|
|
1420
|
+
SCHEDULED = 0,
|
|
1421
|
+
STARTED = 1,
|
|
1422
|
+
STOPPED = 2,
|
|
1423
|
+
CANCELLED = 3,
|
|
1424
|
+
}
|
|
1425
|
+
````
|
|
1426
|
+
|
|
973
1427
|
## Function Reference
|
|
974
1428
|
|
|
975
1429
|
Some Functions are **async**; when invoking them, Use keyword **await** or **.then** syntax
|
|
@@ -1299,6 +1753,148 @@ showObjectDimensions(selected:IObjectData)
|
|
|
1299
1753
|
</script>
|
|
1300
1754
|
````
|
|
1301
1755
|
|
|
1756
|
+
### Meeting
|
|
1757
|
+
|
|
1758
|
+
````typescript
|
|
1759
|
+
|
|
1760
|
+
createMeeting(
|
|
1761
|
+
spaceId: string,
|
|
1762
|
+
hostName: string,
|
|
1763
|
+
title: string,
|
|
1764
|
+
meetingStart: string,
|
|
1765
|
+
meetingStatus: MeetingStatus
|
|
1766
|
+
duration: string,
|
|
1767
|
+
password: string,
|
|
1768
|
+
)
|
|
1769
|
+
|
|
1770
|
+
// returns an object consist of meeting URL, meeting ID, meeting password
|
|
1771
|
+
// this is an async function that returns a Promise
|
|
1772
|
+
|
|
1773
|
+
startMeeting(meetingUrl: string, meetingPassword?: string, meetingConfig: MeetingConfig)
|
|
1774
|
+
// meetingUrl - URL generated by `createMeeting` function
|
|
1775
|
+
// meetingPassword - optional but default is null
|
|
1776
|
+
// meetingConfig - optional but default is null
|
|
1777
|
+
// this is an void async function
|
|
1778
|
+
|
|
1779
|
+
stopMeeting()
|
|
1780
|
+
// this is an async function
|
|
1781
|
+
|
|
1782
|
+
getMeetingParticipants()
|
|
1783
|
+
// return a list of participants
|
|
1784
|
+
// this is an async function
|
|
1785
|
+
|
|
1786
|
+
getSpaceMeetings(spaceId: string)
|
|
1787
|
+
// spaceId - the id of Space
|
|
1788
|
+
// returns a list if meetings
|
|
1789
|
+
// this is an async function
|
|
1790
|
+
|
|
1791
|
+
getMeeting(meetingId: string)
|
|
1792
|
+
// meetingId - the id of the meeting
|
|
1793
|
+
// returns a meeting
|
|
1794
|
+
// this is an async function
|
|
1795
|
+
|
|
1796
|
+
isMeetingExist(meetingId: string)
|
|
1797
|
+
// meetingId - the id of the meeting
|
|
1798
|
+
// returns a boolean
|
|
1799
|
+
// this is an async function
|
|
1800
|
+
|
|
1801
|
+
isMeetingActive(meetingId: string)
|
|
1802
|
+
// meetingId - the id of the meeting
|
|
1803
|
+
// returns a boolean
|
|
1804
|
+
// this is an async function
|
|
1805
|
+
|
|
1806
|
+
updateMeetingTitle(meetingId: string, meetingTitle: string)
|
|
1807
|
+
// meetingId - the id of the meeting
|
|
1808
|
+
// meetingTitle - the new meeting title
|
|
1809
|
+
// returns a response status
|
|
1810
|
+
// this is an async function
|
|
1811
|
+
|
|
1812
|
+
updateMeetingStart(meetingId: string, meetingStart: string)
|
|
1813
|
+
// meetingId - the id of the meeting
|
|
1814
|
+
// meetingStart - the new date when meeting scheduled to start
|
|
1815
|
+
// returns a response status
|
|
1816
|
+
// this is an async function
|
|
1817
|
+
|
|
1818
|
+
updateMeetingStatus(meetingId: string, meetingStatus: string)
|
|
1819
|
+
// meetingId - the id of the meeting
|
|
1820
|
+
// meetingStatus - can be 0 for SCHEDULED, 1 for STARTED, 2 for STOPPED, 3 for CANCELLED
|
|
1821
|
+
// returns a response status
|
|
1822
|
+
// this is an async function
|
|
1823
|
+
|
|
1824
|
+
updateMeetingSpace(meetingId: string, spaceId: string)
|
|
1825
|
+
// meetingId - the id of the meeting
|
|
1826
|
+
// spaceId - the ID of the new Space
|
|
1827
|
+
// returns a response status
|
|
1828
|
+
// this is an async function
|
|
1829
|
+
````
|
|
1830
|
+
|
|
1831
|
+
**Example**
|
|
1832
|
+
````typescript
|
|
1833
|
+
<script lang="ts">
|
|
1834
|
+
import * as atwin from 'architwin';
|
|
1835
|
+
...
|
|
1836
|
+
|
|
1837
|
+
// create a meeting and generate meeting URL
|
|
1838
|
+
atwin.createMeeting(
|
|
1839
|
+
'1',
|
|
1840
|
+
'John Doe',
|
|
1841
|
+
'Daily Meeting',
|
|
1842
|
+
'2023-07-19T17:34',
|
|
1843
|
+
1.5,
|
|
1844
|
+
'password123',
|
|
1845
|
+
)
|
|
1846
|
+
|
|
1847
|
+
// start a meeting
|
|
1848
|
+
atwin.startMeeting(
|
|
1849
|
+
meetingUrl: "http://www.example.com/?meetingId=290d9f7d-fb14-4c8f-9d95-695cac59e44b&role=host",
|
|
1850
|
+
meetingPassword: 'password123',
|
|
1851
|
+
meetingConfig: {
|
|
1852
|
+
customColors: {
|
|
1853
|
+
primary900: '16 29 70',
|
|
1854
|
+
primary200: '141 164 239',
|
|
1855
|
+
primary: '58 92 204',
|
|
1856
|
+
}
|
|
1857
|
+
deviceControl: {
|
|
1858
|
+
videoInput: false,
|
|
1859
|
+
audioInput: true,
|
|
1860
|
+
audioOutput: true
|
|
1861
|
+
},
|
|
1862
|
+
meetingBarPosition: 'top',
|
|
1863
|
+
}
|
|
1864
|
+
)
|
|
1865
|
+
|
|
1866
|
+
// stop current or initialized meeting
|
|
1867
|
+
atwin.stopMeeting()
|
|
1868
|
+
|
|
1869
|
+
// get all current meeting's participant
|
|
1870
|
+
atwin.getMeetingParticipants()
|
|
1871
|
+
|
|
1872
|
+
// get all meetings in specific Space
|
|
1873
|
+
atwin.getSpaceMeetings(spaceId: 1)
|
|
1874
|
+
|
|
1875
|
+
// get specific meeting
|
|
1876
|
+
await atwin.getMeeting(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b')
|
|
1877
|
+
|
|
1878
|
+
// check if meeting exist
|
|
1879
|
+
atwin.isMeetingExist(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b')
|
|
1880
|
+
|
|
1881
|
+
// check if meeting is active or on-going
|
|
1882
|
+
atwin.isMeetingActive(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b')
|
|
1883
|
+
|
|
1884
|
+
// updates the meeting title
|
|
1885
|
+
atwin.updateMeetingTitle(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b', meetingTitle: 'New Meeting Title')
|
|
1886
|
+
|
|
1887
|
+
// updates the date when the meeting schedule to start
|
|
1888
|
+
atwin.updateMeetingStart(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b', meetingStart: '2023-07-19T17:34')
|
|
1889
|
+
|
|
1890
|
+
// updates the meeting status
|
|
1891
|
+
atwin.updateMeetingStatus(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b', meetingStatus: '0')
|
|
1892
|
+
|
|
1893
|
+
// updates the meeting space ID
|
|
1894
|
+
atwin.updateMeetingSpace(meetingId: 'bac67012-d2ff-47f6-b427-fc2538caac2b', spaceId: 2)
|
|
1895
|
+
|
|
1896
|
+
</script>
|
|
1897
|
+
````
|
|
1302
1898
|
**To Do:**
|
|
1303
1899
|
* when adding an object it should specify the position, scale, rotate of the object
|
|
1304
1900
|
for example:
|
|
@@ -1326,4 +1922,4 @@ for example:
|
|
|
1326
1922
|
* we can do this by returning the media screen payload from addMediaScreen()
|
|
1327
1923
|
|
|
1328
1924
|
* deleteMediaScreen()
|
|
1329
|
-
* hideMediaScreen()
|
|
1925
|
+
* hideMediaScreen()
|