Add "emit effect on self" annotation.

This commit is contained in:
2023-03-09 16:26:43 +08:00
parent a11ccbd39c
commit 43488cd002
6 changed files with 36 additions and 16 deletions

View File

@@ -1,5 +1,7 @@
using Cryville.Common;
using System;
using UnityEngine;
using Logger = Cryville.Common.Logger;
namespace Cryville.Crtr.Components {
public class SkinAnimation : SkinComponent {
@@ -13,6 +15,7 @@ namespace Cryville.Crtr.Components {
}
SkinContext _skinContext;
Transform _writeTransform;
AnimationSpan _anim;
int _name;
@@ -45,8 +48,10 @@ namespace Cryville.Crtr.Components {
public override void Init() {
_skinContext = new SkinContext(transform);
}
public override void Rewind(double time) {
public override void Rewind(double time, Transform target) {
_startTime = time;
if (target == null) target = transform;
_writeTransform = target;
}
public override void Tick(SkinContainer c, double time) {
float _rtime = (float)(time - _startTime - Delay) / Duration;
@@ -71,7 +76,7 @@ namespace Cryville.Crtr.Components {
}
}
if (Direction.HasFlag(AnimationDirection.reverse)) _rtime = 1 - _rtime;
if (_anim != null) c.MatchAnimation(_anim, _rtime, new RuntimeSkinContext(_skinContext));
if (_anim != null) c.MatchAnimation(_anim, _rtime, new RuntimeSkinContext(_skinContext, _writeTransform));
}
protected override void OnDestroy() { }
}