Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ProcessingMotionBlur : ProcessingBase, ITick
- {
- public Group<ComponentMotionBlur, ComponentView> groupMotion;
- public ProcessingMotionBlur()
- {
- groupMotion.Remove += entity =>
- {
- var cMotionBlur = entity.ComponentMotionBlur();
- var len = cMotionBlur.length;
- for (int i = 0; i < len; i++)
- {
- cMotionBlur.renderers[i].gameObject.Release();
- }
- cMotionBlur.length = 0;
- cMotionBlur.lengthEmpty = 0;
- };
- }
- public void Tick()
- {
- var delta = Time.delta;
- var frames = Time.frame;
- foreach (var entity in groupMotion)
- {
- var cMotionBlur = entity.ComponentMotionBlur();
- var cView = entity.ComponentView();
- for (int i = 0; i < cMotionBlur.length; i++)
- {
- var index = cMotionBlur.length - 1 - i;
- var rend = cMotionBlur.renderers[i];
- var time = cMotionBlur.fadings[index];
- var color = rend.color;
- if (color.a == 0) continue;
- color.a = color.a.Minus(delta / time);
- rend.color = color;
- if (color.a == 0)
- {
- cMotionBlur.lengthEmpty++;
- }
- }
- if ((cMotionBlur.time = cMotionBlur.time.Minus(delta)) == 0)
- {
- if (cMotionBlur.length <= cMotionBlur.lengthEmpty)
- {
- entity.Remove<ComponentMotionBlur>();
- }
- continue;
- }
- if (frames.Every(cMotionBlur.step))
- {
- var renderer = entity.Populate<SpriteRenderer>("Obj Motion Blur", cView.parts[0].renderer.transform.position, cView.parts[0].renderer.transform.rotation);
- var l = cMotionBlur.length++;
- cMotionBlur.fadings[l] = cMotionBlur.timeFade * (l + 1) * cMotionBlur.timeOffset;
- cMotionBlur.renderers[l] = renderer;
- renderer.color = cMotionBlur.color;
- renderer.sprite = cView.parts[0].renderer.sprite;
- var transform = renderer.transform;
- var scale = transform.localScale;
- scale.x = cView.facing;
- transform.localScale = scale;
- if (cMotionBlur.length == 128)
- {
- var len = cMotionBlur.length << 1;
- Array.Resize(ref cMotionBlur.renderers, len);
- Array.Resize(ref cMotionBlur.fadings, len);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement