GUIColorDistributionField.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using bs;
  3. namespace bs.Editor
  4. {
  5. partial class GUIColorDistributionField
  6. {
  7. /// <summary>
  8. /// Triggered when the distribution in the field changes.
  9. /// </summary>
  10. public event Action OnChanged;
  11. partial void Callback_OnMinClicked()
  12. {
  13. ColorDistribution distribution = Value;
  14. if (DistributionType == PropertyDistributionType.Constant ||
  15. DistributionType == PropertyDistributionType.RandomRange)
  16. {
  17. ColorPicker.Show(distribution.GetMinConstant(), true, (success, value) =>
  18. {
  19. if (!success)
  20. return;
  21. if (DistributionType == PropertyDistributionType.Constant)
  22. Value = new ColorDistribution(value);
  23. else
  24. Value = new ColorDistribution(value, distribution.GetMaxConstant());
  25. OnChanged?.Invoke();
  26. });
  27. }
  28. else if (DistributionType == PropertyDistributionType.Curve ||
  29. DistributionType == PropertyDistributionType.RandomCurveRange)
  30. {
  31. GradientPicker.Show(distribution.GetMinGradient(), (success, colorGradient) =>
  32. {
  33. if (!success)
  34. return;
  35. if(DistributionType == PropertyDistributionType.Curve)
  36. Value = new ColorDistribution(colorGradient);
  37. else
  38. Value = new ColorDistribution(colorGradient, distribution.GetMaxGradient());
  39. OnChanged?.Invoke();
  40. });
  41. }
  42. }
  43. partial void Callback_OnMaxClicked()
  44. {
  45. ColorDistribution distribution = Value;
  46. if (DistributionType == PropertyDistributionType.RandomRange)
  47. {
  48. ColorPicker.Show(distribution.GetMaxConstant(), true, (success, value) =>
  49. {
  50. if (!success)
  51. return;
  52. Value = new ColorDistribution(distribution.GetMinConstant(), value);
  53. OnChanged?.Invoke();
  54. });
  55. }
  56. else if (DistributionType == PropertyDistributionType.RandomCurveRange)
  57. {
  58. GradientPicker.Show(distribution.GetMaxGradient(), (success, colorGradient) =>
  59. {
  60. if (!success)
  61. return;
  62. Value = new ColorDistribution(distribution.GetMinGradient(), colorGradient);
  63. OnChanged?.Invoke();
  64. });
  65. }
  66. }
  67. }
  68. }