Example #1
0
    public override void Clone(ScalableObject toClone, Vector2 positioner)
    {
        PathObject pathObjectToClone = toClone as PathObject;

        Init();
        BezierCurve.Clear();
        BezierCurve = pathObjectToClone.BezierCurve.ConvertAll(segment => new BezierSegment(this, segment));

        IsClosed = pathObjectToClone.IsClosed;
        OrganizeAllNeighbors();

        HandOverPointsToRenderer();
        _pathRenderer.UpdateRenderer();
        _pathSelectionRenderer.UpdateRenderer();
        Anchors(GetAllPoints());
        PositionAtCenter(positioner);
        SortPoints(GetAllPoints());


        UpdateInlineAreaRenderer();
        IColorable selectable = toClone as IColorable;

        UpdateFillRendererColor(selectable.GetInlineAreaColor());
        UpdateLineRendererColor(selectable.GetPathColor());
        UpdateLineRendererThickness(selectable.GetPathThickness());
        Hover(false);
        ShowBoundingRect(false);
        selected          = false;
        SegmentCount      = BezierCurve.Count;
        showPointsHandles = false;
    }
Example #2
0
 public void UpdateSelectedPathObject(ScalableObject scalableObject)
 {
     if (scalableObject != null)
     {
         OnSelectedObjectChanged(scalableObject);
     }
 }
Example #3
0
    private void scaleParticleSystem()
    {
        ParticleSystem system = ScalableObject.GetComponent <ParticleSystem>();
        var            sz     = system.sizeOverLifetime;

        sz.enabled = true;


        ParticleSystem.MinMaxCurve curve = new ParticleSystem.MinMaxCurve();
        curve.mode = ParticleSystemCurveMode.TwoConstants;
        if (sz.size.constantMax + CustomIncrementAmount < Max)
        {
            curve.constantMin = sz.size.constant + CustomIncrementAmount;
            curve.constantMax = sz.size.constantMax + CustomIncrementAmount;
            curve.constant    = sz.size.constantMin + CustomIncrementAmount;
        }
        else if (sz.size.constantMin + CustomIncrementAmount > Min)
        {
            curve.constantMin = sz.size.constant + CustomIncrementAmount;
            curve.constantMax = sz.size.constantMax + CustomIncrementAmount;
            curve.constant    = sz.size.constantMin + CustomIncrementAmount;
        }

        sz.size = curve;
    }
 void UpdatePathObject(ScalableObject current)
 {
     _currentHoveredObject = current;
     _currentPathObject    = current as PathObject;
     if (_currentPathObject != null)
     {
         _segments = _currentPathObject.BezierCurve;
     }
 }
Example #5
0
 public void DeleteObject(ScalableObject scalableObject)
 {
     if (scalableObject == null)
     {
         return;
     }
     GameObject.Destroy(scalableObject.gameObject);
     RemoveObject(scalableObject);
 }
Example #6
0
    public void UpdateHoveredPathObject(ScalableObject scalableObject)
    {
        if (_currentUpdater != null)
        {
            _currentUpdater.SetLastSelected(scalableObject);
        }

        OnHoveredObjectChanged(scalableObject);

        ChangeState();
    }
Example #7
0
 public void Unselect()
 {
     if (_lastSelectedObject == null)
     {
         return;
     }
     _lastSelectedObject.Unselect();
     _lastSelectedObject.Hover(false);
     _lastSelectedObject        = null;
     _isPathObjectUpdateAllowed = true;
 }
Example #8
0
    //////////////////////////// ObjectListUpdater ///////////////////////////

    public ScalableObject GetAreaObject()
    {
        ScalableObject drawArea = _drawAreaObjectsUpdater.GetFirstSelectedObject();

        if (drawArea == null)
        {
            drawArea = _drawAreaObjectsUpdater.NewObject(true);
        }

        return(drawArea);
    }
Example #9
0
 public bool CheckCondition(ScalableObject pathObject)
 {
     if (checkBaseCondition != null)
     {
         return(checkBaseCondition.Invoke(pathObject));
     }
     else
     {
         return(checkCondition.Invoke(pathObject as PathObject));
     }
 }
 public void Unsuscribe(ScalableObject scalable)
 {
     if (scalable == null)
     {
         return;
     }
     scalable.Selected = false;
     scalable.ShowBoundingRect(false);
     _currentList.Remove(scalable);
     _currentColorables.Remove(scalable as IColorable);
 }
    public void Suscribe(ScalableObject scalable)
    {
        scalable.Selected = true;
        scalable.ShowBoundingRect(true);
        _currentList.Add(scalable);
        IColorable colorable = scalable as IColorable;

        _currentColorables.Add(colorable);
        if (_currentColorables.Count == 1)
        {
            _editorMenu.UpdateMenu(colorable);
        }
    }
Example #12
0
 private void OnTriggerEnter(Collider other)
 {
     if (!hitObj)
     {
         if (other.CompareTag("Scalable"))
         {
             hitObj     = true;
             ScalingObj = other.gameObject.transform;
             scaleObj   = ScalingObj.GetComponent <ScalableObject>();
             art.SetActive(false);
             StartCoroutine(Scale());
         }
     }
 }
Example #13
0
    public ScalableObject NewObject(bool objectUpdateAfter)
    {
        GameObject newPathObject = GameObject.Instantiate(_prefab, _prefabParent);

        _lastSelectedObject = newPathObject.GetComponent <ScalableObject>();
        _lastSelectedObject.Init();
        AddObject(_lastSelectedObject);

        Program.Instance.UpdateHoveredPathObject(_lastSelectedObject);
        _isPathObjectUpdateAllowed = objectUpdateAfter;
        SortObjectList();

        return(_lastSelectedObject);
    }
Example #14
0
    public bool OtherObjectHovered(out ScalableObject hoveredObject, out bool overObject)
    {
        if (!_isPathObjectUpdateAllowed && _lastSelectedObject != null)
        {
            overObject = false;

            CheckConditions(out overObject);
            _lastSelectedObject.Hover(overObject, true);

            hoveredObject = _lastSelectedObject;
            return(false);
        }

        bool otherObjectHovered;

        if (CheckCondition(out hoveredObject, out otherObjectHovered))
        {
            overObject = true;

            if (otherObjectHovered)
            {
                if (_lastHoveredObject != null && _lastHoveredObject.Hovered)
                {
                    _lastHoveredObject.Hover(false);
                }
                _lastHoveredObject = hoveredObject;
                hoveredObject      = _lastHoveredObject;
                return(true);
            }
            if (!_lastHoveredObject.Hovered)
            {
                _lastHoveredObject.Hover(true, true);
            }

            hoveredObject = _lastHoveredObject;

            return(otherObjectHovered);
        }

        hoveredObject = null;
        overObject    = false;
        if (_lastHoveredObject != null && _lastHoveredObject.Hovered)
        {
            _lastHoveredObject.Hover(false);
        }
        return(false);
    }
Example #15
0
 public override bool CheckCondition(out ScalableObject hoveredObject, out bool otherObjectHovered)
 {
     hoveredObject = _lastHoveredObject;
     foreach (PathObject pathObject in objectList)
     {
         foreach (Func <PathObject, bool> func in _onHoverUpdate)
         {
             if (func.Invoke(pathObject))
             {
                 hoveredObject      = pathObject;
                 otherObjectHovered = pathObject != _lastHoveredObject;
                 return(true);
             }
         }
     }
     otherObjectHovered = false;
     return(false);
 }
    public void HoverPathObject(bool isHover)
    {
        if (_lastHoveredObject != null && _lastHoveredObject.Hovered)
        {
            _lastHoveredObject.Hover(false);
        }
        ;

        if (isHover)
        {
            if (_currentHoveredObject)
            {
                _currentHoveredObject.Hover(true, true);
            }

            _lastHoveredObject = _currentHoveredObject;
        }
    }
Example #17
0
    public IEnumerator TakeScreenShot(OpenFileName ofn)
    {
        yield return(new WaitForEndOfFrame()); // it must be a coroutine

        yield return(new WaitForEndOfFrame());

        Program.Instance.HideAllBoundingBoxes();
        Program.Instance.AllowPathObjectUpdate();

        ScalableObject drawArea    = Program.Instance.GetAreaObject();
        Vector2        minPosition = drawArea.DownLeftAnchor;

        minPosition = canvas.TransformPoint(minPosition);
        Vector3 minPosition3 = new Vector3(minPosition.x, minPosition.y, corners[0].z);

        minPosition = _camera.WorldToScreenPoint(minPosition3);

        Vector2 maxPosition = drawArea.UpRightAnchor;

        maxPosition = canvas.TransformPoint(maxPosition);
        Vector3 maxPosition3 = new Vector3(maxPosition.x, maxPosition.y, corners[2].z);

        maxPosition = _camera.WorldToScreenPoint(maxPosition3);

        Vector2 size = maxPosition - minPosition;

        Texture2D     snapShot   = new Texture2D((int)size.x - 2, (int)size.y, TextureFormat.ARGB32, false);
        RenderTexture snapShotRT = new RenderTexture(Screen.width, Screen.height, 24, RenderTextureFormat.ARGB32);

        RenderTexture.active  = snapShotRT;
        _camera.targetTexture = snapShotRT;
        _camera.Render();

        snapShot.ReadPixels(new Rect((int)minPosition.x + 2, Screen.height - (int)maxPosition.y, Screen.width, Screen.height), 0, 0);

        snapShot.Apply();
        RenderTexture.active  = null;
        _camera.targetTexture = null;

        var bytes = snapShot.EncodeToPNG();

        Destroy(snapShot);
        File.WriteAllBytes(ofn.file, bytes);
    }
Example #18
0
    public void DuplicateObject()
    {
        bool    downLeftset = false;
        Vector2 downLeft    = Vector2.zero;
        Vector2 oldDownLeft = Vector2.zero;
        Vector2 translate   = Vector2.zero;

        for (int i = ObjectList.Count - 1; i >= 0; i--)
        {
            ScalableObject currentObject = ObjectList[i];
            if (currentObject.Selected)
            {
                if (!downLeftset)
                {
                    oldDownLeft = currentObject.DownLeftAnchor;
                    downLeft    = new Vector2(currentObject.Width() / 2f, currentObject.Height() / 2f) - Vector2.zero;
                    translate   = downLeft;
                    downLeftset = true;
                }
                else
                {
                    translate  = downLeft;
                    translate += oldDownLeft;
                    translate -= currentObject.DownLeftAnchor;
                }

                GameObject     newPathObject = GameObject.Instantiate(currentObject.gameObject, _prefabParent);
                ScalableObject dublicate     = newPathObject.GetComponent <ScalableObject>();
                dublicate.Clone(currentObject, translate);

                newObjects.Add(dublicate);
            }
        }

        foreach (var item in newObjects)
        {
            ObjectList.Add(item);
        }
        newObjects.Clear();
        SortObjectList();
    }
    public override void Clone(ScalableObject toClone, Vector2 positioner)
    {
        base.Init();

        _selectionRenderer = _drawAreaSelectionRenderer;

        AreaObject areaObjectToClone = toClone as AreaObject;

        _downLeftAnchor = areaObjectToClone.DownLeftAnchor;
        _upRightAnchor  = areaObjectToClone.UpRightAnchor;

        _drawAreaRenderer.UpdateRenderer(DownLeftAnchor, UpRightAnchor, true);
        _drawAreaSelectionRenderer.UpdateRenderer(DownLeftAnchor, UpRightAnchor, false);
        _borderRenderer.UpdateRenderer(DownLeftAnchor, UpRightAnchor, false);
        SetPoints();
        BoundingBoxRenderer.UpdateRectangle();
        PositionAtCenter(positioner);
        Hover(false);
        ShowBoundingRect(false);
        selected = false;
    }
    public void Select()
    {
        Vector2 mousePosition = _program.GetMouseCanvasPosition();

        Renderer.UpdateRectangle(StartSelectionPoint, mousePosition);
        ItemSelected          = 0;
        _currentSelectionMode = SelectionMode.MultipleObject;

        ScalableObject        selected   = null;
        List <ScalableObject> objectList = _program.CurrentScalableList();

        UnsuscribeAll();

        for (int i = 0; i < objectList.Count; i++)
        {
            ScalableObject segment = objectList[i];

            Vector2 downLeftAnchor = segment.DownLeftAnchor;
            Vector2 upRightAnchor  = segment.UpRightAnchor;

            if (mousePosition.x < downLeftAnchor.x && StartSelectionPoint.x < downLeftAnchor.x ||
                mousePosition.x > upRightAnchor.x && StartSelectionPoint.x > upRightAnchor.x ||
                mousePosition.y < downLeftAnchor.y && StartSelectionPoint.y < downLeftAnchor.y ||
                mousePosition.y > upRightAnchor.y && StartSelectionPoint.y > upRightAnchor.y)
            {
                continue;
            }

            Suscribe(segment);
            selected = segment;
            ItemSelected++;
        }

        if (ItemSelected == 1)
        {
            _currentSelectionMode = SelectionMode.SingleObject;
            _currentHoveredObject = selected;
        }
    }
Example #21
0
 public virtual void Clone(ScalableObject toClone, Vector2 positioner)
 {
 }
Example #22
0
 public void Delete(ScalableObject scalableObject)
 {
     _currentUpdater.DeleteObject(scalableObject);
 }
Example #23
0
 public void RemoveObject(ScalableObject scaleableObject)
 {
     ObjectList.Remove(scaleableObject);
 }
Example #24
0
 public void AddObject(ScalableObject scaleableObject)
 {
     ObjectList.Add(scaleableObject);
 }
Example #25
0
 public virtual void SetLastSelected(ScalableObject scalableObject)
 {
     _lastSelectedObject = scalableObject;
 }
Example #26
0
 public override void SetLastSelected(ScalableObject scalableObject)
 {
     base.SetLastSelected(scalableObject);
     _lastSelected = scalableObject as PathObject;
 }
 void UpdateSelectedPathObject(ScalableObject current)
 {
     _currentSelectedObject     = current;
     _currentSelectedPathObject = current as PathObject;
 }
Example #28
0
 public virtual bool CheckCondition(out ScalableObject otherObject, out bool newObject)
 {
     otherObject = null;
     newObject   = false;
     return(false);
 }