@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.
- package/README.md +2 -3
- package/dist/components/extended/Animator.d.ts +49 -0
- package/dist/components/extended/Animator.js +58 -0
- package/dist/components/extended/Material.d.ts +42 -0
- package/dist/components/extended/Material.js +42 -0
- package/dist/components/extended/MeshCollider.d.ts +42 -0
- package/dist/components/extended/MeshCollider.js +41 -0
- package/dist/components/extended/MeshRenderer.d.ts +40 -0
- package/dist/components/extended/MeshRenderer.js +27 -0
- package/dist/components/generated/Animator.gen.d.ts +8 -0
- package/dist/components/generated/Animator.gen.js +19 -0
- package/dist/components/generated/AudioSource.gen.d.ts +8 -0
- package/dist/components/generated/AudioSource.gen.js +19 -0
- package/dist/components/generated/AudioStream.gen.d.ts +8 -0
- package/dist/components/generated/AudioStream.gen.js +19 -0
- package/dist/components/generated/AvatarAttach.gen.d.ts +8 -0
- package/dist/components/generated/AvatarAttach.gen.js +19 -0
- package/dist/components/generated/AvatarModifierArea.gen.d.ts +8 -0
- package/dist/components/generated/AvatarModifierArea.gen.js +19 -0
- package/dist/components/generated/AvatarShape.gen.d.ts +8 -0
- package/dist/components/generated/AvatarShape.gen.js +19 -0
- package/dist/components/generated/Billboard.gen.d.ts +8 -0
- package/dist/components/generated/Billboard.gen.js +19 -0
- package/dist/components/generated/CameraMode.gen.d.ts +8 -0
- package/dist/components/generated/CameraMode.gen.js +19 -0
- package/dist/components/generated/CameraModeArea.gen.d.ts +8 -0
- package/dist/components/generated/CameraModeArea.gen.js +19 -0
- package/dist/components/generated/GltfContainer.gen.d.ts +8 -0
- package/dist/components/generated/GltfContainer.gen.js +19 -0
- package/dist/components/generated/Material.gen.d.ts +8 -0
- package/dist/components/generated/Material.gen.js +19 -0
- package/dist/components/generated/MeshCollider.gen.d.ts +8 -0
- package/dist/components/generated/MeshCollider.gen.js +19 -0
- package/dist/components/generated/MeshRenderer.gen.d.ts +8 -0
- package/dist/components/generated/MeshRenderer.gen.js +19 -0
- package/dist/components/generated/NftShape.gen.d.ts +8 -0
- package/dist/components/generated/NftShape.gen.js +19 -0
- package/dist/components/generated/PointerEventsResult.gen.d.ts +8 -0
- package/dist/components/generated/PointerEventsResult.gen.js +19 -0
- package/dist/components/generated/PointerHoverFeedback.gen.d.ts +8 -0
- package/dist/components/generated/PointerHoverFeedback.gen.js +19 -0
- package/dist/components/generated/PointerLock.gen.d.ts +8 -0
- package/dist/components/generated/PointerLock.gen.js +19 -0
- package/dist/components/generated/Raycast.gen.d.ts +8 -0
- package/dist/components/generated/Raycast.gen.js +19 -0
- package/dist/components/generated/RaycastResult.gen.d.ts +8 -0
- package/dist/components/generated/RaycastResult.gen.js +19 -0
- package/dist/components/generated/TextShape.gen.d.ts +8 -0
- package/dist/components/generated/TextShape.gen.js +19 -0
- package/dist/components/generated/UiBackground.gen.d.ts +8 -0
- package/dist/components/generated/UiBackground.gen.js +19 -0
- package/dist/components/generated/UiText.gen.d.ts +8 -0
- package/dist/components/generated/UiText.gen.js +19 -0
- package/dist/components/generated/UiTransform.gen.d.ts +8 -0
- package/dist/components/generated/UiTransform.gen.js +19 -0
- package/dist/components/generated/VisibilityComponent.gen.d.ts +8 -0
- package/dist/components/generated/VisibilityComponent.gen.js +19 -0
- package/dist/components/generated/global.gen.d.ts +42 -0
- package/dist/components/generated/global.gen.js +23 -0
- package/dist/components/generated/ids.gen.d.ts +28 -0
- package/dist/components/generated/ids.gen.js +29 -0
- package/dist/components/generated/index.gen.d.ts +99 -0
- package/dist/components/generated/index.gen.js +96 -0
- package/dist/components/generated/pb/decentraland/common/colors.gen.d.ts +26 -0
- package/dist/components/generated/pb/decentraland/common/colors.gen.js +95 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +56 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +139 -0
- package/dist/components/generated/pb/decentraland/common/vectors.gen.d.ts +36 -0
- package/dist/components/generated/pb/decentraland/common/vectors.gen.js +126 -0
- package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.js +109 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +17 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +58 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +46 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +47 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +62 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +38 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +129 -0
- package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.js +45 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +33 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +40 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.d.ts +4 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +7 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.d.ts +1 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +16 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.d.ts +15 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +82 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +231 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +70 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +176 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +196 -0
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +73 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +89 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.d.ts +46 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.js +126 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +11 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +58 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +32 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +150 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +176 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +13 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +35 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +21 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +59 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +149 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +454 -0
- package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +34 -0
- package/dist/components/generated/pb/google/protobuf/descriptor.gen.d.ts +378 -0
- package/dist/components/generated/pb/google/protobuf/descriptor.gen.js +1476 -0
- package/dist/components/generated/types.gen.d.ts +6 -0
- package/dist/components/generated/types.gen.js +8 -0
- package/dist/components/index.d.ts +15 -0
- package/dist/components/index.js +16 -0
- package/dist/components/legacy/Transform.d.ts +27 -0
- package/dist/components/legacy/Transform.js +55 -0
- package/dist/components/types.d.ts +4 -0
- package/dist/components/types.js +1 -0
- package/dist/engine/component.d.ts +72 -0
- package/dist/engine/component.js +130 -0
- package/dist/engine/entity-utils.d.ts +18 -0
- package/dist/engine/entity-utils.js +34 -0
- package/dist/engine/entity.d.ts +17 -0
- package/dist/engine/entity.js +55 -0
- package/dist/engine/index.d.ts +12 -0
- package/dist/engine/index.js +172 -0
- package/dist/engine/input.d.ts +36 -0
- package/dist/engine/input.js +156 -0
- package/dist/engine/readonly.d.ts +29 -0
- package/dist/engine/readonly.js +6 -0
- package/dist/engine/systems.d.ts +16 -0
- package/dist/engine/systems.js +44 -0
- package/dist/engine/types.d.ts +148 -0
- package/dist/engine/types.js +1 -0
- package/dist/index.d.ts +16 -4679
- package/dist/index.js +24 -15202
- package/dist/runtime/initialization/index.d.ts +21 -0
- package/dist/runtime/initialization/index.js +20 -0
- package/dist/runtime/invariant.d.ts +1 -0
- package/dist/runtime/invariant.js +8 -0
- package/dist/runtime/types.d.ts +22 -0
- package/dist/runtime/types.js +19 -0
- package/dist/schemas/Array.d.ts +5 -0
- package/dist/schemas/Array.js +24 -0
- package/dist/schemas/ISchema.d.ts +9 -0
- package/dist/schemas/ISchema.js +1 -0
- package/dist/schemas/Map.d.ts +19 -0
- package/dist/schemas/Map.js +31 -0
- package/dist/schemas/Optional.d.ts +5 -0
- package/dist/schemas/Optional.js +25 -0
- package/dist/schemas/basic/Boolean.d.ts +5 -0
- package/dist/schemas/basic/Boolean.js +14 -0
- package/dist/schemas/basic/Enum.d.ts +5 -0
- package/dist/schemas/basic/Enum.js +16 -0
- package/dist/schemas/basic/Float.d.ts +9 -0
- package/dist/schemas/basic/Float.js +28 -0
- package/dist/schemas/basic/Integer.d.ts +17 -0
- package/dist/schemas/basic/Integer.js +56 -0
- package/dist/schemas/basic/String.d.ts +9 -0
- package/dist/schemas/basic/String.js +18 -0
- package/dist/schemas/custom/Color3.d.ts +13 -0
- package/dist/schemas/custom/Color3.js +20 -0
- package/dist/schemas/custom/Color4.d.ts +14 -0
- package/dist/schemas/custom/Color4.js +22 -0
- package/dist/schemas/custom/Entity.d.ts +6 -0
- package/dist/schemas/custom/Entity.js +14 -0
- package/dist/schemas/custom/Quaternion.d.ts +14 -0
- package/dist/schemas/custom/Quaternion.js +22 -0
- package/dist/schemas/custom/Vector3.d.ts +13 -0
- package/dist/schemas/custom/Vector3.js +20 -0
- package/dist/schemas/index.d.ts +42 -0
- package/dist/schemas/index.js +37 -0
- package/dist/schemas/typing.d.ts +15 -0
- package/dist/schemas/typing.js +1 -0
- package/dist/serialization/ByteBuffer/index.d.ts +140 -0
- package/dist/serialization/ByteBuffer/index.js +244 -0
- package/dist/serialization/crdt/componentOperation.d.ts +31 -0
- package/dist/serialization/crdt/componentOperation.js +47 -0
- package/dist/serialization/wireMessage.d.ts +39 -0
- package/dist/serialization/wireMessage.js +52 -0
- package/dist/systems/async-task.d.ts +5 -0
- package/dist/systems/async-task.js +28 -0
- package/dist/systems/crdt/index.d.ts +8 -0
- package/dist/systems/crdt/index.js +169 -0
- package/dist/systems/crdt/types.d.ts +18 -0
- package/dist/systems/crdt/types.js +1 -0
- package/dist/systems/crdt/utils.d.ts +9 -0
- package/dist/systems/crdt/utils.js +11 -0
- package/dist/systems/cyclicParentingChecker.d.ts +17 -0
- package/dist/systems/cyclicParentingChecker.js +33 -0
- package/dist/systems/events.d.ts +56 -0
- package/dist/systems/events.js +145 -0
- package/package.json +9 -14
- package/dist/index.min.js +0 -1
- 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,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,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,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,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,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,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,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,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
|
+
};
|