Fix delay in starting fade-out for expressions
parent
ad93d1370d
commit
901d6c356e
|
@ -10,6 +10,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
* Fix implementation of `iterator#increment` in `csmmap` and `csmvector`.
|
* Fix implementation of `iterator#increment` in `csmmap` and `csmvector`.
|
||||||
|
* Fix delay in starting fade-out for expressions.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
* Rename the function name that handles seconds from `Time` to `Seconds`.
|
||||||
|
|
||||||
|
|
||||||
## [4-r.1] - 2020-01-30
|
## [4-r.1] - 2020-01-30
|
||||||
|
|
|
@ -31,6 +31,8 @@ export namespace Live2DCubismFramework {
|
||||||
this._stateWeight = 0.0;
|
this._stateWeight = 0.0;
|
||||||
this._lastEventCheckSeconds = 0.0;
|
this._lastEventCheckSeconds = 0.0;
|
||||||
this._motionQueueEntryHandle = this;
|
this._motionQueueEntryHandle = this;
|
||||||
|
this._fadeOutSeconds = 0.0;
|
||||||
|
this._isTriggeredFadeOut = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,13 +44,23 @@ export namespace Live2DCubismFramework {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* フェードアウト時間と開始判定の設定
|
||||||
|
* @param fadeOutSeconds フェードアウトにかかる時間[秒]
|
||||||
|
*/
|
||||||
|
public setFadeOut(fadeOutSeconds: number): void {
|
||||||
|
this._fadeOutSeconds = fadeOutSeconds;
|
||||||
|
this._isTriggeredFadeOut = true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* フェードアウトの開始
|
* フェードアウトの開始
|
||||||
* @param fadeOutSeconds フェードアウトにかかる時間[秒]
|
* @param fadeOutSeconds フェードアウトにかかる時間[秒]
|
||||||
* @param userTimeSeconds デルタ時間の積算値[秒]
|
* @param userTimeSeconds デルタ時間の積算値[秒]
|
||||||
*/
|
*/
|
||||||
public startFadeout(fadeoutSeconds: number, userTimeSeconds: number): void {
|
public startFadeOut(fadeOutSeconds: number, userTimeSeconds: number): void {
|
||||||
const newEndTimeSeconds: number = userTimeSeconds + fadeoutSeconds;
|
const newEndTimeSeconds: number = userTimeSeconds + fadeOutSeconds;
|
||||||
|
this._isTriggeredFadeOut = true;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this._endTimeSeconds < 0.0 ||
|
this._endTimeSeconds < 0.0 ||
|
||||||
|
@ -189,16 +201,32 @@ export namespace Live2DCubismFramework {
|
||||||
*
|
*
|
||||||
* @return 最後にイベントの発火をチェックした時間[秒]
|
* @return 最後にイベントの発火をチェックした時間[秒]
|
||||||
*/
|
*/
|
||||||
public getLastCheckEventTime(): number {
|
public getLastCheckEventSeconds(): number {
|
||||||
return this._lastEventCheckSeconds;
|
return this._lastEventCheckSeconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最後にイベントをチェックした時間を設定
|
* 最後にイベントをチェックした時間を設定
|
||||||
* @param checkTime 最後にイベントをチェックした時間[秒]
|
* @param checkSeconds 最後にイベントをチェックした時間[秒]
|
||||||
*/
|
*/
|
||||||
public setLastCheckEventTime(checkTime: number): void {
|
public setLastCheckEventSeconds(checkSeconds: number): void {
|
||||||
this._lastEventCheckSeconds = checkTime;
|
this._lastEventCheckSeconds = checkSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* フェードアウト開始判定の取得
|
||||||
|
* @return フェードアウト開始するかどうか
|
||||||
|
*/
|
||||||
|
public isTriggeredFadeOut(): boolean {
|
||||||
|
return this._isTriggeredFadeOut && this._endTimeSeconds < 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* フェードアウト時間の取得
|
||||||
|
* @return フェードアウト時間[秒]
|
||||||
|
*/
|
||||||
|
public getFadeOutSeconds(): number {
|
||||||
|
return this._fadeOutSeconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
_autoDelete: boolean; // 自動削除
|
_autoDelete: boolean; // 自動削除
|
||||||
|
@ -213,6 +241,8 @@ export namespace Live2DCubismFramework {
|
||||||
_stateTimeSeconds: number; // 時刻の状態[秒]
|
_stateTimeSeconds: number; // 時刻の状態[秒]
|
||||||
_stateWeight: number; // 重みの状態
|
_stateWeight: number; // 重みの状態
|
||||||
_lastEventCheckSeconds: number; // 最終のMotion側のチェックした時間
|
_lastEventCheckSeconds: number; // 最終のMotion側のチェックした時間
|
||||||
|
private _fadeOutSeconds: number; // フェードアウト時間[秒]
|
||||||
|
private _isTriggeredFadeOut: boolean; // フェードアウト開始フラグ
|
||||||
|
|
||||||
_motionQueueEntryHandle: CubismMotionQueueEntryHandle; // インスタンスごとに一意の値を持つ識別番号
|
_motionQueueEntryHandle: CubismMotionQueueEntryHandle; // インスタンスごとに一意の値を持つ識別番号
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,10 +81,7 @@ export namespace Live2DCubismFramework {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
motionQueueEntry.startFadeout(
|
motionQueueEntry.setFadeOut(motionQueueEntry._motion.getFadeOutTime()); // フェードアウト設定
|
||||||
motionQueueEntry._motion.getFadeOutTime(),
|
|
||||||
userTimeSeconds
|
|
||||||
); // フェードアウトを開始し終了する
|
|
||||||
}
|
}
|
||||||
|
|
||||||
motionQueueEntry = new CubismMotionQueueEntry(); // 終了時に破棄する
|
motionQueueEntry = new CubismMotionQueueEntry(); // 終了時に破棄する
|
||||||
|
@ -290,7 +287,7 @@ export namespace Live2DCubismFramework {
|
||||||
|
|
||||||
// ------ ユーザトリガーイベントを検査する ----
|
// ------ ユーザトリガーイベントを検査する ----
|
||||||
const firedList: csmVector<csmString> = motion.getFiredEvent(
|
const firedList: csmVector<csmString> = motion.getFiredEvent(
|
||||||
motionQueueEntry.getLastCheckEventTime() -
|
motionQueueEntry.getLastCheckEventSeconds() -
|
||||||
motionQueueEntry.getStartTime(),
|
motionQueueEntry.getStartTime(),
|
||||||
userTimeSeconds - motionQueueEntry.getStartTime()
|
userTimeSeconds - motionQueueEntry.getStartTime()
|
||||||
);
|
);
|
||||||
|
@ -299,7 +296,7 @@ export namespace Live2DCubismFramework {
|
||||||
this._eventCallBack(this, firedList.at(i), this._eventCustomData);
|
this._eventCallBack(this, firedList.at(i), this._eventCustomData);
|
||||||
}
|
}
|
||||||
|
|
||||||
motionQueueEntry.setLastCheckEventTime(userTimeSeconds);
|
motionQueueEntry.setLastCheckEventSeconds(userTimeSeconds);
|
||||||
|
|
||||||
// ------ 終了済みの処理があれば削除する ------
|
// ------ 終了済みの処理があれば削除する ------
|
||||||
if (motionQueueEntry.isFinished()) {
|
if (motionQueueEntry.isFinished()) {
|
||||||
|
@ -308,6 +305,12 @@ export namespace Live2DCubismFramework {
|
||||||
motionQueueEntry = null;
|
motionQueueEntry = null;
|
||||||
ite = this._motions.erase(ite); // 削除
|
ite = this._motions.erase(ite); // 削除
|
||||||
} else {
|
} else {
|
||||||
|
if (motionQueueEntry.isTriggeredFadeOut()) {
|
||||||
|
motionQueueEntry.startFadeOut(
|
||||||
|
motionQueueEntry.getFadeOutSeconds(),
|
||||||
|
userTimeSeconds
|
||||||
|
);
|
||||||
|
}
|
||||||
ite.preIncrement();
|
ite.preIncrement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue