Advertisement
dimmpixeye

Untitled

Dec 11th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.17 KB | None | 0 0
  1. public class ProcessingMotionBlur : ProcessingBase, ITick
  2.     {
  3.         public Group<ComponentMotionBlur, ComponentView> groupMotion;
  4.  
  5.  
  6.         public ProcessingMotionBlur()
  7.         {
  8.             groupMotion.Remove += entity =>
  9.             {
  10.                 var cMotionBlur = entity.ComponentMotionBlur();
  11.  
  12.                 var len = cMotionBlur.length;
  13.  
  14.                 for (int i = 0; i < len; i++)
  15.                 {
  16.                     cMotionBlur.renderers[i].gameObject.Release();
  17.                 }
  18.  
  19.  
  20.                 cMotionBlur.length = 0;
  21.                 cMotionBlur.lengthEmpty = 0;
  22.             };
  23.         }
  24.  
  25.  
  26.         public void Tick()
  27.         {
  28.             var delta  = Time.delta;
  29.             var frames = Time.frame;
  30.        
  31.             foreach (var entity in groupMotion)
  32.             {
  33.                 var cMotionBlur = entity.ComponentMotionBlur();
  34.                 var cView       = entity.ComponentView();
  35.  
  36.                 for (int i = 0; i < cMotionBlur.length; i++)
  37.                 {
  38.                     var index = cMotionBlur.length - 1 - i;
  39.                     var rend  = cMotionBlur.renderers[i];
  40.                     var time  = cMotionBlur.fadings[index];
  41.                     var color = rend.color;
  42.  
  43.                     if (color.a == 0) continue;
  44.                     color.a = color.a.Minus(delta / time);
  45.                    
  46.                     rend.color = color;
  47.                     if (color.a == 0)
  48.                     {
  49.                         cMotionBlur.lengthEmpty++;
  50.                     }
  51.                 }
  52.  
  53.                 if ((cMotionBlur.time = cMotionBlur.time.Minus(delta)) == 0)
  54.                 {
  55.                     if (cMotionBlur.length <= cMotionBlur.lengthEmpty)
  56.                     {
  57.                         entity.Remove<ComponentMotionBlur>();
  58.                     }
  59.  
  60.                     continue;
  61.                 }
  62.  
  63.                 if (frames.Every(cMotionBlur.step))
  64.                 {
  65.                     var renderer = entity.Populate<SpriteRenderer>("Obj Motion Blur", cView.parts[0].renderer.transform.position, cView.parts[0].renderer.transform.rotation);
  66.                     var l        = cMotionBlur.length++;
  67.                     cMotionBlur.fadings[l] = cMotionBlur.timeFade * (l + 1) * cMotionBlur.timeOffset;
  68.                     cMotionBlur.renderers[l] = renderer;
  69.                     renderer.color = cMotionBlur.color;
  70.                     renderer.sprite = cView.parts[0].renderer.sprite;
  71.                     var transform = renderer.transform;
  72.                     var scale     = transform.localScale;
  73.                     scale.x = cView.facing;
  74.                     transform.localScale = scale;
  75.  
  76.  
  77.                     if (cMotionBlur.length == 128)
  78.                     {
  79.                         var len = cMotionBlur.length << 1;
  80.                         Array.Resize(ref cMotionBlur.renderers, len);
  81.                         Array.Resize(ref cMotionBlur.fadings, len);
  82.                     }
  83.                 }
  84.             }
  85.         }
  86.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement