예제 #1
0
 public FMotionStreakElement(Vector2 position, FMotionStreakElement previousElement)
     : base()
 {
     centerVertice=position;
     previous=previousElement;
     if (previousElement!=null) {
         Vector2 diff=centerVertice-previousElement.centerVertice;
         float dist = (float)Math.Sqrt(Vector2.SqrMagnitude(diff));
         if (dist>0.01f) {
             Vector2 normalizedDiff=diff.normalized;
             direction=new Vector2(-normalizedDiff.y,normalizedDiff.x);
             valid=true;
             ChangeWidth(1.0f);
         } else {
             if (previousElement.valid) {
                 direction=previousElement.direction;
                 valid=true;
                 ChangeWidth(1.0f);
             } else {
                 valid=false;
                 width=0;
             }
         }
     } else {
         valid=false;
         width=0;
     }
 }
예제 #2
0
 protected override FMotionStreakElement NewElement(Vector2 localPosition, FMotionStreakElement previous)
 {
     return new FMotionStreakWithBorderElement(localPosition,previous);
 }
예제 #3
0
    public override void Setup()
    {
        _trailElements = new FMotionStreakElement[_maxTrailQuads+1];

        _trailStartsIndex=0;
        _trailEndsIndex=-1;
        _trailElementsCount=0;

        _areLocalVerticesDirty = true;

        if(_numberOfFacetsNeeded != _maxTrailQuads*3)
        {
            _numberOfFacetsNeeded = _maxTrailQuads*3;
            if(_isOnStage) _stage.HandleFacetsChanged();
        }
    }
예제 #4
0
 //public FMotionStreakElement previous;
 public FMotionStreakWithBorderElement(Vector2 position, FMotionStreakElement previousElement)
     : base(position,previousElement)
 {
 }
예제 #5
0
 protected virtual FMotionStreakElement NewElement(Vector2 localPosition, FMotionStreakElement previous)
 {
     return new FMotionStreakElement(localPosition,previous);
 }
예제 #6
0
 public void validWithElement(FMotionStreakElement element)
 {
     direction=element.direction;
     valid=true;
     ChangeWidth(1.0f);
 }