Esempio n. 1
0
 private void DoOptimizeCurveButton(Rect rect)
 {
     if (!this.m_CurveEditor.IsDraggingCurveOrRegion())
     {
         Rect position = new Rect(rect.xMax - 10f - 14f, rect.y + (rect.height - 14f) * 0.5f, 14f, 14f);
         int  num      = 0;
         List <CurveSelection> selectedCurves = this.m_CurveEditor.selectedCurves;
         int curveID;
         if (selectedCurves.Count > 0)
         {
             for (int i = 0; i < selectedCurves.Count; i++)
             {
                 CurveWrapper curveWrapperFromSelection = this.m_CurveEditor.GetCurveWrapperFromSelection(selectedCurves[i]);
                 num += ((!AnimationUtility.IsValidOptimizedPolynomialCurve(curveWrapperFromSelection.curve)) ? 0 : 1);
             }
             if (selectedCurves.Count != num)
             {
                 if (GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
                 {
                     for (int j = 0; j < selectedCurves.Count; j++)
                     {
                         CurveWrapper curveWrapperFromSelection2 = this.m_CurveEditor.GetCurveWrapperFromSelection(selectedCurves[j]);
                         if (!AnimationUtility.IsValidOptimizedPolynomialCurve(curveWrapperFromSelection2.curve))
                         {
                             curveWrapperFromSelection2.curve.preWrapMode  = WrapMode.Once;
                             curveWrapperFromSelection2.curve.postWrapMode = WrapMode.Once;
                             curveWrapperFromSelection2.renderer.SetWrap(WrapMode.Once, WrapMode.Once);
                             AnimationUtility.ConstrainToPolynomialCurve(curveWrapperFromSelection2.curve);
                             curveWrapperFromSelection2.changed = true;
                         }
                     }
                     this.m_CurveEditor.SelectNone();
                 }
             }
         }
         else if (this.m_CurveEditor.GetTopMostCurveID(out curveID))
         {
             CurveWrapper curveWrapperFromID = this.m_CurveEditor.GetCurveWrapperFromID(curveID);
             if (!AnimationUtility.IsValidOptimizedPolynomialCurve(curveWrapperFromID.curve))
             {
                 if (GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
                 {
                     curveWrapperFromID.curve.preWrapMode  = WrapMode.Once;
                     curveWrapperFromID.curve.postWrapMode = WrapMode.Once;
                     curveWrapperFromID.renderer.SetWrap(WrapMode.Once, WrapMode.Once);
                     AnimationUtility.ConstrainToPolynomialCurve(curveWrapperFromID.curve);
                     curveWrapperFromID.changed = true;
                 }
             }
         }
     }
 }
Esempio n. 2
0
    private void DoOptimizeCurveButton(Rect rect)
    {
        if (this.m_CurveEditor.IsDraggingCurveOrRegion())
        {
            return;
        }
        Rect position = new Rect((float)((double)rect.xMax - 10.0 - 14.0), rect.y + (float)(((double)rect.height - 14.0) * 0.5), 14f, 14f);
        int  num      = 0;
        List <CurveSelection> selectedCurves = this.m_CurveEditor.selectedCurves;

        if (selectedCurves.Count > 0)
        {
            for (int index = 0; index < selectedCurves.Count; ++index)
            {
                CurveWrapper curveWrapper = selectedCurves[index].curveWrapper;
                num += !AnimationUtility.IsValidPolynomialCurve(curveWrapper.curve) ? 0 : 1;
            }
            if (selectedCurves.Count == num || !GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
            {
                return;
            }
            for (int index = 0; index < selectedCurves.Count; ++index)
            {
                CurveWrapper curveWrapper = selectedCurves[index].curveWrapper;
                if (!AnimationUtility.IsValidPolynomialCurve(curveWrapper.curve))
                {
                    AnimationUtility.ConstrainToPolynomialCurve(curveWrapper.curve);
                    curveWrapper.changed = true;
                }
            }
            this.m_CurveEditor.SelectNone();
        }
        else
        {
            int curveID;
            if (!this.m_CurveEditor.GetTopMostCurveID(out curveID))
            {
                return;
            }
            CurveWrapper curveWrapperById = this.m_CurveEditor.getCurveWrapperById(curveID);
            if (AnimationUtility.IsValidPolynomialCurve(curveWrapperById.curve) || !GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
            {
                return;
            }
            AnimationUtility.ConstrainToPolynomialCurve(curveWrapperById.curve);
            curveWrapperById.changed = true;
        }
    }
Esempio n. 3
0
    private void DoOptimizeCurveButton(Rect rect)
    {
        if (this.m_CurveEditor.IsDraggingCurveOrRegion())
        {
            return;
        }
        Rect position = new Rect(rect.xMax - 10f - 14f, rect.y + (rect.height - 14f) * 0.5f, 14f, 14f);
        int  num      = 0;
        List <CurveSelection> selectedCurves = this.m_CurveEditor.selectedCurves;

        if (selectedCurves.Count > 0)
        {
            for (int i = 0; i < selectedCurves.Count; i++)
            {
                CurveWrapper curveWrapper = selectedCurves[i].curveWrapper;
                num += ((!AnimationUtility.IsValidPolynomialCurve(curveWrapper.curve)) ? 0 : 1);
            }
            if (selectedCurves.Count != num && GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
            {
                for (int j = 0; j < selectedCurves.Count; j++)
                {
                    CurveWrapper curveWrapper2 = selectedCurves[j].curveWrapper;
                    if (!AnimationUtility.IsValidPolynomialCurve(curveWrapper2.curve))
                    {
                        AnimationUtility.ConstrainToPolynomialCurve(curveWrapper2.curve);
                        curveWrapper2.changed = true;
                    }
                }
                this.m_CurveEditor.SelectNone();
            }
        }
        else
        {
            int id;
            if (this.m_CurveEditor.GetTopMostCurveID(out id))
            {
                CurveWrapper curveWrapperById = this.m_CurveEditor.getCurveWrapperById(id);
                if (!AnimationUtility.IsValidPolynomialCurve(curveWrapperById.curve) && GUI.Button(position, ParticleSystemCurveEditor.s_Styles.optimizeCurveText, ParticleSystemCurveEditor.s_Styles.plus))
                {
                    AnimationUtility.ConstrainToPolynomialCurve(curveWrapperById.curve);
                    curveWrapperById.changed = true;
                }
            }
        }
    }
Esempio n. 4
0
 private void DoOptimizeCurveButton(Rect rect)
 {
     if (!this.m_CurveEditor.IsDraggingCurveOrRegion())
     {
         Rect position = new Rect((rect.xMax - 10f) - 14f, rect.y + ((rect.height - 14f) * 0.5f), 14f, 14f);
         int  num2     = 0;
         List <CurveSelection> selectedCurves = this.m_CurveEditor.selectedCurves;
         if (selectedCurves.Count > 0)
         {
             for (int i = 0; i < selectedCurves.Count; i++)
             {
                 CurveWrapper curveWrapper = selectedCurves[i].curveWrapper;
                 num2 += !AnimationUtility.IsValidPolynomialCurve(curveWrapper.curve) ? 0 : 1;
             }
             if ((selectedCurves.Count != num2) && GUI.Button(position, s_Styles.optimizeCurveText, s_Styles.plus))
             {
                 for (int j = 0; j < selectedCurves.Count; j++)
                 {
                     CurveWrapper wrapper2 = selectedCurves[j].curveWrapper;
                     if (!AnimationUtility.IsValidPolynomialCurve(wrapper2.curve))
                     {
                         AnimationUtility.ConstrainToPolynomialCurve(wrapper2.curve);
                         wrapper2.changed = true;
                     }
                 }
                 this.m_CurveEditor.SelectNone();
             }
         }
         else
         {
             int num5;
             if (this.m_CurveEditor.GetTopMostCurveID(out num5))
             {
                 CurveWrapper wrapper3 = this.m_CurveEditor.getCurveWrapperById(num5);
                 if (!AnimationUtility.IsValidPolynomialCurve(wrapper3.curve) && GUI.Button(position, s_Styles.optimizeCurveText, s_Styles.plus))
                 {
                     AnimationUtility.ConstrainToPolynomialCurve(wrapper3.curve);
                     wrapper3.changed = true;
                 }
             }
         }
     }
 }
    // Polynomial curves have limitations on how they have to be authored.
    // Since we don't enforce the layout, we have a button that enforces the curve layout instead.
    void DoOptimizeCurveButton(Rect rect)
    {
        bool    optimizeButtonShown = false;
        Vector2 buttonSize          = new Vector2(64, 14);
        Rect    buttonRect          = new Rect(rect.xMax - 80 - buttonSize.x, rect.y + (rect.height - buttonSize.y) * 0.5f, buttonSize.x, buttonSize.y);

        if (!m_CurveEditor.IsDraggingCurveOrRegion())
        {
            int numValidPolynomialCurve     = 0;
            List <CurveSelection> selection = m_CurveEditor.selectedCurves;
            if (selection.Count > 0)
            {
                for (int j = 0; j < selection.Count; ++j)
                {
                    CurveWrapper cw = m_CurveEditor.GetCurveWrapperFromSelection(selection[j]);
                    numValidPolynomialCurve += AnimationUtility.IsValidOptimizedPolynomialCurve(cw.curve) ? 1 : 0;
                }

                if (selection.Count != numValidPolynomialCurve)
                {
                    optimizeButtonShown = true;
                    if (GUI.Button(buttonRect, s_Styles.optimizeCurveText))
                    {
                        for (int j = 0; j < selection.Count; ++j)
                        {
                            CurveWrapper cw = m_CurveEditor.GetCurveWrapperFromSelection(selection[j]);
                            if (!AnimationUtility.IsValidOptimizedPolynomialCurve(cw.curve))
                            {
                                // Reset wrap mode
                                cw.curve.preWrapMode  = WrapMode.Clamp;
                                cw.curve.postWrapMode = WrapMode.Clamp;
                                cw.renderer.SetWrap(WrapMode.Clamp, WrapMode.Clamp);

                                AnimationUtility.ConstrainToPolynomialCurve(cw.curve);
                                cw.changed = true; // Used in SaveChangedCurves () later in OnGUI
                            }
                        }
                        m_CurveEditor.SelectNone();
                    }
                }
            }
            else
            {
                // Check if top most curve can be optimized
                int topMostCurveID;
                if (m_CurveEditor.GetTopMostCurveID(out topMostCurveID))
                {
                    CurveWrapper cw = m_CurveEditor.GetCurveWrapperFromID(topMostCurveID);
                    if (!AnimationUtility.IsValidOptimizedPolynomialCurve(cw.curve))
                    {
                        optimizeButtonShown = true;
                        if (GUI.Button(buttonRect, s_Styles.optimizeCurveText))
                        {
                            // Reset wrap mode
                            cw.curve.preWrapMode  = WrapMode.Clamp;
                            cw.curve.postWrapMode = WrapMode.Clamp;
                            cw.renderer.SetWrap(WrapMode.Clamp, WrapMode.Clamp);

                            AnimationUtility.ConstrainToPolynomialCurve(cw.curve);
                            cw.changed = true; // Used in SaveChangedCurves () later in OnGUI
                        }
                    }
                }
            }
        }

        if (!optimizeButtonShown)
        {
            using (new EditorGUI.DisabledScope(true))
            {
                GUI.Button(buttonRect, s_Styles.optimizeCurveText);
            }
        }
    }