@dcl/ecs 7.0.0-3548419522.commit-ddcf4b7 → 7.0.0

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.
Files changed (212) hide show
  1. package/README.md +2 -3
  2. package/dist/components/extended/Animator.d.ts +49 -0
  3. package/dist/components/extended/Animator.js +58 -0
  4. package/dist/components/extended/Material.d.ts +42 -0
  5. package/dist/components/extended/Material.js +42 -0
  6. package/dist/components/extended/MeshCollider.d.ts +42 -0
  7. package/dist/components/extended/MeshCollider.js +41 -0
  8. package/dist/components/extended/MeshRenderer.d.ts +40 -0
  9. package/dist/components/extended/MeshRenderer.js +27 -0
  10. package/dist/components/generated/Animator.gen.d.ts +8 -0
  11. package/dist/components/generated/Animator.gen.js +19 -0
  12. package/dist/components/generated/AudioSource.gen.d.ts +8 -0
  13. package/dist/components/generated/AudioSource.gen.js +19 -0
  14. package/dist/components/generated/AudioStream.gen.d.ts +8 -0
  15. package/dist/components/generated/AudioStream.gen.js +19 -0
  16. package/dist/components/generated/AvatarAttach.gen.d.ts +8 -0
  17. package/dist/components/generated/AvatarAttach.gen.js +19 -0
  18. package/dist/components/generated/AvatarModifierArea.gen.d.ts +8 -0
  19. package/dist/components/generated/AvatarModifierArea.gen.js +19 -0
  20. package/dist/components/generated/AvatarShape.gen.d.ts +8 -0
  21. package/dist/components/generated/AvatarShape.gen.js +19 -0
  22. package/dist/components/generated/Billboard.gen.d.ts +8 -0
  23. package/dist/components/generated/Billboard.gen.js +19 -0
  24. package/dist/components/generated/CameraMode.gen.d.ts +8 -0
  25. package/dist/components/generated/CameraMode.gen.js +19 -0
  26. package/dist/components/generated/CameraModeArea.gen.d.ts +8 -0
  27. package/dist/components/generated/CameraModeArea.gen.js +19 -0
  28. package/dist/components/generated/GltfContainer.gen.d.ts +8 -0
  29. package/dist/components/generated/GltfContainer.gen.js +19 -0
  30. package/dist/components/generated/Material.gen.d.ts +8 -0
  31. package/dist/components/generated/Material.gen.js +19 -0
  32. package/dist/components/generated/MeshCollider.gen.d.ts +8 -0
  33. package/dist/components/generated/MeshCollider.gen.js +19 -0
  34. package/dist/components/generated/MeshRenderer.gen.d.ts +8 -0
  35. package/dist/components/generated/MeshRenderer.gen.js +19 -0
  36. package/dist/components/generated/NftShape.gen.d.ts +8 -0
  37. package/dist/components/generated/NftShape.gen.js +19 -0
  38. package/dist/components/generated/PointerEventsResult.gen.d.ts +8 -0
  39. package/dist/components/generated/PointerEventsResult.gen.js +19 -0
  40. package/dist/components/generated/PointerHoverFeedback.gen.d.ts +8 -0
  41. package/dist/components/generated/PointerHoverFeedback.gen.js +19 -0
  42. package/dist/components/generated/PointerLock.gen.d.ts +8 -0
  43. package/dist/components/generated/PointerLock.gen.js +19 -0
  44. package/dist/components/generated/Raycast.gen.d.ts +8 -0
  45. package/dist/components/generated/Raycast.gen.js +19 -0
  46. package/dist/components/generated/RaycastResult.gen.d.ts +8 -0
  47. package/dist/components/generated/RaycastResult.gen.js +19 -0
  48. package/dist/components/generated/TextShape.gen.d.ts +8 -0
  49. package/dist/components/generated/TextShape.gen.js +19 -0
  50. package/dist/components/generated/UiBackground.gen.d.ts +8 -0
  51. package/dist/components/generated/UiBackground.gen.js +19 -0
  52. package/dist/components/generated/UiText.gen.d.ts +8 -0
  53. package/dist/components/generated/UiText.gen.js +19 -0
  54. package/dist/components/generated/UiTransform.gen.d.ts +8 -0
  55. package/dist/components/generated/UiTransform.gen.js +19 -0
  56. package/dist/components/generated/VisibilityComponent.gen.d.ts +8 -0
  57. package/dist/components/generated/VisibilityComponent.gen.js +19 -0
  58. package/dist/components/generated/global.gen.d.ts +42 -0
  59. package/dist/components/generated/global.gen.js +23 -0
  60. package/dist/components/generated/ids.gen.d.ts +28 -0
  61. package/dist/components/generated/ids.gen.js +29 -0
  62. package/dist/components/generated/index.gen.d.ts +99 -0
  63. package/dist/components/generated/index.gen.js +96 -0
  64. package/dist/components/generated/pb/decentraland/common/colors.gen.d.ts +26 -0
  65. package/dist/components/generated/pb/decentraland/common/colors.gen.js +95 -0
  66. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +56 -0
  67. package/dist/components/generated/pb/decentraland/common/texture.gen.js +139 -0
  68. package/dist/components/generated/pb/decentraland/common/vectors.gen.d.ts +36 -0
  69. package/dist/components/generated/pb/decentraland/common/vectors.gen.js +126 -0
  70. package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +30 -0
  71. package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.js +109 -0
  72. package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +17 -0
  73. package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +58 -0
  74. package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +14 -0
  75. package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +46 -0
  76. package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +18 -0
  77. package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +47 -0
  78. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +18 -0
  79. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +62 -0
  80. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +38 -0
  81. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +129 -0
  82. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +18 -0
  83. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.js +45 -0
  84. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +12 -0
  85. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +33 -0
  86. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +14 -0
  87. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +40 -0
  88. package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.d.ts +4 -0
  89. package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +7 -0
  90. package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.d.ts +1 -0
  91. package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.js +3 -0
  92. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +16 -0
  93. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +19 -0
  94. package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.d.ts +15 -0
  95. package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +19 -0
  96. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +12 -0
  97. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +34 -0
  98. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +82 -0
  99. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +231 -0
  100. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +70 -0
  101. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +176 -0
  102. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +65 -0
  103. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +196 -0
  104. package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +41 -0
  105. package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +73 -0
  106. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +34 -0
  107. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +89 -0
  108. package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.d.ts +46 -0
  109. package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.js +126 -0
  110. package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +11 -0
  111. package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +34 -0
  112. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +19 -0
  113. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +58 -0
  114. package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +32 -0
  115. package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +150 -0
  116. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +41 -0
  117. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +176 -0
  118. package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +13 -0
  119. package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +35 -0
  120. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +21 -0
  121. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +59 -0
  122. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +149 -0
  123. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +454 -0
  124. package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +12 -0
  125. package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +34 -0
  126. package/dist/components/generated/pb/google/protobuf/descriptor.gen.d.ts +378 -0
  127. package/dist/components/generated/pb/google/protobuf/descriptor.gen.js +1476 -0
  128. package/dist/components/generated/types.gen.d.ts +6 -0
  129. package/dist/components/generated/types.gen.js +8 -0
  130. package/dist/components/index.d.ts +15 -0
  131. package/dist/components/index.js +16 -0
  132. package/dist/components/legacy/Transform.d.ts +27 -0
  133. package/dist/components/legacy/Transform.js +55 -0
  134. package/dist/components/types.d.ts +4 -0
  135. package/dist/components/types.js +1 -0
  136. package/dist/engine/component.d.ts +72 -0
  137. package/dist/engine/component.js +130 -0
  138. package/dist/engine/entity-utils.d.ts +18 -0
  139. package/dist/engine/entity-utils.js +34 -0
  140. package/dist/engine/entity.d.ts +17 -0
  141. package/dist/engine/entity.js +55 -0
  142. package/dist/engine/index.d.ts +12 -0
  143. package/dist/engine/index.js +172 -0
  144. package/dist/engine/input.d.ts +36 -0
  145. package/dist/engine/input.js +156 -0
  146. package/dist/engine/readonly.d.ts +29 -0
  147. package/dist/engine/readonly.js +6 -0
  148. package/dist/engine/systems.d.ts +16 -0
  149. package/dist/engine/systems.js +44 -0
  150. package/dist/engine/types.d.ts +148 -0
  151. package/dist/engine/types.js +1 -0
  152. package/dist/index.d.ts +16 -4679
  153. package/dist/index.js +24 -15202
  154. package/dist/runtime/initialization/index.d.ts +21 -0
  155. package/dist/runtime/initialization/index.js +20 -0
  156. package/dist/runtime/invariant.d.ts +1 -0
  157. package/dist/runtime/invariant.js +8 -0
  158. package/dist/runtime/types.d.ts +22 -0
  159. package/dist/runtime/types.js +19 -0
  160. package/dist/schemas/Array.d.ts +5 -0
  161. package/dist/schemas/Array.js +24 -0
  162. package/dist/schemas/ISchema.d.ts +9 -0
  163. package/dist/schemas/ISchema.js +1 -0
  164. package/dist/schemas/Map.d.ts +19 -0
  165. package/dist/schemas/Map.js +31 -0
  166. package/dist/schemas/Optional.d.ts +5 -0
  167. package/dist/schemas/Optional.js +25 -0
  168. package/dist/schemas/basic/Boolean.d.ts +5 -0
  169. package/dist/schemas/basic/Boolean.js +14 -0
  170. package/dist/schemas/basic/Enum.d.ts +5 -0
  171. package/dist/schemas/basic/Enum.js +16 -0
  172. package/dist/schemas/basic/Float.d.ts +9 -0
  173. package/dist/schemas/basic/Float.js +28 -0
  174. package/dist/schemas/basic/Integer.d.ts +17 -0
  175. package/dist/schemas/basic/Integer.js +56 -0
  176. package/dist/schemas/basic/String.d.ts +9 -0
  177. package/dist/schemas/basic/String.js +18 -0
  178. package/dist/schemas/custom/Color3.d.ts +13 -0
  179. package/dist/schemas/custom/Color3.js +20 -0
  180. package/dist/schemas/custom/Color4.d.ts +14 -0
  181. package/dist/schemas/custom/Color4.js +22 -0
  182. package/dist/schemas/custom/Entity.d.ts +6 -0
  183. package/dist/schemas/custom/Entity.js +14 -0
  184. package/dist/schemas/custom/Quaternion.d.ts +14 -0
  185. package/dist/schemas/custom/Quaternion.js +22 -0
  186. package/dist/schemas/custom/Vector3.d.ts +13 -0
  187. package/dist/schemas/custom/Vector3.js +20 -0
  188. package/dist/schemas/index.d.ts +42 -0
  189. package/dist/schemas/index.js +37 -0
  190. package/dist/schemas/typing.d.ts +15 -0
  191. package/dist/schemas/typing.js +1 -0
  192. package/dist/serialization/ByteBuffer/index.d.ts +140 -0
  193. package/dist/serialization/ByteBuffer/index.js +244 -0
  194. package/dist/serialization/crdt/componentOperation.d.ts +31 -0
  195. package/dist/serialization/crdt/componentOperation.js +47 -0
  196. package/dist/serialization/wireMessage.d.ts +39 -0
  197. package/dist/serialization/wireMessage.js +52 -0
  198. package/dist/systems/async-task.d.ts +5 -0
  199. package/dist/systems/async-task.js +28 -0
  200. package/dist/systems/crdt/index.d.ts +8 -0
  201. package/dist/systems/crdt/index.js +169 -0
  202. package/dist/systems/crdt/types.d.ts +18 -0
  203. package/dist/systems/crdt/types.js +1 -0
  204. package/dist/systems/crdt/utils.d.ts +9 -0
  205. package/dist/systems/crdt/utils.js +11 -0
  206. package/dist/systems/cyclicParentingChecker.d.ts +17 -0
  207. package/dist/systems/cyclicParentingChecker.js +33 -0
  208. package/dist/systems/events.d.ts +56 -0
  209. package/dist/systems/events.js +145 -0
  210. package/package.json +9 -14
  211. package/dist/index.min.js +0 -1
  212. package/dist/index.min.js.map +0 -1
package/README.md CHANGED
@@ -9,11 +9,10 @@ Run `make build`
9
9
  ## Testing
10
10
  Run `make test`, you can also debug the test in VS code, selecting the launch `Jest current file` or just `Jest` (this will run all test)
11
11
 
12
- ## Wishlist
12
+ ## Wishlist
13
13
  Use this project as template for TypeScript libraries
14
14
  - [x] as any MutableGroupOf
15
15
  - [x] Tests for system
16
- - [ ] use @dcl/ecs-math https://github.com/decentraland/ecs-math
17
16
  - [ ] Basic Components ( Transform ) w/Tests
18
17
  - [ ] Sync Component W/Tests
19
18
  - [x] CRDT System
@@ -23,4 +22,4 @@ Use this project as template for TypeScript libraries
23
22
  - [ ] EntityID generator
24
23
  - [ ] Static vs Dynamic entities.
25
24
  - [ ] Sync Components ?
26
- - [ ] Where the state lives ? State cross realms/islands ? StateFull questions. StorableComponent ?
25
+ - [ ] Where the state lives ? State cross realms/islands ? StateFull questions. StorableComponent ?
@@ -0,0 +1,49 @@
1
+ import { ComponentDefinition, Entity, IEngine, ISchema } from '../../engine';
2
+ import { PBAnimationState, PBAnimator } from '../generated/pb/decentraland/sdk/components/animator.gen';
3
+ /**
4
+ * @public
5
+ */
6
+ export declare type AnimatorComponentDefinition = ComponentDefinition<ISchema<PBAnimator>, PBAnimator>;
7
+ /**
8
+ * @public
9
+ */
10
+ export interface AnimatorComponentDefinitionExtended extends AnimatorComponentDefinition {
11
+ /**
12
+ * @public
13
+ *
14
+ * Get a `mutable` version of animator clip
15
+ * @param entity - entity with Animator component
16
+ * @param name - the field `name` of the component
17
+ * @returns the clip or fails if it isn't found
18
+ */
19
+ getClip(entity: Entity, name: string): PBAnimationState;
20
+ /**
21
+ * @public
22
+ *
23
+ * Get a `mutable` version of animator clip
24
+ * @param entity - entity with Animator component
25
+ * @param name - the field `name` of the component
26
+ * @returns the clip or null if it isn't found
27
+ */
28
+ getClipOrNull(entity: Entity, name: string): PBAnimationState | null;
29
+ /**
30
+ * @public
31
+ *
32
+ * Set playing=true the animation `$name`
33
+ * @param entity - entity with Animator component
34
+ * @param name - animation name
35
+ * @param resetCursor - the animation starts at 0 or continues from the current cursor position
36
+ * @returns true in successful playing, false if it doesn't find the Animator or clip
37
+ */
38
+ playSingleAnimation(entity: Entity, name: string, resetCursor?: boolean): boolean;
39
+ /**
40
+ * @public
41
+ *
42
+ * Set playing=false all animations
43
+ * @param entity - entity with Animator component
44
+ * @param resetCursor - the animation stops at 0 or at the current cursor position
45
+ * @returns true in successful playing, false if it doesn't find the Animator
46
+ */
47
+ stopAllAnimations(entity: Entity, resetCursor?: boolean): boolean;
48
+ }
49
+ export declare function defineAnimatorComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AnimatorComponentDefinitionExtended;
@@ -0,0 +1,58 @@
1
+ import { Animator } from '../generated/index.gen';
2
+ export function defineAnimatorComponent(engine) {
3
+ const theComponent = Animator(engine);
4
+ /**
5
+ * @returns The tuple [animator, clip]
6
+ */
7
+ function getClipAndAnimator(entity, name) {
8
+ const anim = theComponent.getMutableOrNull(entity);
9
+ if (!anim)
10
+ return [null, null];
11
+ const state = anim.states.find((item) => item.name === name || item.clip === name);
12
+ if (!state)
13
+ return [anim, null];
14
+ return [anim, state];
15
+ }
16
+ return {
17
+ ...theComponent,
18
+ getClipOrNull(entity, name) {
19
+ const [_, state] = getClipAndAnimator(entity, name);
20
+ return state;
21
+ },
22
+ getClip(entity, name) {
23
+ const [animator, state] = getClipAndAnimator(entity, name);
24
+ if (!animator) {
25
+ throw new Error(`There is no Animator found in the entity ${entity}`);
26
+ }
27
+ if (!state) {
28
+ throw new Error(`The Animator component of ${entity} has no the state ${name}`);
29
+ }
30
+ return state;
31
+ },
32
+ playSingleAnimation(entity, name, shouldReset = true) {
33
+ const [animator, state] = getClipAndAnimator(entity, name);
34
+ if (!animator || !state)
35
+ return false;
36
+ // Reset all other animations
37
+ for (const state of animator.states) {
38
+ state.playing = false;
39
+ state.shouldReset = true;
40
+ }
41
+ state.playing = true;
42
+ state.shouldReset = shouldReset;
43
+ return true;
44
+ },
45
+ stopAllAnimations(entity, resetCursor = true) {
46
+ // Get the mutable to modifying
47
+ const animator = theComponent.getMutableOrNull(entity);
48
+ if (!animator)
49
+ return false;
50
+ // Reset all other animations
51
+ for (const state of animator.states) {
52
+ state.playing = false;
53
+ state.shouldReset = resetCursor;
54
+ }
55
+ return true;
56
+ }
57
+ };
58
+ }
@@ -0,0 +1,42 @@
1
+ import { ComponentDefinition, Entity, IEngine, ISchema } from '../../engine';
2
+ import { PBMaterial, PBMaterial_PbrMaterial, PBMaterial_UnlitMaterial } from '../generated/index.gen';
3
+ import { AvatarTexture, Texture, TextureUnion } from '../generated/types.gen';
4
+ /**
5
+ * @public
6
+ */
7
+ export declare type MaterialComponentDefinition = ComponentDefinition<ISchema<PBMaterial>, PBMaterial>;
8
+ /**
9
+ * @public
10
+ */
11
+ export declare type TextureHelper = {
12
+ /**
13
+ * @returns a common texture with a source file
14
+ */
15
+ Common: (texture: Texture) => TextureUnion;
16
+ /**
17
+ * @returns the avatar texture of userId specified
18
+ */
19
+ Avatar: (avatarTexture: AvatarTexture) => TextureUnion;
20
+ };
21
+ /**
22
+ * @public
23
+ */
24
+ export interface MaterialComponentDefinitionExtended extends MaterialComponentDefinition {
25
+ /**
26
+ * Texture helpers with constructor
27
+ */
28
+ Texture: TextureHelper;
29
+ /**
30
+ * Create or replace the component Material in the entity specified
31
+ * @param entity - the entity to link the component
32
+ * @param material - the Unlit data for this material
33
+ */
34
+ setBasicMaterial: (entity: Entity, material: PBMaterial_UnlitMaterial) => void;
35
+ /**
36
+ * Create or replace the component Material in the entity specified
37
+ * @param entity - the entity to link the component
38
+ * @param material - the PBR data for this material
39
+ */
40
+ setPbrMaterial: (entity: Entity, material: PBMaterial_PbrMaterial) => void;
41
+ }
42
+ export declare function defineMaterialComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MaterialComponentDefinitionExtended;
@@ -0,0 +1,42 @@
1
+ import { Material } from '../generated/index.gen';
2
+ const TextureHelper = {
3
+ Common(texture) {
4
+ return {
5
+ tex: {
6
+ $case: 'texture',
7
+ texture
8
+ }
9
+ };
10
+ },
11
+ Avatar(avatarTexture) {
12
+ return {
13
+ tex: {
14
+ $case: 'avatarTexture',
15
+ avatarTexture
16
+ }
17
+ };
18
+ }
19
+ };
20
+ export function defineMaterialComponent(engine) {
21
+ const theComponent = Material(engine);
22
+ return {
23
+ ...theComponent,
24
+ Texture: TextureHelper,
25
+ setBasicMaterial(entity, material) {
26
+ theComponent.createOrReplace(entity, {
27
+ material: {
28
+ $case: 'unlit',
29
+ unlit: material
30
+ }
31
+ });
32
+ },
33
+ setPbrMaterial(entity, material) {
34
+ theComponent.createOrReplace(entity, {
35
+ material: {
36
+ $case: 'pbr',
37
+ pbr: material
38
+ }
39
+ });
40
+ }
41
+ };
42
+ }
@@ -0,0 +1,42 @@
1
+ import { ComponentDefinition, Entity, IEngine, ISchema } from '../../engine';
2
+ import { ColliderLayer, PBMeshCollider } from '../generated/index.gen';
3
+ /**
4
+ * @public
5
+ */
6
+ export declare type MeshColliderComponentDefinition = ComponentDefinition<ISchema<PBMeshCollider>, PBMeshCollider>;
7
+ /**
8
+ * @public
9
+ */
10
+ export interface MeshColliderComponentDefinitionExtended extends MeshColliderComponentDefinition {
11
+ /**
12
+ * @public
13
+ * Set a box in the MeshCollider component
14
+ * @param entity - entity to create or replace the MeshCollider component
15
+ * @param colliderMask - the set of layer where the collider reacts, default: Physics and Pointer
16
+ */
17
+ setBox(entity: Entity, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
18
+ /**
19
+ * @public
20
+ * Set a plane in the MeshCollider component
21
+ * @param entity - entity to create or replace the MeshCollider component
22
+ * @param colliderMask - the set of layer where the collider reacts, default: Physics and Pointer
23
+ */
24
+ setPlane(entity: Entity, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
25
+ /**
26
+ * @public
27
+ * Set a cylinder in the MeshCollider component
28
+ * @param entity - entity to create or replace the MeshCollider component
29
+ * @param radiusBottom - radius of bottom of cylinder
30
+ * @param radiusTop - radius of top of cylinder
31
+ * @param colliderMask - the set of layer where the collider reacts, default: Physics and Pointer
32
+ */
33
+ setCylinder(entity: Entity, radiusBottom?: number, radiusTop?: number, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
34
+ /**
35
+ * @public
36
+ * Set a sphere in the MeshCollider component
37
+ * @param entity - entity to create or replace the MeshCollider component
38
+ * @param colliderMask - the set of layer where the collider reacts, default: Physics and Pointer
39
+ */
40
+ setSphere(entity: Entity, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
41
+ }
42
+ export declare function defineMeshColliderComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshColliderComponentDefinitionExtended;
@@ -0,0 +1,41 @@
1
+ import { MeshCollider } from '../generated/index.gen';
2
+ export function defineMeshColliderComponent(engine) {
3
+ const theComponent = MeshCollider(engine);
4
+ function getCollisionMask(layers) {
5
+ if (Array.isArray(layers)) {
6
+ return layers
7
+ .map((item) => item)
8
+ .reduce((prev, item) => prev | item, 0);
9
+ }
10
+ else if (layers) {
11
+ return layers;
12
+ }
13
+ }
14
+ return {
15
+ ...theComponent,
16
+ setBox(entity, colliderLayers) {
17
+ theComponent.createOrReplace(entity, {
18
+ mesh: { $case: 'box', box: {} },
19
+ collisionMask: getCollisionMask(colliderLayers)
20
+ });
21
+ },
22
+ setPlane(entity, colliderLayers) {
23
+ theComponent.createOrReplace(entity, {
24
+ mesh: { $case: 'plane', plane: {} },
25
+ collisionMask: getCollisionMask(colliderLayers)
26
+ });
27
+ },
28
+ setCylinder(entity, radiusBottom, radiusTop, colliderLayers) {
29
+ theComponent.createOrReplace(entity, {
30
+ mesh: { $case: 'cylinder', cylinder: { radiusBottom, radiusTop } },
31
+ collisionMask: getCollisionMask(colliderLayers)
32
+ });
33
+ },
34
+ setSphere(entity, colliderLayers) {
35
+ theComponent.createOrReplace(entity, {
36
+ mesh: { $case: 'sphere', sphere: {} },
37
+ collisionMask: getCollisionMask(colliderLayers)
38
+ });
39
+ }
40
+ };
41
+ }
@@ -0,0 +1,40 @@
1
+ import { ComponentDefinition, Entity, IEngine, ISchema } from '../../engine';
2
+ import { PBMeshRenderer } from '../generated/index.gen';
3
+ /**
4
+ * @public
5
+ */
6
+ export declare type MeshRendererComponentDefinition = ComponentDefinition<ISchema<PBMeshRenderer>, PBMeshRenderer>;
7
+ /**
8
+ * @public
9
+ */
10
+ export interface MeshRendererComponentDefinitionExtended extends MeshRendererComponentDefinition {
11
+ /**
12
+ * @public
13
+ * Set a box in the MeshRenderer component
14
+ * @param entity - entity to create or replace the MeshRenderer component
15
+ * @param uvs - uvs coord
16
+ */
17
+ setBox(entity: Entity, uvs?: number[]): void;
18
+ /**
19
+ * @public
20
+ * Set a plane in the MeshRenderer component
21
+ * @param entity - entity to create or replace the MeshRenderer component
22
+ * @param uvs - uvs coord
23
+ */
24
+ setPlane(entity: Entity, uvs?: number[]): void;
25
+ /**
26
+ * @public
27
+ * Set a cylinder in the MeshRenderer component
28
+ * @param entity - entity to create or replace the MeshRenderer component
29
+ * @param radiusBottom -
30
+ * @param radiusTop -
31
+ */
32
+ setCylinder(entity: Entity, radiusBottom?: number, radiusTop?: number): void;
33
+ /**
34
+ * @public
35
+ * Set a sphere in the MeshRenderer component
36
+ * @param entity - entity to create or replace the MeshRenderer component
37
+ */
38
+ setSphere(entity: Entity): void;
39
+ }
40
+ export declare function defineMeshRendererComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshRendererComponentDefinitionExtended;
@@ -0,0 +1,27 @@
1
+ import { MeshRenderer } from '../generated/index.gen';
2
+ export function defineMeshRendererComponent(engine) {
3
+ const theComponent = MeshRenderer(engine);
4
+ return {
5
+ ...theComponent,
6
+ setBox(entity, uvs) {
7
+ theComponent.createOrReplace(entity, {
8
+ mesh: { $case: 'box', box: { uvs: uvs || [] } }
9
+ });
10
+ },
11
+ setPlane(entity, uvs) {
12
+ theComponent.createOrReplace(entity, {
13
+ mesh: { $case: 'plane', plane: { uvs: uvs || [] } }
14
+ });
15
+ },
16
+ setCylinder(entity, radiusBottom, radiusTop) {
17
+ theComponent.createOrReplace(entity, {
18
+ mesh: { $case: 'cylinder', cylinder: { radiusBottom, radiusTop } }
19
+ });
20
+ },
21
+ setSphere(entity) {
22
+ theComponent.createOrReplace(entity, {
23
+ mesh: { $case: 'sphere', sphere: {} }
24
+ });
25
+ }
26
+ };
27
+ }
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAnimator } from './pb/decentraland/sdk/components/animator.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AnimatorSchema: ISchema<PBAnimator> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAnimator } from './pb/decentraland/sdk/components/animator.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AnimatorSchema = {
6
+ COMPONENT_ID: 1042,
7
+ serialize(value, builder) {
8
+ const writer = PBAnimator.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAnimator.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAnimator.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAudioSource } from './pb/decentraland/sdk/components/audio_source.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AudioSourceSchema: ISchema<PBAudioSource> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAudioSource } from './pb/decentraland/sdk/components/audio_source.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AudioSourceSchema = {
6
+ COMPONENT_ID: 1020,
7
+ serialize(value, builder) {
8
+ const writer = PBAudioSource.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAudioSource.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAudioSource.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAudioStream } from './pb/decentraland/sdk/components/audio_stream.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AudioStreamSchema: ISchema<PBAudioStream> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAudioStream } from './pb/decentraland/sdk/components/audio_stream.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AudioStreamSchema = {
6
+ COMPONENT_ID: 1021,
7
+ serialize(value, builder) {
8
+ const writer = PBAudioStream.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAudioStream.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAudioStream.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAvatarAttach } from './pb/decentraland/sdk/components/avatar_attach.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AvatarAttachSchema: ISchema<PBAvatarAttach> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAvatarAttach } from './pb/decentraland/sdk/components/avatar_attach.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AvatarAttachSchema = {
6
+ COMPONENT_ID: 1073,
7
+ serialize(value, builder) {
8
+ const writer = PBAvatarAttach.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAvatarAttach.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAvatarAttach.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAvatarModifierArea } from './pb/decentraland/sdk/components/avatar_modifier_area.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AvatarModifierAreaSchema: ISchema<PBAvatarModifierArea> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAvatarModifierArea } from './pb/decentraland/sdk/components/avatar_modifier_area.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AvatarModifierAreaSchema = {
6
+ COMPONENT_ID: 1070,
7
+ serialize(value, builder) {
8
+ const writer = PBAvatarModifierArea.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAvatarModifierArea.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAvatarModifierArea.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBAvatarShape } from './pb/decentraland/sdk/components/avatar_shape.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const AvatarShapeSchema: ISchema<PBAvatarShape> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBAvatarShape } from './pb/decentraland/sdk/components/avatar_shape.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const AvatarShapeSchema = {
6
+ COMPONENT_ID: 1080,
7
+ serialize(value, builder) {
8
+ const writer = PBAvatarShape.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBAvatarShape.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBAvatarShape.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBBillboard } from './pb/decentraland/sdk/components/billboard.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const BillboardSchema: ISchema<PBBillboard> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBBillboard } from './pb/decentraland/sdk/components/billboard.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const BillboardSchema = {
6
+ COMPONENT_ID: 1090,
7
+ serialize(value, builder) {
8
+ const writer = PBBillboard.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBBillboard.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBBillboard.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBCameraMode } from './pb/decentraland/sdk/components/camera_mode.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const CameraModeSchema: ISchema<PBCameraMode> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBCameraMode } from './pb/decentraland/sdk/components/camera_mode.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const CameraModeSchema = {
6
+ COMPONENT_ID: 1072,
7
+ serialize(value, builder) {
8
+ const writer = PBCameraMode.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBCameraMode.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBCameraMode.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBCameraModeArea } from './pb/decentraland/sdk/components/camera_mode_area.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const CameraModeAreaSchema: ISchema<PBCameraModeArea> & {
7
+ COMPONENT_ID: number;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { PBCameraModeArea } from './pb/decentraland/sdk/components/camera_mode_area.gen';
2
+ /**
3
+ *
4
+ */
5
+ export const CameraModeAreaSchema = {
6
+ COMPONENT_ID: 1071,
7
+ serialize(value, builder) {
8
+ const writer = PBCameraModeArea.encode(value);
9
+ const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
+ builder.writeBuffer(buffer, false);
11
+ },
12
+ deserialize(reader) {
13
+ return PBCameraModeArea.decode(reader.buffer(), reader.remainingBytes());
14
+ },
15
+ create() {
16
+ // TODO: this is a hack.
17
+ return PBCameraModeArea.decode(new Uint8Array());
18
+ }
19
+ };
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../../schemas/ISchema';
2
+ import { PBGltfContainer } from './pb/decentraland/sdk/components/gltf_container.gen';
3
+ /**
4
+ *
5
+ */
6
+ export declare const GltfContainerSchema: ISchema<PBGltfContainer> & {
7
+ COMPONENT_ID: number;
8
+ };