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; } } } } }
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; } }
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; } } } }
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); } } }