ObjectPropertiesForm.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using Autodesk.Max;
  5. namespace Max2Babylon
  6. {
  7. public partial class ObjectPropertiesForm : Form
  8. {
  9. private readonly List<IINode> objects = new List<IINode>();
  10. public ObjectPropertiesForm()
  11. {
  12. InitializeComponent();
  13. }
  14. private void butOK_Click(object sender, EventArgs e)
  15. {
  16. Tools.UpdateCheckBox(chkNoExport, objects, "babylonjs_noexport");
  17. Tools.UpdateCheckBox(chkCollisions, objects, "babylonjs_checkcollisions");
  18. Tools.UpdateCheckBox(chkPickable, objects, "babylonjs_checkpickable");
  19. Tools.UpdateCheckBox(chkOptimize, objects, "babylonjs_optimizevertices");
  20. Tools.UpdateCheckBox(chkShowBoundingBox, objects, "babylonjs_showboundingbox");
  21. Tools.UpdateCheckBox(chkShowSubMeshesBoundingBox, objects, "babylonjs_showsubmeshesboundingbox");
  22. Tools.UpdateCheckBox(chkAutoAnimate, objects, "babylonjs_autoanimate");
  23. Tools.UpdateCheckBox(chkLoop, objects, "babylonjs_autoanimateloop");
  24. Tools.UpdateNumericUpDown(nupFrom, objects, "babylonjs_autoanimate_from");
  25. Tools.UpdateNumericUpDown(nupTo, objects, "babylonjs_autoanimate_to");
  26. Tools.UpdateNumericUpDown(nupAlphaIndex, objects, "babylonjs_alphaindex");
  27. Tools.UpdateNumericUpDown(nupMass, objects, "babylonjs_mass");
  28. Tools.UpdateNumericUpDown(nupFriction, objects, "babylonjs_friction");
  29. Tools.UpdateNumericUpDown(nupRestitution, objects, "babylonjs_restitution");
  30. Tools.UpdateComboBox(cbImpostor, objects, "babylonjs_impostor");
  31. Tools.UpdateCheckBox(chkAutoPlay, objects, "babylonjs_sound_autoplay");
  32. Tools.UpdateCheckBox(chkLoop, objects, "babylonjs_sound_loop");
  33. Tools.UpdateNumericUpDown(nupVolume, objects, "babylonjs_sound_volume");
  34. Tools.UpdateNumericUpDown(nupPlaybackRate, objects, "babylonjs_sound_playbackrate");
  35. Tools.UpdateComboBox(cbDistanceModel, objects, "babylonjs_sound_distancemodel");
  36. Tools.UpdateNumericUpDown(nupMaxDistance, objects, "babylonjs_sound_maxdistance");
  37. Tools.UpdateNumericUpDown(nupRolloff, objects, "babylonjs_sound_rolloff");
  38. Tools.UpdateNumericUpDown(nupRefDistance, objects, "babylonjs_sound_refdistance");
  39. Tools.UpdateCheckBox(chkDirectional, objects, "babylonjs_sound_directional");
  40. Tools.UpdateNumericUpDown(nupConeInnerAngle, objects, "babylonjs_sound_coneinnerangle");
  41. Tools.UpdateNumericUpDown(nupConeOuterAngle, objects, "babylonjs_sound_coneouterangle");
  42. Tools.UpdateNumericUpDown(nupConeOuterGain, objects, "babylonjs_sound_coneoutergain");
  43. Tools.UpdateTextBox(txtSound, objects, "babylonjs_sound_filename");
  44. }
  45. private void ObjectPropertiesForm_Load(object sender, EventArgs e)
  46. {
  47. for (var index = 0; index < Loader.Core.SelNodeCount; index++)
  48. {
  49. var node = Loader.Core.GetSelNode(index);
  50. if (node.ObjectRef != null &&
  51. (
  52. node.ObjectRef.Eval(0).Obj.SuperClassID == SClass_ID.Geomobject
  53. ||
  54. node.ObjectRef.Eval(0).Obj.SuperClassID == SClass_ID.Helper
  55. ))
  56. {
  57. objects.Add(node);
  58. }
  59. }
  60. Tools.PrepareCheckBox(chkNoExport, objects, "babylonjs_noexport");
  61. Tools.PrepareCheckBox(chkCollisions, objects, "babylonjs_checkcollisions");
  62. Tools.PrepareCheckBox(chkPickable, objects, "babylonjs_checkpickable");
  63. Tools.PrepareCheckBox(chkOptimize, objects, "babylonjs_optimizevertices");
  64. Tools.PrepareCheckBox(chkShowBoundingBox, objects, "babylonjs_showboundingbox");
  65. Tools.PrepareCheckBox(chkShowSubMeshesBoundingBox, objects, "babylonjs_showsubmeshesboundingbox");
  66. Tools.PrepareCheckBox(chkAutoAnimate, objects, "babylonjs_autoanimate", 1);
  67. Tools.PrepareCheckBox(chkLoop, objects, "babylonjs_autoanimateloop", 1);
  68. Tools.PrepareNumericUpDown(nupFrom, objects, "babylonjs_autoanimate_from");
  69. Tools.PrepareNumericUpDown(nupTo, objects, "babylonjs_autoanimate_to", 100.0f);
  70. Tools.PrepareNumericUpDown(nupAlphaIndex, objects, "babylonjs_alphaindex", 1000);
  71. Tools.PrepareNumericUpDown(nupMass, objects, "babylonjs_mass");
  72. Tools.PrepareNumericUpDown(nupFriction, objects, "babylonjs_friction", 0.2f);
  73. Tools.PrepareNumericUpDown(nupRestitution, objects, "babylonjs_restitution", 0.2f);
  74. Tools.PrepareComboBox(cbImpostor, objects[0], "babylonjs_impostor", "None");
  75. Tools.PrepareCheckBox(chkAutoPlay, objects, "babylonjs_sound_autoplay", 1);
  76. Tools.PrepareCheckBox(chkLoop, objects, "babylonjs_sound_loop", 1);
  77. Tools.PrepareNumericUpDown(nupVolume, objects, "babylonjs_sound_volume", 1.0f);
  78. Tools.PrepareNumericUpDown(nupPlaybackRate, objects, "babylonjs_sound_playbackrate", 1.0f);
  79. Tools.PrepareComboBox(cbDistanceModel, objects[0], "babylonjs_sound_distancemodel", "linear");
  80. Tools.PrepareNumericUpDown(nupMaxDistance, objects, "babylonjs_sound_maxdistance", 100.0f);
  81. Tools.PrepareNumericUpDown(nupRolloff, objects, "babylonjs_sound_rolloff", 1.0f);
  82. Tools.PrepareNumericUpDown(nupRefDistance, objects, "babylonjs_sound_refdistance", 1.0f);
  83. Tools.PrepareCheckBox(chkDirectional, objects, "babylonjs_sound_directional", 0);
  84. Tools.PrepareNumericUpDown(nupConeInnerAngle, objects, "babylonjs_sound_coneinnerangle", 360.00f);
  85. Tools.PrepareNumericUpDown(nupConeOuterAngle, objects, "babylonjs_sound_coneouterangle", 360.00f);
  86. Tools.PrepareNumericUpDown(nupConeOuterGain, objects, "babylonjs_sound_coneoutergain", 1.0f);
  87. Tools.PrepareTextBox(txtSound, objects[0], "babylonjs_sound_filename");
  88. }
  89. private void chkAutoAnimate_CheckedChanged(object sender, EventArgs e)
  90. {
  91. grpAutoAnimate.Enabled = chkAutoAnimate.Checked;
  92. }
  93. private void chkDirectional_CheckedChanged(object sender, EventArgs e)
  94. {
  95. grpDirectional.Enabled = chkDirectional.Checked;
  96. }
  97. private void cmdFileBrowse_Click(object sender, EventArgs e)
  98. {
  99. if (ofdOpenSound.ShowDialog() == DialogResult.OK)
  100. {
  101. txtSound.Text = ofdOpenSound.FileName;
  102. }
  103. }
  104. }
  105. }