@dcl/ecs 7.3.20 → 7.3.21-6483018672.commit-3538b47
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/dist/components/extended/Tween.d.ts +29 -0
- package/dist/components/extended/Tween.js +28 -0
- package/dist/components/generated/Tween.gen.d.ts +1 -0
- package/dist/components/generated/Tween.gen.js +25 -0
- package/dist/components/generated/TweenSequence.gen.d.ts +1 -0
- package/dist/components/generated/TweenSequence.gen.js +25 -0
- package/dist/components/generated/TweenState.gen.d.ts +1 -0
- package/dist/components/generated/TweenState.gen.js +25 -0
- package/dist/components/generated/component-names.gen.js +3 -0
- package/dist/components/generated/global.gen.d.ts +4 -0
- package/dist/components/generated/global.gen.js +2 -0
- package/dist/components/generated/index.gen.d.ts +12 -0
- package/dist/components/generated/index.gen.js +15 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween.gen.d.ts +115 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween.gen.js +290 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween_sequence.gen.d.ts +23 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween_sequence.gen.js +59 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween_state.gen.d.ts +24 -0
- package/dist/components/generated/pb/decentraland/sdk/components/tween_state.gen.js +59 -0
- package/dist/components/generated/types.gen.d.ts +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +3 -0
- package/dist/components/types.d.ts +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/runtime/initialization/index.d.ts +7 -1
- package/dist/runtime/initialization/index.js +6 -1
- package/dist/systems/tween.d.ts +4 -0
- package/dist/systems/tween.js +116 -0
- package/dist-cjs/components/extended/Tween.d.ts +29 -0
- package/dist-cjs/components/extended/Tween.js +32 -0
- package/dist-cjs/components/generated/Tween.gen.d.ts +1 -0
- package/dist-cjs/components/generated/Tween.gen.js +28 -0
- package/dist-cjs/components/generated/TweenSequence.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TweenSequence.gen.js +28 -0
- package/dist-cjs/components/generated/TweenState.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TweenState.gen.js +28 -0
- package/dist-cjs/components/generated/component-names.gen.js +3 -0
- package/dist-cjs/components/generated/global.gen.d.ts +4 -0
- package/dist-cjs/components/generated/global.gen.js +3 -1
- package/dist-cjs/components/generated/index.gen.d.ts +12 -0
- package/dist-cjs/components/generated/index.gen.js +19 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.d.ts +115 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.js +296 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween_sequence.gen.d.ts +23 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween_sequence.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween_state.gen.d.ts +24 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween_state.gen.js +65 -0
- package/dist-cjs/components/generated/types.gen.d.ts +1 -1
- package/dist-cjs/components/index.d.ts +2 -0
- package/dist-cjs/components/index.js +5 -1
- package/dist-cjs/components/types.d.ts +1 -0
- package/dist-cjs/index.d.ts +2 -1
- package/dist-cjs/index.js +2 -1
- package/dist-cjs/runtime/initialization/index.d.ts +7 -1
- package/dist-cjs/runtime/initialization/index.js +7 -2
- package/dist-cjs/systems/tween.d.ts +4 -0
- package/dist-cjs/systems/tween.js +143 -0
- package/package.json +2 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _m0 from "protobufjs/minimal";
|
|
2
|
+
import { PBTween } from "./tween.gen";
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare const enum TweenLoop {
|
|
7
|
+
TL_RESTART = 0,
|
|
8
|
+
TL_YOYO = 1
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export interface PBTweenSequence {
|
|
14
|
+
sequence: PBTween[];
|
|
15
|
+
loop?: TweenLoop | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare namespace PBTweenSequence {
|
|
21
|
+
function encode(message: PBTweenSequence, writer?: _m0.Writer): _m0.Writer;
|
|
22
|
+
function decode(input: _m0.Reader | Uint8Array, length?: number): PBTweenSequence;
|
|
23
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import _m0 from "protobufjs/minimal";
|
|
3
|
+
import { PBTween } from "./tween.gen";
|
|
4
|
+
const protobufPackageSarasa = "decentraland.sdk.components";
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export var TweenLoop;
|
|
9
|
+
(function (TweenLoop) {
|
|
10
|
+
TweenLoop[TweenLoop["TL_RESTART"] = 0] = "TL_RESTART";
|
|
11
|
+
TweenLoop[TweenLoop["TL_YOYO"] = 1] = "TL_YOYO";
|
|
12
|
+
})(TweenLoop || (TweenLoop = {}));
|
|
13
|
+
function createBasePBTweenSequence() {
|
|
14
|
+
return { sequence: [], loop: undefined };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export var PBTweenSequence;
|
|
20
|
+
(function (PBTweenSequence) {
|
|
21
|
+
function encode(message, writer = _m0.Writer.create()) {
|
|
22
|
+
for (const v of message.sequence) {
|
|
23
|
+
PBTween.encode(v, writer.uint32(10).fork()).ldelim();
|
|
24
|
+
}
|
|
25
|
+
if (message.loop !== undefined) {
|
|
26
|
+
writer.uint32(16).int32(message.loop);
|
|
27
|
+
}
|
|
28
|
+
return writer;
|
|
29
|
+
}
|
|
30
|
+
PBTweenSequence.encode = encode;
|
|
31
|
+
function decode(input, length) {
|
|
32
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
33
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
34
|
+
const message = createBasePBTweenSequence();
|
|
35
|
+
while (reader.pos < end) {
|
|
36
|
+
const tag = reader.uint32();
|
|
37
|
+
switch (tag >>> 3) {
|
|
38
|
+
case 1:
|
|
39
|
+
if (tag !== 10) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
message.sequence.push(PBTween.decode(reader, reader.uint32()));
|
|
43
|
+
continue;
|
|
44
|
+
case 2:
|
|
45
|
+
if (tag !== 16) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
message.loop = reader.int32();
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
reader.skipType(tag & 7);
|
|
55
|
+
}
|
|
56
|
+
return message;
|
|
57
|
+
}
|
|
58
|
+
PBTweenSequence.decode = decode;
|
|
59
|
+
})(PBTweenSequence || (PBTweenSequence = {}));
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import _m0 from "protobufjs/minimal";
|
|
2
|
+
/**
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export declare const enum TweenStateStatus {
|
|
6
|
+
TS_ACTIVE = 0,
|
|
7
|
+
TS_COMPLETED = 1,
|
|
8
|
+
TS_PAUSED = 2
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export interface PBTweenState {
|
|
14
|
+
state: TweenStateStatus;
|
|
15
|
+
/** between 0 and 1 */
|
|
16
|
+
currentTime: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare namespace PBTweenState {
|
|
22
|
+
function encode(message: PBTweenState, writer?: _m0.Writer): _m0.Writer;
|
|
23
|
+
function decode(input: _m0.Reader | Uint8Array, length?: number): PBTweenState;
|
|
24
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import _m0 from "protobufjs/minimal";
|
|
3
|
+
const protobufPackageSarasa = "decentraland.sdk.components";
|
|
4
|
+
/**
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export var TweenStateStatus;
|
|
8
|
+
(function (TweenStateStatus) {
|
|
9
|
+
TweenStateStatus[TweenStateStatus["TS_ACTIVE"] = 0] = "TS_ACTIVE";
|
|
10
|
+
TweenStateStatus[TweenStateStatus["TS_COMPLETED"] = 1] = "TS_COMPLETED";
|
|
11
|
+
TweenStateStatus[TweenStateStatus["TS_PAUSED"] = 2] = "TS_PAUSED";
|
|
12
|
+
})(TweenStateStatus || (TweenStateStatus = {}));
|
|
13
|
+
function createBasePBTweenState() {
|
|
14
|
+
return { state: 0, currentTime: 0 };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export var PBTweenState;
|
|
20
|
+
(function (PBTweenState) {
|
|
21
|
+
function encode(message, writer = _m0.Writer.create()) {
|
|
22
|
+
if (message.state !== 0) {
|
|
23
|
+
writer.uint32(8).int32(message.state);
|
|
24
|
+
}
|
|
25
|
+
if (message.currentTime !== 0) {
|
|
26
|
+
writer.uint32(21).float(message.currentTime);
|
|
27
|
+
}
|
|
28
|
+
return writer;
|
|
29
|
+
}
|
|
30
|
+
PBTweenState.encode = encode;
|
|
31
|
+
function decode(input, length) {
|
|
32
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
|
33
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
34
|
+
const message = createBasePBTweenState();
|
|
35
|
+
while (reader.pos < end) {
|
|
36
|
+
const tag = reader.uint32();
|
|
37
|
+
switch (tag >>> 3) {
|
|
38
|
+
case 1:
|
|
39
|
+
if (tag !== 8) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
message.state = reader.int32();
|
|
43
|
+
continue;
|
|
44
|
+
case 2:
|
|
45
|
+
if (tag !== 21) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
message.currentTime = reader.float();
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
reader.skipType(tag & 7);
|
|
55
|
+
}
|
|
56
|
+
return message;
|
|
57
|
+
}
|
|
58
|
+
PBTweenState.decode = decode;
|
|
59
|
+
})(PBTweenState || (PBTweenState = {}));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Position as PBPosition, Vector2 as PBVector2, Vector3 as PBVector3 } from './pb/decentraland/common/vectors.gen';
|
|
1
|
+
export type { Position as PBPosition, Vector2 as PBVector2, Vector3 as PBVector3, Quaternion as PBQuaternion } from './pb/decentraland/common/vectors.gen';
|
|
2
2
|
export type { Color3 as PBColor3, Color4 as PBColor4 } from './pb/decentraland/common/colors.gen';
|
|
3
3
|
export * from './pb/decentraland/sdk/components/common/camera_type.gen';
|
|
4
4
|
export * from './pb/decentraland/sdk/components/common/input_action.gen';
|
|
@@ -4,6 +4,7 @@ import { AnimatorComponentDefinitionExtended } from './extended/Animator';
|
|
|
4
4
|
import { MaterialComponentDefinitionExtended } from './extended/Material';
|
|
5
5
|
import { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
|
|
6
6
|
import { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
|
|
7
|
+
import { TweenComponentDefinitionExtended } from './extended/Tween';
|
|
7
8
|
import { LwwComponentGetter, GSetComponentGetter } from './generated/index.gen';
|
|
8
9
|
import { NameType } from './manual/Name';
|
|
9
10
|
import { ISyncComponentsType } from './manual/SyncComponents';
|
|
@@ -15,6 +16,7 @@ export declare const Material: LwwComponentGetter<MaterialComponentDefinitionExt
|
|
|
15
16
|
export declare const Animator: LwwComponentGetter<AnimatorComponentDefinitionExtended>;
|
|
16
17
|
export declare const MeshRenderer: LwwComponentGetter<MeshRendererComponentDefinitionExtended>;
|
|
17
18
|
export declare const MeshCollider: LwwComponentGetter<MeshColliderComponentDefinitionExtended>;
|
|
19
|
+
export declare const Tween: LwwComponentGetter<TweenComponentDefinitionExtended>;
|
|
18
20
|
/**
|
|
19
21
|
* @alpha
|
|
20
22
|
*/
|
package/dist/components/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { defineAnimatorComponent } from './extended/Animator';
|
|
|
2
2
|
import { defineMaterialComponent } from './extended/Material';
|
|
3
3
|
import { defineMeshColliderComponent } from './extended/MeshCollider';
|
|
4
4
|
import { defineMeshRendererComponent } from './extended/MeshRenderer';
|
|
5
|
+
import { defineTweenComponent } from './extended/Tween';
|
|
5
6
|
import defineNameComponent from './manual/Name';
|
|
6
7
|
import defineSyncComponent from './manual/SyncComponents';
|
|
7
8
|
import { defineTransformComponent } from './manual/Transform';
|
|
@@ -16,6 +17,8 @@ export const Animator = (engine) => defineAnimatorComponent(engine);
|
|
|
16
17
|
export const MeshRenderer = (engine) => defineMeshRendererComponent(engine);
|
|
17
18
|
/* @__PURE__ */
|
|
18
19
|
export const MeshCollider = (engine) => defineMeshColliderComponent(engine);
|
|
20
|
+
/* @__PURE__ */
|
|
21
|
+
export const Tween = (engine) => defineTweenComponent(engine);
|
|
19
22
|
/**
|
|
20
23
|
* @alpha
|
|
21
24
|
*/
|
|
@@ -2,6 +2,7 @@ export type { AnimatorComponentDefinitionExtended } from './extended/Animator';
|
|
|
2
2
|
export type { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
|
|
3
3
|
export type { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
|
|
4
4
|
export type { TextureHelper, MaterialComponentDefinitionExtended } from './extended/Material';
|
|
5
|
+
export type { TweenHelper, TweenComponentDefinitionExtended } from './extended/Tween';
|
|
5
6
|
export type { TransformComponentExtended, TransformTypeWithOptionals } from './manual/Transform';
|
|
6
7
|
export type { NameComponent, NameType } from './manual/Name';
|
|
7
8
|
export type { ISyncComponents, ISyncComponentsType } from './manual/SyncComponents';
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export * from './systems/videoEvents';
|
|
|
10
10
|
export * from './systems/async-task';
|
|
11
11
|
export * from './engine/entity';
|
|
12
12
|
export * from './components/types';
|
|
13
|
-
import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, ISyncComponents } from './components/types';
|
|
13
|
+
import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended } from './components/types';
|
|
14
14
|
import { NameComponent } from './components/manual/Name';
|
|
15
15
|
export declare const Transform: TransformComponentExtended;
|
|
16
16
|
export declare const Animator: AnimatorComponentDefinitionExtended;
|
|
@@ -18,6 +18,7 @@ export declare const Material: MaterialComponentDefinitionExtended;
|
|
|
18
18
|
export declare const MeshRenderer: MeshRendererComponentDefinitionExtended;
|
|
19
19
|
export declare const MeshCollider: MeshColliderComponentDefinitionExtended;
|
|
20
20
|
export declare const Name: NameComponent;
|
|
21
|
+
export declare const Tween: TweenComponentDefinitionExtended;
|
|
21
22
|
/**
|
|
22
23
|
* @alpha
|
|
23
24
|
* This is going to be used for sync components through a server.
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ export const Material = /* @__PURE__*/ components.Material(engine);
|
|
|
23
23
|
export const MeshRenderer = /* @__PURE__*/ components.MeshRenderer(engine);
|
|
24
24
|
export const MeshCollider = /* @__PURE__*/ components.MeshCollider(engine);
|
|
25
25
|
export const Name = components.Name(engine);
|
|
26
|
+
export const Tween = /* @__PURE__*/ components.Tween(engine);
|
|
26
27
|
/**
|
|
27
28
|
* @alpha
|
|
28
29
|
* This is going to be used for sync components through a server.
|
|
@@ -8,6 +8,7 @@ import { PointerEventsSystem } from '../../systems/events';
|
|
|
8
8
|
import { IInputSystem } from './../../engine/input';
|
|
9
9
|
import { RaycastSystem } from '../../systems/raycast';
|
|
10
10
|
import { VideoEventsSystem } from '../../systems/videoEvents';
|
|
11
|
+
import { TweenSystem } from '../../systems/tween';
|
|
11
12
|
/**
|
|
12
13
|
* @public
|
|
13
14
|
* The engine is the part of the scene that sits in the middle and manages all of the other parts.
|
|
@@ -44,12 +45,17 @@ export { PointerEventsSystem };
|
|
|
44
45
|
export declare const raycastSystem: RaycastSystem;
|
|
45
46
|
export { RaycastSystem };
|
|
46
47
|
/**
|
|
47
|
-
* @alpha
|
|
48
48
|
* @public
|
|
49
49
|
* Register callback functions to a particular entity on video events.
|
|
50
50
|
*/
|
|
51
51
|
export declare const videoEventsSystem: VideoEventsSystem;
|
|
52
52
|
export { VideoEventsSystem };
|
|
53
|
+
/**
|
|
54
|
+
* @public
|
|
55
|
+
* Register callback functions to a particular entity on video events.
|
|
56
|
+
*/
|
|
57
|
+
export declare const tweenSystem: TweenSystem;
|
|
58
|
+
export { TweenSystem };
|
|
53
59
|
/**
|
|
54
60
|
* @public
|
|
55
61
|
* Runs an async function
|
|
@@ -8,6 +8,7 @@ import { createPointerEventsSystem } from '../../systems/events';
|
|
|
8
8
|
import { createInputSystem } from './../../engine/input';
|
|
9
9
|
import { createRaycastSystem } from '../../systems/raycast';
|
|
10
10
|
import { createVideoEventsSystem } from '../../systems/videoEvents';
|
|
11
|
+
import { createTweenSystem } from '../../systems/tween';
|
|
11
12
|
/**
|
|
12
13
|
* @public
|
|
13
14
|
* The engine is the part of the scene that sits in the middle and manages all of the other parts.
|
|
@@ -41,11 +42,15 @@ export const pointerEventsSystem = /* @__PURE__ */ createPointerEventsSystem(eng
|
|
|
41
42
|
*/
|
|
42
43
|
export const raycastSystem = /* @__PURE__ */ createRaycastSystem(engine);
|
|
43
44
|
/**
|
|
44
|
-
* @alpha
|
|
45
45
|
* @public
|
|
46
46
|
* Register callback functions to a particular entity on video events.
|
|
47
47
|
*/
|
|
48
48
|
export const videoEventsSystem = /* @__PURE__ */ createVideoEventsSystem(engine);
|
|
49
|
+
/**
|
|
50
|
+
* @public
|
|
51
|
+
* Register callback functions to a particular entity on video events.
|
|
52
|
+
*/
|
|
53
|
+
export const tweenSystem = createTweenSystem(engine);
|
|
49
54
|
/**
|
|
50
55
|
* @public
|
|
51
56
|
* Runs an async function
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as components from '../components';
|
|
2
|
+
import { ReadWriteByteBuffer } from '../serialization/ByteBuffer';
|
|
3
|
+
import { dataCompare } from './crdt/utils';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* @returns tween helper to be used on the scene
|
|
7
|
+
*/
|
|
8
|
+
export function createTweenSystem(engine) {
|
|
9
|
+
const Tween = components.Tween(engine);
|
|
10
|
+
const TweenState = components.TweenState(engine);
|
|
11
|
+
const TweenSequence = components.TweenSequence(engine);
|
|
12
|
+
const cache = new Map();
|
|
13
|
+
function isCompleted(entity) {
|
|
14
|
+
const tweenState = TweenState.getOrNull(entity);
|
|
15
|
+
const tween = Tween.getOrNull(entity);
|
|
16
|
+
const tweenCache = cache.get(entity);
|
|
17
|
+
if (!tweenState || !tween)
|
|
18
|
+
return false;
|
|
19
|
+
/* istanbul ignore next */
|
|
20
|
+
if (
|
|
21
|
+
// Renderer notified that the tween is completed
|
|
22
|
+
(tweenChanged(entity) || tweenState.state === 1 /* TweenStateStatus.TS_COMPLETED */) &&
|
|
23
|
+
// Avoid sending isCompleted multiple times
|
|
24
|
+
!tweenCache?.completed &&
|
|
25
|
+
// Amount of frames needed to consider a tween completed
|
|
26
|
+
(tweenCache?.frames ?? 0) > 2) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
function tweenChanged(entity) {
|
|
32
|
+
const currentTween = Tween.getOrNull(entity);
|
|
33
|
+
const prevTween = cache.get(entity)?.tween;
|
|
34
|
+
/* istanbul ignore next */
|
|
35
|
+
if ((currentTween && !prevTween) || (!currentTween && prevTween)) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
const currentBuff = new ReadWriteByteBuffer();
|
|
39
|
+
Tween.schema.serialize(currentTween, currentBuff);
|
|
40
|
+
const equal = dataCompare(currentBuff.toBinary(), prevTween);
|
|
41
|
+
return equal;
|
|
42
|
+
}
|
|
43
|
+
const restartTweens = [];
|
|
44
|
+
// Logic for sequence tweens
|
|
45
|
+
engine.addSystem(() => {
|
|
46
|
+
for (const restart of restartTweens) {
|
|
47
|
+
restart();
|
|
48
|
+
}
|
|
49
|
+
restartTweens.length = 0;
|
|
50
|
+
for (const [entity, tween] of engine.getEntitiesWith(Tween)) {
|
|
51
|
+
if (tweenChanged(entity)) {
|
|
52
|
+
const buffer = new ReadWriteByteBuffer();
|
|
53
|
+
Tween.schema.serialize(tween, buffer);
|
|
54
|
+
cache.set(entity, {
|
|
55
|
+
tween: buffer.toBinary(),
|
|
56
|
+
frames: 0,
|
|
57
|
+
completed: false,
|
|
58
|
+
changed: true
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const tweenCache = cache.get(entity);
|
|
63
|
+
tweenCache.frames += 1;
|
|
64
|
+
tweenCache.changed = false;
|
|
65
|
+
if (isCompleted(entity)) {
|
|
66
|
+
// Reset tween frames.
|
|
67
|
+
tweenCache.frames = 0;
|
|
68
|
+
// set the tween completed to avoid calling this again for the same tween
|
|
69
|
+
tweenCache.completed = true;
|
|
70
|
+
const tweenSequence = TweenSequence.getOrNull(entity);
|
|
71
|
+
if (!tweenSequence)
|
|
72
|
+
continue;
|
|
73
|
+
const { sequence } = tweenSequence;
|
|
74
|
+
if (sequence && sequence.length) {
|
|
75
|
+
const [nextTweenSequence, ...otherTweens] = sequence;
|
|
76
|
+
Tween.createOrReplace(entity, nextTweenSequence);
|
|
77
|
+
const mutableTweenHelper = TweenSequence.getMutable(entity);
|
|
78
|
+
mutableTweenHelper.sequence = otherTweens;
|
|
79
|
+
if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
80
|
+
mutableTweenHelper.sequence.push(tween);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (tweenSequence.loop === 1 /* TweenLoop.TL_YOYO */) {
|
|
84
|
+
Tween.createOrReplace(entity, backwardsTween(tween));
|
|
85
|
+
}
|
|
86
|
+
else if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
87
|
+
Tween.deleteFrom(entity);
|
|
88
|
+
cache.delete(entity);
|
|
89
|
+
restartTweens.push(() => {
|
|
90
|
+
Tween.createOrReplace(entity, tween);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}, Number.NEGATIVE_INFINITY);
|
|
96
|
+
function backwardsTween(tween) {
|
|
97
|
+
if (tween.mode?.$case === 'move' && tween.mode.move) {
|
|
98
|
+
return { ...tween, mode: { ...tween.mode, move: { start: tween.mode.move.end, end: tween.mode.move.start } } };
|
|
99
|
+
}
|
|
100
|
+
if (tween.mode?.$case === 'rotate' && tween.mode.rotate) {
|
|
101
|
+
return {
|
|
102
|
+
...tween,
|
|
103
|
+
mode: { ...tween.mode, rotate: { start: tween.mode.rotate.end, end: tween.mode.rotate.start } }
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (tween.mode?.$case === 'scale' && tween.mode.scale) {
|
|
107
|
+
return { ...tween, mode: { ...tween.mode, scale: { start: tween.mode.scale.end, end: tween.mode.scale.start } } };
|
|
108
|
+
}
|
|
109
|
+
/* istanbul ignore next */
|
|
110
|
+
throw new Error('Invalid tween');
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
// This event is fired only once per tween
|
|
114
|
+
tweenCompleted: isCompleted
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
|
|
2
|
+
import { PBTween, Move, Rotate, Scale } from '../generated/index.gen';
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export interface TweenHelper {
|
|
7
|
+
/**
|
|
8
|
+
* @returns a move mode tween
|
|
9
|
+
*/
|
|
10
|
+
Move: (move: Move) => PBTween['mode'];
|
|
11
|
+
/**
|
|
12
|
+
* @returns a move mode tween
|
|
13
|
+
*/
|
|
14
|
+
Rotate: (rotate: Rotate) => PBTween['mode'];
|
|
15
|
+
/**
|
|
16
|
+
* @returns a move mode tween
|
|
17
|
+
*/
|
|
18
|
+
Scale: (scale: Scale) => PBTween['mode'];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export interface TweenComponentDefinitionExtended extends LastWriteWinElementSetComponentDefinition<PBTween> {
|
|
24
|
+
/**
|
|
25
|
+
* Texture helpers with constructor
|
|
26
|
+
*/
|
|
27
|
+
Mode: TweenHelper;
|
|
28
|
+
}
|
|
29
|
+
export declare function defineTweenComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): TweenComponentDefinitionExtended;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineTweenComponent = void 0;
|
|
4
|
+
const index_gen_1 = require("../generated/index.gen");
|
|
5
|
+
const TweenHelper = {
|
|
6
|
+
Move(move) {
|
|
7
|
+
return {
|
|
8
|
+
$case: 'move',
|
|
9
|
+
move
|
|
10
|
+
};
|
|
11
|
+
},
|
|
12
|
+
Rotate(rotate) {
|
|
13
|
+
return {
|
|
14
|
+
$case: 'rotate',
|
|
15
|
+
rotate
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
Scale(scale) {
|
|
19
|
+
return {
|
|
20
|
+
$case: 'scale',
|
|
21
|
+
scale
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
function defineTweenComponent(engine) {
|
|
26
|
+
const theComponent = (0, index_gen_1.Tween)(engine);
|
|
27
|
+
return {
|
|
28
|
+
...theComponent,
|
|
29
|
+
Mode: TweenHelper
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.defineTweenComponent = defineTweenComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TweenSchema = void 0;
|
|
4
|
+
const tween_gen_1 = require("./pb/decentraland/sdk/components/tween.gen");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.TweenSchema = {
|
|
9
|
+
COMPONENT_ID: 1102,
|
|
10
|
+
serialize(value, builder) {
|
|
11
|
+
const writer = tween_gen_1.PBTween.encode(value);
|
|
12
|
+
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
13
|
+
builder.writeBuffer(buffer, false);
|
|
14
|
+
},
|
|
15
|
+
deserialize(reader) {
|
|
16
|
+
return tween_gen_1.PBTween.decode(reader.buffer(), reader.remainingBytes());
|
|
17
|
+
},
|
|
18
|
+
create() {
|
|
19
|
+
// TODO: this is a hack.
|
|
20
|
+
return tween_gen_1.PBTween.decode(new Uint8Array());
|
|
21
|
+
},
|
|
22
|
+
jsonSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {},
|
|
25
|
+
serializationType: "protocol-buffer",
|
|
26
|
+
protocolBuffer: "PBTween"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TweenSequenceSchema = void 0;
|
|
4
|
+
const tween_sequence_gen_1 = require("./pb/decentraland/sdk/components/tween_sequence.gen");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.TweenSequenceSchema = {
|
|
9
|
+
COMPONENT_ID: 1104,
|
|
10
|
+
serialize(value, builder) {
|
|
11
|
+
const writer = tween_sequence_gen_1.PBTweenSequence.encode(value);
|
|
12
|
+
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
13
|
+
builder.writeBuffer(buffer, false);
|
|
14
|
+
},
|
|
15
|
+
deserialize(reader) {
|
|
16
|
+
return tween_sequence_gen_1.PBTweenSequence.decode(reader.buffer(), reader.remainingBytes());
|
|
17
|
+
},
|
|
18
|
+
create() {
|
|
19
|
+
// TODO: this is a hack.
|
|
20
|
+
return tween_sequence_gen_1.PBTweenSequence.decode(new Uint8Array());
|
|
21
|
+
},
|
|
22
|
+
jsonSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {},
|
|
25
|
+
serializationType: "protocol-buffer",
|
|
26
|
+
protocolBuffer: "PBTweenSequence"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TweenStateSchema = void 0;
|
|
4
|
+
const tween_state_gen_1 = require("./pb/decentraland/sdk/components/tween_state.gen");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.TweenStateSchema = {
|
|
9
|
+
COMPONENT_ID: 1103,
|
|
10
|
+
serialize(value, builder) {
|
|
11
|
+
const writer = tween_state_gen_1.PBTweenState.encode(value);
|
|
12
|
+
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
13
|
+
builder.writeBuffer(buffer, false);
|
|
14
|
+
},
|
|
15
|
+
deserialize(reader) {
|
|
16
|
+
return tween_state_gen_1.PBTweenState.decode(reader.buffer(), reader.remainingBytes());
|
|
17
|
+
},
|
|
18
|
+
create() {
|
|
19
|
+
// TODO: this is a hack.
|
|
20
|
+
return tween_state_gen_1.PBTweenState.decode(new Uint8Array());
|
|
21
|
+
},
|
|
22
|
+
jsonSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {},
|
|
25
|
+
serializationType: "protocol-buffer",
|
|
26
|
+
protocolBuffer: "PBTweenState"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -32,6 +32,9 @@ exports.coreComponentMappings = {
|
|
|
32
32
|
"core::Raycast": 1067,
|
|
33
33
|
"core::RaycastResult": 1068,
|
|
34
34
|
"core::TextShape": 1030,
|
|
35
|
+
"core::Tween": 1102,
|
|
36
|
+
"core::TweenSequence": 1104,
|
|
37
|
+
"core::TweenState": 1103,
|
|
35
38
|
"core::UiBackground": 1053,
|
|
36
39
|
"core::UiCanvasInformation": 1054,
|
|
37
40
|
"core::UiDropdown": 1094,
|
|
@@ -18,6 +18,8 @@ import { PBPointerLock } from './pb/decentraland/sdk/components/pointer_lock.gen
|
|
|
18
18
|
import { PBRaycast } from './pb/decentraland/sdk/components/raycast.gen';
|
|
19
19
|
import { PBRaycastResult } from './pb/decentraland/sdk/components/raycast_result.gen';
|
|
20
20
|
import { PBTextShape } from './pb/decentraland/sdk/components/text_shape.gen';
|
|
21
|
+
import { PBTweenSequence } from './pb/decentraland/sdk/components/tween_sequence.gen';
|
|
22
|
+
import { PBTweenState } from './pb/decentraland/sdk/components/tween_state.gen';
|
|
21
23
|
import { PBUiBackground } from './pb/decentraland/sdk/components/ui_background.gen';
|
|
22
24
|
import { PBUiCanvasInformation } from './pb/decentraland/sdk/components/ui_canvas_information.gen';
|
|
23
25
|
import { PBUiDropdown } from './pb/decentraland/sdk/components/ui_dropdown.gen';
|
|
@@ -47,6 +49,8 @@ import { PBVisibilityComponent } from './pb/decentraland/sdk/components/visibili
|
|
|
47
49
|
/** @public */ export declare const Raycast: LastWriteWinElementSetComponentDefinition<PBRaycast>;
|
|
48
50
|
/** @public */ export declare const RaycastResult: LastWriteWinElementSetComponentDefinition<PBRaycastResult>;
|
|
49
51
|
/** @public */ export declare const TextShape: LastWriteWinElementSetComponentDefinition<PBTextShape>;
|
|
52
|
+
/** @public */ export declare const TweenSequence: LastWriteWinElementSetComponentDefinition<PBTweenSequence>;
|
|
53
|
+
/** @public */ export declare const TweenState: LastWriteWinElementSetComponentDefinition<PBTweenState>;
|
|
50
54
|
/** @public */ export declare const UiBackground: LastWriteWinElementSetComponentDefinition<PBUiBackground>;
|
|
51
55
|
/** @public */ export declare const UiCanvasInformation: LastWriteWinElementSetComponentDefinition<PBUiCanvasInformation>;
|
|
52
56
|
/** @public */ export declare const UiDropdown: LastWriteWinElementSetComponentDefinition<PBUiDropdown>;
|
|
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
26
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.VisibilityComponent = exports.VideoPlayer = exports.VideoEvent = exports.UiTransform = exports.UiText = exports.UiInputResult = exports.UiInput = exports.UiDropdownResult = exports.UiDropdown = exports.UiCanvasInformation = exports.UiBackground = exports.TextShape = exports.RaycastResult = exports.Raycast = exports.PointerLock = exports.PointerEventsResult = exports.PointerEvents = exports.NftShape = exports.GltfContainerLoadingState = exports.GltfContainer = exports.EngineInfo = exports.CameraModeArea = exports.CameraMode = exports.Billboard = exports.AvatarShape = exports.AvatarModifierArea = exports.AvatarAttach = exports.AudioStream = exports.AudioSource = void 0;
|
|
29
|
+
exports.VisibilityComponent = exports.VideoPlayer = exports.VideoEvent = exports.UiTransform = exports.UiText = exports.UiInputResult = exports.UiInput = exports.UiDropdownResult = exports.UiDropdown = exports.UiCanvasInformation = exports.UiBackground = exports.TweenState = exports.TweenSequence = exports.TextShape = exports.RaycastResult = exports.Raycast = exports.PointerLock = exports.PointerEventsResult = exports.PointerEvents = exports.NftShape = exports.GltfContainerLoadingState = exports.GltfContainer = exports.EngineInfo = exports.CameraModeArea = exports.CameraMode = exports.Billboard = exports.AvatarShape = exports.AvatarModifierArea = exports.AvatarAttach = exports.AudioStream = exports.AudioSource = void 0;
|
|
30
30
|
const initialization_1 = require("../../runtime/initialization");
|
|
31
31
|
const components = __importStar(require("./index.gen"));
|
|
32
32
|
__exportStar(require("./index.gen"), exports);
|
|
@@ -48,6 +48,8 @@ __exportStar(require("./index.gen"), exports);
|
|
|
48
48
|
/** @public */ exports.Raycast = components.Raycast(initialization_1.engine);
|
|
49
49
|
/** @public */ exports.RaycastResult = components.RaycastResult(initialization_1.engine);
|
|
50
50
|
/** @public */ exports.TextShape = components.TextShape(initialization_1.engine);
|
|
51
|
+
/** @public */ exports.TweenSequence = components.TweenSequence(initialization_1.engine);
|
|
52
|
+
/** @public */ exports.TweenState = components.TweenState(initialization_1.engine);
|
|
51
53
|
/** @public */ exports.UiBackground = components.UiBackground(initialization_1.engine);
|
|
52
54
|
/** @public */ exports.UiCanvasInformation = components.UiCanvasInformation(initialization_1.engine);
|
|
53
55
|
/** @public */ exports.UiDropdown = components.UiDropdown(initialization_1.engine);
|