|
- using System;
- using System.Collections.Generic;
- using UnityEngine;
-
- class ActionTintTo : ActionInterval
- {
- protected Vector4 color;
- protected Vector4 path;
- protected const float coeff = 1F / 255F;
-
- public ActionTintTo(Vector4 tgtColor, float tgtDuration)
- : base(tgtDuration)
- {
- color = tgtColor * coeff;
- path = Vector4.zero;
- }
-
- public ActionTintTo(Vector3 tgtColor, float tgtDuration)
- : this(new Vector4(tgtColor.x, tgtColor.y, tgtColor.z), tgtDuration)
- {
- }
-
- public override Action clone()
- {
- return new ActionTintTo(color / coeff, duration);
- }
-
- public override void start()
- {
- base.start();
- Color tgtColor = renderer.material.color;
- path[0] = color[0] - tgtColor[0];
- path[1] = color[1] - tgtColor[1];
- path[2] = color[2] - tgtColor[2];
- path[3] = color[3] - tgtColor[3];
- }
-
- public override void stepInterval(float dt)
- {
- float d = dt / duration;
- Vector4 tgt = path * d;
- Color tgtColor = renderer.material.color;
- tgtColor[0] += tgt[0];
- tgtColor[1] += tgt[1];
- tgtColor[2] += tgt[2];
- tgtColor[3] += tgt[3];
- renderer.material.color = tgtColor;
- }
- }
|