Пример #1
0
 /// <inheritdoc cref="NotuiElement"/>
 public BoxElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
     if (prototype is BoxElementPrototype prot)
     {
         Size = prot.Size;
     }
 }
Пример #2
0
 /// <inheritdoc cref="NotuiElement"/>
 public PolygonElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
     if (prototype is PolygonElementPrototype prot)
     {
         Vertices = prot.Vertices.ToList();
     }
 }
Пример #3
0
 /// <inheritdoc cref="NotuiElement"/>
 public SegmentElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
     if (prototype is SegmentElementPrototype seprot)
     {
         HoleRadius = seprot.HoleRadius;
         Cycles     = seprot.Cycles;
         Phase      = seprot.Phase;
     }
 }
        public void Evaluate(int SpreadMax)
        {
            FOut.Stream.IsChanged = false;
            if (FContext.IsConnected && FContext.SliceCount > 0 && FContext[0] != null && FQuery.SliceCount > 0)
            {
                var currContextHash = FContext[0].GetHashCode();
                FOut.SliceCount = FQuery.SliceCount;
                if (currContextHash != _prevContextHash)
                {
                    if (_prevContext != null)
                    {
                        _prevContext.OnElementsDeleted -= HandleElementChange;
                        _prevContext.OnElementsUpdated -= HandleElementChange;
                    }
                    FContext[0].OnElementsDeleted += HandleElementChange;
                    FContext[0].OnElementsUpdated += HandleElementChange;
                }
                if (FQuery.IsChanged)
                {
                    HandleElementChange(this, EventArgs.Empty);
                }
                _prevContext     = FContext[0];
                _prevContextHash = currContextHash;
            }
            else
            {
                FOut.SliceCount  = 0;
                _prevContextHash = 0;
                if (_prevContext != null)
                {
                    _prevContext.OnElementsDeleted -= HandleElementChange;
                    _prevContext.OnElementsUpdated -= HandleElementChange;
                }
                _prevContext = null;
            }

            if (FContext.IsChanged && FContext.IsConnected && FContext.SliceCount > 0)
            {
                _elementsChanged = 2;
            }

            if (_elementsChanged > 0)
            {
                if (FContext.SliceCount > 0 && FContext[0] != null)
                {
                    for (int i = 0; i < FQuery.SliceCount; i++)
                    {
                        Filter(i);
                    }
                }
                FOut.Stream.IsChanged = true;
                _elementsChanged--;
            }
        }
Пример #5
0
 private void FlickProgress(BehaviorState state, NotuiContext context)
 {
     if (FlickTime < context.DeltaTime)
     {
         state.DeltaPos = Vector2.Zero;
     }
     else
     {
         // TODO: that 6 there is a rough estimation magic number coming from a vague memory of the integral of something something low-pass filter
         // It was years ago, only the 6 part stuck and it was good enough for animation
         var frametime = (6 / FlickTime) * context.DeltaTime;
         state.DeltaPos = Filters.Velocity(state.DeltaPos, Vector2.Zero, frametime * Max(0.001f, state.DeltaPos.Length()));
     }
 }
Пример #6
0
 private void FlickProgress(BehaviorState state, NotuiContext context)
 {
     if (FlickTime < context.DeltaTime)
     {
         state.DeltaPos   = Vector2.Zero;
         state.DeltaAngle = 0;
         state.DeltaSize  = 0;
     }
     else
     {
         state.DeltaPos   = Filters.Damper(state.DeltaPos, Vector2.Zero, FlickTime, context.DeltaTime);
         state.DeltaAngle = Filters.Damper(state.DeltaAngle, 0, FlickTime, context.DeltaTime);
         state.DeltaSize  = Filters.Damper(state.DeltaSize, 0, FlickTime, context.DeltaTime);
     }
 }
Пример #7
0
 /// <inheritdoc cref="NotuiElement"/>
 public SphereElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
 }
Пример #8
0
 /// <summary></summary>
 /// <param name="prototype"></param>
 /// <param name="context"></param>
 /// <param name="parent"></param>
 protected PlanarElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
 }
Пример #9
0
 /// <inheritdoc cref="NotuiElement"/>
 public InfinitePlaneElement(ElementPrototype prototype, NotuiContext context, NotuiElement parent = null) :
     base(prototype, context, parent)
 {
 }