@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,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PBTweenState = exports.TweenStateStatus = void 0;
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
const minimal_1 = __importDefault(require("protobufjs/minimal"));
|
|
9
|
+
const protobufPackageSarasa = "decentraland.sdk.components";
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
var TweenStateStatus;
|
|
14
|
+
(function (TweenStateStatus) {
|
|
15
|
+
TweenStateStatus[TweenStateStatus["TS_ACTIVE"] = 0] = "TS_ACTIVE";
|
|
16
|
+
TweenStateStatus[TweenStateStatus["TS_COMPLETED"] = 1] = "TS_COMPLETED";
|
|
17
|
+
TweenStateStatus[TweenStateStatus["TS_PAUSED"] = 2] = "TS_PAUSED";
|
|
18
|
+
})(TweenStateStatus = exports.TweenStateStatus || (exports.TweenStateStatus = {}));
|
|
19
|
+
function createBasePBTweenState() {
|
|
20
|
+
return { state: 0, currentTime: 0 };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
var PBTweenState;
|
|
26
|
+
(function (PBTweenState) {
|
|
27
|
+
function encode(message, writer = minimal_1.default.Writer.create()) {
|
|
28
|
+
if (message.state !== 0) {
|
|
29
|
+
writer.uint32(8).int32(message.state);
|
|
30
|
+
}
|
|
31
|
+
if (message.currentTime !== 0) {
|
|
32
|
+
writer.uint32(21).float(message.currentTime);
|
|
33
|
+
}
|
|
34
|
+
return writer;
|
|
35
|
+
}
|
|
36
|
+
PBTweenState.encode = encode;
|
|
37
|
+
function decode(input, length) {
|
|
38
|
+
const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
|
|
39
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
|
40
|
+
const message = createBasePBTweenState();
|
|
41
|
+
while (reader.pos < end) {
|
|
42
|
+
const tag = reader.uint32();
|
|
43
|
+
switch (tag >>> 3) {
|
|
44
|
+
case 1:
|
|
45
|
+
if (tag !== 8) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
message.state = reader.int32();
|
|
49
|
+
continue;
|
|
50
|
+
case 2:
|
|
51
|
+
if (tag !== 21) {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
message.currentTime = reader.float();
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if ((tag & 7) === 4 || tag === 0) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
reader.skipType(tag & 7);
|
|
61
|
+
}
|
|
62
|
+
return message;
|
|
63
|
+
}
|
|
64
|
+
PBTweenState.decode = decode;
|
|
65
|
+
})(PBTweenState = exports.PBTweenState || (exports.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
|
*/
|
|
@@ -17,11 +17,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.SyncComponents = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Animator = exports.Material = exports.Transform = void 0;
|
|
20
|
+
exports.SyncComponents = exports.Name = exports.Tween = exports.MeshCollider = exports.MeshRenderer = exports.Animator = exports.Material = exports.Transform = void 0;
|
|
21
21
|
const Animator_1 = require("./extended/Animator");
|
|
22
22
|
const Material_1 = require("./extended/Material");
|
|
23
23
|
const MeshCollider_1 = require("./extended/MeshCollider");
|
|
24
24
|
const MeshRenderer_1 = require("./extended/MeshRenderer");
|
|
25
|
+
const Tween_1 = require("./extended/Tween");
|
|
25
26
|
const Name_1 = __importDefault(require("./manual/Name"));
|
|
26
27
|
const SyncComponents_1 = __importDefault(require("./manual/SyncComponents"));
|
|
27
28
|
const Transform_1 = require("./manual/Transform");
|
|
@@ -41,6 +42,9 @@ exports.MeshRenderer = MeshRenderer;
|
|
|
41
42
|
/* @__PURE__ */
|
|
42
43
|
const MeshCollider = (engine) => (0, MeshCollider_1.defineMeshColliderComponent)(engine);
|
|
43
44
|
exports.MeshCollider = MeshCollider;
|
|
45
|
+
/* @__PURE__ */
|
|
46
|
+
const Tween = (engine) => (0, Tween_1.defineTweenComponent)(engine);
|
|
47
|
+
exports.Tween = Tween;
|
|
44
48
|
/**
|
|
45
49
|
* @alpha
|
|
46
50
|
*/
|
|
@@ -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-cjs/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-cjs/index.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.SyncComponents = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
|
|
29
|
+
exports.SyncComponents = exports.Tween = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
|
|
30
30
|
// The order of the following imports matters. Please do not auto-sort
|
|
31
31
|
__exportStar(require("./engine"), exports);
|
|
32
32
|
__exportStar(require("./schemas"), exports);
|
|
@@ -52,6 +52,7 @@ exports.Material = components.Material(initialization_1.engine);
|
|
|
52
52
|
exports.MeshRenderer = components.MeshRenderer(initialization_1.engine);
|
|
53
53
|
exports.MeshCollider = components.MeshCollider(initialization_1.engine);
|
|
54
54
|
exports.Name = components.Name(initialization_1.engine);
|
|
55
|
+
exports.Tween = components.Tween(initialization_1.engine);
|
|
55
56
|
/**
|
|
56
57
|
* @alpha
|
|
57
58
|
* 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
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
* init and it'll be changing.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.executeTask = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
|
|
7
|
+
exports.executeTask = exports.tweenSystem = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
|
|
8
8
|
const engine_1 = require("../../engine");
|
|
9
9
|
const async_task_1 = require("../../systems/async-task");
|
|
10
10
|
const events_1 = require("../../systems/events");
|
|
11
11
|
const input_1 = require("./../../engine/input");
|
|
12
12
|
const raycast_1 = require("../../systems/raycast");
|
|
13
13
|
const videoEvents_1 = require("../../systems/videoEvents");
|
|
14
|
+
const tween_1 = require("../../systems/tween");
|
|
14
15
|
/**
|
|
15
16
|
* @public
|
|
16
17
|
* The engine is the part of the scene that sits in the middle and manages all of the other parts.
|
|
@@ -44,11 +45,15 @@ exports.pointerEventsSystem = (0, events_1.createPointerEventsSystem)(exports.en
|
|
|
44
45
|
*/
|
|
45
46
|
exports.raycastSystem = (0, raycast_1.createRaycastSystem)(exports.engine);
|
|
46
47
|
/**
|
|
47
|
-
* @alpha
|
|
48
48
|
* @public
|
|
49
49
|
* Register callback functions to a particular entity on video events.
|
|
50
50
|
*/
|
|
51
51
|
exports.videoEventsSystem = (0, videoEvents_1.createVideoEventsSystem)(exports.engine);
|
|
52
|
+
/**
|
|
53
|
+
* @public
|
|
54
|
+
* Register callback functions to a particular entity on video events.
|
|
55
|
+
*/
|
|
56
|
+
exports.tweenSystem = (0, tween_1.createTweenSystem)(exports.engine);
|
|
52
57
|
/**
|
|
53
58
|
* @public
|
|
54
59
|
* Runs an async function
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createTweenSystem = void 0;
|
|
27
|
+
const components = __importStar(require("../components"));
|
|
28
|
+
const ByteBuffer_1 = require("../serialization/ByteBuffer");
|
|
29
|
+
const utils_1 = require("./crdt/utils");
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
* @returns tween helper to be used on the scene
|
|
33
|
+
*/
|
|
34
|
+
function createTweenSystem(engine) {
|
|
35
|
+
const Tween = components.Tween(engine);
|
|
36
|
+
const TweenState = components.TweenState(engine);
|
|
37
|
+
const TweenSequence = components.TweenSequence(engine);
|
|
38
|
+
const cache = new Map();
|
|
39
|
+
function isCompleted(entity) {
|
|
40
|
+
const tweenState = TweenState.getOrNull(entity);
|
|
41
|
+
const tween = Tween.getOrNull(entity);
|
|
42
|
+
const tweenCache = cache.get(entity);
|
|
43
|
+
if (!tweenState || !tween)
|
|
44
|
+
return false;
|
|
45
|
+
/* istanbul ignore next */
|
|
46
|
+
if (
|
|
47
|
+
// Renderer notified that the tween is completed
|
|
48
|
+
(tweenChanged(entity) || tweenState.state === 1 /* TweenStateStatus.TS_COMPLETED */) &&
|
|
49
|
+
// Avoid sending isCompleted multiple times
|
|
50
|
+
!tweenCache?.completed &&
|
|
51
|
+
// Amount of frames needed to consider a tween completed
|
|
52
|
+
(tweenCache?.frames ?? 0) > 2) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
function tweenChanged(entity) {
|
|
58
|
+
const currentTween = Tween.getOrNull(entity);
|
|
59
|
+
const prevTween = cache.get(entity)?.tween;
|
|
60
|
+
/* istanbul ignore next */
|
|
61
|
+
if ((currentTween && !prevTween) || (!currentTween && prevTween)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const currentBuff = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
65
|
+
Tween.schema.serialize(currentTween, currentBuff);
|
|
66
|
+
const equal = (0, utils_1.dataCompare)(currentBuff.toBinary(), prevTween);
|
|
67
|
+
return equal;
|
|
68
|
+
}
|
|
69
|
+
const restartTweens = [];
|
|
70
|
+
// Logic for sequence tweens
|
|
71
|
+
engine.addSystem(() => {
|
|
72
|
+
for (const restart of restartTweens) {
|
|
73
|
+
restart();
|
|
74
|
+
}
|
|
75
|
+
restartTweens.length = 0;
|
|
76
|
+
for (const [entity, tween] of engine.getEntitiesWith(Tween)) {
|
|
77
|
+
if (tweenChanged(entity)) {
|
|
78
|
+
const buffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
79
|
+
Tween.schema.serialize(tween, buffer);
|
|
80
|
+
cache.set(entity, {
|
|
81
|
+
tween: buffer.toBinary(),
|
|
82
|
+
frames: 0,
|
|
83
|
+
completed: false,
|
|
84
|
+
changed: true
|
|
85
|
+
});
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const tweenCache = cache.get(entity);
|
|
89
|
+
tweenCache.frames += 1;
|
|
90
|
+
tweenCache.changed = false;
|
|
91
|
+
if (isCompleted(entity)) {
|
|
92
|
+
// Reset tween frames.
|
|
93
|
+
tweenCache.frames = 0;
|
|
94
|
+
// set the tween completed to avoid calling this again for the same tween
|
|
95
|
+
tweenCache.completed = true;
|
|
96
|
+
const tweenSequence = TweenSequence.getOrNull(entity);
|
|
97
|
+
if (!tweenSequence)
|
|
98
|
+
continue;
|
|
99
|
+
const { sequence } = tweenSequence;
|
|
100
|
+
if (sequence && sequence.length) {
|
|
101
|
+
const [nextTweenSequence, ...otherTweens] = sequence;
|
|
102
|
+
Tween.createOrReplace(entity, nextTweenSequence);
|
|
103
|
+
const mutableTweenHelper = TweenSequence.getMutable(entity);
|
|
104
|
+
mutableTweenHelper.sequence = otherTweens;
|
|
105
|
+
if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
106
|
+
mutableTweenHelper.sequence.push(tween);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (tweenSequence.loop === 1 /* TweenLoop.TL_YOYO */) {
|
|
110
|
+
Tween.createOrReplace(entity, backwardsTween(tween));
|
|
111
|
+
}
|
|
112
|
+
else if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
113
|
+
Tween.deleteFrom(entity);
|
|
114
|
+
cache.delete(entity);
|
|
115
|
+
restartTweens.push(() => {
|
|
116
|
+
Tween.createOrReplace(entity, tween);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, Number.NEGATIVE_INFINITY);
|
|
122
|
+
function backwardsTween(tween) {
|
|
123
|
+
if (tween.mode?.$case === 'move' && tween.mode.move) {
|
|
124
|
+
return { ...tween, mode: { ...tween.mode, move: { start: tween.mode.move.end, end: tween.mode.move.start } } };
|
|
125
|
+
}
|
|
126
|
+
if (tween.mode?.$case === 'rotate' && tween.mode.rotate) {
|
|
127
|
+
return {
|
|
128
|
+
...tween,
|
|
129
|
+
mode: { ...tween.mode, rotate: { start: tween.mode.rotate.end, end: tween.mode.rotate.start } }
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (tween.mode?.$case === 'scale' && tween.mode.scale) {
|
|
133
|
+
return { ...tween, mode: { ...tween.mode, scale: { start: tween.mode.scale.end, end: tween.mode.scale.start } } };
|
|
134
|
+
}
|
|
135
|
+
/* istanbul ignore next */
|
|
136
|
+
throw new Error('Invalid tween');
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
// This event is fired only once per tween
|
|
140
|
+
tweenCompleted: isCompleted
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
exports.createTweenSystem = createTweenSystem;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/ecs",
|
|
3
3
|
"description": "Decentraland ECS",
|
|
4
|
-
"version": "7.3.
|
|
4
|
+
"version": "7.3.21-6483018672.commit-3538b47",
|
|
5
5
|
"author": "DCL",
|
|
6
6
|
"bugs": "https://github.com/decentraland/ecs/issues",
|
|
7
7
|
"files": [
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
},
|
|
34
34
|
"types": "./dist/index.d.ts",
|
|
35
35
|
"typings": "./dist/index.d.ts",
|
|
36
|
-
"commit": "
|
|
36
|
+
"commit": "3538b47686f539bfb09756a15d11c06a90c770ed"
|
|
37
37
|
}
|