Guest User

Life if Feudal - Client class functions part 4/4

a guest
Aug 10th, 2015
845
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 399.80 KB | None | 0 0
  1.  
  2.  /*!
  3.  @brief A container that splits its area between two child controls.
  4.  
  5.  A GuiSplitContainer can be used to dynamically subdivide an area between two child controls.  A splitter bar is placed between the two controls and allows to dynamically adjust the sizing ratio between the two sides.  Splitting can be either horizontal (subdividing top and bottom) or vertical (subdividing left and right) depending on #orientation.
  6.  
  7.  By using #fixedPanel, one of the panels can be chosen to remain at a fixed size (#fixedSize).@tsexample
  8.  // Create a vertical splitter with a fixed-size left panel.
  9.  %splitter = new GuiSplitContainer()
  10.  {
  11.     orientation = "Vertical";
  12.     fixedPanel = "FirstPanel";
  13.     fixedSize = 100;
  14.  
  15.     new GuiScrollCtrl()
  16.     {
  17.        new GuiMLTextCtrl()
  18.        {
  19.           text = %longText;
  20.        };
  21.     };
  22.  
  23.     new GuiScrollCtrl()
  24.     {
  25.        new GuiMLTextCtrl()
  26.        {
  27.           text = %moreLongText;
  28.        };
  29.     };
  30.  };
  31.  @endtsexample
  32.  
  33.  @note The children placed inside GuiSplitContainers must be GuiContainers.
  34.  
  35.   */
  36.  class  GuiSplitContainer : public GuiContainer {
  37.    public:
  38.  
  39.     /*! @name Splitter
  40.    
  41.     Options to configure split panels contained by this control
  42.     @{ */
  43.     /*! */
  44.     /*!
  45.     Whether to split between top and bottom (horizontal) or between left and right (vertical).
  46.    
  47.      */
  48.     GuiSplitOrientation orientation;
  49.     /*!
  50.     Width of the splitter bar between the two sides.  Default is 2.
  51.    
  52.      */
  53.     int splitterSize;
  54.     /*!
  55.     Point on control through which the splitter goes.
  56.  
  57. Changed relatively if size of control changes.
  58.    
  59.      */
  60.     Point2I splitPoint;
  61.     /*!
  62.     Which (if any) side of the splitter to keep at a fixed size.
  63.    
  64.      */
  65.     GuiSplitFixedPanel fixedPanel;
  66.     /*!
  67.     Width of the fixed panel specified by #fixedPanel (if any).
  68.    
  69.      */
  70.     int fixedSize;
  71.     /// @}
  72.  
  73.  
  74.     /*! @name Layout
  75.     @{ */
  76.     /*! */
  77.     /// @}
  78.  
  79.  
  80.     /*! @name Layout
  81.     @{ */
  82.     /*! */
  83.     /// @}
  84.  
  85.  
  86.     /*! @name Control
  87.     @{ */
  88.     /*! */
  89.     /// @}
  90.  
  91.  
  92.     /*! @name ToolTip
  93.     @{ */
  94.     /*! */
  95.     /// @}
  96.  
  97.  
  98.     /*! @name Editing
  99.     @{ */
  100.     /*! */
  101.     /// @}
  102.  
  103.  
  104.     /*! @name Localization
  105.     @{ */
  106.     /*! */
  107.     /// @}
  108.  
  109.  
  110.     /*! @name Ungrouped
  111.     @{ */
  112.     /*! */
  113.     /// @}
  114.  
  115.  
  116.     /*! @name Object
  117.     @{ */
  118.     /*! */
  119.     /// @}
  120.  
  121.  
  122.     /*! @name Editing
  123.     @{ */
  124.     /*! */
  125.     /// @}
  126.  
  127.  
  128.     /*! @name Persistence
  129.     @{ */
  130.     /*! */
  131.     /// @}
  132.  
  133.  };
  134.  
  135.  /*!
  136.  @deprecated Use GuiWindowCtrl with GuiWindowCtrl::canCollapse = true.
  137.  
  138.   */
  139.  class  GuiWindowCollapseCtrl : public GuiWindowCtrl {
  140.    public:
  141.  
  142.     /*! @name Window
  143.     @{ */
  144.     /*! */
  145.     /// @}
  146.  
  147.  
  148.     /*! @name Layout
  149.     @{ */
  150.     /*! */
  151.     /// @}
  152.  
  153.  
  154.     /*! @name Layout
  155.     @{ */
  156.     /*! */
  157.     /// @}
  158.  
  159.  
  160.     /*! @name Control
  161.     @{ */
  162.     /*! */
  163.     /// @}
  164.  
  165.  
  166.     /*! @name ToolTip
  167.     @{ */
  168.     /*! */
  169.     /// @}
  170.  
  171.  
  172.     /*! @name Editing
  173.     @{ */
  174.     /*! */
  175.     /// @}
  176.  
  177.  
  178.     /*! @name Localization
  179.     @{ */
  180.     /*! */
  181.     /// @}
  182.  
  183.  
  184.     /*! @name Ungrouped
  185.     @{ */
  186.     /*! */
  187.     /// @}
  188.  
  189.  
  190.     /*! @name Object
  191.     @{ */
  192.     /*! */
  193.     /// @}
  194.  
  195.  
  196.     /*! @name Editing
  197.     @{ */
  198.     /*! */
  199.     /// @}
  200.  
  201.  
  202.     /*! @name Persistence
  203.     @{ */
  204.     /*! */
  205.     /// @}
  206.  
  207.  };
  208.  
  209.  class  CmGuiDoubleValTextCtrl : public GuiTextCtrl {
  210.    public:
  211.  
  212.     /*! @name Layout
  213.     @{ */
  214.     /*! */
  215.     /// @}
  216.  
  217.  
  218.     /*! @name Layout
  219.     @{ */
  220.     /*! */
  221.     /// @}
  222.  
  223.  
  224.     /*! @name Control
  225.     @{ */
  226.     /*! */
  227.     /// @}
  228.  
  229.  
  230.     /*! @name ToolTip
  231.     @{ */
  232.     /*! */
  233.     /// @}
  234.  
  235.  
  236.     /*! @name Editing
  237.     @{ */
  238.     /*! */
  239.     /// @}
  240.  
  241.  
  242.     /*! @name Localization
  243.     @{ */
  244.     /*! */
  245.     /// @}
  246.  
  247.  
  248.     /*! @name Ungrouped
  249.     @{ */
  250.     /*! */
  251.     /// @}
  252.  
  253.  
  254.     /*! @name Object
  255.     @{ */
  256.     /*! */
  257.     /// @}
  258.  
  259.  
  260.     /*! @name Editing
  261.     @{ */
  262.     /*! */
  263.     /// @}
  264.  
  265.  
  266.     /*! @name Persistence
  267.     @{ */
  268.     /*! */
  269.     /// @}
  270.  
  271.  };
  272.  
  273.  /*!
  274.  @brief Renders a background, so you can have a backdrop for your GUI.
  275.  
  276.  Deprecated
  277.  
  278.  @ingroup GuiImages
  279.   */
  280.  class  GuiBackgroundCtrl : public GuiControl {
  281.    public:
  282.  
  283.     /*! @name Layout
  284.     @{ */
  285.     /*! */
  286.     /// @}
  287.  
  288.  
  289.     /*! @name Control
  290.     @{ */
  291.     /*! */
  292.     /// @}
  293.  
  294.  
  295.     /*! @name ToolTip
  296.     @{ */
  297.     /*! */
  298.     /// @}
  299.  
  300.  
  301.     /*! @name Editing
  302.     @{ */
  303.     /*! */
  304.     /// @}
  305.  
  306.  
  307.     /*! @name Localization
  308.     @{ */
  309.     /*! */
  310.     /// @}
  311.  
  312.  
  313.     /*! @name Ungrouped
  314.     @{ */
  315.     /*! */
  316.     /// @}
  317.  
  318.  
  319.     /*! @name Object
  320.     @{ */
  321.     /*! */
  322.     /// @}
  323.  
  324.  
  325.     /*! @name Editing
  326.     @{ */
  327.     /*! */
  328.     /// @}
  329.  
  330.  
  331.     /*! @name Persistence
  332.     @{ */
  333.     /*! */
  334.     /// @}
  335.  
  336.  };
  337.  
  338.  /*!
  339.  @brief A control that renders a skinned border specified in its profile.
  340.  
  341.  This control uses the bitmap specified in it's profile (GuiControlProfile::bitmapName).  It takes this image and breaks up aspects of it to skin the border of this control with.  It is also important to set GuiControlProfile::hasBitmapArray to true on the profile as well.
  342.  
  343.  The bitmap referenced should be broken up into a 3 x 3 grid (using the top left color pixel as a border color between each of the images) in which it will map to the following places:
  344.  1 = Top Left Corner
  345.  2 = Top Right Corner
  346.  3 = Top Center
  347.  4 = Left Center
  348.  5 = Right Center
  349.  6 = Bottom Left Corner
  350.  7 = Bottom Center
  351.  8 = Bottom Right Corner
  352.  0 = Nothing
  353.  
  354.  1 2 3
  355.  4 5 0
  356.  6 7 8
  357.  
  358.  @tsexample
  359.  singleton GuiControlProfile (BorderGUIProfile)
  360.  {
  361.     bitmap = "core/art/gui/images/borderArray";
  362.     hasBitmapArray = true;
  363.     opaque = false;
  364.  };
  365.  
  366.  new GuiBitmapBorderCtrl(BitmapBorderGUI)
  367.  {
  368.     profile = "BorderGUIProfile";
  369.     position = "0 0";
  370.     extent = "400 40";
  371.     visible = "1";
  372.  };@endtsexample
  373.  
  374.  @see GuiControlProfile::bitmapName
  375.  @see GuiControlProfile::hasBitmapArray
  376.  
  377.   */
  378.  class  GuiBitmapBorderCtrl : public GuiControl {
  379.    public:
  380.  
  381.     /*! @name Layout
  382.     @{ */
  383.     /*! */
  384.     /// @}
  385.  
  386.  
  387.     /*! @name Control
  388.     @{ */
  389.     /*! */
  390.     /// @}
  391.  
  392.  
  393.     /*! @name ToolTip
  394.     @{ */
  395.     /*! */
  396.     /// @}
  397.  
  398.  
  399.     /*! @name Editing
  400.     @{ */
  401.     /*! */
  402.     /// @}
  403.  
  404.  
  405.     /*! @name Localization
  406.     @{ */
  407.     /*! */
  408.     /// @}
  409.  
  410.  
  411.     /*! @name Ungrouped
  412.     @{ */
  413.     /*! */
  414.     /// @}
  415.  
  416.  
  417.     /*! @name Object
  418.     @{ */
  419.     /*! */
  420.     /// @}
  421.  
  422.  
  423.     /*! @name Editing
  424.     @{ */
  425.     /*! */
  426.     /// @}
  427.  
  428.  
  429.     /*! @name Persistence
  430.     @{ */
  431.     /*! */
  432.     /// @}
  433.  
  434.  };
  435.  
  436.  /*!
  437.  @brief Designed soley for buttons, primarily used in editor.
  438.  
  439.  Currently editor use only, no real application without extension.
  440.  
  441.   */
  442.  class  GuiDecoyCtrl : public GuiControl {
  443.    public:
  444.     /*!
  445.     Sets this control to decoy mode
  446.    
  447.      */
  448.     bool isDecoy;
  449.  
  450.     /*! @name Layout
  451.     @{ */
  452.     /*! */
  453.     /// @}
  454.  
  455.  
  456.     /*! @name Control
  457.     @{ */
  458.     /*! */
  459.     /// @}
  460.  
  461.  
  462.     /*! @name ToolTip
  463.     @{ */
  464.     /*! */
  465.     /// @}
  466.  
  467.  
  468.     /*! @name Editing
  469.     @{ */
  470.     /*! */
  471.     /// @}
  472.  
  473.  
  474.     /*! @name Localization
  475.     @{ */
  476.     /*! */
  477.     /// @}
  478.  
  479.  
  480.     /*! @name Ungrouped
  481.     @{ */
  482.     /*! */
  483.     /// @}
  484.  
  485.  
  486.     /*! @name Object
  487.     @{ */
  488.     /*! */
  489.     /// @}
  490.  
  491.  
  492.     /*! @name Editing
  493.     @{ */
  494.     /*! */
  495.     /// @}
  496.  
  497.  
  498.     /*! @name Persistence
  499.     @{ */
  500.     /*! */
  501.     /// @}
  502.  
  503.  };
  504.  
  505.  /*!
  506.  @brief A GuiControlProfile with additional fields specific to GuiGameListMenuCtrl.
  507.  
  508.  @tsexample
  509.  new GuiGameListMenuProfile()
  510.  {
  511.     hitAreaUpperLeft = "10 2";
  512.     hitAreaLowerRight = "190 18";
  513.     iconOffset = "10 2";
  514.     rowSize = "200 20";
  515.     //Properties not specific to this control have been omitted from this example.
  516.  };
  517.  @endtsexample
  518.  
  519.   */
  520.  class  GuiGameListMenuProfile : public GuiControlProfile {
  521.    public:
  522.     /*!
  523.     Position of the upper left corner of the row hit area (relative to row's top left corner)
  524.    
  525.      */
  526.     Point2I hitAreaUpperLeft;
  527.     /*!
  528.     Position of the lower right corner of the row hit area (relative to row's top left corner)
  529.    
  530.      */
  531.     Point2I hitAreaLowerRight;
  532.     /*!
  533.     Offset from the row's top left corner at which to render the row icon
  534.    
  535.      */
  536.     Point2I iconOffset;
  537.     /*!
  538.     The base size ("width height") of a row
  539.    
  540.      */
  541.     Point2I rowSize;
  542.  
  543.     /*! @name Behavior
  544.     @{ */
  545.     /*! */
  546.     /// @}
  547.  
  548.  
  549.     /*! @name Appearance
  550.     @{ */
  551.     /*! */
  552.     /// @}
  553.  
  554.  
  555.     /*! @name Text
  556.     @{ */
  557.     /*! */
  558.     /// @}
  559.  
  560.  
  561.     /*! @name Misc
  562.     @{ */
  563.     /*! */
  564.     /// @}
  565.  
  566.  
  567.     /*! @name Ungrouped
  568.     @{ */
  569.     /*! */
  570.     /// @}
  571.  
  572.  
  573.     /*! @name Object
  574.     @{ */
  575.     /*! */
  576.     /// @}
  577.  
  578.  
  579.     /*! @name Editing
  580.     @{ */
  581.     /*! */
  582.     /// @}
  583.  
  584.  
  585.     /*! @name Persistence
  586.     @{ */
  587.     /*! */
  588.     /// @}
  589.  
  590.  };
  591.  
  592.  /*!
  593.  @brief A GuiControlProfile with additional fields specific to GuiGameListOptionsCtrl.
  594.  
  595.  @tsexample
  596.  new GuiGameListOptionsProfile()
  597.  {
  598.     columnSplit = "100";
  599.     rightPad = "4";
  600.     //Properties not specific to this control have been omitted from this example.
  601.  };
  602.  @endtsexample
  603.  
  604.   */
  605.  class  GuiGameListOptionsProfile : public GuiGameListMenuProfile {
  606.    public:
  607.     /*!
  608.     Padding between the leftmost edge of the control, and the row's left arrow.
  609.    
  610.      */
  611.     int columnSplit;
  612.     /*!
  613.     Padding between the rightmost edge of the control and the row's right arrow.
  614.    
  615.      */
  616.     int rightPad;
  617.  
  618.     /*! @name Behavior
  619.     @{ */
  620.     /*! */
  621.     /// @}
  622.  
  623.  
  624.     /*! @name Appearance
  625.     @{ */
  626.     /*! */
  627.     /// @}
  628.  
  629.  
  630.     /*! @name Text
  631.     @{ */
  632.     /*! */
  633.     /// @}
  634.  
  635.  
  636.     /*! @name Misc
  637.     @{ */
  638.     /*! */
  639.     /// @}
  640.  
  641.  
  642.     /*! @name Ungrouped
  643.     @{ */
  644.     /*! */
  645.     /// @}
  646.  
  647.  
  648.     /*! @name Object
  649.     @{ */
  650.     /*! */
  651.     /// @}
  652.  
  653.  
  654.     /*! @name Editing
  655.     @{ */
  656.     /*! */
  657.     /// @}
  658.  
  659.  
  660.     /*! @name Persistence
  661.     @{ */
  662.     /*! */
  663.     /// @}
  664.  
  665.  };
  666.  
  667.  class  GuiListItem : public GuiButtonBaseCtrl {
  668.    public:
  669.  
  670.     /*! @name Button
  671.     @{ */
  672.     /*! */
  673.     /*!
  674.    
  675.    
  676.      */
  677.     ColorI FontColor;
  678.     /// @}
  679.  
  680.  
  681.     /*! @name Button
  682.     @{ */
  683.     /*! */
  684.     /// @}
  685.  
  686.  
  687.     /*! @name Layout
  688.     @{ */
  689.     /*! */
  690.     /// @}
  691.  
  692.  
  693.     /*! @name Control
  694.     @{ */
  695.     /*! */
  696.     /// @}
  697.  
  698.  
  699.     /*! @name ToolTip
  700.     @{ */
  701.     /*! */
  702.     /// @}
  703.  
  704.  
  705.     /*! @name Editing
  706.     @{ */
  707.     /*! */
  708.     /// @}
  709.  
  710.  
  711.     /*! @name Localization
  712.     @{ */
  713.     /*! */
  714.     /// @}
  715.  
  716.  
  717.     /*! @name Ungrouped
  718.     @{ */
  719.     /*! */
  720.     /// @}
  721.  
  722.  
  723.     /*! @name Object
  724.     @{ */
  725.     /*! */
  726.     /// @}
  727.  
  728.  
  729.     /*! @name Editing
  730.     @{ */
  731.     /*! */
  732.     /// @}
  733.  
  734.  
  735.     /*! @name Persistence
  736.     @{ */
  737.     /*! */
  738.     /// @}
  739.  
  740.  };
  741.  
  742.  /*!
  743.  @brief A text entry control that accepts the Gui Markup Language ('ML') tags and multiple lines.
  744.  
  745.  @tsexample
  746.  new GuiMLTextEditCtrl()
  747.     {
  748.         lineSpacing = "2";
  749.         allowColorChars = "0";
  750.         maxChars = "-1";
  751.         deniedSound = "DeniedSoundProfile";
  752.         text = "";
  753.         escapeCommand = "onEscapeScriptFunction();";
  754.       //Properties not specific to this control have been omitted from this example.
  755.     };
  756.  @endtsexample
  757.  
  758.  @see GuiMLTextCtrl
  759.  @see GuiControl
  760.  
  761.  @ingroup GuiControls
  762.   */
  763.  class  GuiMLTextEditCtrl : public GuiMLTextCtrl {
  764.    public:
  765.     /*!
  766.     Script function to run whenever the 'escape' key is pressed when this control is in focus.
  767.  
  768.    
  769.      */
  770.     string escapeCommand;
  771.  
  772.     /*! @name Text
  773.     @{ */
  774.     /*! */
  775.     /// @}
  776.  
  777.  
  778.     /*! @name Layout
  779.     @{ */
  780.     /*! */
  781.     /// @}
  782.  
  783.  
  784.     /*! @name Control
  785.     @{ */
  786.     /*! */
  787.     /// @}
  788.  
  789.  
  790.     /*! @name ToolTip
  791.     @{ */
  792.     /*! */
  793.     /// @}
  794.  
  795.  
  796.     /*! @name Editing
  797.     @{ */
  798.     /*! */
  799.     /// @}
  800.  
  801.  
  802.     /*! @name Localization
  803.     @{ */
  804.     /*! */
  805.     /// @}
  806.  
  807.  
  808.     /*! @name Ungrouped
  809.     @{ */
  810.     /*! */
  811.     /// @}
  812.  
  813.  
  814.     /*! @name Object
  815.     @{ */
  816.     /*! */
  817.     /// @}
  818.  
  819.  
  820.     /*! @name Editing
  821.     @{ */
  822.     /*! */
  823.     /// @}
  824.  
  825.  
  826.     /*! @name Persistence
  827.     @{ */
  828.     /*! */
  829.     /// @}
  830.  
  831.  };
  832.  
  833.  class  GuiRotatedBitmapCtrl : public GuiControl {
  834.    public:
  835.  
  836.     /*! @name Layout
  837.     @{ */
  838.     /*! */
  839.     /// @}
  840.  
  841.  
  842.     /*! @name Control
  843.     @{ */
  844.     /*! */
  845.     /// @}
  846.  
  847.  
  848.     /*! @name ToolTip
  849.     @{ */
  850.     /*! */
  851.     /// @}
  852.  
  853.  
  854.     /*! @name Editing
  855.     @{ */
  856.     /*! */
  857.     /// @}
  858.  
  859.  
  860.     /*! @name Localization
  861.     @{ */
  862.     /*! */
  863.     /// @}
  864.  
  865.  
  866.     /*! @name Ungrouped
  867.     @{ */
  868.     /*! */
  869.     /// @}
  870.  
  871.  
  872.     /*! @name Object
  873.     @{ */
  874.     /*! */
  875.     /// @}
  876.  
  877.  
  878.     /*! @name Editing
  879.     @{ */
  880.     /*! */
  881.     /// @}
  882.  
  883.  
  884.     /*! @name Persistence
  885.     @{ */
  886.     /*! */
  887.     /// @}
  888.  
  889.  };
  890.  
  891.  /*!
  892.  @brief A container.
  893.  
  894.   */
  895.  class  GuiInventoryContainer : public GuiWindowCtrl {
  896.    public:
  897.     /*! Initialize */
  898.     virtual void init((U32 containerId)) {}
  899.     virtual void onClose(()) {}
  900.  
  901.     /*! @name Window
  902.     @{ */
  903.     /*! */
  904.     /// @}
  905.  
  906.  
  907.     /*! @name Layout
  908.     @{ */
  909.     /*! */
  910.     /// @}
  911.  
  912.  
  913.     /*! @name Layout
  914.     @{ */
  915.     /*! */
  916.     /// @}
  917.  
  918.  
  919.     /*! @name Control
  920.     @{ */
  921.     /*! */
  922.     /// @}
  923.  
  924.  
  925.     /*! @name ToolTip
  926.     @{ */
  927.     /*! */
  928.     /// @}
  929.  
  930.  
  931.     /*! @name Editing
  932.     @{ */
  933.     /*! */
  934.     /// @}
  935.  
  936.  
  937.     /*! @name Localization
  938.     @{ */
  939.     /*! */
  940.     /// @}
  941.  
  942.  
  943.     /*! @name Ungrouped
  944.     @{ */
  945.     /*! */
  946.     /// @}
  947.  
  948.  
  949.     /*! @name Object
  950.     @{ */
  951.     /*! */
  952.     /// @}
  953.  
  954.  
  955.     /*! @name Editing
  956.     @{ */
  957.     /*! */
  958.     /// @}
  959.  
  960.  
  961.     /*! @name Persistence
  962.     @{ */
  963.     /*! */
  964.     /// @}
  965.  
  966.  };
  967.  
  968.  class  GuiObjectInventoryContainer : public GuiInventoryContainer {
  969.    public:
  970.  
  971.     /*! @name Window
  972.     @{ */
  973.     /*! */
  974.     /// @}
  975.  
  976.  
  977.     /*! @name Layout
  978.     @{ */
  979.     /*! */
  980.     /// @}
  981.  
  982.  
  983.     /*! @name Layout
  984.     @{ */
  985.     /*! */
  986.     /// @}
  987.  
  988.  
  989.     /*! @name Control
  990.     @{ */
  991.     /*! */
  992.     /// @}
  993.  
  994.  
  995.     /*! @name ToolTip
  996.     @{ */
  997.     /*! */
  998.     /// @}
  999.  
  1000.  
  1001.     /*! @name Editing
  1002.     @{ */
  1003.     /*! */
  1004.     /// @}
  1005.  
  1006.  
  1007.     /*! @name Localization
  1008.     @{ */
  1009.     /*! */
  1010.     /// @}
  1011.  
  1012.  
  1013.     /*! @name Ungrouped
  1014.     @{ */
  1015.     /*! */
  1016.     /// @}
  1017.  
  1018.  
  1019.     /*! @name Object
  1020.     @{ */
  1021.     /*! */
  1022.     /// @}
  1023.  
  1024.  
  1025.     /*! @name Editing
  1026.     @{ */
  1027.     /*! */
  1028.     /// @}
  1029.  
  1030.  
  1031.     /*! @name Persistence
  1032.     @{ */
  1033.     /*! */
  1034.     /// @}
  1035.  
  1036.  };
  1037.  
  1038.  class  GuiAuthorityContainer : public GuiObjectInventoryContainer {
  1039.    public:
  1040.  
  1041.     /*! @name Window
  1042.     @{ */
  1043.     /*! */
  1044.     /// @}
  1045.  
  1046.  
  1047.     /*! @name Layout
  1048.     @{ */
  1049.     /*! */
  1050.     /// @}
  1051.  
  1052.  
  1053.     /*! @name Layout
  1054.     @{ */
  1055.     /*! */
  1056.     /// @}
  1057.  
  1058.  
  1059.     /*! @name Control
  1060.     @{ */
  1061.     /*! */
  1062.     /// @}
  1063.  
  1064.  
  1065.     /*! @name ToolTip
  1066.     @{ */
  1067.     /*! */
  1068.     /// @}
  1069.  
  1070.  
  1071.     /*! @name Editing
  1072.     @{ */
  1073.     /*! */
  1074.     /// @}
  1075.  
  1076.  
  1077.     /*! @name Localization
  1078.     @{ */
  1079.     /*! */
  1080.     /// @}
  1081.  
  1082.  
  1083.     /*! @name Ungrouped
  1084.     @{ */
  1085.     /*! */
  1086.     /// @}
  1087.  
  1088.  
  1089.     /*! @name Object
  1090.     @{ */
  1091.     /*! */
  1092.     /// @}
  1093.  
  1094.  
  1095.     /*! @name Editing
  1096.     @{ */
  1097.     /*! */
  1098.     /// @}
  1099.  
  1100.  
  1101.     /*! @name Persistence
  1102.     @{ */
  1103.     /*! */
  1104.     /// @}
  1105.  
  1106.  };
  1107.  
  1108.  class  guiComboStep : public GuiButtonBaseCtrl {
  1109.    public:
  1110.  
  1111.     /*! @name Button
  1112.     @{ */
  1113.     /*! */
  1114.     /// @}
  1115.  
  1116.  
  1117.     /*! @name Layout
  1118.     @{ */
  1119.     /*! */
  1120.     /// @}
  1121.  
  1122.  
  1123.     /*! @name Control
  1124.     @{ */
  1125.     /*! */
  1126.     /// @}
  1127.  
  1128.  
  1129.     /*! @name ToolTip
  1130.     @{ */
  1131.     /*! */
  1132.     /// @}
  1133.  
  1134.  
  1135.     /*! @name Editing
  1136.     @{ */
  1137.     /*! */
  1138.     /// @}
  1139.  
  1140.  
  1141.     /*! @name Localization
  1142.     @{ */
  1143.     /*! */
  1144.     /// @}
  1145.  
  1146.  
  1147.     /*! @name Ungrouped
  1148.     @{ */
  1149.     /*! */
  1150.     /// @}
  1151.  
  1152.  
  1153.     /*! @name Object
  1154.     @{ */
  1155.     /*! */
  1156.     /// @}
  1157.  
  1158.  
  1159.     /*! @name Editing
  1160.     @{ */
  1161.     /*! */
  1162.     /// @}
  1163.  
  1164.  
  1165.     /*! @name Persistence
  1166.     @{ */
  1167.     /*! */
  1168.     /// @}
  1169.  
  1170.  };
  1171.  
  1172.  class  guiComboFinal : public GuiButtonBaseCtrl {
  1173.    public:
  1174.  
  1175.     /*! @name Button
  1176.     @{ */
  1177.     /*! */
  1178.     /// @}
  1179.  
  1180.  
  1181.     /*! @name Layout
  1182.     @{ */
  1183.     /*! */
  1184.     /// @}
  1185.  
  1186.  
  1187.     /*! @name Control
  1188.     @{ */
  1189.     /*! */
  1190.     /// @}
  1191.  
  1192.  
  1193.     /*! @name ToolTip
  1194.     @{ */
  1195.     /*! */
  1196.     /// @}
  1197.  
  1198.  
  1199.     /*! @name Editing
  1200.     @{ */
  1201.     /*! */
  1202.     /// @}
  1203.  
  1204.  
  1205.     /*! @name Localization
  1206.     @{ */
  1207.     /*! */
  1208.     /// @}
  1209.  
  1210.  
  1211.     /*! @name Ungrouped
  1212.     @{ */
  1213.     /*! */
  1214.     /// @}
  1215.  
  1216.  
  1217.     /*! @name Object
  1218.     @{ */
  1219.     /*! */
  1220.     /// @}
  1221.  
  1222.  
  1223.     /*! @name Editing
  1224.     @{ */
  1225.     /*! */
  1226.     /// @}
  1227.  
  1228.  
  1229.     /*! @name Persistence
  1230.     @{ */
  1231.     /*! */
  1232.     /// @}
  1233.  
  1234.  };
  1235.  
  1236.  class  GuiCreateWorldWindow : public GuiCreateWorldWindow {
  1237.    public:
  1238.     virtual Script onWorldStarting(( string this, string port, string password )) {}
  1239.  
  1240.     /*! @name Layout
  1241.     @{ */
  1242.     /*! */
  1243.     /*!
  1244.     The position relative to the parent control.
  1245.    
  1246.      */
  1247.     Point2I position;
  1248.     /*!
  1249.     The width and height of the control.
  1250.    
  1251.      */
  1252.     Point2I extent;
  1253.     /*!
  1254.     The minimum width and height of the control. The control will not be resized smaller than this.
  1255.    
  1256.      */
  1257.     Point2I minExtent;
  1258.     /*!
  1259.     The maximum width and height of the control. The control will not be resized more than this.
  1260.    
  1261.      */
  1262.     Point2I maxExtent;
  1263.     /*!
  1264.     The horizontal resizing behavior.
  1265.    
  1266.      */
  1267.     GuiHorizontalSizing horizSizing;
  1268.     /*!
  1269.     The vertical resizing behavior.
  1270.    
  1271.      */
  1272.     GuiVerticalSizing vertSizing;
  1273.     /// @}
  1274.  
  1275.  
  1276.     /*! @name Control
  1277.     @{ */
  1278.     /*! */
  1279.     /*!
  1280.     The control profile that determines fill styles, font settings, etc.
  1281.    
  1282.      */
  1283.     GuiControlProfile profile;
  1284.     /*!
  1285.     Whether the control is visible or hidden.
  1286.    
  1287.      */
  1288.     bool visible;
  1289.     /*!
  1290.     Whether the control is enabled for user interaction.
  1291.    
  1292.      */
  1293.     bool active;
  1294.     /*!
  1295.     @deprecated This member is deprecated, which means that its value is always undefined.
  1296.      */
  1297.     deprecated modal;
  1298.     /*!
  1299.     @deprecated This member is deprecated, which means that its value is always undefined.
  1300.      */
  1301.     deprecated setFirstResponder;
  1302.     /*!
  1303.     Name of the variable to which the value of this control will be synchronized.
  1304.    
  1305.      */
  1306.     string variable;
  1307.     /*!
  1308.     Command to execute on the primary action of the control.
  1309.  
  1310. @note Within this script snippet, the control on which the #command is being executed is bound to the global variable $ThisControl.
  1311.    
  1312.      */
  1313.     string command;
  1314.     /*!
  1315.     Command to execute on the secondary action of the control.
  1316.  
  1317. @note Within this script snippet, the control on which the #altCommand is being executed is bound to the global variable $ThisControl.
  1318.    
  1319.      */
  1320.     string altCommand;
  1321.     /*!
  1322.     Key combination that triggers the control's primary action when the control is on the canvas.
  1323.    
  1324.      */
  1325.     string accelerator;
  1326.     /*!
  1327.     Opacity multiplier for rendering the control.
  1328.    
  1329.      */
  1330.     float opacity;
  1331.     /*!
  1332.     Control will hide on TAB.
  1333.    
  1334.      */
  1335.     bool canHideOnFreelook;
  1336.     /// @}
  1337.  
  1338.  
  1339.     /*! @name ToolTip
  1340.     @{ */
  1341.     /*! */
  1342.     /*!
  1343.     Control profile to use when rendering tooltips for this control.
  1344.    
  1345.      */
  1346.     GuiControlProfile tooltipProfile;
  1347.     /*!
  1348.     String to show in tooltip for this control.
  1349.    
  1350.      */
  1351.     string tooltip;
  1352.     /*!
  1353.     Time for mouse to hover over control until tooltip is shown (in milliseconds).
  1354.    
  1355.      */
  1356.     int hovertime;
  1357.     /// @}
  1358.  
  1359.  
  1360.     /*! @name Editing
  1361.     @{ */
  1362.     /*! */
  1363.     /*!
  1364.     If true, the control may contain child controls.
  1365.    
  1366.      */
  1367.     bool isContainer;
  1368.     /// @}
  1369.  
  1370.  
  1371.     /*! @name Localization
  1372.     @{ */
  1373.     /*! */
  1374.     /*!
  1375.     Name of string table to use for lookup of internationalized text.
  1376.    
  1377.      */
  1378.     string langTableMod;
  1379.     /// @}
  1380.  
  1381.  
  1382.     /*! @name Ungrouped
  1383.     @{ */
  1384.     /*! */
  1385.     /*!
  1386.     Optional global name of this object.
  1387.    
  1388.      */
  1389.     string Name;
  1390.     /// @}
  1391.  
  1392.  
  1393.     /*! @name Object
  1394.     @{ */
  1395.     /*! */
  1396.     /*!
  1397.     Optional name that may be used to lookup this object within a SimSet.
  1398.    
  1399.      */
  1400.     string internalName;
  1401.     /*!
  1402.     Group hierarchy parent of the object.
  1403.    
  1404.      */
  1405.     SimObject parentGroup;
  1406.     /*!
  1407.     Script class of object.
  1408.    
  1409.      */
  1410.     string class;
  1411.     /*!
  1412.     Script super-class of object.
  1413.    
  1414.      */
  1415.     string superClass;
  1416.     /*!
  1417.     Script class of object.
  1418.    
  1419.      */
  1420.     string className;
  1421.     /// @}
  1422.  
  1423.  
  1424.     /*! @name Editing
  1425.     @{ */
  1426.     /*! */
  1427.     /*!
  1428.     Whether the object is visible.
  1429.    
  1430.      */
  1431.     bool hidden;
  1432.     /// @}
  1433.  
  1434.  
  1435.     /*! @name Persistence
  1436.     @{ */
  1437.     /*! */
  1438.     /*!
  1439.     Whether the object can be saved out. If false, the object is purely transient in nature.
  1440.    
  1441.      */
  1442.     bool canSave;
  1443.     /*!
  1444.     True if dynamic fields (added at runtime) should be saved. Defaults to true.
  1445.    
  1446.      */
  1447.     bool canSaveDynamicFields;
  1448.     /*!
  1449.     The universally unique identifier for the object.
  1450.    
  1451.      */
  1452.     pid persistentId;
  1453.     /*!
  1454.     True if this object is 4ever alone, perhaps it is an one side datablock.
  1455.    
  1456.      */
  1457.     bool local;
  1458.     /// @}
  1459.  
  1460.  };
  1461.  
  1462.  class  GuiCreditsWindow : public GuiControl {
  1463.    public:
  1464.  
  1465.     /*! @name Layout
  1466.     @{ */
  1467.     /*! */
  1468.     /// @}
  1469.  
  1470.  
  1471.     /*! @name Control
  1472.     @{ */
  1473.     /*! */
  1474.     /// @}
  1475.  
  1476.  
  1477.     /*! @name ToolTip
  1478.     @{ */
  1479.     /*! */
  1480.     /// @}
  1481.  
  1482.  
  1483.     /*! @name Editing
  1484.     @{ */
  1485.     /*! */
  1486.     /// @}
  1487.  
  1488.  
  1489.     /*! @name Localization
  1490.     @{ */
  1491.     /*! */
  1492.     /// @}
  1493.  
  1494.  
  1495.     /*! @name Ungrouped
  1496.     @{ */
  1497.     /*! */
  1498.     /// @}
  1499.  
  1500.  
  1501.     /*! @name Object
  1502.     @{ */
  1503.     /*! */
  1504.     /// @}
  1505.  
  1506.  
  1507.     /*! @name Editing
  1508.     @{ */
  1509.     /*! */
  1510.     /// @}
  1511.  
  1512.  
  1513.     /*! @name Persistence
  1514.     @{ */
  1515.     /*! */
  1516.     /// @}
  1517.  
  1518.  };
  1519.  
  1520.  class  GuiMainMenuMultiplayerWindow : public GuiControl {
  1521.    public:
  1522.  
  1523.     /*! @name Layout
  1524.     @{ */
  1525.     /*! */
  1526.     /// @}
  1527.  
  1528.  
  1529.     /*! @name Control
  1530.     @{ */
  1531.     /*! */
  1532.     /// @}
  1533.  
  1534.  
  1535.     /*! @name ToolTip
  1536.     @{ */
  1537.     /*! */
  1538.     /// @}
  1539.  
  1540.  
  1541.     /*! @name Editing
  1542.     @{ */
  1543.     /*! */
  1544.     /// @}
  1545.  
  1546.  
  1547.     /*! @name Localization
  1548.     @{ */
  1549.     /*! */
  1550.     /// @}
  1551.  
  1552.  
  1553.     /*! @name Ungrouped
  1554.     @{ */
  1555.     /*! */
  1556.     /// @}
  1557.  
  1558.  
  1559.     /*! @name Object
  1560.     @{ */
  1561.     /*! */
  1562.     /// @}
  1563.  
  1564.  
  1565.     /*! @name Editing
  1566.     @{ */
  1567.     /*! */
  1568.     /// @}
  1569.  
  1570.  
  1571.     /*! @name Persistence
  1572.     @{ */
  1573.     /*! */
  1574.     /// @}
  1575.  
  1576.  };
  1577.  
  1578.  class  GAH_AnimalsList : public SimGroup {
  1579.    public:
  1580.  
  1581.     /*! @name Layout
  1582.     @{ */
  1583.     /*! */
  1584.     /*!
  1585.     The position relative to the parent control.
  1586.    
  1587.      */
  1588.     Point2I position;
  1589.     /*!
  1590.     The width and height of the control.
  1591.    
  1592.      */
  1593.     Point2I extent;
  1594.     /*!
  1595.     The minimum width and height of the control. The control will not be resized smaller than this.
  1596.    
  1597.      */
  1598.     Point2I minExtent;
  1599.     /*!
  1600.     The maximum width and height of the control. The control will not be resized more than this.
  1601.    
  1602.      */
  1603.     Point2I maxExtent;
  1604.     /*!
  1605.     The horizontal resizing behavior.
  1606.    
  1607.      */
  1608.     GuiHorizontalSizing horizSizing;
  1609.     /*!
  1610.     The vertical resizing behavior.
  1611.    
  1612.      */
  1613.     GuiVerticalSizing vertSizing;
  1614.     /// @}
  1615.  
  1616.  
  1617.     /*! @name Control
  1618.     @{ */
  1619.     /*! */
  1620.     /*!
  1621.     The control profile that determines fill styles, font settings, etc.
  1622.    
  1623.      */
  1624.     GuiControlProfile profile;
  1625.     /*!
  1626.     Whether the control is visible or hidden.
  1627.    
  1628.      */
  1629.     bool visible;
  1630.     /*!
  1631.     Whether the control is enabled for user interaction.
  1632.    
  1633.      */
  1634.     bool active;
  1635.     /*!
  1636.     @deprecated This member is deprecated, which means that its value is always undefined.
  1637.      */
  1638.     deprecated modal;
  1639.     /*!
  1640.     @deprecated This member is deprecated, which means that its value is always undefined.
  1641.      */
  1642.     deprecated setFirstResponder;
  1643.     /*!
  1644.     Name of the variable to which the value of this control will be synchronized.
  1645.    
  1646.      */
  1647.     string variable;
  1648.     /*!
  1649.     Command to execute on the primary action of the control.
  1650.  
  1651. @note Within this script snippet, the control on which the #command is being executed is bound to the global variable $ThisControl.
  1652.    
  1653.      */
  1654.     string command;
  1655.     /*!
  1656.     Command to execute on the secondary action of the control.
  1657.  
  1658. @note Within this script snippet, the control on which the #altCommand is being executed is bound to the global variable $ThisControl.
  1659.    
  1660.      */
  1661.     string altCommand;
  1662.     /*!
  1663.     Key combination that triggers the control's primary action when the control is on the canvas.
  1664.    
  1665.      */
  1666.     string accelerator;
  1667.     /*!
  1668.     Opacity multiplier for rendering the control.
  1669.    
  1670.      */
  1671.     float opacity;
  1672.     /*!
  1673.     Control will hide on TAB.
  1674.    
  1675.      */
  1676.     bool canHideOnFreelook;
  1677.     /// @}
  1678.  
  1679.  
  1680.     /*! @name ToolTip
  1681.     @{ */
  1682.     /*! */
  1683.     /*!
  1684.     Control profile to use when rendering tooltips for this control.
  1685.    
  1686.      */
  1687.     GuiControlProfile tooltipProfile;
  1688.     /*!
  1689.     String to show in tooltip for this control.
  1690.    
  1691.      */
  1692.     string tooltip;
  1693.     /*!
  1694.     Time for mouse to hover over control until tooltip is shown (in milliseconds).
  1695.    
  1696.      */
  1697.     int hovertime;
  1698.     /// @}
  1699.  
  1700.  
  1701.     /*! @name Editing
  1702.     @{ */
  1703.     /*! */
  1704.     /*!
  1705.     If true, the control may contain child controls.
  1706.    
  1707.      */
  1708.     bool isContainer;
  1709.     /// @}
  1710.  
  1711.  
  1712.     /*! @name Localization
  1713.     @{ */
  1714.     /*! */
  1715.     /*!
  1716.     Name of string table to use for lookup of internationalized text.
  1717.    
  1718.      */
  1719.     string langTableMod;
  1720.     /// @}
  1721.  
  1722.  
  1723.     /*! @name Ungrouped
  1724.     @{ */
  1725.     /*! */
  1726.     /// @}
  1727.  
  1728.  
  1729.     /*! @name Object
  1730.     @{ */
  1731.     /*! */
  1732.     /// @}
  1733.  
  1734.  
  1735.     /*! @name Editing
  1736.     @{ */
  1737.     /*! */
  1738.     /// @}
  1739.  
  1740.  
  1741.     /*! @name Persistence
  1742.     @{ */
  1743.     /*! */
  1744.     /// @}
  1745.  
  1746.  };
  1747.  
  1748.  class  GAH_Feeder : public SimGroup {
  1749.    public:
  1750.  
  1751.     /*! @name Layout
  1752.     @{ */
  1753.     /*! */
  1754.     /*!
  1755.     The position relative to the parent control.
  1756.    
  1757.      */
  1758.     Point2I position;
  1759.     /*!
  1760.     The width and height of the control.
  1761.    
  1762.      */
  1763.     Point2I extent;
  1764.     /*!
  1765.     The minimum width and height of the control. The control will not be resized smaller than this.
  1766.    
  1767.      */
  1768.     Point2I minExtent;
  1769.     /*!
  1770.     The maximum width and height of the control. The control will not be resized more than this.
  1771.    
  1772.      */
  1773.     Point2I maxExtent;
  1774.     /*!
  1775.     The horizontal resizing behavior.
  1776.    
  1777.      */
  1778.     GuiHorizontalSizing horizSizing;
  1779.     /*!
  1780.     The vertical resizing behavior.
  1781.    
  1782.      */
  1783.     GuiVerticalSizing vertSizing;
  1784.     /// @}
  1785.  
  1786.  
  1787.     /*! @name Control
  1788.     @{ */
  1789.     /*! */
  1790.     /*!
  1791.     The control profile that determines fill styles, font settings, etc.
  1792.    
  1793.      */
  1794.     GuiControlProfile profile;
  1795.     /*!
  1796.     Whether the control is visible or hidden.
  1797.    
  1798.      */
  1799.     bool visible;
  1800.     /*!
  1801.     Whether the control is enabled for user interaction.
  1802.    
  1803.      */
  1804.     bool active;
  1805.     /*!
  1806.     @deprecated This member is deprecated, which means that its value is always undefined.
  1807.      */
  1808.     deprecated modal;
  1809.     /*!
  1810.     @deprecated This member is deprecated, which means that its value is always undefined.
  1811.      */
  1812.     deprecated setFirstResponder;
  1813.     /*!
  1814.     Name of the variable to which the value of this control will be synchronized.
  1815.    
  1816.      */
  1817.     string variable;
  1818.     /*!
  1819.     Command to execute on the primary action of the control.
  1820.  
  1821. @note Within this script snippet, the control on which the #command is being executed is bound to the global variable $ThisControl.
  1822.    
  1823.      */
  1824.     string command;
  1825.     /*!
  1826.     Command to execute on the secondary action of the control.
  1827.  
  1828. @note Within this script snippet, the control on which the #altCommand is being executed is bound to the global variable $ThisControl.
  1829.    
  1830.      */
  1831.     string altCommand;
  1832.     /*!
  1833.     Key combination that triggers the control's primary action when the control is on the canvas.
  1834.    
  1835.      */
  1836.     string accelerator;
  1837.     /*!
  1838.     Opacity multiplier for rendering the control.
  1839.    
  1840.      */
  1841.     float opacity;
  1842.     /*!
  1843.     Control will hide on TAB.
  1844.    
  1845.      */
  1846.     bool canHideOnFreelook;
  1847.     /// @}
  1848.  
  1849.  
  1850.     /*! @name ToolTip
  1851.     @{ */
  1852.     /*! */
  1853.     /*!
  1854.     Control profile to use when rendering tooltips for this control.
  1855.    
  1856.      */
  1857.     GuiControlProfile tooltipProfile;
  1858.     /*!
  1859.     String to show in tooltip for this control.
  1860.    
  1861.      */
  1862.     string tooltip;
  1863.     /*!
  1864.     Time for mouse to hover over control until tooltip is shown (in milliseconds).
  1865.    
  1866.      */
  1867.     int hovertime;
  1868.     /// @}
  1869.  
  1870.  
  1871.     /*! @name Editing
  1872.     @{ */
  1873.     /*! */
  1874.     /*!
  1875.     If true, the control may contain child controls.
  1876.    
  1877.      */
  1878.     bool isContainer;
  1879.     /// @}
  1880.  
  1881.  
  1882.     /*! @name Localization
  1883.     @{ */
  1884.     /*! */
  1885.     /*!
  1886.     Name of string table to use for lookup of internationalized text.
  1887.    
  1888.      */
  1889.     string langTableMod;
  1890.     /// @}
  1891.  
  1892.  
  1893.     /*! @name Ungrouped
  1894.     @{ */
  1895.     /*! */
  1896.     /// @}
  1897.  
  1898.  
  1899.     /*! @name Object
  1900.     @{ */
  1901.     /*! */
  1902.     /// @}
  1903.  
  1904.  
  1905.     /*! @name Editing
  1906.     @{ */
  1907.     /*! */
  1908.     /// @}
  1909.  
  1910.  
  1911.     /*! @name Persistence
  1912.     @{ */
  1913.     /*! */
  1914.     /// @}
  1915.  
  1916.  };
  1917.  
  1918.  class  GAH_Breeder : public SimGroup {
  1919.    public:
  1920.  
  1921.     /*! @name Layout
  1922.     @{ */
  1923.     /*! */
  1924.     /*!
  1925.     The position relative to the parent control.
  1926.    
  1927.      */
  1928.     Point2I position;
  1929.     /*!
  1930.     The width and height of the control.
  1931.    
  1932.      */
  1933.     Point2I extent;
  1934.     /*!
  1935.     The minimum width and height of the control. The control will not be resized smaller than this.
  1936.    
  1937.      */
  1938.     Point2I minExtent;
  1939.     /*!
  1940.     The maximum width and height of the control. The control will not be resized more than this.
  1941.    
  1942.      */
  1943.     Point2I maxExtent;
  1944.     /*!
  1945.     The horizontal resizing behavior.
  1946.    
  1947.      */
  1948.     GuiHorizontalSizing horizSizing;
  1949.     /*!
  1950.     The vertical resizing behavior.
  1951.    
  1952.      */
  1953.     GuiVerticalSizing vertSizing;
  1954.     /// @}
  1955.  
  1956.  
  1957.     /*! @name Control
  1958.     @{ */
  1959.     /*! */
  1960.     /*!
  1961.     The control profile that determines fill styles, font settings, etc.
  1962.    
  1963.      */
  1964.     GuiControlProfile profile;
  1965.     /*!
  1966.     Whether the control is visible or hidden.
  1967.    
  1968.      */
  1969.     bool visible;
  1970.     /*!
  1971.     Whether the control is enabled for user interaction.
  1972.    
  1973.      */
  1974.     bool active;
  1975.     /*!
  1976.     @deprecated This member is deprecated, which means that its value is always undefined.
  1977.      */
  1978.     deprecated modal;
  1979.     /*!
  1980.     @deprecated This member is deprecated, which means that its value is always undefined.
  1981.      */
  1982.     deprecated setFirstResponder;
  1983.     /*!
  1984.     Name of the variable to which the value of this control will be synchronized.
  1985.    
  1986.      */
  1987.     string variable;
  1988.     /*!
  1989.     Command to execute on the primary action of the control.
  1990.  
  1991. @note Within this script snippet, the control on which the #command is being executed is bound to the global variable $ThisControl.
  1992.    
  1993.      */
  1994.     string command;
  1995.     /*!
  1996.     Command to execute on the secondary action of the control.
  1997.  
  1998. @note Within this script snippet, the control on which the #altCommand is being executed is bound to the global variable $ThisControl.
  1999.    
  2000.      */
  2001.     string altCommand;
  2002.     /*!
  2003.     Key combination that triggers the control's primary action when the control is on the canvas.
  2004.    
  2005.      */
  2006.     string accelerator;
  2007.     /*!
  2008.     Opacity multiplier for rendering the control.
  2009.    
  2010.      */
  2011.     float opacity;
  2012.     /*!
  2013.     Control will hide on TAB.
  2014.    
  2015.      */
  2016.     bool canHideOnFreelook;
  2017.     /// @}
  2018.  
  2019.  
  2020.     /*! @name ToolTip
  2021.     @{ */
  2022.     /*! */
  2023.     /*!
  2024.     Control profile to use when rendering tooltips for this control.
  2025.    
  2026.      */
  2027.     GuiControlProfile tooltipProfile;
  2028.     /*!
  2029.     String to show in tooltip for this control.
  2030.    
  2031.      */
  2032.     string tooltip;
  2033.     /*!
  2034.     Time for mouse to hover over control until tooltip is shown (in milliseconds).
  2035.    
  2036.      */
  2037.     int hovertime;
  2038.     /// @}
  2039.  
  2040.  
  2041.     /*! @name Editing
  2042.     @{ */
  2043.     /*! */
  2044.     /*!
  2045.     If true, the control may contain child controls.
  2046.    
  2047.      */
  2048.     bool isContainer;
  2049.     /// @}
  2050.  
  2051.  
  2052.     /*! @name Localization
  2053.     @{ */
  2054.     /*! */
  2055.     /*!
  2056.     Name of string table to use for lookup of internationalized text.
  2057.    
  2058.      */
  2059.     string langTableMod;
  2060.     /// @}
  2061.  
  2062.  
  2063.     /*! @name Ungrouped
  2064.     @{ */
  2065.     /*! */
  2066.     /// @}
  2067.  
  2068.  
  2069.     /*! @name Object
  2070.     @{ */
  2071.     /*! */
  2072.     /// @}
  2073.  
  2074.  
  2075.     /*! @name Editing
  2076.     @{ */
  2077.     /*! */
  2078.     /// @}
  2079.  
  2080.  
  2081.     /*! @name Persistence
  2082.     @{ */
  2083.     /*! */
  2084.     /// @}
  2085.  
  2086.  };
  2087.  
  2088.  class  GuiListDeed : public GuiButtonCtrl {
  2089.    public:
  2090.  
  2091.     /*! @name Button
  2092.     @{ */
  2093.     /*! */
  2094.     /// @}
  2095.  
  2096.  
  2097.     /*! @name Button
  2098.     @{ */
  2099.     /*! */
  2100.     /// @}
  2101.  
  2102.  
  2103.     /*! @name Layout
  2104.     @{ */
  2105.     /*! */
  2106.     /// @}
  2107.  
  2108.  
  2109.     /*! @name Control
  2110.     @{ */
  2111.     /*! */
  2112.     /// @}
  2113.  
  2114.  
  2115.     /*! @name ToolTip
  2116.     @{ */
  2117.     /*! */
  2118.     /// @}
  2119.  
  2120.  
  2121.     /*! @name Editing
  2122.     @{ */
  2123.     /*! */
  2124.     /// @}
  2125.  
  2126.  
  2127.     /*! @name Localization
  2128.     @{ */
  2129.     /*! */
  2130.     /// @}
  2131.  
  2132.  
  2133.     /*! @name Ungrouped
  2134.     @{ */
  2135.     /*! */
  2136.     /// @}
  2137.  
  2138.  
  2139.     /*! @name Object
  2140.     @{ */
  2141.     /*! */
  2142.     /// @}
  2143.  
  2144.  
  2145.     /*! @name Editing
  2146.     @{ */
  2147.     /*! */
  2148.     /// @}
  2149.  
  2150.  
  2151.     /*! @name Persistence
  2152.     @{ */
  2153.     /*! */
  2154.     /// @}
  2155.  
  2156.  };
  2157.  
  2158.  class  GuiListDeedsControl : public GuiDynamicCtrlArrayControl {
  2159.    public:
  2160.  
  2161.     /*! @name Layout
  2162.     @{ */
  2163.     /*! */
  2164.     /// @}
  2165.  
  2166.  
  2167.     /*! @name Control
  2168.     @{ */
  2169.     /*! */
  2170.     /// @}
  2171.  
  2172.  
  2173.     /*! @name ToolTip
  2174.     @{ */
  2175.     /*! */
  2176.     /// @}
  2177.  
  2178.  
  2179.     /*! @name Editing
  2180.     @{ */
  2181.     /*! */
  2182.     /// @}
  2183.  
  2184.  
  2185.     /*! @name Localization
  2186.     @{ */
  2187.     /*! */
  2188.     /// @}
  2189.  
  2190.  
  2191.     /*! @name Ungrouped
  2192.     @{ */
  2193.     /*! */
  2194.     /// @}
  2195.  
  2196.  
  2197.     /*! @name Object
  2198.     @{ */
  2199.     /*! */
  2200.     /// @}
  2201.  
  2202.  
  2203.     /*! @name Editing
  2204.     @{ */
  2205.     /*! */
  2206.     /// @}
  2207.  
  2208.  
  2209.     /*! @name Persistence
  2210.     @{ */
  2211.     /*! */
  2212.     /// @}
  2213.  
  2214.  };
  2215.  
  2216.  class  GAH_BreederSlot : public SimGroup {
  2217.    public:
  2218.  
  2219.     /*! @name Layout
  2220.     @{ */
  2221.     /*! */
  2222.     /*!
  2223.     The position relative to the parent control.
  2224.    
  2225.      */
  2226.     Point2I position;
  2227.     /*!
  2228.     The width and height of the control.
  2229.    
  2230.      */
  2231.     Point2I extent;
  2232.     /*!
  2233.     The minimum width and height of the control. The control will not be resized smaller than this.
  2234.    
  2235.      */
  2236.     Point2I minExtent;
  2237.     /*!
  2238.     The maximum width and height of the control. The control will not be resized more than this.
  2239.    
  2240.      */
  2241.     Point2I maxExtent;
  2242.     /*!
  2243.     The horizontal resizing behavior.
  2244.    
  2245.      */
  2246.     GuiHorizontalSizing horizSizing;
  2247.     /*!
  2248.     The vertical resizing behavior.
  2249.    
  2250.      */
  2251.     GuiVerticalSizing vertSizing;
  2252.     /// @}
  2253.  
  2254.  
  2255.     /*! @name Control
  2256.     @{ */
  2257.     /*! */
  2258.     /*!
  2259.     The control profile that determines fill styles, font settings, etc.
  2260.    
  2261.      */
  2262.     GuiControlProfile profile;
  2263.     /*!
  2264.     Whether the control is visible or hidden.
  2265.    
  2266.      */
  2267.     bool visible;
  2268.     /*!
  2269.     Whether the control is enabled for user interaction.
  2270.    
  2271.      */
  2272.     bool active;
  2273.     /*!
  2274.     @deprecated This member is deprecated, which means that its value is always undefined.
  2275.      */
  2276.     deprecated modal;
  2277.     /*!
  2278.     @deprecated This member is deprecated, which means that its value is always undefined.
  2279.      */
  2280.     deprecated setFirstResponder;
  2281.     /*!
  2282.     Name of the variable to which the value of this control will be synchronized.
  2283.    
  2284.      */
  2285.     string variable;
  2286.     /*!
  2287.     Command to execute on the primary action of the control.
  2288.  
  2289. @note Within this script snippet, the control on which the #command is being executed is bound to the global variable $ThisControl.
  2290.    
  2291.      */
  2292.     string command;
  2293.     /*!
  2294.     Command to execute on the secondary action of the control.
  2295.  
  2296. @note Within this script snippet, the control on which the #altCommand is being executed is bound to the global variable $ThisControl.
  2297.    
  2298.      */
  2299.     string altCommand;
  2300.     /*!
  2301.     Key combination that triggers the control's primary action when the control is on the canvas.
  2302.    
  2303.      */
  2304.     string accelerator;
  2305.     /*!
  2306.     Opacity multiplier for rendering the control.
  2307.    
  2308.      */
  2309.     float opacity;
  2310.     /*!
  2311.     Control will hide on TAB.
  2312.    
  2313.      */
  2314.     bool canHideOnFreelook;
  2315.     /// @}
  2316.  
  2317.  
  2318.     /*! @name ToolTip
  2319.     @{ */
  2320.     /*! */
  2321.     /*!
  2322.     Control profile to use when rendering tooltips for this control.
  2323.    
  2324.      */
  2325.     GuiControlProfile tooltipProfile;
  2326.     /*!
  2327.     String to show in tooltip for this control.
  2328.    
  2329.      */
  2330.     string tooltip;
  2331.     /*!
  2332.     Time for mouse to hover over control until tooltip is shown (in milliseconds).
  2333.    
  2334.      */
  2335.     int hovertime;
  2336.     /// @}
  2337.  
  2338.  
  2339.     /*! @name Editing
  2340.     @{ */
  2341.     /*! */
  2342.     /*!
  2343.     If true, the control may contain child controls.
  2344.    
  2345.      */
  2346.     bool isContainer;
  2347.     /// @}
  2348.  
  2349.  
  2350.     /*! @name Localization
  2351.     @{ */
  2352.     /*! */
  2353.     /*!
  2354.     Name of string table to use for lookup of internationalized text.
  2355.    
  2356.      */
  2357.     string langTableMod;
  2358.     /// @}
  2359.  
  2360.  
  2361.     /*! @name Ungrouped
  2362.     @{ */
  2363.     /*! */
  2364.     /// @}
  2365.  
  2366.  
  2367.     /*! @name Object
  2368.     @{ */
  2369.     /*! */
  2370.     /// @}
  2371.  
  2372.  
  2373.     /*! @name Editing
  2374.     @{ */
  2375.     /*! */
  2376.     /// @}
  2377.  
  2378.  
  2379.     /*! @name Persistence
  2380.     @{ */
  2381.     /*! */
  2382.     /// @}
  2383.  
  2384.  };
  2385.  
  2386.  class  GAH_Info : public GuiControl {
  2387.    public:
  2388.  
  2389.     /*! @name Layout
  2390.     @{ */
  2391.     /*! */
  2392.     /*!
  2393.    
  2394.    
  2395.      */
  2396.     GuiDockingType docking;
  2397.     /*!
  2398.      */
  2399.     RectSpacingI margin;
  2400.     /*!
  2401.      */
  2402.     RectSpacingI padding;
  2403.     /*!
  2404.      */
  2405.     bool anchorTop;
  2406.     /*!
  2407.      */
  2408.     bool anchorBottom;
  2409.     /*!
  2410.      */
  2411.     bool anchorLeft;
  2412.     /*!
  2413.      */
  2414.     bool anchorRight;
  2415.     /// @}
  2416.  
  2417.  
  2418.     /*! @name Layout
  2419.     @{ */
  2420.     /*! */
  2421.     /// @}
  2422.  
  2423.  
  2424.     /*! @name Control
  2425.     @{ */
  2426.     /*! */
  2427.     /// @}
  2428.  
  2429.  
  2430.     /*! @name ToolTip
  2431.     @{ */
  2432.     /*! */
  2433.     /// @}
  2434.  
  2435.  
  2436.     /*! @name Editing
  2437.     @{ */
  2438.     /*! */
  2439.     /// @}
  2440.  
  2441.  
  2442.     /*! @name Localization
  2443.     @{ */
  2444.     /*! */
  2445.     /// @}
  2446.  
  2447.  
  2448.     /*! @name Ungrouped
  2449.     @{ */
  2450.     /*! */
  2451.     /// @}
  2452.  
  2453.  
  2454.     /*! @name Object
  2455.     @{ */
  2456.     /*! */
  2457.     /// @}
  2458.  
  2459.  
  2460.     /*! @name Editing
  2461.     @{ */
  2462.     /*! */
  2463.     /// @}
  2464.  
  2465.  
  2466.     /*! @name Persistence
  2467.     @{ */
  2468.     /*! */
  2469.     /// @}
  2470.  
  2471.  };
  2472.  
  2473.  class  GuiBrewingTank : public GuiObjectInventoryContainer {
  2474.    public:
  2475.  
  2476.     /*! @name Window
  2477.     @{ */
  2478.     /*! */
  2479.     /// @}
  2480.  
  2481.  
  2482.     /*! @name Layout
  2483.     @{ */
  2484.     /*! */
  2485.     /// @}
  2486.  
  2487.  
  2488.     /*! @name Layout
  2489.     @{ */
  2490.     /*! */
  2491.     /// @}
  2492.  
  2493.  
  2494.     /*! @name Control
  2495.     @{ */
  2496.     /*! */
  2497.     /// @}
  2498.  
  2499.  
  2500.     /*! @name ToolTip
  2501.     @{ */
  2502.     /*! */
  2503.     /// @}
  2504.  
  2505.  
  2506.     /*! @name Editing
  2507.     @{ */
  2508.     /*! */
  2509.     /// @}
  2510.  
  2511.  
  2512.     /*! @name Localization
  2513.     @{ */
  2514.     /*! */
  2515.     /// @}
  2516.  
  2517.  
  2518.     /*! @name Ungrouped
  2519.     @{ */
  2520.     /*! */
  2521.     /// @}
  2522.  
  2523.  
  2524.     /*! @name Object
  2525.     @{ */
  2526.     /*! */
  2527.     /// @}
  2528.  
  2529.  
  2530.     /*! @name Editing
  2531.     @{ */
  2532.     /*! */
  2533.     /// @}
  2534.  
  2535.  
  2536.     /*! @name Persistence
  2537.     @{ */
  2538.     /*! */
  2539.     /// @}
  2540.  
  2541.  };
  2542.  
  2543.  class  GuiCheckBoxInventory : public GuiCheckBoxCtrl {
  2544.    public:
  2545.  
  2546.     /*! @name CheckBox
  2547.     @{ */
  2548.     /*! */
  2549.     /// @}
  2550.  
  2551.  
  2552.     /*! @name Button
  2553.     @{ */
  2554.     /*! */
  2555.     /// @}
  2556.  
  2557.  
  2558.     /*! @name Layout
  2559.     @{ */
  2560.     /*! */
  2561.     /// @}
  2562.  
  2563.  
  2564.     /*! @name Control
  2565.     @{ */
  2566.     /*! */
  2567.     /// @}
  2568.  
  2569.  
  2570.     /*! @name ToolTip
  2571.     @{ */
  2572.     /*! */
  2573.     /// @}
  2574.  
  2575.  
  2576.     /*! @name Editing
  2577.     @{ */
  2578.     /*! */
  2579.     /// @}
  2580.  
  2581.  
  2582.     /*! @name Localization
  2583.     @{ */
  2584.     /*! */
  2585.     /// @}
  2586.  
  2587.  
  2588.     /*! @name Ungrouped
  2589.     @{ */
  2590.     /*! */
  2591.     /// @}
  2592.  
  2593.  
  2594.     /*! @name Object
  2595.     @{ */
  2596.     /*! */
  2597.     /// @}
  2598.  
  2599.  
  2600.     /*! @name Editing
  2601.     @{ */
  2602.     /*! */
  2603.     /// @}
  2604.  
  2605.  
  2606.     /*! @name Persistence
  2607.     @{ */
  2608.     /*! */
  2609.     /// @}
  2610.  
  2611.  };
  2612.  
  2613.  class  GuiClickInventoryButton : public GuiBitmapButtonCtrl {
  2614.    public:
  2615.  
  2616.     /*! @name Bitmap
  2617.     @{ */
  2618.     /*! */
  2619.     /// @}
  2620.  
  2621.  
  2622.     /*! @name Button
  2623.     @{ */
  2624.     /*! */
  2625.     /// @}
  2626.  
  2627.  
  2628.     /*! @name Button
  2629.     @{ */
  2630.     /*! */
  2631.     /// @}
  2632.  
  2633.  
  2634.     /*! @name Layout
  2635.     @{ */
  2636.     /*! */
  2637.     /// @}
  2638.  
  2639.  
  2640.     /*! @name Control
  2641.     @{ */
  2642.     /*! */
  2643.     /// @}
  2644.  
  2645.  
  2646.     /*! @name ToolTip
  2647.     @{ */
  2648.     /*! */
  2649.     /// @}
  2650.  
  2651.  
  2652.     /*! @name Editing
  2653.     @{ */
  2654.     /*! */
  2655.     /// @}
  2656.  
  2657.  
  2658.     /*! @name Localization
  2659.     @{ */
  2660.     /*! */
  2661.     /// @}
  2662.  
  2663.  
  2664.     /*! @name Ungrouped
  2665.     @{ */
  2666.     /*! */
  2667.     /// @}
  2668.  
  2669.  
  2670.     /*! @name Object
  2671.     @{ */
  2672.     /*! */
  2673.     /// @}
  2674.  
  2675.  
  2676.     /*! @name Editing
  2677.     @{ */
  2678.     /*! */
  2679.     /// @}
  2680.  
  2681.  
  2682.     /*! @name Persistence
  2683.     @{ */
  2684.     /*! */
  2685.     /// @}
  2686.  
  2687.  };
  2688.  
  2689.  class  GuiInventoryScrollCtrl : public GuiScrollCtrl {
  2690.    public:
  2691.  
  2692.     /*! @name Scolling
  2693.     @{ */
  2694.     /*! */
  2695.     /// @}
  2696.  
  2697.  
  2698.     /*! @name Layout
  2699.     @{ */
  2700.     /*! */
  2701.     /// @}
  2702.  
  2703.  
  2704.     /*! @name Layout
  2705.     @{ */
  2706.     /*! */
  2707.     /// @}
  2708.  
  2709.  
  2710.     /*! @name Control
  2711.     @{ */
  2712.     /*! */
  2713.     /// @}
  2714.  
  2715.  
  2716.     /*! @name ToolTip
  2717.     @{ */
  2718.     /*! */
  2719.     /// @}
  2720.  
  2721.  
  2722.     /*! @name Editing
  2723.     @{ */
  2724.     /*! */
  2725.     /// @}
  2726.  
  2727.  
  2728.     /*! @name Localization
  2729.     @{ */
  2730.     /*! */
  2731.     /// @}
  2732.  
  2733.  
  2734.     /*! @name Ungrouped
  2735.     @{ */
  2736.     /*! */
  2737.     /// @}
  2738.  
  2739.  
  2740.     /*! @name Object
  2741.     @{ */
  2742.     /*! */
  2743.     /// @}
  2744.  
  2745.  
  2746.     /*! @name Editing
  2747.     @{ */
  2748.     /*! */
  2749.     /// @}
  2750.  
  2751.  
  2752.     /*! @name Persistence
  2753.     @{ */
  2754.     /*! */
  2755.     /// @}
  2756.  
  2757.  };
  2758.  
  2759.  class  GuiPartOfBitmap : public GuiControl {
  2760.    public:
  2761.  
  2762.     /*! @name Layout
  2763.     @{ */
  2764.     /*! */
  2765.     /// @}
  2766.  
  2767.  
  2768.     /*! @name Control
  2769.     @{ */
  2770.     /*! */
  2771.     /// @}
  2772.  
  2773.  
  2774.     /*! @name ToolTip
  2775.     @{ */
  2776.     /*! */
  2777.     /// @}
  2778.  
  2779.  
  2780.     /*! @name Editing
  2781.     @{ */
  2782.     /*! */
  2783.     /// @}
  2784.  
  2785.  
  2786.     /*! @name Localization
  2787.     @{ */
  2788.     /*! */
  2789.     /// @}
  2790.  
  2791.  
  2792.     /*! @name Ungrouped
  2793.     @{ */
  2794.     /*! */
  2795.     /// @}
  2796.  
  2797.  
  2798.     /*! @name Object
  2799.     @{ */
  2800.     /*! */
  2801.     /// @}
  2802.  
  2803.  
  2804.     /*! @name Editing
  2805.     @{ */
  2806.     /*! */
  2807.     /// @}
  2808.  
  2809.  
  2810.     /*! @name Persistence
  2811.     @{ */
  2812.     /*! */
  2813.     /// @}
  2814.  
  2815.  };
  2816.  
  2817.  class  GuiSkillLockButton : public GuiClickBitmapButton {
  2818.    public:
  2819.  
  2820.     /*! @name Bitmap
  2821.     @{ */
  2822.     /*! */
  2823.     /// @}
  2824.  
  2825.  
  2826.     /*! @name Button
  2827.     @{ */
  2828.     /*! */
  2829.     /// @}
  2830.  
  2831.  
  2832.     /*! @name Button
  2833.     @{ */
  2834.     /*! */
  2835.     /// @}
  2836.  
  2837.  
  2838.     /*! @name Layout
  2839.     @{ */
  2840.     /*! */
  2841.     /// @}
  2842.  
  2843.  
  2844.     /*! @name Control
  2845.     @{ */
  2846.     /*! */
  2847.     /// @}
  2848.  
  2849.  
  2850.     /*! @name ToolTip
  2851.     @{ */
  2852.     /*! */
  2853.     /// @}
  2854.  
  2855.  
  2856.     /*! @name Editing
  2857.     @{ */
  2858.     /*! */
  2859.     /// @}
  2860.  
  2861.  
  2862.     /*! @name Localization
  2863.     @{ */
  2864.     /*! */
  2865.     /// @}
  2866.  
  2867.  
  2868.     /*! @name Ungrouped
  2869.     @{ */
  2870.     /*! */
  2871.     /// @}
  2872.  
  2873.  
  2874.     /*! @name Object
  2875.     @{ */
  2876.     /*! */
  2877.     /// @}
  2878.  
  2879.  
  2880.     /*! @name Editing
  2881.     @{ */
  2882.     /*! */
  2883.     /// @}
  2884.  
  2885.  
  2886.     /*! @name Persistence
  2887.     @{ */
  2888.     /*! */
  2889.     /// @}
  2890.  
  2891.  };
  2892.  
  2893.  /*!
  2894.  @brief A single-line text control that displays its text in a multi-line popup when clicked.
  2895.  
  2896.  This control acts like a GuiTextCtrl (and inherits from it), when clicked it creates a GuiMLTextCtrl roughly where you clicked with the same text in it.  This allows you to have a single line text control which upon clicking will display the entire text contained in a multi-line format.
  2897.  
  2898.  @tsexample
  2899.  new GuiBubbleTextCtrl(BubbleTextGUI)
  2900.  {
  2901.     text = "This is the first sentence.  This second sentence can be sized outside of the default single line view, upon clicking this will be displayed in a multi-line format.";
  2902.  };
  2903.  @endtsexample
  2904.  
  2905.  @see GuiTextCtrl
  2906.  @see GuiMLTextCtrl
  2907.  
  2908.  @ingroup GuiControls
  2909.   */
  2910.  class  GuiBubbleTextCtrl : public GuiTextCtrl {
  2911.    public:
  2912.  
  2913.     /*! @name Layout
  2914.     @{ */
  2915.     /*! */
  2916.     /// @}
  2917.  
  2918.  
  2919.     /*! @name Layout
  2920.     @{ */
  2921.     /*! */
  2922.     /// @}
  2923.  
  2924.  
  2925.     /*! @name Control
  2926.     @{ */
  2927.     /*! */
  2928.     /// @}
  2929.  
  2930.  
  2931.     /*! @name ToolTip
  2932.     @{ */
  2933.     /*! */
  2934.     /// @}
  2935.  
  2936.  
  2937.     /*! @name Editing
  2938.     @{ */
  2939.     /*! */
  2940.     /// @}
  2941.  
  2942.  
  2943.     /*! @name Localization
  2944.     @{ */
  2945.     /*! */
  2946.     /// @}
  2947.  
  2948.  
  2949.     /*! @name Ungrouped
  2950.     @{ */
  2951.     /*! */
  2952.     /// @}
  2953.  
  2954.  
  2955.     /*! @name Object
  2956.     @{ */
  2957.     /*! */
  2958.     /// @}
  2959.  
  2960.  
  2961.     /*! @name Editing
  2962.     @{ */
  2963.     /*! */
  2964.     /// @}
  2965.  
  2966.  
  2967.     /*! @name Persistence
  2968.     @{ */
  2969.     /*! */
  2970.     /// @}
  2971.  
  2972.  };
  2973.  
  2974.  class  AwGui : public GuiControl {
  2975.    public:
  2976.     virtual void execJavaScript(( string script )) {}
  2977.     /*! @brief Loads the specified URL. */
  2978.     virtual void loadURL(( string url )) {}
  2979.     /*! @brief Returns the start URL. */
  2980.     virtual string getStartURL(()) {}
  2981.     /*! @brief Returns the current URL. */
  2982.     virtual string getCurrentURL(()) {}
  2983.     /*! @brief Refreshes the current page. */
  2984.     virtual void reload(()) {}
  2985.     /*! @brief If there's a page being loaded, this stops it from doing so. */
  2986.     virtual void stop(()) {}
  2987.     /*!
  2988.     The URL which is loaded initially.
  2989.    
  2990.      */
  2991.     string StartURL;
  2992.     /*!
  2993.     Path to a session file which will contain cookies, history, passwords etc. A blank path forces the control to use the default session.
  2994.    
  2995.      */
  2996.     string SessionPath;
  2997.     /*!
  2998.     The amount of frames per second to render. 0 means unlimited.
  2999.    
  3000.      */
  3001.     char Framerate;
  3002.     /*!
  3003.     Whether this control supports transparency or not. Default: Disabled
  3004.    
  3005.      */
  3006.     bool IsTransparent;
  3007.     /*!
  3008.     Forced resolution. Defaults to (0, 0) which lets AwGui and AwShape decide. In that case AwGui will set the resolution to the size of the Gui control and AwShape will set the size to 800 x 600.
  3009.    
  3010.      */
  3011.     Point2I Resolution;
  3012.     /*!
  3013.     Unloads all resources if the AwGui goes asleep. This can be used to keep the memory footprint down.
  3014.    
  3015.      */
  3016.     bool UnloadOnSleep;
  3017.     /*!
  3018.     If the amount of alpha is below this value, no mouse events will be processed for that pixel.
  3019.    
  3020.      */
  3021.     char AlphaCutoff;
  3022.     /*!
  3023.     Shows the loading screen if true. Default: Disabled
  3024.    
  3025.      */
  3026.     bool ShowLoadingScreen;
  3027.     /*!
  3028.     If enabled will bring the control to the top of the GUI stack when clicked. Default: Disabled
  3029.    
  3030.      */
  3031.     bool BringToFrontWhenClicked;
  3032.     /*!
  3033.     Enables right-mouse clicks. If you're using Flash, this might not be desired as it can bring up an annoying context menu. Default: Disabled
  3034.    
  3035.      */
  3036.     bool EnableRightMouseButton;
  3037.  
  3038.     /*! @name Layout
  3039.     @{ */
  3040.     /*! */
  3041.     /// @}
  3042.  
  3043.  
  3044.     /*! @name Control
  3045.     @{ */
  3046.     /*! */
  3047.     /// @}
  3048.  
  3049.  
  3050.     /*! @name ToolTip
  3051.     @{ */
  3052.     /*! */
  3053.     /// @}
  3054.  
  3055.  
  3056.     /*! @name Editing
  3057.     @{ */
  3058.     /*! */
  3059.     /// @}
  3060.  
  3061.  
  3062.     /*! @name Localization
  3063.     @{ */
  3064.     /*! */
  3065.     /// @}
  3066.  
  3067.  
  3068.     /*! @name Ungrouped
  3069.     @{ */
  3070.     /*! */
  3071.     /// @}
  3072.  
  3073.  
  3074.     /*! @name Object
  3075.     @{ */
  3076.     /*! */
  3077.     /// @}
  3078.  
  3079.  
  3080.     /*! @name Editing
  3081.     @{ */
  3082.     /*! */
  3083.     /// @}
  3084.  
  3085.  
  3086.     /*! @name Persistence
  3087.     @{ */
  3088.     /*! */
  3089.     /// @}
  3090.  
  3091.  };
  3092.  
  3093.  class  AwWebBrowser : public AwGui {
  3094.    public:
  3095.  
  3096.     /*! @name Layout
  3097.     @{ */
  3098.     /*! */
  3099.     /// @}
  3100.  
  3101.  
  3102.     /*! @name Control
  3103.     @{ */
  3104.     /*! */
  3105.     /// @}
  3106.  
  3107.  
  3108.     /*! @name ToolTip
  3109.     @{ */
  3110.     /*! */
  3111.     /// @}
  3112.  
  3113.  
  3114.     /*! @name Editing
  3115.     @{ */
  3116.     /*! */
  3117.     /// @}
  3118.  
  3119.  
  3120.     /*! @name Localization
  3121.     @{ */
  3122.     /*! */
  3123.     /// @}
  3124.  
  3125.  
  3126.     /*! @name Ungrouped
  3127.     @{ */
  3128.     /*! */
  3129.     /// @}
  3130.  
  3131.  
  3132.     /*! @name Object
  3133.     @{ */
  3134.     /*! */
  3135.     /// @}
  3136.  
  3137.  
  3138.     /*! @name Editing
  3139.     @{ */
  3140.     /*! */
  3141.     /// @}
  3142.  
  3143.  
  3144.     /*! @name Persistence
  3145.     @{ */
  3146.     /*! */
  3147.     /// @}
  3148.  
  3149.  };
  3150.  
  3151.  /*!
  3152.  @brief This class contains code for rendering and manipulating a 3D gizmo
  3153.  
  3154.  It is usually used as a helper within a TSEdit-derived control. Not intended for game development, for editors or internal use only.
  3155.  
  3156.   */
  3157.  class  Gizmo : public SimObject {
  3158.    public:
  3159.  
  3160.     /*! @name Ungrouped
  3161.     @{ */
  3162.     /*! */
  3163.     /// @}
  3164.  
  3165.  
  3166.     /*! @name Object
  3167.     @{ */
  3168.     /*! */
  3169.     /// @}
  3170.  
  3171.  
  3172.     /*! @name Editing
  3173.     @{ */
  3174.     /*! */
  3175.     /// @}
  3176.  
  3177.  
  3178.     /*! @name Persistence
  3179.     @{ */
  3180.     /*! */
  3181.     /// @}
  3182.  
  3183.  };
  3184.  
  3185.  class  CmCSEvent {
  3186.    public:
  3187.  };
  3188.  
  3189.  class  TerrainAttachEvent {
  3190.    public:
  3191.  };
  3192.  
  3193.  class  CmPatchEvent {
  3194.    public:
  3195.  };
  3196.  
  3197.  class  CmChangeEvent {
  3198.    public:
  3199.  };
  3200.  
  3201.  class  YoPatchTerrainAttachEvent {
  3202.    public:
  3203.  };
  3204.  
  3205.  class  YoPatchTerCachedRequestEvent {
  3206.    public:
  3207.  };
  3208.  
  3209.  class  YoPatchTerCachedResponceEvent {
  3210.    public:
  3211.  };
  3212.  
  3213.  class  YoPatchTerCachedDataRequestEvent {
  3214.    public:
  3215.  };
  3216.  
  3217.  class  YoPatchTerCachedChunkCountEvent {
  3218.    public:
  3219.  };
  3220.  
  3221.  class  YoPatchTerCachedDataCheckResponseEvent {
  3222.    public:
  3223.  };
  3224.  
  3225.  class  YoPatchTerChunkDataEvent {
  3226.    public:
  3227.  };
  3228.  
  3229.  class  ServerUUIDEvent {
  3230.    public:
  3231.  };
  3232.  
  3233.  /*!
  3234.  @brief Base class responsible for displaying an OS file browser.
  3235.  
  3236.  FileDialog is a platform agnostic dialog interface for querying the user for file locations. It is designed to be used through the exposed scripting interface.
  3237.  
  3238.  FileDialog is the base class for Native File Dialog controls in Torque. It provides these basic areas of functionality:
  3239.  
  3240.     - Inherits from SimObject and is exposed to the scripting interface
  3241.     - Provides blocking interface to allow instant return to script execution
  3242.     - Simple object configuration makes practical use easy and effective
  3243.  
  3244.  FileDialog is *NOT* intended to be used directly in script and is only exposed to script to expose generic file dialog attributes.
  3245.  
  3246.  This base class is usable in TorqueScript, but is does not specify what functionality is intended (open or save?). Its children, OpenFileDialog and SaveFileDialog, do make use of DialogStyle flags and do make use of specific funcationality. These are the preferred classes to use
  3247.  
  3248.  However, the FileDialog base class does contain the key properties and important method for file browing. The most important function is Execute(). This is used by both SaveFileDialog and OpenFileDialog to initiate the browser.
  3249.  
  3250.  @tsexample
  3251.  // NOTE: This is not he preferred class to use, but this still works
  3252.  
  3253.  // Create the file dialog
  3254.  %baseFileDialog = new FileDialog()
  3255.  {
  3256.     // Allow browsing of all file types
  3257.     filters = "*.*";
  3258.  
  3259.     // No default file
  3260.     defaultFile = ;
  3261.  
  3262.     // Set default path relative to project
  3263.     defaultPath = "./";
  3264.  
  3265.     // Set the title
  3266.     title = "Durpa";
  3267.  
  3268.     // Allow changing of path you are browsing
  3269.     changePath = true;
  3270.  };
  3271.  
  3272.   // Launch the file dialog
  3273.   %baseFileDialog.Execute();
  3274.  
  3275.   // Don't forget to cleanup
  3276.   %baseFileDialog.delete();
  3277.  
  3278.  
  3279.  @endtsexample
  3280.  
  3281.  @note FileDialog and its related classes are only availble in a Tools build of Torque.
  3282.  
  3283.  @see OpenFileDialog for a practical example on opening a file
  3284.  @see SaveFileDialog for a practical example of saving a file
  3285.  @ingroup FileSystem
  3286.   */
  3287.  class  FileDialog : public SimObject {
  3288.    public:
  3289.     /*! @brief Launches the OS file browser
  3290.  
  3291. After an Execute() call, the chosen file name and path is available in one of two areas.  If only a single file selection is permitted, the results will be stored in the @a fileName attribute.
  3292.  
  3293. If multiple file selection is permitted, the results will be stored in the @a files array.  The total number of files in the array will be stored in the @a fileCount attribute.
  3294.  
  3295. @tsexample
  3296. // NOTE: This is not he preferred class to use, but this still works
  3297.  
  3298. // Create the file dialog
  3299. %baseFileDialog = new FileDialog()
  3300. {
  3301.    // Allow browsing of all file types
  3302.    filters = "*.*";
  3303.  
  3304.    // No default file
  3305.    defaultFile = ;
  3306.  
  3307.    // Set default path relative to project
  3308.    defaultPath = "./";
  3309.  
  3310.    // Set the title
  3311.    title = "Durpa";
  3312.  
  3313.    // Allow changing of path you are browsing
  3314.    changePath = true;
  3315. };
  3316.  
  3317.  // Launch the file dialog
  3318.  %baseFileDialog.Execute();
  3319.  
  3320.  // Don't forget to cleanup
  3321.  %baseFileDialog.delete();
  3322.  
  3323.  
  3324.  // A better alternative is to use the
  3325.  // derived classes which are specific to file open and save
  3326.  
  3327.  // Create a dialog dedicated to opening files
  3328.  %openFileDlg = new OpenFileDialog()
  3329.  {
  3330.     // Look for jpg image files
  3331.     // First part is the descriptor|second part is the extension
  3332.     Filters = "Jepg Files|*.jpg";
  3333.     // Allow browsing through other folders
  3334.     ChangePath = true;
  3335.  
  3336.     // Only allow opening of one file at a time
  3337.     MultipleFiles = false;
  3338.  };
  3339.  
  3340.  // Launch the open file dialog
  3341.  %result = %openFileDlg.Execute();
  3342.  
  3343.  // Obtain the chosen file name and path
  3344.  if ( %result )
  3345.  {
  3346.     %seletedFile = %openFileDlg.file;
  3347.  }
  3348.  else
  3349.  {
  3350.     %selectedFile = "";
  3351.  }
  3352.  // Cleanup
  3353.  %openFileDlg.delete();
  3354.  
  3355.  
  3356.  // Create a dialog dedicated to saving a file
  3357.  %saveFileDlg = new SaveFileDialog()
  3358.  {
  3359.     // Only allow for saving of COLLADA files
  3360.     Filters = "COLLADA Files (*.dae)|*.dae|";
  3361.  
  3362.     // Default save path to where the WorldEditor last saved
  3363.     DefaultPath = $pref::WorldEditor::LastPath;
  3364.  
  3365.     // No default file specified
  3366.     DefaultFile = "";
  3367.  
  3368.     // Do not allow the user to change to a new directory
  3369.     ChangePath = false;
  3370.  
  3371.     // Prompt the user if they are going to overwrite an existing file
  3372.     OverwritePrompt = true;
  3373.  };
  3374.  
  3375.  // Launch the save file dialog
  3376.  %result = %saveFileDlg.Execute();
  3377.  
  3378.  // Obtain the file name
  3379.  %selectedFile = "";
  3380.  if ( %result )
  3381.     %selectedFile = %saveFileDlg.file;
  3382.  
  3383.  // Cleanup
  3384.  %saveFileDlg.delete();
  3385. @endtsexample
  3386.  
  3387. @return True if the file was selected was successfully found (opened) or declared (saved). */
  3388.     virtual bool Execute(()) {}
  3389.     /*!
  3390.     The default directory path when the dialog is shown.
  3391.    
  3392.      */
  3393.     string defaultPath;
  3394.     /*!
  3395.     The default file path when the dialog is shown.
  3396.    
  3397.      */
  3398.     string defaultFile;
  3399.     /*!
  3400.     The default file name when the dialog is shown.
  3401.    
  3402.      */
  3403.     string fileName;
  3404.     /*!
  3405.     The filter string for limiting the types of files visible in the dialog.  It makes use of the pipe symbol '|' as a delimiter.  For example:
  3406.  
  3407. 'All Files|*.*'
  3408.  
  3409. 'Image Files|*.png;*.jpg|Png Files|*.png|Jepg Files|*.jpg'
  3410.    
  3411.      */
  3412.     string filters;
  3413.     /*!
  3414.     The title for the dialog.
  3415.    
  3416.      */
  3417.     string title;
  3418.     /*!
  3419.     True/False whether to set the working directory to the directory returned by the dialog.
  3420.    
  3421.      */
  3422.     bool changePath;
  3423.  
  3424.     /*! @name Ungrouped
  3425.     @{ */
  3426.     /*! */
  3427.     /// @}
  3428.  
  3429.  
  3430.     /*! @name Object
  3431.     @{ */
  3432.     /*! */
  3433.     /// @}
  3434.  
  3435.  
  3436.     /*! @name Editing
  3437.     @{ */
  3438.     /*! */
  3439.     /// @}
  3440.  
  3441.  
  3442.     /*! @name Persistence
  3443.     @{ */
  3444.     /*! */
  3445.     /// @}
  3446.  
  3447.  };
  3448.  
  3449.  /*!
  3450.  @brief Derived from FileDialog, this class is responsible for opening a file browser with the intention of opening a file.
  3451.  
  3452.  The core usage of this dialog is to locate a file in the OS and return the path and name. This does not handle the actual file parsing or data manipulation. That functionality is left up to the FileObject class.
  3453.  
  3454.  @tsexample
  3455.   // Create a dialog dedicated to opening files
  3456.   %openFileDlg = new OpenFileDialog()
  3457.   {
  3458.      // Look for jpg image files
  3459.      // First part is the descriptor|second part is the extension
  3460.      Filters = "Jepg Files|*.jpg";
  3461.      // Allow browsing through other folders
  3462.      ChangePath = true;
  3463.  
  3464.      // Only allow opening of one file at a time
  3465.      MultipleFiles = false;
  3466.   };
  3467.  
  3468.   // Launch the open file dialog
  3469.   %result = %openFileDlg.Execute();
  3470.  
  3471.   // Obtain the chosen file name and path
  3472.   if ( %result )
  3473.   {
  3474.      %seletedFile = %openFileDlg.file;
  3475.   }
  3476.   else
  3477.   {
  3478.      %selectedFile = "";
  3479.   }
  3480.  
  3481.   // Cleanup
  3482.   %openFileDlg.delete();
  3483.  
  3484.  
  3485.  @endtsexample
  3486.  
  3487.  @note FileDialog and its related classes are only availble in a Tools build of Torque.
  3488.  
  3489.  @see FileDialog
  3490.  @see SaveFileDialog
  3491.  @see FileObject
  3492.  @ingroup FileSystem
  3493.   */
  3494.  class  OpenFileDialog : public FileDialog {
  3495.    public:
  3496.     /*!
  3497.     True/False whether the file returned must exist or not
  3498.    
  3499.      */
  3500.     bool MustExist;
  3501.     /*!
  3502.     True/False whether multiple files may be selected and returned or not
  3503.    
  3504.      */
  3505.     bool MultipleFiles;
  3506.  
  3507.     /*! @name Ungrouped
  3508.     @{ */
  3509.     /*! */
  3510.     /// @}
  3511.  
  3512.  
  3513.     /*! @name Object
  3514.     @{ */
  3515.     /*! */
  3516.     /// @}
  3517.  
  3518.  
  3519.     /*! @name Editing
  3520.     @{ */
  3521.     /*! */
  3522.     /// @}
  3523.  
  3524.  
  3525.     /*! @name Persistence
  3526.     @{ */
  3527.     /*! */
  3528.     /// @}
  3529.  
  3530.  };
  3531.  
  3532.  /*!
  3533.  @brief Derived from FileDialog, this class is responsible for opening a file browser with the intention of saving a file.
  3534.  
  3535.  The core usage of this dialog is to locate a file in the OS and return the path and name. This does not handle the actual file writing or data manipulation. That functionality is left up to the FileObject class.
  3536.  
  3537.  @tsexample
  3538.   // Create a dialog dedicated to opening file
  3539.   %saveFileDlg = new SaveFileDialog()
  3540.   {
  3541.      // Only allow for saving of COLLADA files
  3542.      Filters        = "COLLADA Files (*.dae)|*.dae|";
  3543.  
  3544.      // Default save path to where the WorldEditor last saved
  3545.      DefaultPath    = $pref::WorldEditor::LastPath;
  3546.  
  3547.      // No default file specified
  3548.      DefaultFile    = "";
  3549.  
  3550.      // Do not allow the user to change to a new directory
  3551.      ChangePath     = false;
  3552.  
  3553.      // Prompt the user if they are going to overwrite an existing file
  3554.      OverwritePrompt   = true;
  3555.   };
  3556.  
  3557.   // Launch the save file dialog
  3558.   %saveFileDlg.Execute();
  3559.  
  3560.   if ( %result )
  3561.   {
  3562.      %seletedFile = %openFileDlg.file;
  3563.   }
  3564.   else
  3565.   {
  3566.      %selectedFile = "";
  3567.   }
  3568.  
  3569.   // Cleanup
  3570.   %saveFileDlg.delete();
  3571.  @endtsexample
  3572.  
  3573.  @note FileDialog and its related classes are only availble in a Tools build of Torque.
  3574.  
  3575.  @see FileDialog
  3576.  @see OpenFileDialog
  3577.  @see FileObject
  3578.  @ingroup FileSystem
  3579.   */
  3580.  class  SaveFileDialog : public FileDialog {
  3581.    public:
  3582.     /*!
  3583.     True/False whether the dialog should prompt before accepting an existing file name
  3584.    
  3585.      */
  3586.     bool OverwritePrompt;
  3587.  
  3588.     /*! @name Ungrouped
  3589.     @{ */
  3590.     /*! */
  3591.     /// @}
  3592.  
  3593.  
  3594.     /*! @name Object
  3595.     @{ */
  3596.     /*! */
  3597.     /// @}
  3598.  
  3599.  
  3600.     /*! @name Editing
  3601.     @{ */
  3602.     /*! */
  3603.     /// @}
  3604.  
  3605.  
  3606.     /*! @name Persistence
  3607.     @{ */
  3608.     /*! */
  3609.     /// @}
  3610.  
  3611.  };
  3612.  
  3613.  /*!
  3614.  @brief OS level dialog used for browsing folder structures.
  3615.  
  3616.  This is essentially an OpenFileDialog, but only used for returning directory paths, not files.
  3617.  
  3618.  @note FileDialog and its related classes are only availble in a Tools build of Torque.
  3619.  
  3620.  @see OpenFileDialog for more details on functionality.
  3621.  
  3622.  @ingroup FileSystem
  3623.   */
  3624.  class  OpenFolderDialog : public OpenFileDialog {
  3625.    public:
  3626.     /*!
  3627.     File that must be in selected folder for it to be valid
  3628.    
  3629.      */
  3630.     filename fileMustExist;
  3631.  
  3632.     /*! @name Ungrouped
  3633.     @{ */
  3634.     /*! */
  3635.     /// @}
  3636.  
  3637.  
  3638.     /*! @name Object
  3639.     @{ */
  3640.     /*! */
  3641.     /// @}
  3642.  
  3643.  
  3644.     /*! @name Editing
  3645.     @{ */
  3646.     /*! */
  3647.     /// @}
  3648.  
  3649.  
  3650.     /*! @name Persistence
  3651.     @{ */
  3652.     /*! */
  3653.     /// @}
  3654.  
  3655.  };
  3656.  
  3657.  /*!
  3658.  @brief A render bin for mesh rendering.
  3659.  
  3660.  This is the primary render bin in Torque which does most of the work of rendering DTS shapes and arbitrary mesh geometry.  It knows how to render mesh instances using materials and supports hardware mesh instancing.
  3661.  
  3662.  @ingroup RenderBin
  3663.   */
  3664.  class  RenderMeshMgr : public RenderBinManager {
  3665.    public:
  3666.  
  3667.     /*! @name Ungrouped
  3668.     @{ */
  3669.     /*! */
  3670.     /// @}
  3671.  
  3672.  
  3673.     /*! @name Object
  3674.     @{ */
  3675.     /*! */
  3676.     /// @}
  3677.  
  3678.  
  3679.     /*! @name Editing
  3680.     @{ */
  3681.     /*! */
  3682.     /// @}
  3683.  
  3684.  
  3685.     /*! @name Persistence
  3686.     @{ */
  3687.     /*! */
  3688.     /// @}
  3689.  
  3690.  };
  3691.  
  3692.  /*!
  3693.  @brief Basically the same as RenderMeshMgr, but will override the material of the instance. Exists for backwards compatibility, not currently used, soon to be deprecated
  3694.  
  3695.   */
  3696.  class  ForcedMaterialMeshMgr : public RenderMeshMgr {
  3697.    public:
  3698.     /*!
  3699.     Material used to draw all meshes in the render bin.
  3700.    
  3701.      */
  3702.     Material Material;
  3703.  
  3704.     /*! @name Ungrouped
  3705.     @{ */
  3706.     /*! */
  3707.     /// @}
  3708.  
  3709.  
  3710.     /*! @name Object
  3711.     @{ */
  3712.     /*! */
  3713.     /// @}
  3714.  
  3715.  
  3716.     /*! @name Editing
  3717.     @{ */
  3718.     /*! */
  3719.     /// @}
  3720.  
  3721.  
  3722.     /*! @name Persistence
  3723.     @{ */
  3724.     /*! */
  3725.     /// @}
  3726.  
  3727.  };
  3728.  
  3729.  /*!
  3730.  @brief A render bin for forest rendering.
  3731.  
  3732.  Do not mess with it if you value your life.@ingroup RenderBin
  3733.   */
  3734.  class  RenderForestMgr : public RenderBinManager {
  3735.    public:
  3736.  
  3737.     /*! @name Ungrouped
  3738.     @{ */
  3739.     /*! */
  3740.     /// @}
  3741.  
  3742.  
  3743.     /*! @name Object
  3744.     @{ */
  3745.     /*! */
  3746.     /// @}
  3747.  
  3748.  
  3749.     /*! @name Editing
  3750.     @{ */
  3751.     /*! */
  3752.     /// @}
  3753.  
  3754.  
  3755.     /*! @name Persistence
  3756.     @{ */
  3757.     /*! */
  3758.     /// @}
  3759.  
  3760.  };
  3761.  
  3762.  /*!
  3763.  @brief A render bin for batch rendering imposters.
  3764.  
  3765.  This render bin gathers imposter render instances and renders them in large batches.
  3766.  
  3767.  You can type 'metrics( imposter )' in the console to see rendering statistics.
  3768.  
  3769.  @ingroup RenderBin
  3770.   */
  3771.  class  RenderImposterMgr : public RenderBinManager {
  3772.    public:
  3773.  
  3774.     /*! @name Ungrouped
  3775.     @{ */
  3776.     /*! */
  3777.     /// @}
  3778.  
  3779.  
  3780.     /*! @name Object
  3781.     @{ */
  3782.     /*! */
  3783.     /// @}
  3784.  
  3785.  
  3786.     /*! @name Editing
  3787.     @{ */
  3788.     /*! */
  3789.     /// @}
  3790.  
  3791.  
  3792.     /*! @name Persistence
  3793.     @{ */
  3794.     /*! */
  3795.     /// @}
  3796.  
  3797.  };
  3798.  
  3799.  /*!
  3800.  @brief A render bin which renders occlusion query requests.
  3801.  
  3802.  This render bin gathers occlusion query render instances and renders them. It is currently used by light flares and ShapeBase reflection cubemaps.
  3803.  
  3804.  You can type '$RenderOcclusionMgr::debugRender = true' in the console to see debug rendering of the occlusion geometry.
  3805.  
  3806.  @ingroup RenderBin
  3807.   */
  3808.  class  RenderOcclusionMgr : public RenderBinManager {
  3809.    public:
  3810.  
  3811.     /*! @name Ungrouped
  3812.     @{ */
  3813.     /*! */
  3814.     /// @}
  3815.  
  3816.  
  3817.     /*! @name Object
  3818.     @{ */
  3819.     /*! */
  3820.     /// @}
  3821.  
  3822.  
  3823.     /*! @name Editing
  3824.     @{ */
  3825.     /*! */
  3826.     /// @}
  3827.  
  3828.  
  3829.     /*! @name Persistence
  3830.     @{ */
  3831.     /*! */
  3832.     /// @}
  3833.  
  3834.  };
  3835.  
  3836.  /*!
  3837.  @brief A render bin which renders particle geometry.
  3838.  
  3839.  This render bin gathers particle render instances, sorts, and renders them. It is currently used by ParticleEmitter and LightFlareData.
  3840.  
  3841.  @ingroup RenderBin
  3842.   */
  3843.  class  RenderParticleMgr : public RenderTexTargetBinManager {
  3844.    public:
  3845.  
  3846.     /*! @name Ungrouped
  3847.     @{ */
  3848.     /*! */
  3849.     /// @}
  3850.  
  3851.  
  3852.     /*! @name Object
  3853.     @{ */
  3854.     /*! */
  3855.     /// @}
  3856.  
  3857.  
  3858.     /*! @name Editing
  3859.     @{ */
  3860.     /*! */
  3861.     /// @}
  3862.  
  3863.  
  3864.     /*! @name Persistence
  3865.     @{ */
  3866.     /*! */
  3867.     /// @}
  3868.  
  3869.  };
  3870.  
  3871.  /*!
  3872.  @brief A non-rendering render bin used to enable/disable a RenderPassStateToken.
  3873.  
  3874.  This is a utility RenderBinManager which does not render any render instances.  Its only used to define a point in the render bin order at which a RenderPassStateToken is triggered.
  3875.  
  3876.  @see RenderPassStateToken
  3877.  @ingroup RenderBin
  3878.   */
  3879.  class  RenderPassStateBin : public RenderBinManager {
  3880.    public:
  3881.     /*!
  3882.      */
  3883.     RenderPassStateToken stateToken;
  3884.  
  3885.     /*! @name Ungrouped
  3886.     @{ */
  3887.     /*! */
  3888.     /// @}
  3889.  
  3890.  
  3891.     /*! @name Object
  3892.     @{ */
  3893.     /*! */
  3894.     /// @}
  3895.  
  3896.  
  3897.     /*! @name Editing
  3898.     @{ */
  3899.     /*! */
  3900.     /// @}
  3901.  
  3902.  
  3903.     /*! @name Persistence
  3904.     @{ */
  3905.     /*! */
  3906.     /// @}
  3907.  
  3908.  };
  3909.  
  3910.  class  RenderSelectionMgr : public RenderTexTargetBinManager {
  3911.    public:
  3912.  
  3913.     /*! @name Ungrouped
  3914.     @{ */
  3915.     /*! */
  3916.     /// @}
  3917.  
  3918.  
  3919.     /*! @name Object
  3920.     @{ */
  3921.     /*! */
  3922.     /// @}
  3923.  
  3924.  
  3925.     /*! @name Editing
  3926.     @{ */
  3927.     /*! */
  3928.     /// @}
  3929.  
  3930.  
  3931.     /*! @name Persistence
  3932.     @{ */
  3933.     /*! */
  3934.     /// @}
  3935.  
  3936.  };
  3937.  
  3938.  /*!
  3939.  @brief A render bin for terrain mesh rendering.
  3940.  
  3941.  This bin renders terrain render instances from a TerrainBlock. Normally a mesh would render via the RenderMeshMgr, but terrain uses a TerrainMaterial designed for multi-layered surfaces which this bin can processs.
  3942.  
  3943.  @ingroup RenderBin
  3944.   */
  3945.  class  RenderTerrainMgr : public RenderBinManager {
  3946.    public:
  3947.  
  3948.     /*! @name Ungrouped
  3949.     @{ */
  3950.     /*! */
  3951.     /// @}
  3952.  
  3953.  
  3954.     /*! @name Object
  3955.     @{ */
  3956.     /*! */
  3957.     /// @}
  3958.  
  3959.  
  3960.     /*! @name Editing
  3961.     @{ */
  3962.     /*! */
  3963.     /// @}
  3964.  
  3965.  
  3966.     /*! @name Persistence
  3967.     @{ */
  3968.     /*! */
  3969.     /// @}
  3970.  
  3971.  };
  3972.  
  3973.  /*!
  3974.  @brief A render bin for rendering translucent meshes.
  3975.  
  3976.  This bin is used to render translucent render mesh instances and render object instances. It is generally ordered late in the RenderPassManager after all opaque geometry bins.
  3977.  
  3978.  @ingroup RenderBin
  3979.   */
  3980.  class  RenderTranslucentMgr : public RenderBinManager {
  3981.    public:
  3982.  
  3983.     /*! @name Ungrouped
  3984.     @{ */
  3985.     /*! */
  3986.     /// @}
  3987.  
  3988.  
  3989.     /*! @name Object
  3990.     @{ */
  3991.     /*! */
  3992.     /// @}
  3993.  
  3994.  
  3995.     /*! @name Editing
  3996.     @{ */
  3997.     /*! */
  3998.     /// @}
  3999.  
  4000.  
  4001.     /*! @name Persistence
  4002.     @{ */
  4003.     /*! */
  4004.     /// @}
  4005.  
  4006.  };
  4007.  
  4008.  /*!
  4009.  @brief A datablock which defines performance and quality properties for dynamic reflections.
  4010.  
  4011.  ReflectorDesc is not itself a reflection and does not render reflections. It is a dummy class for holding and exposing to the user a set of reflection related properties. Objects which support dynamic reflections may then reference a ReflectorDesc.
  4012.  
  4013.  @tsexample
  4014.  datablock ReflectorDesc( ExampleReflectorDesc )
  4015.  {
  4016.     texSize = 256;
  4017.     nearDist = 0.1;
  4018.     farDist = 500;
  4019.     objectTypeMask = 0xFFFFFFFF;
  4020.     detailAdjust = 1.0;
  4021.     priority = 1.0;
  4022.     maxRateMs = 0;
  4023.     useOcclusionQuery = true;
  4024.  };
  4025.  @endtsexample
  4026.  @see ShapeBaseData::cubeReflectorDesc
  4027.   */
  4028.  class  ReflectorDesc : public SimDataBlock {
  4029.    public:
  4030.  
  4031.     /*! @name ReflectorDesc
  4032.     @{ */
  4033.     /*! */
  4034.     /*!
  4035.     Size in pixels of the (square) reflection texture. For a cubemap this value is interpreted as size of each face.
  4036.    
  4037.      */
  4038.     int texSize;
  4039.     /*!
  4040.     Near plane distance to use when rendering this reflection. Adjust this to limit self-occlusion artifacts.
  4041.    
  4042.      */
  4043.     float nearDist;
  4044.     /*!
  4045.     Far plane distance to use when rendering reflections.
  4046.    
  4047.      */
  4048.     float farDist;
  4049.     /*!
  4050.     Object types which render into this reflection.
  4051.    
  4052.      */
  4053.     int objectTypeMask;
  4054.     /*!
  4055.     Scale applied to lod calculation of objects rendering into this reflection ( modulates $pref::TS::detailAdjust ).
  4056.    
  4057.      */
  4058.     float detailAdjust;
  4059.     /*!
  4060.     Priority for updating this reflection, relative to others.
  4061.    
  4062.      */
  4063.     float priority;
  4064.     /*!
  4065.     If less than maxRateMs has elapsed since this relfection was last updated, then do not update it again. This 'skip' can be disabled by setting maxRateMs to zero.
  4066.    
  4067.      */
  4068.     int maxRateMs;
  4069.     /*!
  4070.     If available on the device use HOQs to determine if the reflective object is visible before updating its reflection.
  4071.    
  4072.      */
  4073.     bool useOcclusionQuery;
  4074.     /// @}
  4075.  
  4076.  
  4077.     /*! @name Ungrouped
  4078.     @{ */
  4079.     /*! */
  4080.     /// @}
  4081.  
  4082.  
  4083.     /*! @name Object
  4084.     @{ */
  4085.     /*! */
  4086.     /// @}
  4087.  
  4088.  
  4089.     /*! @name Editing
  4090.     @{ */
  4091.     /*! */
  4092.     /// @}
  4093.  
  4094.  
  4095.     /*! @name Persistence
  4096.     @{ */
  4097.     /*! */
  4098.     /// @}
  4099.  
  4100.  };
  4101.  
  4102.  /*!
  4103.  @brief A datablock describing a playback pattern of sounds.
  4104.  
  4105.  Playlists allow to define intricate playback patterns of invidual tracks and thus allow the sound system to be easily used for playing multiple sounds in single operations.
  4106.  
  4107.  As playlists are %SFXTracks, they can thus be used anywhere in the engine where sound data can be assigned.
  4108.  
  4109.  Each playlist can hold a maximum of 16 tracks.  Longer playlists may be constructed by cascading lists, i.e. by creating a playlist that references other playlists.
  4110.  
  4111.  Processing of a single playlist slot progresses in a fixed set of steps that are invariably iterated through for each slot (except the slot is assigned a state and its state is deactivated; in this case, the controller will exit out of the slot directly):
  4112.  
  4113.  <ol>
  4114.  <li><b>delayIn:</b><p>Waits a set amount of time before processing the slot. This is 0 by default and is determined by the #delayTimeIn (seconds to wait) and #delayTimeInVariance (bounds on randomization) properties.</p></li>
  4115.  <li><b>#transitionIn:</b><p>Decides what to do @b before playing the slot.  Defaults to @c None which makes this stage a no-operation.  Alternatively, the slot can be configured to wait for playback of other slots to finish (@c Wait and @c WaitAll) or to stop playback of other slots (@c Stop and @c StopAll). Note that @c Wait and @c Stop always refer to the source that was last started by the list.</p></li>
  4116.  <li><b>play:</b><p><p>Finally, the #track attached to the slot is played. However, this will only @b start playback of the track and then immediately move on to the next stage.  It will @b not wait for the track to finish playing.  Note also that depending on the @c replay setting for the slot, this stage may pick up a source that is already playing on the slot rather than starting a new one.</p> <p>Several slot properties (fade times, min/max distance, and volume/pitch scale) are used in this stage.</p></li>
  4117.  <li><b>delayOut:</b><p>Waits a set amount of time before transitioning out of the slot. This works the same as @c delayIn and is set to 0 by default (i.e. no delay).</p></li>
  4118.  <li><b>#transitionOut:</b><p>Decides what to do @b after playing the slot. This works like #transitionIn.</p></li>
  4119.  </ol>
  4120.  
  4121.  This is a key difference to playlists in normal music players where upon reaching a certain slot, the slot will immediately play and the player then wait for playback to finish before moving on to the next slot.
  4122.  
  4123.  @note Be aware that time limits set on slot delays are soft limits.  The sound system updates sound sources in discrete (and equally system update frequency dependent) intervals which thus determines the granularity at which time-outs can be handled.
  4124.  
  4125.  @section SFXPlayList_randomization Value Randomization
  4126.  
  4127.  For greater variety, many of the values for individual slots may be given a randomization limit that will trigger a dynamic variance of the specified base value.
  4128.  
  4129.  Any given field @c xyz that may be randomized has a corresponding field @c xyzVariance which is a two-dimensional vector.  The first number specifies the greatest value that may be subtracted from the given base value (i.e. the @c xyz field) whereas the second number specifies the greatest value that may be added to the base value.  Between these two limits, a random number is generated.
  4130.  
  4131.  The default variance settings of "0 0" will thus not allow to add or subtract anything from the base value and effectively disable randomization.
  4132.  
  4133.  Randomization is re-evaluated on each cycle through a list.
  4134.  
  4135.  @section SFXPlayList_states Playlists and States
  4136.  
  4137.  A unique aspect of playlists is that they allow their playback to be tied to the changing set of active sound states. This feature enables playlists to basically connect to an extensible state machine that can be leveraged by the game code to signal a multitude of different gameplay states with the audio system then automatically reacting to state transitions.
  4138.  
  4139.  Playlists react to states in three ways:
  4140.  - Before a controller starts processing a slot it checks whether the slot is assigned a #state.  If this is the case, the controller checks whether the particular state is active.  If it is not, the entire slot is skipped.  If it is, the controller goes on to process the slot.
  4141.  - If a controller is in one of the delay stages for a slot that has a #state assigned and the state is deactivated, the controller will stop the delay and skip any of the remaining processing stages for the slot.
  4142.  - Once the play stage has been processed for a slot that has a #state assigned, the slot's #stateMode will determine what happens with the playing sound source if the slot's state is deactivated while the sound is still playing.
  4143.  
  4144.  A simple example of how to make use of states in combination with playlists would be to set up a playlist for background music that reacts to the mood of the current gameplay situation.  For example, during combat, tenser music could play than during normal exploration.  To set this up, different %SFXStates would represent different moods in the game and the background music playlist would have one slot set up for each such mood.  By making use of volume fades and the @c PauseWhenDeactivated #stateMode, smooth transitions between the various audio tracks can be produced.
  4145.  
  4146.  @tsexample
  4147.  // Create a play list from two SFXProfiles.
  4148.  %playList = new SFXPlayList()
  4149.  {
  4150.     // Use a looped description so the list playback will loop.
  4151.     description = AudioMusicLoop2D;
  4152.  
  4153.     track[ 0 ] = Profile1;
  4154.     track[ 1 ] = Profile2;
  4155.  };
  4156.  
  4157.  // Play the list.
  4158.  sfxPlayOnce( %playList );
  4159.  @endtsexample
  4160.  
  4161.  @ref SFX_interactive
  4162.  
  4163.   */
  4164.  class  SFXPlayList : public SFXTrack {
  4165.    public:
  4166.  
  4167.     /*! @name Sound
  4168.     @{ */
  4169.     /*! */
  4170.     /*!
  4171.     Slot playback order randomization pattern.
  4172. By setting this field to something other than "NotRandom" to order in which slots of the playlist are processed can be changed from sequential to a random pattern.  This allows to to create more varied playback patterns.
  4173. Defaults to "NotRandom".
  4174.    
  4175.      */
  4176.     SFXPlayListRandomMode random;
  4177.     /*!
  4178.     Behavior when description has looping enabled.
  4179. The loop mode determines whether the list will loop over a single slot or loop over all the entire list of slots being played.
  4180.  
  4181. @see SFXDescription::isLooping
  4182.    
  4183.      */
  4184.     SFXPlayListLoopMode loopMode;
  4185.     /*!
  4186.     Number of slots to play.
  4187. Up to a maximum of 16, this field determines the number of slots that are taken from the list for playback.  Only slots that have a valid #track assigned will be considered for this.
  4188.    
  4189.      */
  4190.     int numSlotsToPlay;
  4191.     /*!
  4192.     Track to play in this slot.
  4193. This must be set for the slot to be considered for playback.  Other settings for a slot will not take effect except this field is set.
  4194.    
  4195.      */
  4196.     SFXTrack track;
  4197.     /*!
  4198.     Behavior when an already playing sound is encountered on this slot from a previous cycle.
  4199. Each slot can have an arbitrary number of sounds playing on it from previous cycles.  This field determines how SFXController will handle these sources.
  4200.    
  4201.      */
  4202.     SFXPlayListReplayMode replay;
  4203.     /*!
  4204.     Behavior when moving into this slot.
  4205. After the delayIn time has expired (if any), this slot determines what the controller will do before actually playing the slot.
  4206.    
  4207.      */
  4208.     SFXPlayListTransitionMode transitionIn;
  4209.     /*!
  4210.     Behavior when moving out of this slot.
  4211. After the #detailTimeOut has expired (if any), this slot determines what the controller will do before moving on to the next slot.
  4212.    
  4213.      */
  4214.     SFXPlayListTransitionMode transitionOut;
  4215.     /*!
  4216.     Seconds to wait after moving into slot before #transitionIn.
  4217.    
  4218.      */
  4219.     float delayTimeIn;
  4220.     /*!
  4221.     Bounds on randomization of #delayTimeIn.
  4222.  
  4223. @ref SFXPlayList_randomization
  4224.  
  4225.    
  4226.      */
  4227.     Point2F delayTimeInVariance;
  4228.     /*!
  4229.     Seconds to wait before moving out of slot after #transitionOut.
  4230.    
  4231.      */
  4232.     float delayTimeOut;
  4233.     /*!
  4234.     Bounds on randomization of #delayTimeOut.
  4235.  
  4236. @ref SFXPlayList_randomization
  4237.  
  4238.    
  4239.      */
  4240.     Point2F delayTimeOutVariance;
  4241.     /*!
  4242.     Seconds to fade sound in (-1 to use the track's own fadeInTime.)
  4243. @see SFXDescription::fadeTimeIn
  4244.    
  4245.      */
  4246.     float fadeTimeIn;
  4247.     /*!
  4248.     Bounds on randomization of #fadeInTime.
  4249.  
  4250. @ref SFXPlayList_randomization
  4251.  
  4252.    
  4253.      */
  4254.     Point2F fadeTimeInVariance;
  4255.     /*!
  4256.     Seconds to fade sound out (-1 to use the track's own fadeOutTime.)
  4257. @see SFXDescription::fadeTimeOut
  4258.    
  4259.      */
  4260.     float fadeTimeOut;
  4261.     /*!
  4262.     Bounds on randomization of #fadeOutTime
  4263.  
  4264. @ref SFXPlayList_randomization
  4265.  
  4266.    
  4267.      */
  4268.     Point2F fadeTimeOutVariance;
  4269.     /*!
  4270.     @c referenceDistance to set for 3D sounds in this slot (<1 to use @c referenceDistance of track's own description).
  4271. @see SFXDescription::referenceDistance
  4272.    
  4273.      */
  4274.     float referenceDistance;
  4275.     /*!
  4276.     Bounds on randomization of #referenceDistance.
  4277.  
  4278. @ref SFXPlayList_randomization
  4279.  
  4280.    
  4281.      */
  4282.     Point2F referenceDistanceVariance;
  4283.     /*!
  4284.     @c maxDistance to apply to 3D sounds in this slot (<1 to use @c maxDistance of track's own description).
  4285. @see SFXDescription::maxDistance
  4286.    
  4287.      */
  4288.     float maxDistance;
  4289.     /*!
  4290.     Bounds on randomization of #maxDistance.
  4291.  
  4292. @ref SFXPlayList_randomization
  4293.  
  4294.    
  4295.      */
  4296.     Point2F maxDistanceVariance;
  4297.     /*!
  4298.     Scale factor to apply to volume of sounds played on this list slot.
  4299. This value will scale the actual volume level set on the track assigned to the slot, i.e. a value of 0.5 will cause the track to play at half-volume.
  4300.    
  4301.      */
  4302.     float volumeScale;
  4303.     /*!
  4304.     Bounds on randomization of #volumeScale.
  4305.  
  4306. @ref SFXPlayList_randomization
  4307.  
  4308.    
  4309.      */
  4310.     Point2F volumeScaleVariance;
  4311.     /*!
  4312.     Scale factor to apply to pitch of sounds played on this list slot.
  4313. This value will scale the actual pitch set on the track assigned to the slot, i.e. a value of 0.5 will cause the track to play at half its assigned speed.
  4314.    
  4315.      */
  4316.     float pitchScale;
  4317.     /*!
  4318.     Bounds on randomization of #pitchScale.
  4319.  
  4320. @ref SFXPlayList_randomization
  4321.  
  4322.    
  4323.      */
  4324.     Point2F pitchScaleVariance;
  4325.     /*!
  4326.     Number of times to loop this slot.
  4327.    
  4328.      */
  4329.     int repeatCount;
  4330.     /*!
  4331.     State that must be active for this slot to play.
  4332.  
  4333. @ref SFXPlayList_states
  4334.    
  4335.      */
  4336.     SFXState state;
  4337.     /*!
  4338.     Behavior when assigned state is deactivated while slot is playing.
  4339.  
  4340. @ref SFXPlayList_states
  4341.    
  4342.      */
  4343.     SFXPlayListStateMode stateMode;
  4344.     /// @}
  4345.  
  4346.  
  4347.     /*! @name Debug
  4348.     @{ */
  4349.     /*! */
  4350.     /*!
  4351.     Enable/disable execution tracing for this playlist (local only).
  4352. If this is true, SFXControllers attached to the list will automatically run in trace mode.
  4353.    
  4354.      */
  4355.     bool trace;
  4356.     /// @}
  4357.  
  4358.  
  4359.     /*! @name Sound
  4360.     @{ */
  4361.     /*! */
  4362.     /// @}
  4363.  
  4364.  
  4365.     /*! @name Ungrouped
  4366.     @{ */
  4367.     /*! */
  4368.     /// @}
  4369.  
  4370.  
  4371.     /*! @name Object
  4372.     @{ */
  4373.     /*! */
  4374.     /// @}
  4375.  
  4376.  
  4377.     /*! @name Editing
  4378.     @{ */
  4379.     /*! */
  4380.     /// @}
  4381.  
  4382.  
  4383.     /*! @name Persistence
  4384.     @{ */
  4385.     /*! */
  4386.     /// @}
  4387.  
  4388.  };
  4389.  
  4390.  /*!
  4391.  @brief A playable sound event in an FMOD Designer audio project.
  4392.  
  4393.  @ingroup SFXFMOD
  4394.   */
  4395.  class  SFXFMODEvent : public SFXTrack {
  4396.    public:
  4397.  
  4398.     /*! @name DO NOT MODIFY!!
  4399.     @{ */
  4400.     /*! */
  4401.     /*!
  4402.     DO NOT MODIFY!!
  4403.    
  4404.      */
  4405.     SFXFMODEventGroup fmodGroup;
  4406.     /*!
  4407.     DO NOT MODIFY!!
  4408.    
  4409.      */
  4410.     string fmodName;
  4411.     /*!
  4412.     DO NOT MODIFY!!
  4413.    
  4414.      */
  4415.     Point2F fmodParameterRanges;
  4416.     /*!
  4417.     DO NOT MODIFY!!
  4418.    
  4419.      */
  4420.     float fmodParameterValues;
  4421.     /// @}
  4422.  
  4423.  
  4424.     /*! @name Sound
  4425.     @{ */
  4426.     /*! */
  4427.     /// @}
  4428.  
  4429.  
  4430.     /*! @name Ungrouped
  4431.     @{ */
  4432.     /*! */
  4433.     /// @}
  4434.  
  4435.  
  4436.     /*! @name Object
  4437.     @{ */
  4438.     /*! */
  4439.     /// @}
  4440.  
  4441.  
  4442.     /*! @name Editing
  4443.     @{ */
  4444.     /*! */
  4445.     /// @}
  4446.  
  4447.  
  4448.     /*! @name Persistence
  4449.     @{ */
  4450.     /*! */
  4451.     /// @}
  4452.  
  4453.  };
  4454.  
  4455.  /*!
  4456.  @brief A sound source controller playing an %FMOD Designer event (SFXFMODEvent).
  4457.  
  4458.  %FMOD event sources are internally created by the sound system to play events from imported %FMOD Designer projects.
  4459.  
  4460.  @note This class cannot be instantiated directly by the user.  Instead, instances of SFXFMODEventSource will be implicitly created by the sound system when playing an SFXFMODEvent.
  4461.  
  4462.  @ingroup SFXFMOD
  4463.   */
  4464.  class  SFXFMODEventSource : public SFXSource {
  4465.    public:
  4466.  
  4467.     /*! @name Sound
  4468.     @{ */
  4469.     /*! */
  4470.     /// @}
  4471.  
  4472.  
  4473.     /*! @name Ungrouped
  4474.     @{ */
  4475.     /*! */
  4476.     /// @}
  4477.  
  4478.  
  4479.     /*! @name Object
  4480.     @{ */
  4481.     /*! */
  4482.     /// @}
  4483.  
  4484.  
  4485.     /*! @name Editing
  4486.     @{ */
  4487.     /*! */
  4488.     /// @}
  4489.  
  4490.  
  4491.     /*! @name Persistence
  4492.     @{ */
  4493.     /*! */
  4494.     /// @}
  4495.  
  4496.  };
  4497.  
  4498.  /*!
  4499.  @brief An FMOD Designer project loaded into Torque.
  4500.  
  4501.  @section SFXFMODProject_resources Resource Loading
  4502.  
  4503.  @ingroup SFXFMOD
  4504.   */
  4505.  class  SFXFMODProject : public SimDataBlock {
  4506.    public:
  4507.  
  4508.     /*! @name FMOD
  4509.     @{ */
  4510.     /*! */
  4511.     /*!
  4512.     The compiled .fev file from FMOD Designer.
  4513.    
  4514.      */
  4515.     filename fileName;
  4516.     /*!
  4517.     Path to the media files; if unset, defaults to project directory.
  4518.    
  4519.      */
  4520.     filename mediaPath;
  4521.     /// @}
  4522.  
  4523.  
  4524.     /*! @name Ungrouped
  4525.     @{ */
  4526.     /*! */
  4527.     /// @}
  4528.  
  4529.  
  4530.     /*! @name Object
  4531.     @{ */
  4532.     /*! */
  4533.     /// @}
  4534.  
  4535.  
  4536.     /*! @name Editing
  4537.     @{ */
  4538.     /*! */
  4539.     /// @}
  4540.  
  4541.  
  4542.     /*! @name Persistence
  4543.     @{ */
  4544.     /*! */
  4545.     /// @}
  4546.  
  4547.  };
  4548.  
  4549.  /*!
  4550.  @brief Internal event used for transmitting strings across the server.
  4551.  
  4552.  For internal use only, not intended for TorqueScript or game development
  4553.  
  4554.  @internal
  4555.   */
  4556.  class  NetStringEvent {
  4557.    public:
  4558.  };
  4559.  
  4560.  class  UnitToClientEvent {
  4561.    public:
  4562.  };
  4563.  
  4564.  /*!
  4565.  @brief This event is used inside by the connection and subclasses to message itself when sequencing events occur.
  4566.  
  4567.  Not intended for game development, for editors or internal use only.
  4568.  
  4569.   */
  4570.  class  ConnectionMessageEvent {
  4571.    public:
  4572.  };
  4573.  
  4574.  /*!
  4575.  @brief Legacy or soon to be locked down object.
  4576.  
  4577.  Not intended for game development, for editors or internal use only.
  4578.  
  4579.   */
  4580.  class  GhostAlwaysObjectEvent {
  4581.    public:
  4582.  };
  4583.  
  4584.  class  HouseConvexShape : public ConvexShape {
  4585.    public:
  4586.  
  4587.     /*! @name Rendering
  4588.     @{ */
  4589.     /*! */
  4590.     /// @}
  4591.  
  4592.  
  4593.     /*! @name Internal
  4594.     @{ */
  4595.     /*! */
  4596.     /// @}
  4597.  
  4598.  
  4599.     /*! @name AFX
  4600.     @{ */
  4601.     /*! */
  4602.     /// @}
  4603.  
  4604.  
  4605.     /*! @name Transform
  4606.     @{ */
  4607.     /*! */
  4608.     /// @}
  4609.  
  4610.  
  4611.     /*! @name Editing
  4612.     @{ */
  4613.     /*! */
  4614.     /// @}
  4615.  
  4616.  
  4617.     /*! @name Mounting
  4618.     @{ */
  4619.     /*! */
  4620.     /// @}
  4621.  
  4622.  
  4623.     /*! @name Ungrouped
  4624.     @{ */
  4625.     /*! */
  4626.     /// @}
  4627.  
  4628.  
  4629.     /*! @name Object
  4630.     @{ */
  4631.     /*! */
  4632.     /// @}
  4633.  
  4634.  
  4635.     /*! @name Editing
  4636.     @{ */
  4637.     /*! */
  4638.     /// @}
  4639.  
  4640.  
  4641.     /*! @name Persistence
  4642.     @{ */
  4643.     /*! */
  4644.     /// @}
  4645.  
  4646.  };
  4647.  
  4648.  class  TerFallEvent {
  4649.    public:
  4650.  };
  4651.  
  4652.  /*!
  4653.  @brief The TerrainMaterial class orginizes the material settings for a single terrain material layer.
  4654.  
  4655.  @note You should not be creating TerrainMaterials by hand in code. All TerrainMaterials should be created in the editors, as intended by the system.
  4656.  
  4657.  @tsexample
  4658.  // Created by the Terrain Painter tool in the World Editor
  4659.  new TerrainMaterial()
  4660.  {
  4661.     internalName = "grass1";
  4662.     diffuseMap = "art/terrains/Test/grass1";
  4663.     detailMap = "art/terrains/Test/grass1_d";
  4664.     detailSize = "10";
  4665.     isManaged = "1";
  4666.     detailBrightness = "1";
  4667.     Enabled = "1";
  4668.     diffuseSize = "200";
  4669.  };
  4670.  @endtsexample
  4671.  
  4672.  @see Materials
  4673.  @ingroup enviroMisc
  4674.   */
  4675.  class  TerrainMaterial : public SimObject {
  4676.    public:
  4677.     /*!
  4678.     Base texture for the material
  4679.    
  4680.      */
  4681.     filename diffuseMap;
  4682.     /*!
  4683.     Used to scale the diffuse map to the material square
  4684.    
  4685.      */
  4686.     float diffuseSize;
  4687.     /*!
  4688.     Bump map for the material
  4689.    
  4690.      */
  4691.     filename normalMap;
  4692.     /*!
  4693.     Detail map for the material
  4694.    
  4695.      */
  4696.     filename detailMap;
  4697.     /*!
  4698.     Used to scale the detail map to the material square
  4699.    
  4700.      */
  4701.     float detailSize;
  4702.     /*!
  4703.     Exponentially sharpens or lightens the detail map rendering on the material
  4704.    
  4705.      */
  4706.     float detailStrength;
  4707.     /*!
  4708.     Changes how far camera can see the detail map rendering on the material
  4709.    
  4710.      */
  4711.     float detailDistance;
  4712.     /*!
  4713.     Makes that terrain material project along the sides of steep slopes instead of projected downwards
  4714.    
  4715.      */
  4716.     bool useSideProjection;
  4717.     /*!
  4718.     Used to scale the height from the normal map to give some self occlusion effect (aka parallax) to the terrain material
  4719.    
  4720.      */
  4721.     float parallaxScale;
  4722.     /*!
  4723.      */
  4724.     ColorI proxyColor;
  4725.     /*!
  4726.      */
  4727.     ColorI mapColor;
  4728.  
  4729.     /*! @name Ungrouped
  4730.     @{ */
  4731.     /*! */
  4732.     /// @}
  4733.  
  4734.  
  4735.     /*! @name Object
  4736.     @{ */
  4737.     /*! */
  4738.     /// @}
  4739.  
  4740.  
  4741.     /*! @name Editing
  4742.     @{ */
  4743.     /*! */
  4744.     /// @}
  4745.  
  4746.  
  4747.     /*! @name Persistence
  4748.     @{ */
  4749.     /*! */
  4750.     /// @}
  4751.  
  4752.  };
  4753.  
  4754.  /*!
  4755.  @brief An event which signals the editors to undo the last action
  4756.  
  4757.  Not intended for game development, for editors or internal use only.
  4758.  
  4759.   */
  4760.  class  UndoAction : public SimObject {
  4761.    public:
  4762.     /*! action.addToManager([undoManager]) */
  4763.     virtual void addToManager() {}
  4764.     /*! Undo action contained in undo. */
  4765.     virtual void undo(()) {}
  4766.     /*! Reo action contained in undo. */
  4767.     virtual void redo(()) {}
  4768.     /*!
  4769.     A brief description of the action, for UI representation of this undo/redo action.
  4770.    
  4771.      */
  4772.     string actionName;
  4773.  
  4774.     /*! @name Ungrouped
  4775.     @{ */
  4776.     /*! */
  4777.     /// @}
  4778.  
  4779.  
  4780.     /*! @name Object
  4781.     @{ */
  4782.     /*! */
  4783.     /// @}
  4784.  
  4785.  
  4786.     /*! @name Editing
  4787.     @{ */
  4788.     /*! */
  4789.     /// @}
  4790.  
  4791.  
  4792.     /*! @name Persistence
  4793.     @{ */
  4794.     /*! */
  4795.     /// @}
  4796.  
  4797.  };
  4798.  
  4799.  /*!
  4800.  @brief Undo actions which can be created as script objects.
  4801.  
  4802.  Not intended for game development, for editors or internal use only.
  4803.  
  4804.   */
  4805.  class  UndoScriptAction : public UndoAction {
  4806.    public:
  4807.  
  4808.     /*! @name Ungrouped
  4809.     @{ */
  4810.     /*! */
  4811.     /// @}
  4812.  
  4813.  
  4814.     /*! @name Object
  4815.     @{ */
  4816.     /*! */
  4817.     /// @}
  4818.  
  4819.  
  4820.     /*! @name Editing
  4821.     @{ */
  4822.     /*! */
  4823.     /// @}
  4824.  
  4825.  
  4826.     /*! @name Persistence
  4827.     @{ */
  4828.     /*! */
  4829.     /// @}
  4830.  
  4831.  };
  4832.  
  4833.  class  AwShape : public TSStatic {
  4834.    public:
  4835.     virtual void execJavaScript(( string script )) {}
  4836.  
  4837.     /*! @name Media
  4838.     @{ */
  4839.     /*! */
  4840.     /// @}
  4841.  
  4842.  
  4843.     /*! @name Rendering
  4844.     @{ */
  4845.     /*! */
  4846.     /// @}
  4847.  
  4848.  
  4849.     /*! @name Collision
  4850.     @{ */
  4851.     /*! */
  4852.     /// @}
  4853.  
  4854.  
  4855.     /*! @name Debug
  4856.     @{ */
  4857.     /*! */
  4858.     /// @}
  4859.  
  4860.  
  4861.     /*! @name AFX
  4862.     @{ */
  4863.     /*! */
  4864.     /// @}
  4865.  
  4866.  
  4867.     /*! @name Transform
  4868.     @{ */
  4869.     /*! */
  4870.     /// @}
  4871.  
  4872.  
  4873.     /*! @name Editing
  4874.     @{ */
  4875.     /*! */
  4876.     /// @}
  4877.  
  4878.  
  4879.     /*! @name Mounting
  4880.     @{ */
  4881.     /*! */
  4882.     /// @}
  4883.  
  4884.  
  4885.     /*! @name Ungrouped
  4886.     @{ */
  4887.     /*! */
  4888.     /// @}
  4889.  
  4890.  
  4891.     /*! @name Object
  4892.     @{ */
  4893.     /*! */
  4894.     /// @}
  4895.  
  4896.  
  4897.     /*! @name Editing
  4898.     @{ */
  4899.     /*! */
  4900.     /// @}
  4901.  
  4902.  
  4903.     /*! @name Persistence
  4904.     @{ */
  4905.     /*! */
  4906.     /// @}
  4907.  
  4908.  };
  4909.  
  4910.  class  AwTextureTarget : public SimObject {
  4911.    public:
  4912.     virtual void execJavaScript(( string script )) {}
  4913.     virtual void reload(()) {}
  4914.     /*!
  4915.     The URL which is loaded initially.
  4916.    
  4917.      */
  4918.     string StartURL;
  4919.     /*!
  4920.     Name of the texture target. The texture name can be used in materials to reference this AwTextureTarget.
  4921.    
  4922.      */
  4923.     string TextureTargetName;
  4924.     /*!
  4925.     The amount of frames per second to render. 0 means unlimited.
  4926.    
  4927.      */
  4928.     char Framerate;
  4929.     /*!
  4930.     Resolution. Defaults to (640, 480).
  4931.    
  4932.      */
  4933.     Point2I Resolution;
  4934.     /*!
  4935.     The bitmap which is used as a cursor. A default cursor will be used if none is set.
  4936.    
  4937.      */
  4938.     string CursorBitmap;
  4939.     /*!
  4940.     Tells this AwTextureTarget to only generate a single frame. This consumes much less resources than a regular AwTextureTarget. Default: Disabled
  4941.    
  4942.      */
  4943.     bool IsSingleFrame;
  4944.     /*!
  4945.     If set, enables the bitmap cache. This cache is useful when the webpage is loading and you want the user to see something right away.
  4946.    
  4947.      */
  4948.     bool UseBitmapCache;
  4949.     /*!
  4950.     Forces the BitmapCache filename instead of letting the system chose a filename automatically.
  4951.    
  4952.      */
  4953.     string BitmapCachePath;
  4954.     /*!
  4955.     The sound profile to play when gaining mouse input.
  4956.    
  4957.      */
  4958.     SFXTrack OnGainMouseInputSound;
  4959.     /*!
  4960.     The sound profile to play when losing mouse input.
  4961.    
  4962.      */
  4963.     SFXTrack OnLoseMouseInputSound;
  4964.  
  4965.     /*! @name Ungrouped
  4966.     @{ */
  4967.     /*! */
  4968.     /// @}
  4969.  
  4970.  
  4971.     /*! @name Object
  4972.     @{ */
  4973.     /*! */
  4974.     /// @}
  4975.  
  4976.  
  4977.     /*! @name Editing
  4978.     @{ */
  4979.     /*! */
  4980.     /// @}
  4981.  
  4982.  
  4983.     /*! @name Persistence
  4984.     @{ */
  4985.     /*! */
  4986.     /// @}
  4987.  
  4988.  };
  4989.  
  4990.  class  ERenderMan {
  4991.    public:
  4992.     /*! const char* GFXFormat */
  4993.     virtual void setFormat() {}
  4994.  };
  4995.  
  4996.  class  EnvInterpolator : public SceneObject {
  4997.    public:
  4998.     virtual void setInterpolationEnabled((bool enabled)) {}
  4999.     virtual void toggleInterpolationEnabled() {}
  5000.     virtual void toggleApplyMode() {}
  5001.     virtual void reset() {}
  5002.     virtual void setCurrentValuesToGlobalObjects() {}
  5003.     /*! SimId envDataBlock */
  5004.     virtual void createSampleFromGlobalObjectValue() {}
  5005.     /*! S32 elevation */
  5006.     virtual void debugOverrideElevation() {}
  5007.     virtual void debugDisableElevationOverride() {}
  5008.     /*! const char* weather */
  5009.     virtual void debugSetWeather() {}
  5010.     virtual void debugPrintCurrentWeather() {}
  5011.  
  5012.     /*! @name Transform
  5013.     @{ */
  5014.     /*! */
  5015.     /// @}
  5016.  
  5017.  
  5018.     /*! @name Editing
  5019.     @{ */
  5020.     /*! */
  5021.     /// @}
  5022.  
  5023.  
  5024.     /*! @name Mounting
  5025.     @{ */
  5026.     /*! */
  5027.     /// @}
  5028.  
  5029.  
  5030.     /*! @name Ungrouped
  5031.     @{ */
  5032.     /*! */
  5033.     /// @}
  5034.  
  5035.  
  5036.     /*! @name Object
  5037.     @{ */
  5038.     /*! */
  5039.     /// @}
  5040.  
  5041.  
  5042.     /*! @name Editing
  5043.     @{ */
  5044.     /*! */
  5045.     /// @}
  5046.  
  5047.  
  5048.     /*! @name Persistence
  5049.     @{ */
  5050.     /*! */
  5051.     /// @}
  5052.  
  5053.  };
  5054.  
  5055.  class  GuiColorCurveEditor : public GuiControl {
  5056.    public:
  5057.     virtual void colorPickerApply() {}
  5058.     virtual void colorPickerUpdate() {}
  5059.     virtual void colorPickerCancel() {}
  5060.     virtual void setField((S32 EnvDataBlockId, U32 field)) {}
  5061.     /*!
  5062.     Range of domain
  5063.    
  5064.      */
  5065.     Point2F domainRange;
  5066.     /*!
  5067.     Size of handles in pixels.
  5068.    
  5069.      */
  5070.     int sampleSize;
  5071.     /*!
  5072.     Precision of text output
  5073.    
  5074.      */
  5075.     int precision;
  5076.     /*!
  5077.     Cycle edge sample
  5078.    
  5079.      */
  5080.     bool cycleSample;
  5081.     /*!
  5082.     Color for current position handle.
  5083.    
  5084.      */
  5085.     ColorI positionHandleColor;
  5086.     /*!
  5087.     Color for current position handle.
  5088.    
  5089.      */
  5090.     ColorI activeSampleColor;
  5091.     /*!
  5092.    
  5093.    
  5094.      */
  5095.     string positionVariable;
  5096.  
  5097.     /*! @name Layout
  5098.     @{ */
  5099.     /*! */
  5100.     /// @}
  5101.  
  5102.  
  5103.     /*! @name Control
  5104.     @{ */
  5105.     /*! */
  5106.     /// @}
  5107.  
  5108.  
  5109.     /*! @name ToolTip
  5110.     @{ */
  5111.     /*! */
  5112.     /// @}
  5113.  
  5114.  
  5115.     /*! @name Editing
  5116.     @{ */
  5117.     /*! */
  5118.     /// @}
  5119.  
  5120.  
  5121.     /*! @name Localization
  5122.     @{ */
  5123.     /*! */
  5124.     /// @}
  5125.  
  5126.  
  5127.     /*! @name Ungrouped
  5128.     @{ */
  5129.     /*! */
  5130.     /// @}
  5131.  
  5132.  
  5133.     /*! @name Object
  5134.     @{ */
  5135.     /*! */
  5136.     /// @}
  5137.  
  5138.  
  5139.     /*! @name Editing
  5140.     @{ */
  5141.     /*! */
  5142.     /// @}
  5143.  
  5144.  
  5145.     /*! @name Persistence
  5146.     @{ */
  5147.     /*! */
  5148.     /// @}
  5149.  
  5150.  };
  5151.  
  5152.  class  GuiCurveEditor : public GuiControl {
  5153.    public:
  5154.     virtual void sampleEditorApply() {}
  5155.     virtual void sampleEditorCancel() {}
  5156.     virtual void setField((S32 EnvDataBlockId, U32 field)) {}
  5157.     /*!
  5158.     Range of domain
  5159.    
  5160.      */
  5161.     Point2F domainRange;
  5162.     /*!
  5163.     Range of value.
  5164.    
  5165.      */
  5166.     Point2F valueRange;
  5167.     /*!
  5168.     x - domain step, y - value step
  5169.    
  5170.      */
  5171.     Point2F gridStep;
  5172.     /*!
  5173.     Size of handles in pixels.
  5174.    
  5175.      */
  5176.     int sampleSize;
  5177.     /*!
  5178.     Precision of output
  5179.    
  5180.      */
  5181.     Point2I precision;
  5182.     /*!
  5183.     Cycle edge sample
  5184.    
  5185.      */
  5186.     bool cycleSample;
  5187.     /*!
  5188.     Color for grid axis line.
  5189.    
  5190.      */
  5191.     ColorI gridCenterColor;
  5192.     /*!
  5193.     Color for grid line.
  5194.    
  5195.      */
  5196.     ColorI gridColor;
  5197.     /*!
  5198.     Color for samples.
  5199.    
  5200.      */
  5201.     ColorI sampleColor;
  5202.     /*!
  5203.     Color for active samples.
  5204.    
  5205.      */
  5206.     ColorI activeSampleColor;
  5207.     /*!
  5208.     Color for curve.
  5209.    
  5210.      */
  5211.     ColorI curveColor;
  5212.     /*!
  5213.     Color for current position handle.
  5214.    
  5215.      */
  5216.     ColorI positionHandleColor;
  5217.     /*!
  5218.    
  5219.    
  5220.      */
  5221.     string positionVariable;
  5222.  
  5223.     /*! @name Layout
  5224.     @{ */
  5225.     /*! */
  5226.     /// @}
  5227.  
  5228.  
  5229.     /*! @name Control
  5230.     @{ */
  5231.     /*! */
  5232.     /// @}
  5233.  
  5234.  
  5235.     /*! @name ToolTip
  5236.     @{ */
  5237.     /*! */
  5238.     /// @}
  5239.  
  5240.  
  5241.     /*! @name Editing
  5242.     @{ */
  5243.     /*! */
  5244.     /// @}
  5245.  
  5246.  
  5247.     /*! @name Localization
  5248.     @{ */
  5249.     /*! */
  5250.     /// @}
  5251.  
  5252.  
  5253.     /*! @name Ungrouped
  5254.     @{ */
  5255.     /*! */
  5256.     /// @}
  5257.  
  5258.  
  5259.     /*! @name Object
  5260.     @{ */
  5261.     /*! */
  5262.     /// @}
  5263.  
  5264.  
  5265.     /*! @name Editing
  5266.     @{ */
  5267.     /*! */
  5268.     /// @}
  5269.  
  5270.  
  5271.     /*! @name Persistence
  5272.     @{ */
  5273.     /*! */
  5274.     /// @}
  5275.  
  5276.  };
  5277.  
  5278.  class  GuiMapCtrl : public GuiControl {
  5279.    public:
  5280.     virtual void centerToPlayer() {}
  5281.     virtual void zoomIn() {}
  5282.     virtual void zoomOut() {}
  5283.  
  5284.     /*! @name Lighting
  5285.     @{ */
  5286.     /*! */
  5287.     /*!
  5288.      */
  5289.     float sunAzimuth;
  5290.     /*!
  5291.      */
  5292.     float sunElevation;
  5293.     /*!
  5294.    
  5295.    
  5296.      */
  5297.     ColorF sunColor;
  5298.     /*!
  5299.    
  5300.    
  5301.      */
  5302.     float sunBrightness;
  5303.     /*!
  5304.    
  5305.    
  5306.      */
  5307.     ColorF ambientColor;
  5308.     /*!
  5309.    
  5310.    
  5311.      */
  5312.     float ambientBrightness;
  5313.     /// @}
  5314.  
  5315.  
  5316.     /*! @name Limits
  5317.     @{ */
  5318.     /*! */
  5319.     /*!
  5320.    
  5321.    
  5322.      */
  5323.     float minZoom;
  5324.     /*!
  5325.    
  5326.    
  5327.      */
  5328.     float maxZoom;
  5329.     /*!
  5330.    
  5331.    
  5332.      */
  5333.     float minHorScroll;
  5334.     /*!
  5335.    
  5336.    
  5337.      */
  5338.     float maxHorScroll;
  5339.     /*!
  5340.    
  5341.    
  5342.      */
  5343.     float minVertScroll;
  5344.     /*!
  5345.    
  5346.    
  5347.      */
  5348.     float maxVertScroll;
  5349.     /*!
  5350.    
  5351.    
  5352.      */
  5353.     float maxPositionChange;
  5354.     /// @}
  5355.  
  5356.  
  5357.     /*! @name Paths
  5358.     @{ */
  5359.     /*! */
  5360.     /*!
  5361.    
  5362.    
  5363.      */
  5364.     filename terrainPath;
  5365.     /// @}
  5366.  
  5367.  
  5368.     /*! @name PlayerIcon
  5369.     @{ */
  5370.     /*! */
  5371.     /*!
  5372.    
  5373.    
  5374.      */
  5375.     filename playerIcon;
  5376.     /*!
  5377.    
  5378.    
  5379.      */
  5380.     Point2I playerIconSize;
  5381.     /// @}
  5382.  
  5383.  
  5384.     /*! @name Misc
  5385.     @{ */
  5386.     /*! */
  5387.     /*!
  5388.    
  5389.    
  5390.      */
  5391.     float terrainHeightScale;
  5392.     /*!
  5393.    
  5394.    
  5395.      */
  5396.     float terrainZBase;
  5397.     /*!
  5398.    
  5399.    
  5400.      */
  5401.     int terrainSize;
  5402.     /*!
  5403.    
  5404.    
  5405.      */
  5406.     float unloadZoneTickRate;
  5407.     /*!
  5408.    
  5409.    
  5410.      */
  5411.     ColorF waterColor;
  5412.     /*!
  5413.    
  5414.    
  5415.      */
  5416.     float waterHeight;
  5417.     /*!
  5418.    
  5419.    
  5420.      */
  5421.     ColorF overlayColor;
  5422.     /// @}
  5423.  
  5424.  
  5425.     /*! @name LastDetails
  5426.     @{ */
  5427.     /*! */
  5428.     /*!
  5429.    
  5430.    
  5431.      */
  5432.     int maxZoneCount;
  5433.     /*!
  5434.    
  5435.    
  5436.      */
  5437.     filename lastDetailFile;
  5438.     /*!
  5439.    
  5440.    
  5441.      */
  5442.     Point2I lastDetailSize;
  5443.     /// @}
  5444.  
  5445.  
  5446.     /*! @name Gradient
  5447.     @{ */
  5448.     /*! */
  5449.     /*!
  5450.    
  5451.    
  5452.      */
  5453.     bool useGradientTex;
  5454.     /*!
  5455.    
  5456.    
  5457.      */
  5458.     filename gradientTexPath;
  5459.     /*!
  5460.    
  5461.    
  5462.      */
  5463.     float minGradientHeight;
  5464.     /*!
  5465.    
  5466.    
  5467.      */
  5468.     float maxGradientHeight;
  5469.     /// @}
  5470.  
  5471.  
  5472.     /*! @name Layout
  5473.     @{ */
  5474.     /*! */
  5475.     /// @}
  5476.  
  5477.  
  5478.     /*! @name Control
  5479.     @{ */
  5480.     /*! */
  5481.     /// @}
  5482.  
  5483.  
  5484.     /*! @name ToolTip
  5485.     @{ */
  5486.     /*! */
  5487.     /// @}
  5488.  
  5489.  
  5490.     /*! @name Editing
  5491.     @{ */
  5492.     /*! */
  5493.     /// @}
  5494.  
  5495.  
  5496.     /*! @name Localization
  5497.     @{ */
  5498.     /*! */
  5499.     /// @}
  5500.  
  5501.  
  5502.     /*! @name Ungrouped
  5503.     @{ */
  5504.     /*! */
  5505.     /// @}
  5506.  
  5507.  
  5508.     /*! @name Object
  5509.     @{ */
  5510.     /*! */
  5511.     /// @}
  5512.  
  5513.  
  5514.     /*! @name Editing
  5515.     @{ */
  5516.     /*! */
  5517.     /// @}
  5518.  
  5519.  
  5520.     /*! @name Persistence
  5521.     @{ */
  5522.     /*! */
  5523.     /// @}
  5524.  
  5525.  };
  5526.  
  5527.  class  ZoneGroup : public SimGroup {
  5528.    public:
  5529.     virtual int getZoneId() {}
  5530.  
  5531.     /*! @name Ungrouped
  5532.     @{ */
  5533.     /*! */
  5534.     /// @}
  5535.  
  5536.  
  5537.     /*! @name Object
  5538.     @{ */
  5539.     /*! */
  5540.     /// @}
  5541.  
  5542.  
  5543.     /*! @name Editing
  5544.     @{ */
  5545.     /*! */
  5546.     /// @}
  5547.  
  5548.  
  5549.     /*! @name Persistence
  5550.     @{ */
  5551.     /*! */
  5552.     /// @}
  5553.  
  5554.  
  5555.     /*! @name Geo
  5556.     @{ */
  5557.     /*! */
  5558.     /*!
  5559.    
  5560.    
  5561.      */
  5562.     int zoneID;
  5563.     /// @}
  5564.  
  5565.  };
  5566.  
  5567.  /*!
  5568.  @ingroup gameObjects
  5569.   */
  5570.  class  Player : public ShapeBase {
  5571.    public:
  5572.     virtual Script onUnmount(( string this, string obj )) {}
  5573.     virtual Script onHitOccured(( string this, string direction )) {}
  5574.     virtual Script playDeathAnimation(( string this )) {}
  5575.     virtual Script playPain(( string this )) {}
  5576.     virtual Script playDeathCry(( string this )) {}
  5577.     virtual int getGuildID(()) {}
  5578.     virtual void finishDismount(()) {}
  5579.     virtual void startDismount(()) {}
  5580.     virtual void forceDismount(()) {}
  5581.     /*! @brief Get the name of the player's current state.
  5582.  
  5583. The state is one of the following:
  5584.  
  5585. <ul><li>Dead - The Player is dead.</li><li>Mounted - The Player is mounted to an object such as a vehicle.</li><li>Move - The Player is free to move.  The usual state.</li><li>Recover - The Player is recovering from a fall.  See PlayerData::recoverDelay.</li></ul>
  5586. @return The current state; one of: "Dead", "Mounted", "Move", "Recover"
  5587.  */
  5588.     virtual string getState(()) {}
  5589.     /*! @brief Set the sequence that controls the player's arms (dynamically adjusted to match look direction).
  5590.  
  5591. @param name Name of the sequence to play on the player's arms.
  5592. @return true if successful, false if failed.
  5593. @note By default the 'look' sequence is used, if available.
  5594.  */
  5595.     virtual bool setArmThread(( string name )) {}
  5596.     /*! @brief Set the main action sequence to play for this player.
  5597.  
  5598. @param name Name of the action sequence to set
  5599. @param hold Set to false to get a callback on the datablock when the sequence ends (PlayerData::animationDone()).  When set to true no callback is made.
  5600. @param fsp True if first person and none of the spine nodes in the shape should animate.  False will allow the shape's spine nodes to animate.
  5601. @return True if succesful, false if failed
  5602. @note The spine nodes for the Player's shape are named as follows:
  5603.  
  5604. <ul><li>Bip01 Pelvis</li><li>Bip01 Spine</li><li>Bip01 Spine1</li><li>Bip01 Spine2</li><li>Bip01 Neck</li><li>Bip01 Head</li></ul>
  5605.  
  5606. You cannot use setActionThread() to have the Player play one of the motion determined action animation sequences.  These sequences are chosen based on how the Player moves and the Player's current pose.  The names of these sequences are:
  5607.  
  5608. <ul><li>root</li><li>run</li><li>side</li><li>side_right</li><li>swim_root</li><li>swim_forward</li><li>swim_backward</li><li>swim_left</li><li>swim_right</li><li>fall</li><li>jump</li><li>standjump</li><li>land</li><li>jet</li></ul>
  5609.  
  5610. If the player moves in any direction then the animation sequence set using this method will be cancelled and the chosen mation-based sequence will take over.  This makes great for times when the Player cannot move, such as when mounted, or when it doesn't matter if the action sequence changes, such as waving and saluting.
  5611. @tsexample
  5612. // Place the player in a sitting position after being mounted
  5613. %player.setActionThread( "sitting", true, true );
  5614. @endtsexample
  5615.  */
  5616.     virtual bool setActionThread(( string name, bool hold=false, bool fsp=true )) {}
  5617.     /*! @brief Set the object to be controlled by this player
  5618.  
  5619. It is possible to have the moves sent to the Player object from the GameConnection to be passed along to another object.  This happens, for example when a player is mounted to a vehicle.  The move commands pass through the Player and on to the vehicle (while the player remains stationary within the vehicle).  With setControlObject() you can have the Player pass along its moves to any object.  One possible use is for a player to move a remote controlled vehicle.  In this case the player does not mount the vehicle directly, but still wants to be able to control it.
  5620. @param obj Object to control with this player
  5621. @return True if the object is valid, false if not
  5622. @see getControlObject()
  5623. @see clearControlObject()
  5624. @see GameConnection::setControlObject() */
  5625.     virtual bool setControlObject(( ShapeBase obj )) {}
  5626.     /*! @brief Get the current object we are controlling.
  5627.  
  5628. @return ID of the ShapeBase object we control, or 0 if not controlling an object.
  5629. @see setControlObject()
  5630. @see clearControlObject() */
  5631.     virtual int getControlObject(()) {}
  5632.     /*! @brief Clears the player's current control object.
  5633.  
  5634. Returns control to the player. This internally calls Player::setControlObject(0).
  5635. @tsexample
  5636. %player.clearControlObject();
  5637. echo(%player.getControlObject()); //<-- Returns 0, player assumes control
  5638. %player.setControlObject(%vehicle);
  5639. echo(%player.getControlObject()); //<-- Returns %vehicle, player controls the vehicle now.
  5640. @endtsexample
  5641. @note If the player does not have a control object, the player will receive all moves from its GameConnection.  If you're looking to remove control from the player itself (i.e. stop sending moves to the player) use GameConnection::setControlObject() to transfer control to another object, such as a camera.
  5642. @see setControlObject()
  5643. @see getControlObject()
  5644. @see GameConnection::setControlObject()
  5645.  */
  5646.     virtual void clearControlObject(()) {}
  5647.     /*! @brief Check if it is safe to dismount at this position.
  5648.  
  5649. Internally this method casts a ray from oldPos to pos to determine if it hits the terrain, an interior object, a water object, another player, a static shape, a vehicle (exluding the one currently mounted), or physical zone.  If this ray is in the clear, then the player's bounding box is also checked for a collision at the pos position.  If this displaced bounding box is also in the clear, then checkDismountPoint() returns true.
  5650. @param oldPos The player's current position
  5651. @param pos The dismount position to check
  5652. @return True if the dismount position is clear, false if not
  5653. @note The player must be already mounted for this method to not assert.
  5654.  */
  5655.     virtual bool checkDismountPoint(( Point3F oldPos, Point3F pos )) {}
  5656.     /*! isAnimationLocked() */
  5657.     virtual bool isAnimationLocked() {}
  5658.     /*! setLookAnimationOverride(flag) */
  5659.     virtual void setLookAnimationOverride() {}
  5660.     /*! copyHeadRotation(other_player) */
  5661.     virtual void copyHeadRotation() {}
  5662.     /*! setMovementSpeedBias(F32 bias) */
  5663.     virtual void setMovementSpeedBias() {}
  5664.     virtual void dumpCharacterDataStr(()) {}
  5665.        /*!  */
  5666.        void onHitOccured( VectorF direction );
  5667.  
  5668.  
  5669.     /*! @name Game
  5670.     @{ */
  5671.     /*! */
  5672.     /// @}
  5673.  
  5674.  
  5675.     /*! @name Transform
  5676.     @{ */
  5677.     /*! */
  5678.     /// @}
  5679.  
  5680.  
  5681.     /*! @name Editing
  5682.     @{ */
  5683.     /*! */
  5684.     /// @}
  5685.  
  5686.  
  5687.     /*! @name Mounting
  5688.     @{ */
  5689.     /*! */
  5690.     /// @}
  5691.  
  5692.  
  5693.     /*! @name Ungrouped
  5694.     @{ */
  5695.     /*! */
  5696.     /// @}
  5697.  
  5698.  
  5699.     /*! @name Object
  5700.     @{ */
  5701.     /*! */
  5702.     /// @}
  5703.  
  5704.  
  5705.     /*! @name Editing
  5706.     @{ */
  5707.     /*! */
  5708.     /// @}
  5709.  
  5710.  
  5711.     /*! @name Persistence
  5712.     @{ */
  5713.     /*! */
  5714.     /// @}
  5715.  
  5716.  };
  5717.  
  5718.  /*!
  5719.  @brief AI_Animal controls the behavior of all animals in the game.
  5720.  
  5721.  The AI_Animal provides an  object that may be controlled from script.  The AI_Animal class does not have a datablock of its own.  It makes use of the PlayerData datablock to define how it looks, etc.  As the AI_Animal is an extension of the Player class it can mount objects and fire weapons, or mount vehicles and drive them.
  5722.  
  5723.  @see AI_Animal for a list of all inherited functions, variables, and base description
  5724.  @ingroup AI
  5725.  @ingroup gameObjects
  5726.   */
  5727.  class  AI_Animal : public Player {
  5728.    public:
  5729.     /*! @brief Tells the AI to move to the location provided
  5730.  
  5731. @param goal Coordinates in world space representing location to move to.
  5732. @note Upon reaching a move destination, the bot will clear its move destination and calls to getMoveDestination will return "0 0 0".@see getMoveDestination()
  5733.  */
  5734.     virtual void addMoveDestination(( Point3F goal )) {}
  5735.     /*! @brief Tells the AI to move to the location provided
  5736.  
  5737. @param goal Coordinates in world space representing location to move to.
  5738. @note Upon reaching a move destination, the bot will clear its move destination and calls to getMoveDestination will return "0 0 0".@see getMoveDestination()
  5739.  */
  5740.     virtual void moveTo(( Point3F goal )) {}
  5741.     /*! @brief Tells the AI to follow the default Player
  5742.  
  5743.  */
  5744.     virtual void followPlayer(()) {}
  5745.     /*! @brief Tells the AI to stop following anybody
  5746.  
  5747.  */
  5748.     virtual void unfollow(()) {}
  5749.     /*! @brief Tells the AI to follow the default Player
  5750.  
  5751.  */
  5752.     virtual void huntPlayer(()) {}
  5753.     /*! @brief Tells the AI to follow the default Player
  5754.  
  5755.  */
  5756.     virtual void Intimidate(()) {}
  5757.     /*! @brief Tells the AI to print its status
  5758.  
  5759.  */
  5760.     virtual void printStatus(()) {}
  5761.     /*! @brief Set_state
  5762.  
  5763.  */
  5764.     virtual void Set_state(( int state_number )) {}
  5765.  
  5766.     /*! @name Game
  5767.     @{ */
  5768.     /*! */
  5769.     /// @}
  5770.  
  5771.  
  5772.     /*! @name Transform
  5773.     @{ */
  5774.     /*! */
  5775.     /// @}
  5776.  
  5777.  
  5778.     /*! @name Editing
  5779.     @{ */
  5780.     /*! */
  5781.     /// @}
  5782.  
  5783.  
  5784.     /*! @name Mounting
  5785.     @{ */
  5786.     /*! */
  5787.     /// @}
  5788.  
  5789.  
  5790.     /*! @name Ungrouped
  5791.     @{ */
  5792.     /*! */
  5793.     /// @}
  5794.  
  5795.  
  5796.     /*! @name Object
  5797.     @{ */
  5798.     /*! */
  5799.     /// @}
  5800.  
  5801.  
  5802.     /*! @name Editing
  5803.     @{ */
  5804.     /*! */
  5805.     /// @}
  5806.  
  5807.  
  5808.     /*! @name Persistence
  5809.     @{ */
  5810.     /*! */
  5811.     /// @}
  5812.  
  5813.  };
  5814.  
  5815.  /*!
  5816.  @brief A Player object not controlled by conventional input, but by an AI engine.
  5817.  
  5818.  The AIPlayer provides a Player object that may be controlled from script.  You control where the player moves and how fast.  You may also set where the AIPlayer is aiming at -- either a location or another game object.
  5819.  
  5820.  The AIPlayer class does not have a datablock of its own.  It makes use of the PlayerData datablock to define how it looks, etc.  As the AIPlayer is an extension of the Player class it can mount objects and fire weapons, or mount vehicles and drive them.
  5821.  
  5822.  While the PlayerData datablock is used, there are a number of additional callbacks that are implemented by AIPlayer on the datablock.  These are listed here:
  5823.  
  5824.  void onReachDestination(AIPlayer obj)
  5825.  Called when the player has reached its set destination using the setMoveDestination() method.  The actual point at which this callback is called is when the AIPlayer is within the mMoveTolerance of the defined destination.
  5826.  
  5827.  void onMoveStuck(AIPlayer obj)
  5828.  While in motion, if an AIPlayer has moved less than moveStuckTolerance within a single tick, this callback is called.  From here you could choose an alternate destination to get the AIPlayer moving again.
  5829.  
  5830.  void onTargetEnterLOS(AIPlayer obj)
  5831.  When an object is being aimed at (following a call to setAimObject()) and the targeted object enters the AIPlayer's line of sight, this callback is called.  The LOS test is a ray from the AIPlayer's eye position to the center of the target's bounding box.  The LOS ray test only checks against interiors, statis shapes, and terrain.
  5832.  
  5833.  void onTargetExitLOS(AIPlayer obj)
  5834.  When an object is being aimed at (following a call to setAimObject()) and the targeted object leaves the AIPlayer's line of sight, this callback is called.  The LOS test is a ray from the AIPlayer's eye position to the center of the target's bounding box.  The LOS ray test only checks against interiors, statis shapes, and terrain.
  5835.  
  5836.  @tsexample
  5837.  // Create the demo player object
  5838.  %player = new AiPlayer()
  5839.  {
  5840.     dataBlock = DemoPlayer;
  5841.     path = "";
  5842.  };
  5843.  @endtsexample
  5844.  
  5845.  @see Player for a list of all inherited functions, variables, and base description
  5846.  @ingroup AI
  5847.  @ingroup gameObjects
  5848.   */
  5849.  class  AIPlayer : public Player {
  5850.    public:
  5851.     /*! @brief Tells the AIPlayer to stop moving.
  5852.  
  5853.  */
  5854.     virtual void stop(()) {}
  5855.     /*! @brief Use this to stop aiming at an object or a point.
  5856.  
  5857. @see setAimLocation()
  5858. @see setAimObject()
  5859.  */
  5860.     virtual void clearAim(()) {}
  5861.     /*! @brief Sets the move speed for an AI object.
  5862.  
  5863. @param speed A speed multiplier between 0.0 and 1.0.  This is multiplied by the AIPlayer's base movement rates (as defined in its PlayerData datablock)
  5864.  
  5865. @see getMoveDestination()
  5866.  */
  5867.     virtual void setMoveSpeed(( float speed )) {}
  5868.     /*! @brief Tells the AI to move to the location provided
  5869.  
  5870. @param goal Coordinates in world space representing location to move to.
  5871. @param slowDown A boolean value. If set to true, the bot will slow down when it gets within 5-meters of its move destination. If false, the bot will stop abruptly when it reaches the move destination. By default, this is true.
  5872.  
  5873. @note Upon reaching a move destination, the bot will clear its move destination and calls to getMoveDestination will return "0 0 0".@see getMoveDestination()
  5874.  */
  5875.     virtual void setMoveDestination(( Point3F goal, bool slowDown=true )) {}
  5876.     /*! @brief Get the AIPlayer's current destination.
  5877.  
  5878. @return Returns a point containing the "x y z" position of the AIPlayer's current move destination. If no move destination has yet been set, this returns "0 0 0".@see setMoveDestination()
  5879.  */
  5880.     virtual string getMoveDestination(()) {}
  5881.     /*! @brief Tells the AIPlayer to aim at the location provided.
  5882.  
  5883. @param target An "x y z" position in the game world to target.
  5884.  
  5885. @see getAimLocation()
  5886.  */
  5887.     virtual void setAimLocation(( Point3F target )) {}
  5888.     /*! @brief Returns the point the AIPlayer is aiming at.
  5889.  
  5890. This will reflect the position set by setAimLocation(), or the position of the object that the bot is now aiming at.  If the bot is not aiming at anything, this value will change to whatever point the bot's current line-of-sight intercepts.@return World space coordinates of the object AI is aiming at. Formatted as "X Y Z".
  5891.  
  5892. @see setAimLocation()
  5893. @see setAimObject()
  5894.  */
  5895.     virtual string getAimLocation(()) {}
  5896.     /*! Sets the bot's target object. Optionally set an offset from target location.@hide */
  5897.     virtual void setAimObject(( GameBase obj, [Point3F offset] )) {}
  5898.     /*! @brief Gets the object the AIPlayer is targeting.
  5899.  
  5900. @return Returns -1 if no object is being aimed at, or the SimObjectID of the object the AIPlayer is aiming at.
  5901.  
  5902. @see setAimObject()
  5903.  */
  5904.     virtual int getAimObject(()) {}
  5905.  
  5906.     /*! @name AI
  5907.     @{ */
  5908.     /*! */
  5909.     /*!
  5910.     @brief Distance from destination before stopping.
  5911.  
  5912. When the AIPlayer is moving to a given destination it will move to within this distance of the destination and then stop.  By providing this tolerance it helps the AIPlayer from never reaching its destination due to minor obstacles, rounding errors on its position calculation, etc.  By default it is set to 0.25.
  5913.  
  5914.    
  5915.      */
  5916.     float mMoveTolerance;
  5917.     /*!
  5918.     @brief Distance tolerance on stuck check.
  5919.  
  5920. When the AIPlayer is moving to a given destination, if it ever moves less than this tolerance during a single tick, the AIPlayer is considered stuck.  At this point the onMoveStuck() callback is called on the datablock.
  5921.  
  5922.    
  5923.      */
  5924.     float moveStuckTolerance;
  5925.     /*!
  5926.     @brief The number of ticks to wait before testing if the AIPlayer is stuck.
  5927.  
  5928. When the AIPlayer is asked to move, this property is the number of ticks to wait before the AIPlayer starts to check if it is stuck.  This delay allows the AIPlayer to accelerate to full speed without its initial slow start being considered as stuck.
  5929. @note Set to zero to have the stuck test start immediately.
  5930.  
  5931.    
  5932.      */
  5933.     int moveStuckTestDelay;
  5934.     /// @}
  5935.  
  5936.  
  5937.     /*! @name Game
  5938.     @{ */
  5939.     /*! */
  5940.     /// @}
  5941.  
  5942.  
  5943.     /*! @name Transform
  5944.     @{ */
  5945.     /*! */
  5946.     /// @}
  5947.  
  5948.  
  5949.     /*! @name Editing
  5950.     @{ */
  5951.     /*! */
  5952.     /// @}
  5953.  
  5954.  
  5955.     /*! @name Mounting
  5956.     @{ */
  5957.     /*! */
  5958.     /// @}
  5959.  
  5960.  
  5961.     /*! @name Ungrouped
  5962.     @{ */
  5963.     /*! */
  5964.     /// @}
  5965.  
  5966.  
  5967.     /*! @name Object
  5968.     @{ */
  5969.     /*! */
  5970.     /// @}
  5971.  
  5972.  
  5973.     /*! @name Editing
  5974.     @{ */
  5975.     /*! */
  5976.     /// @}
  5977.  
  5978.  
  5979.     /*! @name Persistence
  5980.     @{ */
  5981.     /*! */
  5982.     /// @}
  5983.  
  5984.  };
  5985.  
  5986.  /*!
  5987.  @brief Represents a position, direction and field of view to render a scene from.
  5988.  
  5989.  A camera is typically manipulated by a GameConnection.  When set as the connection's control object, the camera handles all movement actions ($mvForwardAction, $mvPitch, etc.) just like a Player.
  5990.  @tsexample
  5991.  // Set an already created camera as the GameConnection's control object
  5992.  %connection.setControlObject(%camera);
  5993.  @endtsexample
  5994.  
  5995.  <h3>Methods of Operation</h3>
  5996.  
  5997.  The camera has two general methods of operation.  The first is the standard mode where the camera starts and stops its motion and rotation instantly.  This is the default operation of the camera and is used by most games.  It may be specifically set with Camera::setFlyMode() for 6 DoF motion.  It is also typically the method used with Camera::setOrbitMode() or one of its helper methods to orbit about a specific object (such as the Player's dead body) or a specific point.
  5998.  
  5999.  The second method goes under the name of Newton as it follows Newton's 2nd law of motion: F=ma.  This provides the camera with an ease-in and ease-out feel for both movement and rotation.  To activate this method for movement, either use Camera::setNewtonFlyMode() or set the Camera::newtonMode field to true.  To activate this method for rotation, set the Camera::newtonRotation to true.  This method of operation is not typically used in games, and was developed to allow for a smooth fly through of a game level while recording a demo video.  But with the right force and drag settings, it may give a more organic feel to the camera to games that use an overhead view, such as a RTS.
  6000.  
  6001.  There is a third, minor method of operation but it is not generally used for games.  This is when the camera is used with Torque's World Editor in Edit Orbit Mode.  When set, this allows the camera to rotate about a specific point in the world, and move towards and away from this point.  See Camera::setEditOrbitMode() and Camera::setEditOrbitPoint().  While in this mode, Camera::autoFitRadius() may also be used.
  6002.  
  6003.  @tsexample
  6004.  // Create a camera in the level and set its position to a given spawn point.
  6005.  // Note: The camera starts in the standard fly mode.
  6006.  %cam = new Camera() {
  6007.     datablock = "Observer";
  6008.  };
  6009.  MissionCleanup.add( %cam );
  6010.  %cam.setTransform( %spawnPoint.getTransform() );
  6011.  @endtsexample
  6012.  
  6013.  @tsexample
  6014.  // Create a camera at the given spawn point for the specified
  6015.  // GameConnection i.e. the client.  Uses the standard
  6016.  // Sim::spawnObject() function to create the camera using the
  6017.  // defined default settings.
  6018.  // Note: The camera starts in the standard fly mode.
  6019.  function GameConnection::spawnCamera(%this, %spawnPoint)
  6020.  {
  6021.     // Set the control object to the default camera
  6022.     if (!isObject(%this.camera))
  6023.     {
  6024.        if (isDefined("$Game::DefaultCameraClass"))
  6025.           %this.camera = spawnObject($Game::DefaultCameraClass, $Game::DefaultCameraDataBlock);
  6026.     }
  6027.  
  6028.     // If we have a camera then set up some properties
  6029.     if (isObject(%this.camera))
  6030.     {
  6031.        // Make sure we're cleaned up when the mission ends
  6032.        MissionCleanup.add( %this.camera );
  6033.  
  6034.        // Make sure the camera is always in scope for the connection
  6035.        %this.camera.scopeToClient(%this);
  6036.  
  6037.        // Send all user input from the connection to the camera
  6038.        %this.setControlObject(%this.camera);
  6039.  
  6040.        if (isDefined("%spawnPoint"))
  6041.        {
  6042.           // Attempt to treat %spawnPoint as an object, such as a
  6043.           // SpawnSphere class.
  6044.           if (getWordCount(%spawnPoint) == 1 && isObject(%spawnPoint))
  6045.           {
  6046.              %this.camera.setTransform(%spawnPoint.getTransform());
  6047.           }
  6048.           else
  6049.           {
  6050.              // Treat %spawnPoint as an AngleAxis transform
  6051.              %this.camera.setTransform(%spawnPoint);
  6052.           }
  6053.        }
  6054.     }
  6055.  }
  6056.  @endtsexample
  6057.  
  6058.  <h3>Motion Modes</h3>
  6059.  
  6060.  Beyond the different operation methods, the Camera may be set to one of a number of motion modes.  These motion modes determine how the camera will respond to input and may be used to constrain how the Camera moves.  The CameraMotionMode enumeration defines the possible set of modes and the Camera's current may be obtained by using getMode().
  6061.  
  6062.  Some of the motion modes may be set using specific script methods.  These often provide additional parameters to set up the mode in one go.  Otherwise, it is always possible to set a Camera's motion mode using the controlMode property.  Just pass in the name of the mode enum.  The following table lists the motion modes, how to set them up, and what they offer:
  6063.  
  6064.  <table border='1' cellpadding='1'><tr><th>Mode</th><th>Set From Script</th><th>Input Move</th><th>Input Rotate</th><th>Can Use Newton Mode?</th></tr><tr><td>Stationary</td><td>controlMode property</td><td>No</td><td>No</td><td>No</td></tr><tr><td>FreeRotate</td><td>controlMode property</td><td>No</td><td>Yes</td><td>Rotate Only</td></tr><tr><td>Fly</td><td>setFlyMode()</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>OrbitObject</td><td>setOrbitMode()</td><td>Orbits object</td><td>Points to object</td><td>Move only</td></tr><tr><td>OrbitPoint</td><td>setOrbitPoint()</td><td>Orbits point</td><td>Points to location</td><td>Move only</td></tr><tr><td>TrackObject</td><td>setTrackObject()</td><td>No</td><td>Points to object</td><td>Yes</td></tr><tr><td>Overhead</td><td>controlMode property</td><td>Yes</td><td>No</td><td>Yes</td></tr><tr><td>EditOrbit (object selected)</td><td>setEditOrbitMode()</td><td>Orbits object</td><td>Points to object</td><td>Move only</td></tr><tr><td>EditOrbit (no object)</td><td>setEditOrbitMode()</td><td>Yes</td><td>Yes</td><td>Yes</td></tr></table>
  6065.  
  6066.  <h3>%Trigger Input</h3>
  6067.  
  6068.  Passing a move trigger ($mvTriggerCount0, $mvTriggerCount1, etc.) on to a Camera performs different actions depending on which mode the camera is in.  While in Fly, Overhead or EditOrbit mode, either trigger0 or trigger1 will cause a camera to move twice its normal movement speed.  You can see this in action within the World Editor, where holding down the left mouse button while in mouse look mode (right mouse button is also down) causes the Camera to move faster.
  6069.  
  6070.  Passing along trigger2 will put the camera into strafe mode.  While in this mode a Fly, FreeRotate or Overhead Camera will not rotate from the move input.  Instead the yaw motion will be applied to the Camera's x motion, and the pitch motion will be applied to the Camera's z motion.  You can see this in action within the World Editor where holding down the middle mouse button allows the user to move the camera up, down and side-to-side.
  6071.  
  6072.  While the camera is operating in Newton Mode, trigger0 and trigger1 behave slightly differently.  Here trigger0 activates a multiplier to the applied acceleration force as defined by speedMultiplier.  This has the affect of making the camera move up to speed faster.  trigger1 has the opposite affect by acting as a brake.  When trigger1 is active a multiplier is added to the Camera's drag as defined by brakeMultiplier.
  6073.  
  6074.  @see CameraData
  6075.  @see CameraMotionMode
  6076.  @see Camera::movementSpeed
  6077.  
  6078.  @ingroup BaseCamera
  6079.   */
  6080.  class  Camera : public ShapeBase {
  6081.    public:
  6082.     /*! Returns the current camera control mode.
  6083.  
  6084. @see CameraMotionMode */
  6085.     virtual string getMode(()) {}
  6086.     /*! Get the camera's position in the world.
  6087.  
  6088. @returns The position in the form of "x y z". */
  6089.     virtual string getPosition(()) {}
  6090.     /*! Get the camera's Euler rotation in radians.
  6091.  
  6092. @returns The rotation in radians in the form of "x y z". */
  6093.     virtual string getRotation(()) {}
  6094.     /*! Set the camera's Euler rotation in radians.
  6095.  
  6096. @param rot The rotation in radians in the form of "x y z".@note Rotation around the Y axis is ignored */
  6097.     virtual void setRotation(( Point3F rot )) {}
  6098.     /*! Get the camera's offset from its orbit or tracking point.
  6099.  
  6100. The offset is added to the camera's position when set to CameraMode::OrbitObject.
  6101. @returns The offset in the form of "x y z". */
  6102.     virtual string getOffset(()) {}
  6103.     /*! Set the camera's offset.
  6104.  
  6105. The offset is added to the camera's position when set to CameraMode::OrbitObject.
  6106. @param offset The distance to offset the camera by in the form of "x y z". */
  6107.     virtual void setOffset(( Point3F offset )) {}
  6108.     /*! Set the camera to orbit around the given object, or if none is given, around the given point.
  6109.  
  6110. @param orbitObject The object to orbit around.  If no object is given (0 or blank string is passed in) use the orbitPoint instead
  6111. @param orbitPoint The point to orbit around when no object is given.  In the form of "x y z ax ay az aa" such as returned by SceneObject::getTransform().
  6112. @param minDistance The minimum distance allowed to the orbit object or point.
  6113. @param maxDistance The maximum distance allowed from the orbit object or point.
  6114. @param initDistance The initial distance from the orbit object or point.
  6115. @param ownClientObj [optional] Are we orbiting an object that is owned by us?  Default is false.
  6116. @param offset [optional] An offset added to the camera's position.  Default is no offset.
  6117. @param locked [optional] Indicates the camera does not receive input from the player.  Default is false.
  6118. @see Camera::setOrbitObject()
  6119. @see Camera::setOrbitPoint()
  6120.  */
  6121.     virtual void setOrbitMode(( GameBase orbitObject, TransformF orbitPoint, float minDistance, float maxDistance, float initDistance, bool ownClientObj=false, Point3F offset=Point3F(0.0f, 0.0f, 0.0f), bool locked=false )) {}
  6122.     /*! Set the camera to orbit around a given object.
  6123.  
  6124. @param orbitObject The object to orbit around.
  6125. @param rotation The initial camera rotation about the object in radians in the form of "x y z".
  6126. @param minDistance The minimum distance allowed to the orbit object or point.
  6127. @param maxDistance The maximum distance allowed from the orbit object or point.
  6128. @param initDistance The initial distance from the orbit object or point.
  6129. @param ownClientObject [optional] Are we orbiting an object that is owned by us?  Default is false.
  6130. @param offset [optional] An offset added to the camera's position.  Default is no offset.
  6131. @param locked [optional] Indicates the camera does not receive input from the player.  Default is false.
  6132. @returns false if the given object could not be found.
  6133. @see Camera::setOrbitMode()
  6134.  */
  6135.     virtual bool setOrbitObject(( GameBase orbitObject, VectorF rotation, float minDistance, float maxDistance, float initDistance, bool ownClientObject=false, Point3F offset=Point3F(0.0f, 0.0f, 0.0f), bool locked=false )) {}
  6136.     /*! Set the camera to orbit around a given point.
  6137.  
  6138. @param orbitPoint The point to orbit around.  In the form of "x y z ax ay az aa" such as returned by SceneObject::getTransform().
  6139. @param minDistance The minimum distance allowed to the orbit object or point.
  6140. @param maxDistance The maximum distance allowed from the orbit object or point.
  6141. @param initDistance The initial distance from the orbit object or point.
  6142. @param offset [optional] An offset added to the camera's position.  Default is no offset.
  6143. @param locked [optional] Indicates the camera does not receive input from the player.  Default is false.
  6144. @see Camera::setOrbitMode()
  6145.  */
  6146.     virtual void setOrbitPoint(( TransformF orbitPoint, float minDistance, float maxDistance, float initDistance, Point3F offset=Point3F(0.0f, 0.0f, 0.0f), bool locked=false )) {}
  6147.     /*! Set the camera to track a given object.
  6148.  
  6149. @param trackObject The object to track.
  6150. @param offset [optional] An offset added to the camera's position.  Default is no offset.
  6151. @returns false if the given object could not be found.
  6152.  */
  6153.     virtual bool setTrackObject(( GameBase trackObject, Point3F offset=Point3F(0.0f, 0.0f, 0.0f) )) {}
  6154.     /*! Set the camera to fly freely.
  6155.  
  6156. Allows the camera to have 6 degrees of freedom.  Provides for instantaneous motion and rotation unless one of the Newton fields has been set to true.  See Camera::newtonMode and Camera::newtonRotation.
  6157.  */
  6158.     virtual void setFlyMode(()) {}
  6159.     /*! Set the camera to fly freely, but with ease-in and ease-out.
  6160.  
  6161. This method allows for the same 6 degrees of freedom as Camera::setFlyMode() but activates the ease-in and ease-out on the camera's movement.  To also activate Newton mode for the camera's rotation, set Camera::newtonRotation to true. */
  6162.     virtual void setNewtonFlyMode(()) {}
  6163.     /*! Is this a Newton Fly mode camera with damped rotation?
  6164.  
  6165. @returns true if the camera uses a damped rotation.  i.e. Camera::newtonRotation is set to true.
  6166.  */
  6167.     virtual bool isRotationDamped(()) {}
  6168.     /*! Get the angular velocity for a Newton mode camera.
  6169.  
  6170. @returns The angular velocity in the form of "x y z".
  6171. @note Only returns useful results when Camera::newtonRotation is set to true. */
  6172.     virtual string getAngularVelocity(()) {}
  6173.     /*! Set the angular velocity for a Newton mode camera.
  6174.  
  6175. @param velocity The angular velocity infor form of "x y z".
  6176. @note Only takes affect when Camera::newtonRotation is set to true. */
  6177.     virtual void setAngularVelocity(( VectorF velocity )) {}
  6178.     /*! Set the angular force for a Newton mode camera.
  6179.  
  6180. @param force The angular force applied when attempting to rotate the camera.@note Only takes affect when Camera::newtonRotation is set to true. */
  6181.     virtual void setAngularForce(( float force )) {}
  6182.     /*! Set the angular drag for a Newton mode camera.
  6183.  
  6184. @param drag The angular drag applied while the camera is rotating.@note Only takes affect when Camera::newtonRotation is set to true. */
  6185.     virtual void setAngularDrag(( float drag )) {}
  6186.     /*! Set the mass for a Newton mode camera.
  6187.  
  6188. @param mass The mass used during ease-in and ease-out calculations.@note Only used when Camera is in Newton mode. */
  6189.     virtual void setMass(( float mass )) {}
  6190.     /*! Get the velocity for the camera.
  6191.  
  6192. @returns The camera's velocity in the form of "x y z".@note Only useful when the Camera is in Newton mode. */
  6193.     virtual string getVelocity(()) {}
  6194.     /*! Set the velocity for the camera.
  6195.  
  6196. @param velocity The camera's velocity in the form of "x y z".@note Only affects the Camera when in Newton mode. */
  6197.     virtual void setVelocity(( VectorF velocity )) {}
  6198.     /*! Set the drag for a Newton mode camera.
  6199.  
  6200. @param drag The drag applied to the camera while moving.@note Only used when Camera is in Newton mode. */
  6201.     virtual void setDrag(( float drag )) {}
  6202.     /*! Set the force applied to a Newton mode camera while moving.
  6203.  
  6204. @param force The force applied to the camera while attempting to move.@note Only used when Camera is in Newton mode. */
  6205.     virtual void setFlyForce(( float force )) {}
  6206.     /*! Set the Newton mode camera speed multiplier when trigger[sImageTrigger0] is active.
  6207.  
  6208. @param multiplier The speed multiplier to apply.@note Only used when Camera is in Newton mode. */
  6209.     virtual void setSpeedMultiplier(( float multiplier )) {}
  6210.     /*! Set the Newton mode camera brake multiplier when trigger[sImageTrigger1] is active.
  6211.  
  6212. @param multiplier The brake multiplier to apply.@note Only used when Camera is in Newton mode. */
  6213.     virtual void setBrakeMultiplier(( float multiplier )) {}
  6214.     /*! Point the camera at the specified position.  Does not work in Orbit or Track modes.
  6215.  
  6216. @param point The position to point the camera at. */
  6217.     virtual void lookAt(( Point3F point )) {}
  6218.  
  6219.     /*! @name Camera
  6220.     @{ */
  6221.     /*! */
  6222.     /*!
  6223.     The current camera control mode.
  6224.    
  6225.      */
  6226.     CameraMotionMode controlMode;
  6227.     /*!
  6228.     @brief Camera movement speed in units/s (typically m/s), with a base value of 40.
  6229.  
  6230. Used in the following camera modes:
  6231. - Edit Orbit Mode
  6232. - Fly Mode
  6233. - Overhead Mode
  6234. @ingroup BaseCamera
  6235.  
  6236.    
  6237.      */
  6238.     float movementSpeed;
  6239.     /// @}
  6240.  
  6241.  
  6242.     /*! @name Camera: Newton Mode
  6243.     @{ */
  6244.     /*! */
  6245.     /*!
  6246.     Apply smoothing (acceleration and damping) to camera movements.
  6247.    
  6248.      */
  6249.     bool newtonMode;
  6250.     /*!
  6251.     Apply smoothing (acceleration and damping) to camera rotations.
  6252.    
  6253.      */
  6254.     bool newtonRotation;
  6255.     /*!
  6256.     The camera's mass (Newton mode only).  Default value is 10.
  6257.    
  6258.      */
  6259.     float mass;
  6260.     /*!
  6261.     Drag on camera when moving (Newton mode only).  Default value is 2.
  6262.    
  6263.      */
  6264.     float drag;
  6265.     /*!
  6266.     Force applied on camera when asked to move (Newton mode only).  Default value is 500.
  6267.    
  6268.      */
  6269.     float force;
  6270.     /*!
  6271.     Drag on camera when rotating (Newton mode only).  Default value is 2.
  6272.    
  6273.      */
  6274.     float angularDrag;
  6275.     /*!
  6276.     Force applied on camera when asked to rotate (Newton mode only).  Default value is 100.
  6277.    
  6278.      */
  6279.     float angularForce;
  6280.     /*!
  6281.     Speed multiplier when triggering the accelerator (Newton mode only).  Default value is 2.
  6282.    
  6283.      */
  6284.     float SpeedMultiplier;
  6285.     /*!
  6286.     Speed multiplier when triggering the brake (Newton mode only).  Default value is 2.
  6287.    
  6288.      */
  6289.     float brakeMultiplier;
  6290.     /// @}
  6291.  
  6292.  
  6293.     /*! @name Game
  6294.     @{ */
  6295.     /*! */
  6296.     /// @}
  6297.  
  6298.  
  6299.     /*! @name Transform
  6300.     @{ */
  6301.     /*! */
  6302.     /// @}
  6303.  
  6304.  
  6305.     /*! @name Editing
  6306.     @{ */
  6307.     /*! */
  6308.     /// @}
  6309.  
  6310.  
  6311.     /*! @name Mounting
  6312.     @{ */
  6313.     /*! */
  6314.     /// @}
  6315.  
  6316.  
  6317.     /*! @name Ungrouped
  6318.     @{ */
  6319.     /*! */
  6320.     /// @}
  6321.  
  6322.  
  6323.     /*! @name Object
  6324.     @{ */
  6325.     /*! */
  6326.     /// @}
  6327.  
  6328.  
  6329.     /*! @name Editing
  6330.     @{ */
  6331.     /*! */
  6332.     /// @}
  6333.  
  6334.  
  6335.     /*! @name Persistence
  6336.     @{ */
  6337.     /*! */
  6338.     /// @}
  6339.  
  6340.  };
  6341.  
  6342.  /*!
  6343.  @brief Base debris class. Uses the DebrisData datablock for properties of individual debris objects.
  6344.  
  6345.  Debris is typically made up of a shape and up to two particle emitters.  In most cases Debris objects are not created directly.  They are usually produced automatically by other means, such as through the Explosion class.  When an explosion goes off, its ExplosionData datablock determines what Debris to emit.
  6346.  @tsexample
  6347.  datablock ExplosionData(GrenadeLauncherExplosion)
  6348.  {
  6349.     // Assiging debris data
  6350.     debris = GrenadeDebris;
  6351.  
  6352.     // Adjust how debris is ejected
  6353.     debrisThetaMin = 10;
  6354.     debrisThetaMax = 60;
  6355.     debrisNum = 4;
  6356.     debrisNumVariance = 2;
  6357.     debrisVelocity = 25;
  6358.     debrisVelocityVariance = 5;
  6359.  
  6360.     // Note: other ExplosionData properties are not listed for this example
  6361.  };
  6362.  @endtsexample
  6363.  
  6364.  @note Debris are client side only objects.
  6365.  @see DebrisData
  6366.  @see ExplosionData
  6367.  @see Explosion
  6368.  @ingroup FX
  6369.   */
  6370.  class  Debris : public GameBase {
  6371.    public:
  6372.     /*! @brief Manually set this piece of debris at the given position with the given velocity.
  6373.  
  6374. Usually you do not manually create Debris objects as they are generated through other means, such as an Explosion.  This method exists when you do manually create a Debris object and want to have it start moving.
  6375. @param inputPosition Position to place the debris.
  6376. @param inputVelocity Velocity to move the debris after it has been placed.
  6377. @return Always returns true.
  6378. @tsexample
  6379. // Define the position
  6380. %position = "1.0 1.0 1.0";
  6381.  
  6382. // Define the velocity
  6383. %velocity = "1.0 0.0 0.0";
  6384.  
  6385. // Inform the debris object of its new position and velocity
  6386. %debris.init(%position,%velocity);
  6387. @endtsexample
  6388.  */
  6389.     virtual bool init(( string inputPosition="1.0 1.0 1.0", string inputVelocity="1.0 0.0 0.0" )) {}
  6390.  
  6391.     /*! @name Debris
  6392.     @{ */
  6393.     /*! */
  6394.     /*!
  6395.     @brief Length of time for this debris object to exist. When expired, the object will be deleted.
  6396.  
  6397. The initial lifetime value comes from the DebrisData datablock.
  6398. @see DebrisData::lifetime
  6399. @see DebrisData::lifetimeVariance
  6400.  
  6401.    
  6402.      */
  6403.     float lifetime;
  6404.     /// @}
  6405.  
  6406.  
  6407.     /*! @name Game
  6408.     @{ */
  6409.     /*! */
  6410.     /// @}
  6411.  
  6412.  
  6413.     /*! @name Transform
  6414.     @{ */
  6415.     /*! */
  6416.     /// @}
  6417.  
  6418.  
  6419.     /*! @name Editing
  6420.     @{ */
  6421.     /*! */
  6422.     /// @}
  6423.  
  6424.  
  6425.     /*! @name Mounting
  6426.     @{ */
  6427.     /*! */
  6428.     /// @}
  6429.  
  6430.  
  6431.     /*! @name Ungrouped
  6432.     @{ */
  6433.     /*! */
  6434.     /// @}
  6435.  
  6436.  
  6437.     /*! @name Object
  6438.     @{ */
  6439.     /*! */
  6440.     /// @}
  6441.  
  6442.  
  6443.     /*! @name Editing
  6444.     @{ */
  6445.     /*! */
  6446.     /// @}
  6447.  
  6448.  
  6449.     /*! @name Persistence
  6450.     @{ */
  6451.     /*! */
  6452.     /// @}
  6453.  
  6454.  };
  6455.  
  6456.  /*!
  6457.  @brief GUI control which displays a 3D model.
  6458.  
  6459.  Model displayed in the control can have other objects mounted onto it, and the light settings can be adjusted.
  6460.  
  6461.  @tsexample
  6462.     new GuiObjectView(ObjectPreview)
  6463.     {
  6464.         shapeFile = "art/shapes/items/kit/healthkit.dts";
  6465.         mountedNode = "mount0";
  6466.         lightColor = "1 1 1 1";
  6467.         lightAmbient = "0.5 0.5 0.5 1";
  6468.         lightDirection = "0 0.707 -0.707";
  6469.         orbitDiststance = "2";
  6470.         minOrbitDiststance = "0.917688";
  6471.         maxOrbitDiststance = "5";
  6472.         cameraSpeed = "0.01";
  6473.         cameraZRot = "0";
  6474.         forceFOV = "0";
  6475.         reflectPriority = "0";
  6476.     };
  6477.  @endtsexample
  6478.  
  6479.  @see GuiControl
  6480.  
  6481.  @ingroup Gui3D
  6482.   */
  6483.  class  GuiObjectView : public GuiTSCtrl {
  6484.    public:
  6485.        /*! @brief Called whenever the mouse enters the control.
  6486.  
  6487. @tsexample
  6488. // The mouse has entered the control, causing the callback to occur
  6489. GuiObjectView::onMouseEnter(%this)
  6490.     {
  6491.         // Code to run when the mouse enters this control
  6492.     }
  6493. @endtsexample
  6494.  
  6495. @see GuiControl
  6496.  
  6497.  */
  6498.        void onMouseEnter();
  6499.  
  6500.        /*! @brief Called whenever the mouse leaves the control.
  6501.  
  6502. @tsexample
  6503. // The mouse has left the control, causing the callback to occur
  6504. GuiObjectView::onMouseLeave(%this)
  6505.     {
  6506.         // Code to run when the mouse leaves this control
  6507.     }
  6508. @endtsexample
  6509.  
  6510. @see GuiControl
  6511.  
  6512.  */
  6513.        void onMouseLeave();
  6514.  
  6515.     /*! @brief Return the model displayed in this view.
  6516.  
  6517. @tsexample
  6518. // Request the displayed model name from the GuiObjectView object.
  6519. %modelName = %thisGuiObjectView.getModel();
  6520. @endtsexample
  6521.  
  6522. @return Name of the displayed model.
  6523.  
  6524. @see GuiControl */
  6525.     virtual string getModel(()) {}
  6526.     /*! @brief Sets the model to be displayed in this control.
  6527.  
  6528. @param shapeName Name of the model to display.
  6529. @tsexample
  6530. // Define the model we want to display
  6531. %shapeName = "gideon.dts";
  6532.  
  6533. // Tell the GuiObjectView object to display the defined model
  6534. %thisGuiObjectView.setModel(%shapeName);
  6535. @endtsexample
  6536.  
  6537. @see GuiControl */
  6538.     virtual void setModel(( string shapeName )) {}
  6539.     /*! @brief Return the name of the mounted model.
  6540.  
  6541. @tsexample
  6542. // Request the name of the mounted model from the GuiObjectView object
  6543. %mountedModelName = %thisGuiObjectView.getMountedModel();
  6544. @endtsexample
  6545.  
  6546. @return Name of the mounted model.
  6547.  
  6548. @see GuiControl */
  6549.     virtual string getMountedModel(()) {}
  6550.     /*! @brief Sets the model to be mounted on the primary model.
  6551.  
  6552. @param shapeName Name of the model to mount.
  6553. @tsexample
  6554. // Define the model name to mount
  6555. %modelToMount = "GideonGlasses.dts";
  6556.  
  6557. // Inform the GuiObjectView object to mount the defined model to the existing model in the control
  6558. %thisGuiObjectView.setMountedModel(%modelToMount);
  6559. @endtsexample
  6560.  
  6561. @see GuiControl */
  6562.     virtual void setMountedModel(( string shapeName )) {}
  6563.     /*! @brief Return the name of skin used on the primary model.
  6564.  
  6565. @tsexample
  6566. // Request the name of the skin used on the primary model in the control
  6567. %skinName = %thisGuiObjectView.getSkin();
  6568. @endtsexample
  6569.  
  6570. @return Name of the skin used on the primary model.
  6571.  
  6572. @see GuiControl */
  6573.     virtual string getSkin(()) {}
  6574.     /*! @brief Sets the skin to use on the model being displayed.
  6575.  
  6576. @param skinName Name of the skin to use.
  6577. @tsexample
  6578. // Define the skin we want to apply to the main model in the control
  6579. %skinName = "disco_gideon";
  6580.  
  6581. // Inform the GuiObjectView control to update the skin the to defined skin
  6582. %thisGuiObjectView.setSkin(%skinName);
  6583. @endtsexample
  6584.  
  6585. @see GuiControl */
  6586.     virtual void setSkin(( string skinName )) {}
  6587.     /*! @brief Return the name of skin used on the mounted model.
  6588.  
  6589. @tsexample
  6590. // Request the skin name from the model mounted on to the main model in the control
  6591. %mountModelSkin = %thisGuiObjectView.getMountSkin();
  6592. @endtsexample
  6593.  
  6594. @return Name of the skin used on the mounted model.
  6595.  
  6596. @see GuiControl */
  6597.     virtual string getMountSkin(( int param1, int param2 )) {}
  6598.     /*! @brief Sets the skin to use on the mounted model.
  6599.  
  6600. @param skinName Name of the skin to set on the model mounted to the main model in the control
  6601. @tsexample
  6602. // Define the name of the skin
  6603. %skinName = "BronzeGlasses";
  6604.  
  6605. // Inform the GuiObjectView Control of the skin to use on the mounted model
  6606. %thisGuiObjectViewCtrl.setMountSkin(%skinName);
  6607. @endtsexample
  6608.  
  6609. @see GuiControl */
  6610.     virtual void setMountSkin(( string skinName )) {}
  6611.     /*! @brief Sets the animation to play for the viewed object.
  6612.  
  6613. @param indexOrName The index or name of the animation to play.
  6614. @tsexample
  6615. // Set the animation index value, or animation sequence name.
  6616. %indexVal = "3";
  6617. //OR:
  6618. %indexVal = "idle";
  6619.  
  6620. // Inform the GuiObjectView object to set the animation sequence of the object in the control.
  6621. %thisGuiObjectVew.setSeq(%indexVal);
  6622. @endtsexample
  6623.  
  6624. @see GuiControl */
  6625.     virtual void setSeq(( string indexOrName )) {}
  6626.     /*! @brief Mounts the given model to the specified mount point of the primary model displayed in this control.
  6627.  
  6628. Detailed description
  6629.  
  6630. @param shapeName Name of the model to mount.
  6631. @param mountNodeIndexOrName Index or name of the mount point to be mounted to. If index, corresponds to "mountN" in your shape where N is the number passed here.
  6632. @tsexample
  6633. // Set the shapeName to mount
  6634. %shapeName = "GideonGlasses.dts"
  6635.  
  6636. // Set the mount node of the primary model in the control to mount the new shape at
  6637. %mountNodeIndexOrName = "3";
  6638. //OR:
  6639. %mountNodeIndexOrName = "Face";
  6640.  
  6641. // Inform the GuiObjectView object to mount the shape at the specified node.
  6642. %thisGuiObjectView.setMount(%shapeName,%mountNodeIndexOrName);
  6643. @endtsexample
  6644.  
  6645. @see GuiControl */
  6646.     virtual void setMount(( string shapeName, string mountNodeIndexOrName )) {}
  6647.     /*! @brief Return the current distance at which the camera orbits the object.
  6648.  
  6649. @tsexample
  6650. // Request the current orbit distance
  6651. %orbitDistance = %thisGuiObjectView.getOrbitDistance();
  6652. @endtsexample
  6653.  
  6654. @return The distance at which the camera orbits the object.
  6655.  
  6656. @see GuiControl */
  6657.     virtual float getOrbitDistance(()) {}
  6658.     /*! @brief Sets the distance at which the camera orbits the object. Clamped to the acceptable range defined in the class by min and max orbit distances.
  6659.  
  6660. Detailed description
  6661.  
  6662. @param distance The distance to set the orbit to (will be clamped).
  6663. @tsexample
  6664. // Define the orbit distance value
  6665. %orbitDistance = "1.5";
  6666.  
  6667. // Inform the GuiObjectView object to set the orbit distance to the defined value
  6668. %thisGuiObjectView.setOrbitDistance(%orbitDistance);
  6669. @endtsexample
  6670.  
  6671. @see GuiControl */
  6672.     virtual void setOrbitDistance(( float distance )) {}
  6673.     /*! @brief Return the current multiplier for camera zooming and rotation.
  6674.  
  6675. @tsexample
  6676. // Request the current camera zooming and rotation multiplier value
  6677. %multiplier = %thisGuiObjectView.getCameraSpeed();
  6678. @endtsexample
  6679.  
  6680. @return Camera zooming / rotation multiplier value.
  6681.  
  6682. @see GuiControl */
  6683.     virtual float getCameraSpeed(()) {}
  6684.     /*! @brief Sets the multiplier for the camera rotation and zoom speed.
  6685.  
  6686. @param factor Multiplier for camera rotation and zoom speed.
  6687. @tsexample
  6688. // Set the factor value
  6689. %factor = "0.75";
  6690.  
  6691. // Inform the GuiObjectView object to set the camera speed.
  6692. %thisGuiObjectView.setCameraSpeed(%factor);
  6693. @endtsexample
  6694.  
  6695. @see GuiControl */
  6696.     virtual void setCameraSpeed(( float factor )) {}
  6697.     /*! @brief Set the light color on the sun object used to render the model.
  6698.  
  6699. @param color Color of sunlight.
  6700. @tsexample
  6701. // Set the color value for the sun
  6702. %color = "1.0 0.4 0.5";
  6703.  
  6704. // Inform the GuiObjectView object to change the sun color to the defined value
  6705. %thisGuiObjectView.setLightColor(%color);
  6706. @endtsexample
  6707.  
  6708. @see GuiControl */
  6709.     virtual void setLightColor(( ColorF color )) {}
  6710.     /*! @brief Set the light ambient color on the sun object used to render the model.
  6711.  
  6712. @param color Ambient color of sunlight.
  6713. @tsexample
  6714. // Define the sun ambient color value
  6715. %color = "1.0 0.4 0.6";
  6716.  
  6717. // Inform the GuiObjectView object to set the sun ambient color to the requested value
  6718. %thisGuiObjectView.setLightAmbient(%color);
  6719. @endtsexample
  6720.  
  6721. @see GuiControl */
  6722.     virtual void setLightAmbient(( ColorF color )) {}
  6723.     /*! @brief Set the light direction from which to light the model.
  6724.  
  6725. @param direction XYZ direction from which the light will shine on the model
  6726. @tsexample
  6727. // Set the light direction
  6728. %direction = "1.0 0.2 0.4"
  6729.  
  6730. // Inform the GuiObjectView object to change the light direction to the defined value
  6731. %thisGuiObjectView.setLightDirection(%direction);
  6732. @endtsexample
  6733.  
  6734. @see GuiControl */
  6735.     virtual void setLightDirection(( Point3F direction )) {}
  6736.  
  6737.     /*! @name Model
  6738.     @{ */
  6739.     /*! */
  6740.     /*!
  6741.     The object model shape file to show in the view.
  6742.    
  6743.      */
  6744.     filename shapeFile;
  6745.     /*!
  6746.     The skin to use on the object model.
  6747.    
  6748.      */
  6749.     string skin;
  6750.     /// @}
  6751.  
  6752.  
  6753.     /*! @name Animation
  6754.     @{ */
  6755.     /*! */
  6756.     /*!
  6757.     The animation sequence to play on the model.
  6758.    
  6759.      */
  6760.     string animSequence;
  6761.     /// @}
  6762.  
  6763.  
  6764.     /*! @name Mounting
  6765.     @{ */
  6766.     /*! */
  6767.     /*!
  6768.     Optional shape file to mount on the primary model (e.g. weapon).
  6769.    
  6770.      */
  6771.     filename mountedShapeFile;
  6772.     /*!
  6773.     Skin name used on mounted shape file.
  6774.    
  6775.      */
  6776.     string mountedSkin;
  6777.     /*!
  6778.     Name of node on primary model to which to mount the secondary shape.
  6779.    
  6780.      */
  6781.     string mountedNode;
  6782.     /// @}
  6783.  
  6784.  
  6785.     /*! @name Lighting
  6786.     @{ */
  6787.     /*! */
  6788.     /*!
  6789.     Diffuse color of the sunlight used to render the model.
  6790.    
  6791.      */
  6792.     ColorF lightColor;
  6793.     /*!
  6794.     Ambient color of the sunlight used to render the model.
  6795.    
  6796.      */
  6797.     ColorF lightAmbient;
  6798.     /*!
  6799.     Direction from which the model is illuminated.
  6800.    
  6801.      */
  6802.     Point3F lightDirection;
  6803.     /// @}
  6804.  
  6805.  
  6806.     /*! @name Camera
  6807.     @{ */
  6808.     /*! */
  6809.     /*!
  6810.     Distance from which to render the model.
  6811.    
  6812.      */
  6813.     float orbitDiststance;
  6814.     /*!
  6815.     Maxiumum distance to which the camera can be zoomed out.
  6816.    
  6817.      */
  6818.     float minOrbitDiststance;
  6819.     /*!
  6820.     Minimum distance below which the camera will not zoom in further.
  6821.    
  6822.      */
  6823.     float maxOrbitDiststance;
  6824.     /*!
  6825.     Multiplier for mouse camera operations.
  6826.    
  6827.      */
  6828.     float cameraSpeed;
  6829.     /// @}
  6830.  
  6831.  
  6832.     /*! @name Camera
  6833.     @{ */
  6834.     /*! */
  6835.     /// @}
  6836.  
  6837.  
  6838.     /*! @name Rendering
  6839.     @{ */
  6840.     /*! */
  6841.     /// @}
  6842.  
  6843.  
  6844.     /*! @name Layout
  6845.     @{ */
  6846.     /*! */
  6847.     /// @}
  6848.  
  6849.  
  6850.     /*! @name Layout
  6851.     @{ */
  6852.     /*! */
  6853.     /// @}
  6854.  
  6855.  
  6856.     /*! @name Control
  6857.     @{ */
  6858.     /*! */
  6859.     /// @}
  6860.  
  6861.  
  6862.     /*! @name ToolTip
  6863.     @{ */
  6864.     /*! */
  6865.     /// @}
  6866.  
  6867.  
  6868.     /*! @name Editing
  6869.     @{ */
  6870.     /*! */
  6871.     /// @}
  6872.  
  6873.  
  6874.     /*! @name Localization
  6875.     @{ */
  6876.     /*! */
  6877.     /// @}
  6878.  
  6879.  
  6880.     /*! @name Ungrouped
  6881.     @{ */
  6882.     /*! */
  6883.     /// @}
  6884.  
  6885.  
  6886.     /*! @name Object
  6887.     @{ */
  6888.     /*! */
  6889.     /// @}
  6890.  
  6891.  
  6892.     /*! @name Editing
  6893.     @{ */
  6894.     /*! */
  6895.     /// @}
  6896.  
  6897.  
  6898.     /*! @name Persistence
  6899.     @{ */
  6900.     /*! */
  6901.     /// @}
  6902.  
  6903.  };
  6904.  
  6905.  /*!
  6906.  @brief A helper datablock used by classes (such as shapebase) that submit lights to the scene but do not use actual "LightBase" objects.
  6907.  
  6908.  This datablock stores the properties of that light as fields that can be initialized from script.@tsexample
  6909.  // Declare a light description to be used on a rocket launcher projectile
  6910.  datablock LightDescription(RocketLauncherLightDesc)
  6911.  {
  6912.     range = 4.0;
  6913.     color = "1 1 0";
  6914.     brightness = 5.0;
  6915.     animationType = PulseLightAnim;
  6916.     animationPeriod = 0.25;
  6917.  };
  6918.  
  6919.  // Declare a ProjectileDatablock which uses the light description
  6920.  datablock ProjectileData(RocketLauncherProjectile)
  6921.  {
  6922.     lightDesc = RocketLauncherLightDesc;
  6923.  
  6924.     projectileShapeName = "art/shapes/weapons/SwarmGun/rocket.dts";
  6925.  
  6926.     directDamage = 30;
  6927.     radiusDamage = 30;
  6928.     damageRadius = 5;
  6929.     areaImpulse = 2500;
  6930.  
  6931.     // ... remaining ProjectileData fields not listed for this example
  6932.  };
  6933.  @endtsexample
  6934.  
  6935.  @see LightBase
  6936.  
  6937.  @ingroup Lighting
  6938.   */
  6939.  class  LightDescription : public SimDataBlock {
  6940.    public:
  6941.     /*! @brief Force an inspectPostApply call for the benefit of tweaking via the console
  6942.  
  6943. Normally this functionality is only exposed to objects via the World Editor, once changes have been made. Exposing apply to script allows you to make changes to it on the fly without the World Editor.
  6944.  
  6945. @note This is intended for debugging and tweaking, not for game play
  6946.  
  6947. @tsexample
  6948. // Change a property of the light description
  6949. RocketLauncherLightDesc.brightness = 10;
  6950.  
  6951. // Make it so
  6952. RocketLauncherLightDesc.apply();
  6953. @endtsexample
  6954.  
  6955.  */
  6956.     virtual void apply(()) {}
  6957.  
  6958.     /*! @name Light
  6959.     @{ */
  6960.     /*! */
  6961.     /*!
  6962.     Changes the base color hue of the light.
  6963.    
  6964.      */
  6965.     ColorF color;
  6966.     /*!
  6967.     Adjusts the lights power, 0 being off completely.
  6968.    
  6969.      */
  6970.     float brightness;
  6971.     /*!
  6972.     Controls the size (radius) of the light
  6973.    
  6974.      */
  6975.     float range;
  6976.     /*!
  6977.     Enables/disabled shadow casts by this light.
  6978.    
  6979.      */
  6980.     bool castShadows;
  6981.     /// @}
  6982.  
  6983.  
  6984.     /*! @name Light Animation
  6985.     @{ */
  6986.     /*! */
  6987.     /*!
  6988.     Datablock containing light animation information (LightAnimData)
  6989.    
  6990.      */
  6991.     LightAnimData animationType;
  6992.     /*!
  6993.     The length of time in seconds for a single playback of the light animation
  6994.    
  6995.      */
  6996.     float animationPeriod;
  6997.     /*!
  6998.     The phase used to offset the animation start time to vary the animation of nearby lights.
  6999.    
  7000.      */
  7001.     float animationPhase;
  7002.     /// @}
  7003.  
  7004.  
  7005.     /*! @name Misc
  7006.     @{ */
  7007.     /*! */
  7008.     /*!
  7009.     Datablock containing light flare information (LightFlareData)
  7010.    
  7011.      */
  7012.     LightFlareData flareType;
  7013.     /*!
  7014.     Globally scales all features of the light flare
  7015.    
  7016.      */
  7017.     float flareScale;
  7018.     /// @}
  7019.  
  7020.  
  7021.     /*! @name Advanced Lighting
  7022.     @{ */
  7023.     /*! */
  7024.     /*!
  7025.     The proportions of constant, linear, and quadratic attenuation to use for the falloff for point and spot lights.
  7026.    
  7027.      */
  7028.     Point3F attenuationRatio;
  7029.     /*!
  7030.     The type of shadow to use on this light.
  7031.    
  7032.      */
  7033.     ShadowType shadowType;
  7034.     /*!
  7035.     A custom pattern texture which is projected from the light.
  7036.    
  7037.      */
  7038.     filename cookie;
  7039.     /*!
  7040.     The texture size of the shadow map.
  7041.    
  7042.      */
  7043.     int texSize;
  7044.     /*!
  7045.     The ESM shadow darkening factor
  7046.    
  7047.      */
  7048.     Point4F overDarkFactor;
  7049.     /*!
  7050.     The distance from the camera to extend the PSSM shadow.
  7051.    
  7052.      */
  7053.     float shadowDistance;
  7054.     /*!
  7055.    
  7056.    
  7057.      */
  7058.     float shadowSoftness;
  7059.     /*!
  7060.     The logrithmic PSSM split distance factor.
  7061.    
  7062.      */
  7063.     int numSplits;
  7064.     /*!
  7065.     The logrithmic PSSM split distance factor.
  7066.    
  7067.      */
  7068.     float logWeight;
  7069.     /*!
  7070.     Start fading shadows out at this distance.  0 = auto calculate this distance.
  7071.    
  7072.      */
  7073.     float fadeStartDistance;
  7074.     /*!
  7075.     This toggles only terrain being rendered to the last split of a PSSM shadow map.
  7076.    
  7077.      */
  7078.     bool lastSplitTerrainOnly;
  7079.     /// @}
  7080.  
  7081.  
  7082.     /*! @name Advanced Lighting Lightmap
  7083.     @{ */
  7084.     /*! */
  7085.     /*!
  7086.     This light is represented in lightmaps (static light, default: false)
  7087.    
  7088.      */
  7089.     bool representedInLightmap;
  7090.     /*!
  7091.     The color that should be used to multiply-blend dynamic shadows onto lightmapped geometry (ignored if 'representedInLightmap' is false)
  7092.    
  7093.      */
  7094.     ColorF shadowDarkenColor;
  7095.     /*!
  7096.     This light should render lightmapped geometry during its shadow-map update (ignored if 'representedInLightmap' is false)
  7097.    
  7098.      */
  7099.     bool includeLightmappedGeometryInShadow;
  7100.     /// @}
  7101.  
  7102.  
  7103.     /*! @name Ungrouped
  7104.     @{ */
  7105.     /*! */
  7106.     /// @}
  7107.  
  7108.  
  7109.     /*! @name Object
  7110.     @{ */
  7111.     /*! */
  7112.     /// @}
  7113.  
  7114.  
  7115.     /*! @name Editing
  7116.     @{ */
  7117.     /*! */
  7118.     /// @}
  7119.  
  7120.  
  7121.     /*! @name Persistence
  7122.     @{ */
  7123.     /*! */
  7124.     /// @}
  7125.  
  7126.  };
  7127.  
  7128.  /*!
  7129.  @brief Level object which defines the boundaries of the level.
  7130.  
  7131.  This is a simple box with starting points, width, depth, and height. It does not have any default functionality. Instead, when objects hit the boundaries certain script callbacks will be made allowing you to control the reaction.
  7132.  
  7133.  @tsexample
  7134.  new MissionArea(GlobalMissionArea)
  7135.  {
  7136.       Area = "-152 -352 1008 864";
  7137.       flightCeiling = "300";
  7138.       flightCeilingRange = "20";
  7139.       canSaveDynamicFields = "1";
  7140.          enabled = "1";
  7141.          TypeBool locked = "false";
  7142.  };
  7143.  @endtsexample
  7144.  
  7145.  @ingroup enviroMisc
  7146.   */
  7147.  class  MissionArea : public NetObject {
  7148.    public:
  7149.     /*! Returns 4 fields: starting x, starting y, extents x, extents y.
  7150.  */
  7151.     virtual string getArea(()) {}
  7152.     /*! @brief - Defines the size of the MissionArea
  7153.  
  7154. param x Starting X coordinate position for MissionArea
  7155. param y Starting Y coordinate position for MissionArea
  7156. param width New width of the MissionArea
  7157. param height New height of the MissionArea
  7158. @note Only the server object may be set.
  7159.  */
  7160.     virtual void setArea(( int x, int y, int width, int height )) {}
  7161.     /*! Intended as a helper to developers and editor scripts.
  7162. Force trigger an inspectPostApply. This will transmit material and other fields ( not including nodes ) to client objects. */
  7163.     virtual void postApply(()) {}
  7164.  
  7165.     /*! @name Dimensions
  7166.     @{ */
  7167.     /*! */
  7168.     /*!
  7169.     Four corners (X1, X2, Y1, Y2) that makes up the level's boundaries
  7170.    
  7171.      */
  7172.     RectI area;
  7173.     /*!
  7174.     Represents the top of the mission area, used by FlyingVehicle.
  7175.    
  7176.      */
  7177.     float flightCeiling;
  7178.     /*!
  7179.     Distance from ceiling before FlyingVehicle thrust is cut off.
  7180.    
  7181.      */
  7182.     float flightCeilingRange;
  7183.     /// @}
  7184.  
  7185.  
  7186.     /*! @name Ungrouped
  7187.     @{ */
  7188.     /*! */
  7189.     /// @}
  7190.  
  7191.  
  7192.     /*! @name Object
  7193.     @{ */
  7194.     /*! */
  7195.     /// @}
  7196.  
  7197.  
  7198.     /*! @name Editing
  7199.     @{ */
  7200.     /*! */
  7201.     /// @}
  7202.  
  7203.  
  7204.     /*! @name Persistence
  7205.     @{ */
  7206.     /*! */
  7207.     /// @}
  7208.  
  7209.  };
  7210.  
  7211.  /*!
  7212.  @brief This class is used for creating any type of game object, assigning it a class, datablock, and even a function when it is spawned.
  7213.  
  7214.  Torque 3D uses a simple spawn system, which can be easily modified to spawn any kind of object (of any class). Each new level already contains at least one SpawnSphere, which is represented by a green octahedron in stock Torque 3D. The spawnClass will determine the object type, such as Player, AIPlayer, etc. The spawnDataBlock will provide this specific instance of the creation with a pre-defined datablock. The really powerful feature of this clas is utilize by the spawnScript field. Through this, you can define a simple script (multiple lines) that will be executed once the object has been spawned.
  7215.  
  7216.  @tsexample
  7217.  new SpawnSphere(DefaultSpawnSphere)
  7218.  {
  7219.     spawnClass = "Player";
  7220.     spawnDatablock = "DefaultPlayerData";
  7221.     spawnScript = "echo(\"Object Spawned\");"; // Note the escape sequence \ in front of quotes
  7222.     spawnProperties = "name = \"Bob\";lifeTotal = 3;"; // Note the escape sequence \ in front of quotes
  7223.     autoSpawn = "0";
  7224.     radius = "1";
  7225.     sphereWeight = "1";
  7226.     indoorWeight = "100";
  7227.     outdoorWeight = "100";
  7228.     dataBlock = "SpawnSphereMarker";
  7229.     position = "-0.77266 -19.882 17.8153";
  7230.     rotation = "1 0 0 0";
  7231.     scale = "1 1 1";
  7232.     canSave = "1";
  7233.     canSaveDynamicFields = "1";
  7234.  };
  7235.  
  7236.  // In the above example, the following two lines of code will execute after spawning
  7237.  echo("Object Spawned");
  7238.  echo("Hello World");
  7239.  @endtsexample
  7240.  
  7241.  @see MissionMarker
  7242.  
  7243.  @see MissionMarkerData
  7244.  
  7245.  @ingroup gameObjects
  7246.  @ingroup enviroMisc
  7247.   */
  7248.  class  SpawnSphere : public MissionMarker {
  7249.    public:
  7250.        /*! Called when the SpawnSphere is being created.
  7251. @param objectId The unique SimObjectId generated when SpawnSphere is created
  7252.  */
  7253.        void onAdd( int objectId );
  7254.  
  7255.     /*! Spawns the object based                                                        on the SpawnSphere's class, datablock, properties,                                                        and script settings. Allows you to pass in extra properties.@hide */
  7256.     virtual int spawnObject(([string additionalProps])) {}
  7257.  
  7258.     /*! @name Spawn
  7259.     @{ */
  7260.     /*! */
  7261.     /*!
  7262.     Class assigned to object when created, such as Player, or AIPlayer
  7263.    
  7264.      */
  7265.     string spawnClass;
  7266.     /*!
  7267.     Predefined datablock assigned to the object when created
  7268.    
  7269.      */
  7270.     string spawnDatablock;
  7271.     /*!
  7272.     String containing ; delimited properties that are set at the time of spawning
  7273.    
  7274.      */
  7275.     string spawnProperties;
  7276.     /*!
  7277.     Command to execute when spawning an object. New object id is stored in $SpawnObject.  Max 255 characters.
  7278.    
  7279.      */
  7280.     string spawnScript;
  7281.     /*!
  7282.     Flag to spawn object as soon as SpawnSphere is created, true to enable or false to disabled
  7283.    
  7284.      */
  7285.     bool autoSpawn;
  7286.     /// @}
  7287.  
  7288.  
  7289.     /*! @name Dimensions
  7290.     @{ */
  7291.     /*! */
  7292.     /*!
  7293.     Determines the size of the sphere in which the object will spawn
  7294.    
  7295.      */
  7296.     float radius;
  7297.     /// @}
  7298.  
  7299.  
  7300.     /*! @name Weight
  7301.     @{ */
  7302.     /*! */
  7303.     /*!
  7304.     Deprecated
  7305.    
  7306.      */
  7307.     float sphereWeight;
  7308.     /*!
  7309.     Deprecated
  7310.    
  7311.      */
  7312.     float indoorWeight;
  7313.     /*!
  7314.     Deprecated
  7315.    
  7316.      */
  7317.     float outdoorWeight;
  7318.     /// @}
  7319.  
  7320.  
  7321.     /*! @name Game
  7322.     @{ */
  7323.     /*! */
  7324.     /// @}
  7325.  
  7326.  
  7327.     /*! @name Transform
  7328.     @{ */
  7329.     /*! */
  7330.     /// @}
  7331.  
  7332.  
  7333.     /*! @name Editing
  7334.     @{ */
  7335.     /*! */
  7336.     /// @}
  7337.  
  7338.  
  7339.     /*! @name Mounting
  7340.     @{ */
  7341.     /*! */
  7342.     /// @}
  7343.  
  7344.  
  7345.     /*! @name Ungrouped
  7346.     @{ */
  7347.     /*! */
  7348.     /// @}
  7349.  
  7350.  
  7351.     /*! @name Object
  7352.     @{ */
  7353.     /*! */
  7354.     /// @}
  7355.  
  7356.  
  7357.     /*! @name Editing
  7358.     @{ */
  7359.     /*! */
  7360.     /// @}
  7361.  
  7362.  
  7363.     /*! @name Persistence
  7364.     @{ */
  7365.     /*! */
  7366.     /// @}
  7367.  
  7368.  };
  7369.  
  7370.  /*!
  7371.  @brief A camera that moves along a path. The camera can then be made to travel along this path forwards or backwards.
  7372.  
  7373.  A camera's path is made up of knots, which define a position, rotation and speed for the camera.  Traversal from one knot to another may be either linear or using a Catmull-Rom spline.  If the knot is part of a spline, then it may be a normal knot or defined as a kink.  Kinked knots are a hard transition on the spline rather than a smooth one.  A knot may also be defined as a position only.  In this case the knot is treated as a normal knot but is ignored when determining how to smoothly rotate the camera while it is travelling along the path (the algorithm moves on to the next knot in the path for determining rotation).
  7374.  
  7375.  The datablock field for a PathCamera is a previously created PathCameraData, which acts as the interface between the script and the engine for this PathCamera object.
  7376.  
  7377.  @see PathCameraData
  7378.  @tsexample
  7379.  %newPathCamera = new PathCamera()
  7380.  {
  7381.    dataBlock = LoopingCam;
  7382.    position = "0 0 300 1 0 0 0";
  7383.  };
  7384.  @endtsexample
  7385.  @ingroup PathCameras
  7386.   */
  7387.  class  PathCamera : public ShapeBase {
  7388.    public:
  7389.        /*! A script callback that indicates the path camera has arrived at a specific node in its path.  Server side only.
  7390. @param Node Unique ID assigned to this node.
  7391.  */
  7392.        void onNode( string node );
  7393.  
  7394.     /*! Set the current position of the camera along the path.
  7395. @param position Position along the path, from 0.0 (path start) - 1.0 (path end), to place the camera.
  7396. @tsexample
  7397. // Set the camera on a position along its path from 0.0 - 1.0.
  7398. %position = "0.35";
  7399.  
  7400. // Force the pathCamera to its new position along the path.
  7401. %pathCamera.setPosition(%position);
  7402. @endtsexample
  7403.  */
  7404.     virtual void setPosition(( float position=0.0f )) {}
  7405.     /*! @brief Set the movement target for this camera along its path.
  7406.  
  7407. The camera will attempt to move along the path to the given target in the direction provided by setState() (the default is forwards).  Once the camera moves past this target it will come to a stop, and the target state will be cleared.
  7408. @param position Target position, between 0.0 (path start) and 1.0 (path end), for the camera to move to along its path.
  7409. @tsexample
  7410. // Set the position target, between 0.0 (path start) and 1.0 (path end), for this camera to move to.
  7411. %position = "0.50";
  7412.  
  7413. // Inform the pathCamera of the new target position it will move to.
  7414. %pathCamera.setTarget(%position);
  7415. @endtsexample
  7416.  */
  7417.     virtual void setTarget(( float position=1.0f )) {}
  7418.     /*! Set the movement state for this path camera.
  7419. @param newState New movement state type for this camera. Forward, Backward or Stop.
  7420. @tsexample
  7421. // Set the state type (forward, backward, stop).
  7422. // In this example, the camera will travel from the first node
  7423. // to the last node (or target if given with setTarget())
  7424. %state = "forward";
  7425.  
  7426. // Inform the pathCamera to change its movement state to the defined value.
  7427. %pathCamera.setState(%state);
  7428. @endtsexample
  7429.  */
  7430.     virtual void setState(( string newState="forward" )) {}
  7431.     /*! @brief Clear the camera's path and set the camera's current transform as the start of the new path.
  7432.  
  7433. What specifically occurs is a new knot is created from the camera's current transform.  Then the current path is cleared and the new knot is pushed onto the path.  Any previous target is cleared and the camera's movement state is set to Forward.  The camera is now ready for a new path to be defined.
  7434. @param speed Speed for the camera to move along its path after being reset.
  7435. @tsexample
  7436. //Determine the new movement speed of this camera. If not set, the speed will default to 1.0.
  7437. %speed = "0.50";
  7438.  
  7439. // Inform the path camera to start a new path at// the camera's current position, and set the new // path's speed value.
  7440. %pathCamera.reset(%speed);
  7441. @endtsexample
  7442.  */
  7443.     virtual void reset(( float speed=1.0f )) {}
  7444.     /*! @brief Adds a new knot to the back of a path camera's path.
  7445. @param transform Transform for the new knot.  In the form of "x y z ax ay az aa" such as returned by SceneObject::getTransform()
  7446. @param speed Speed setting for this knot.
  7447. @param type Knot type (Normal, Position Only, Kink).
  7448. @param path %Path type (Linear, Spline).
  7449. @tsexample
  7450. // Transform vector for new knot. (Pos_X Pos_Y Pos_Z Rot_X Rot_Y Rot_Z Angle)
  7451. %transform = "15.0 5.0 5.0 1.4 1.0 0.2 1.0"
  7452.  
  7453. // Speed setting for knot.
  7454. %speed = "1.0"
  7455.  
  7456. // Knot type. (Normal, Position Only, Kink)
  7457. %type = "Normal";
  7458.  
  7459. // Path Type. (Linear, Spline)
  7460. %path = "Linear";
  7461.  
  7462. // Inform the path camera to add a new knot to the back of its path
  7463. %pathCamera.pushBack(%transform,%speed,%type,%path);
  7464. @endtsexample
  7465.  */
  7466.     virtual void pushBack(( TransformF transform, float speed=1.0, string type="Normal", string path="Linear" )) {}
  7467.     /*! @brief Adds a new knot to the front of a path camera's path.
  7468. @param transform Transform for the new knot. In the form of "x y z ax ay az aa" such as returned by SceneObject::getTransform()
  7469. @param speed Speed setting for this knot.
  7470. @param type Knot type (Normal, Position Only, Kink).
  7471. @param path %Path type (Linear, Spline).
  7472. @tsexample
  7473. // Transform vector for new knot. (Pos_X,Pos_Y,Pos_Z,Rot_X,Rot_Y,Rot_Z,Angle)
  7474. %transform = "15.0 5.0 5.0 1.4 1.0 0.2 1.0"
  7475.  
  7476. // Speed setting for knot.
  7477. %speed = "1.0";
  7478.  
  7479. // Knot type. (Normal, Position Only, Kink)
  7480. %type = "Normal";
  7481.  
  7482. // Path Type. (Linear, Spline)
  7483. %path = "Linear";
  7484.  
  7485. // Inform the path camera to add a new knot to the front of its path
  7486. %pathCamera.pushFront(%transform, %speed, %type, %path);
  7487. @endtsexample
  7488.  */
  7489.     virtual void pushFront(( TransformF transform, float speed=1.0, string type="Normal", string path="Linear" )) {}
  7490.     /*! Removes the knot at the front of the camera's path.
  7491. @tsexample
  7492. // Remove the first knot in the camera's path.
  7493. %pathCamera.popFront();
  7494. @endtsexample
  7495.  */
  7496.     virtual void popFront(()) {}
  7497.  
  7498.     /*! @name Game
  7499.     @{ */
  7500.     /*! */
  7501.     /// @}
  7502.  
  7503.  
  7504.     /*! @name Transform
  7505.     @{ */
  7506.     /*! */
  7507.     /// @}
  7508.  
  7509.  
  7510.     /*! @name Editing
  7511.     @{ */
  7512.     /*! */
  7513.     /// @}
  7514.  
  7515.  
  7516.     /*! @name Mounting
  7517.     @{ */
  7518.     /*! */
  7519.     /// @}
  7520.  
  7521.  
  7522.     /*! @name Ungrouped
  7523.     @{ */
  7524.     /*! */
  7525.     /// @}
  7526.  
  7527.  
  7528.     /*! @name Object
  7529.     @{ */
  7530.     /*! */
  7531.     /// @}
  7532.  
  7533.  
  7534.     /*! @name Editing
  7535.     @{ */
  7536.     /*! */
  7537.     /// @}
  7538.  
  7539.  
  7540.     /*! @name Persistence
  7541.     @{ */
  7542.     /*! */
  7543.     /// @}
  7544.  
  7545.  };
  7546.  
  7547.  /*!
  7548.  @brief Physical Zones are areas that modify the player's gravity and/or velocity and/or applied force.
  7549.  
  7550.  The datablock properties determine how the physics, velocity and applied forces affect a player who enters this zone.
  7551.  @tsexample
  7552.  new PhysicalZone(Team1JumpPad) {
  7553.  velocityMod = "1";gravityMod = "0";
  7554.  appliedForce = "0 0 20000";
  7555.  polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
  7556.  position = "273.559 -166.371 249.856";
  7557.  rotation = "0 0 1 13.0216";
  7558.  scale = "8 4.95 28.31";
  7559.  isRenderEnabled = "true";
  7560.  canSaveDynamicFields = "1";
  7561.  enabled = "1";
  7562.  };
  7563.  @endtsexample
  7564.  
  7565.  @ingroup enviroMisc
  7566.   */
  7567.  class  PhysicalZone : public SceneObject {
  7568.    public:
  7569.     /*! Activate the physical zone's effects.
  7570. @tsexample
  7571. // Activate effects for a specific physical zone.
  7572. %thisPhysicalZone.activate();
  7573. @endtsexample
  7574. @ingroup Datablocks
  7575.  */
  7576.     virtual void activate(()) {}
  7577.     /*! Deactivate the physical zone's effects.
  7578. @tsexample
  7579. // Deactivate effects for a specific physical zone.
  7580. %thisPhysicalZone.deactivate();
  7581. @endtsexample
  7582. @ingroup Datablocks
  7583.  */
  7584.     virtual void deactivate(()) {}
  7585.  
  7586.     /*! @name Misc
  7587.     @{ */
  7588.     /*! */
  7589.     /*!
  7590.     Multiply velocity of objects entering zone by this value every tick.
  7591.    
  7592.      */
  7593.     float velocityMod;
  7594.     /*!
  7595.     Gravity in PhysicalZone. Multiplies against standard gravity.
  7596.    
  7597.      */
  7598.     float gravityMod;
  7599.     /*!
  7600.     Three-element floating point value representing forces in three axes to apply to objects entering PhysicalZone.
  7601.    
  7602.      */
  7603.     Point3F appliedForce;
  7604.     /*!
  7605.     The polyhedron type is really a quadrilateral and consists of a cornerpoint followed by three vectors representing the edges extending from the corner.
  7606.    
  7607.      */
  7608.     floatList polyhedron;
  7609.     /// @}
  7610.  
  7611.  
  7612.     /*! @name AFX
  7613.     @{ */
  7614.     /*! */
  7615.     /*!
  7616.      */
  7617.     PhysicalZone_ForceType forceType;
  7618.     /*!
  7619.      */
  7620.     bool orientForce;
  7621.     /// @}
  7622.  
  7623.  
  7624.     /*! @name Transform
  7625.     @{ */
  7626.     /*! */
  7627.     /// @}
  7628.  
  7629.  
  7630.     /*! @name Editing
  7631.     @{ */
  7632.     /*! */
  7633.     /// @}
  7634.  
  7635.  
  7636.     /*! @name Mounting
  7637.     @{ */
  7638.     /*! */
  7639.     /// @}
  7640.  
  7641.  
  7642.     /*! @name Ungrouped
  7643.     @{ */
  7644.     /*! */
  7645.     /// @}
  7646.  
  7647.  
  7648.     /*! @name Object
  7649.     @{ */
  7650.     /*! */
  7651.     /// @}
  7652.  
  7653.  
  7654.     /*! @name Editing
  7655.     @{ */
  7656.     /*! */
  7657.     /// @}
  7658.  
  7659.  
  7660.     /*! @name Persistence
  7661.     @{ */
  7662.     /*! */
  7663.     /// @}
  7664.  
  7665.  };
  7666.  
  7667.  /*!
  7668.  @brief An object that culls the rendering of everything contained within it.
  7669.  
  7670.  This is one of two objects used by the manual culling system Torque 3D provides, the other being Portal. When a Zone is placed in a level, all rendering within the zone is hidden from view when the camera is outside it. When inside, all rendering outside the zone is hidden. This is an excellent way to optimize large levels and complex geometry.
  7671.  
  7672.  You can attach a Portal a zone. This allows you to view what is rendered in the Zone (or what is rendered outside if you are in the zone), like a window. The larger the Portal, the more you can see through a zone.
  7673.  
  7674.  @tsexample
  7675.  // Example declaration of a Zone
  7676.  new Zone(TestZone)
  7677.  {
  7678.     soundAmbience = "AudioAmbienceInside";
  7679.     position = "3.61793 -1.01945 14.7442";
  7680.     rotation = "1 0 0 0";
  7681.     scale = "10 10 10";
  7682.     canSave = "1";
  7683.     canSaveDynamicFields = "1";
  7684.  };
  7685.  @endtsexample
  7686.  
  7687.  @see Portal
  7688.  @ingroup enviroMisc
  7689.   */
  7690.  class  Zone : public SceneObject {
  7691.    public:
  7692.     /*! Get the unique numeric ID of the zone in its scene.
  7693.  
  7694. @return The ID of the zone. */
  7695.     virtual int getZoneId(()) {}
  7696.     /*! Dump a list of all objects assigned to the zone to the console as well as a list of all connected zone spaces.
  7697.  
  7698. @param updateFirst Whether to update the contents of the zone before dumping.  Since zoning states of objects are updated on demand, the zone contents can be outdated. */
  7699.     virtual void dumpZoneState(( bool updateFirst=true )) {}
  7700.  
  7701.     /*! @name Sound
  7702.     @{ */
  7703.     /*! */
  7704.     /*!
  7705.     Ambient sound environment for the space.
  7706.    
  7707.      */
  7708.     SFXAmbience soundAmbience;
  7709.     /// @}
  7710.  
  7711.  
  7712.     /*! @name Internal
  7713.     @{ */
  7714.     /*! */
  7715.     /*!
  7716.     For internal use only.
  7717.    
  7718.      */
  7719.     string plane;
  7720.     /*!
  7721.     For internal use only.
  7722.    
  7723.      */
  7724.     string point;
  7725.     /*!
  7726.     For internal use only.
  7727.    
  7728.      */
  7729.     string edge;
  7730.     /// @}
  7731.  
  7732.  
  7733.     /*! @name Lighting
  7734.     @{ */
  7735.     /*! */
  7736.     /*!
  7737.     Whether to use #ambientLightColor for ambient lighting in this zone or the global ambient color.
  7738.    
  7739.      */
  7740.     bool useAmbientLightColor;
  7741.     /*!
  7742.     Color of ambient lighting in this zone.
  7743.  
  7744. Only used if #useAmbientLightColor is true.
  7745.    
  7746.      */
  7747.     ColorF ambientLightColor;
  7748.     /// @}
  7749.  
  7750.  
  7751.     /*! @name Zoning
  7752.     @{ */
  7753.     /*! */
  7754.     /*!
  7755.     ID of group the zone is part of.
  7756.    
  7757.      */
  7758.     int ZoneGroup;
  7759.     /// @}
  7760.  
  7761.  
  7762.     /*! @name Transform
  7763.     @{ */
  7764.     /*! */
  7765.     /// @}
  7766.  
  7767.  
  7768.     /*! @name Editing
  7769.     @{ */
  7770.     /*! */
  7771.     /// @}
  7772.  
  7773.  
  7774.     /*! @name Mounting
  7775.     @{ */
  7776.     /*! */
  7777.     /// @}
  7778.  
  7779.  
  7780.     /*! @name Ungrouped
  7781.     @{ */
  7782.     /*! */
  7783.     /// @}
  7784.  
  7785.  
  7786.     /*! @name Object
  7787.     @{ */
  7788.     /*! */
  7789.     /// @}
  7790.  
  7791.  
  7792.     /*! @name Editing
  7793.     @{ */
  7794.     /*! */
  7795.     /// @}
  7796.  
  7797.  
  7798.     /*! @name Persistence
  7799.     @{ */
  7800.     /*! */
  7801.     /// @}
  7802.  
  7803.  };
  7804.  
  7805.  /*!
  7806.  @brief An object that provides a "window" into a zone, allowing a viewer to see what's rendered in the zone.
  7807.  
  7808.  This is one of two objects used by the manual culling system Torque 3D provides, the other being Zone. When a Zone is placed in a level, all rendering within the zone is hidden from view when the camera is outside it. When inside, all rendering outside the zone is hidden. This is an excellent way to optimize large levels and complex geometry.
  7809.  
  7810.  You can attach a Portal a zone. This allows you to view what is rendered in the Zone (or what is rendered outside if you are in the zone), like a window. The larger the Portal, the more you can see through a zone.
  7811.  
  7812.  @tsexample
  7813.  // Example declaration of a Portal
  7814.  new Portal( PortalToTestZone )
  7815.  {
  7816.     position = "12.8467 -4.02246 14.8017";
  7817.      rotation = "0 0 -1 97.5085";
  7818.      scale = "1 0.25 1";
  7819.      canSave = "1";
  7820.      canSaveDynamicFields = "1";
  7821.  };
  7822.  @endtsexample
  7823.  
  7824.  @see Zone
  7825.  @ingroup enviroMisc
  7826.   */
  7827.  class  Portal : public Zone {
  7828.    public:
  7829.     /*! Test whether the portal connects interior zones only.
  7830.  
  7831. @return True if the portal is an interior portal. */
  7832.     virtual bool isInteriorPortal(()) {}
  7833.     /*! Test whether the portal connects interior zones to the outdoor zone.
  7834.  
  7835. @return True if the portal is an exterior portal. */
  7836.     virtual bool isExteriorPortal(()) {}
  7837.  
  7838.     /*! @name Zoning
  7839.     @{ */
  7840.     /*! */
  7841.     /*!
  7842.     Whether one can view through the front-side of the portal.
  7843.    
  7844.      */
  7845.     bool frontSidePassable;
  7846.     /*!
  7847.     Whether one can view through the back-side of the portal.
  7848.    
  7849.      */
  7850.     bool backSidePassable;
  7851.     /// @}
  7852.  
  7853.  
  7854.     /*! @name Sound
  7855.     @{ */
  7856.     /*! */
  7857.     /// @}
  7858.  
  7859.  
  7860.     /*! @name Internal
  7861.     @{ */
  7862.     /*! */
  7863.     /// @}
  7864.  
  7865.  
  7866.     /*! @name Lighting
  7867.     @{ */
  7868.     /*! */
  7869.     /// @}
  7870.  
  7871.  
  7872.     /*! @name Zoning
  7873.     @{ */
  7874.     /*! */
  7875.     /// @}
  7876.  
  7877.  
  7878.     /*! @name Transform
  7879.     @{ */
  7880.     /*! */
  7881.     /// @}
  7882.  
  7883.  
  7884.     /*! @name Editing
  7885.     @{ */
  7886.     /*! */
  7887.     /// @}
  7888.  
  7889.  
  7890.     /*! @name Mounting
  7891.     @{ */
  7892.     /*! */
  7893.     /// @}
  7894.  
  7895.  
  7896.     /*! @name Ungrouped
  7897.     @{ */
  7898.     /*! */
  7899.     /// @}
  7900.  
  7901.  
  7902.     /*! @name Object
  7903.     @{ */
  7904.     /*! */
  7905.     /// @}
  7906.  
  7907.  
  7908.     /*! @name Editing
  7909.     @{ */
  7910.     /*! */
  7911.     /// @}
  7912.  
  7913.  
  7914.     /*! @name Persistence
  7915.     @{ */
  7916.     /*! */
  7917.     /// @}
  7918.  
  7919.  };
  7920.  
  7921.  /*!
  7922.  @brief A collection of arbitrary objects which can be allocated and manipulated as a group.
  7923.  
  7924.  %Prefab always points to a (.prefab) file which defines its objects. In fact more than one %Prefab can reference this file and both will update if the file is modified.
  7925.  
  7926.  %Prefab is a very simple object and only exists on the server. When it is created it allocates children objects by reading the (.prefab) file like a list of instructions.  It then sets their transform relative to the %Prefab and Torque networking handles the rest by ghosting the new objects to clients. %Prefab itself is not ghosted.
  7927.  
  7928.   */
  7929.  class  Prefab : public SceneObject {
  7930.    public:
  7931.        /*! Called when the prefab file is loaded and children objects are created.
  7932. @param children SimGroup containing all children objects.
  7933.  */
  7934.        void onLoad( SimGroup  children );
  7935.  
  7936.  
  7937.     /*! @name Prefab
  7938.     @{ */
  7939.     /*! */
  7940.     /*!
  7941.     (.prefab) File describing objects within this prefab.
  7942.    
  7943.      */
  7944.     filename fileName;
  7945.     /// @}
  7946.  
  7947.  
  7948.     /*! @name Transform
  7949.     @{ */
  7950.     /*! */
  7951.     /// @}
  7952.  
  7953.  
  7954.     /*! @name Editing
  7955.     @{ */
  7956.     /*! */
  7957.     /// @}
  7958.  
  7959.  
  7960.     /*! @name Mounting
  7961.     @{ */
  7962.     /*! */
  7963.     /// @}
  7964.  
  7965.  
  7966.     /*! @name Ungrouped
  7967.     @{ */
  7968.     /*! */
  7969.     /// @}
  7970.  
  7971.  
  7972.     /*! @name Object
  7973.     @{ */
  7974.     /*! */
  7975.     /// @}
  7976.  
  7977.  
  7978.     /*! @name Editing
  7979.     @{ */
  7980.     /*! */
  7981.     /// @}
  7982.  
  7983.  
  7984.     /*! @name Persistence
  7985.     @{ */
  7986.     /*! */
  7987.     /// @}
  7988.  
  7989.  };
  7990.  
  7991.  /*!
  7992.  @brief A Trigger is a volume of space that initiates script callbacks when objects pass through the Trigger.
  7993.  
  7994.  TriggerData provides the callbacks for the Trigger when an object enters, stays inside or leaves the Trigger's volume.
  7995.  
  7996.  @see TriggerData
  7997.  @ingroup gameObjects
  7998.   */
  7999.  class  Trigger : public GameBase {
  8000.    public:
  8001.        /*! @brief Called when the Trigger is being created.
  8002.  
  8003. @param objectId the object id of the Trigger being created
  8004.  */
  8005.        void onAdd( int objectId );
  8006.  
  8007.        /*! @brief Called just before the Trigger is deleted.
  8008.  
  8009. @param objectId the object id of the Trigger being deleted
  8010.  */
  8011.        void onRemove( int objectId );
  8012.  
  8013.     /*! @brief Get the number of objects that are within the Trigger's bounds.
  8014.  
  8015. @see getObject()
  8016.  */
  8017.     virtual int getNumObjects(()) {}
  8018.     /*! @brief Retrieve the requested object that is within the Trigger's bounds.
  8019.  
  8020. @param index Index of the object to get (range is 0 to getNumObjects()-1)
  8021. @returns The SimObjectID of the object, or -1 if the requested index is invalid.
  8022. @see getNumObjects()
  8023.  */
  8024.     virtual int getObject(( int index )) {}
  8025.     /*!
  8026.     @brief Defines a non-rectangular area for the trigger.
  8027.  
  8028. Rather than the standard rectangular bounds, this optional parameter defines a quadrilateral trigger area.  The quadrilateral is defined as a corner point followed by three vectors representing the edges extending from the corner.
  8029.  
  8030.    
  8031.      */
  8032.     floatList polyhedron;
  8033.     /*!
  8034.     The command to execute when an object enters this trigger. Object id stored in %%obj. Maximum 1023 characters.
  8035.    
  8036.      */
  8037.     string enterCommand;
  8038.     /*!
  8039.     The command to execute when an object leaves this trigger. Object id stored in %%obj. Maximum 1023 characters.
  8040.    
  8041.      */
  8042.     string leaveCommand;
  8043.     /*!
  8044.     The command to execute while an object is inside this trigger. Maximum 1023 characters.
  8045.    
  8046.      */
  8047.     string tickCommand;
  8048.  
  8049.     /*! @name Game
  8050.     @{ */
  8051.     /*! */
  8052.     /// @}
  8053.  
  8054.  
  8055.     /*! @name Transform
  8056.     @{ */
  8057.     /*! */
  8058.     /// @}
  8059.  
  8060.  
  8061.     /*! @name Editing
  8062.     @{ */
  8063.     /*! */
  8064.     /// @}
  8065.  
  8066.  
  8067.     /*! @name Mounting
  8068.     @{ */
  8069.     /*! */
  8070.     /// @}
  8071.  
  8072.  
  8073.     /*! @name Ungrouped
  8074.     @{ */
  8075.     /*! */
  8076.     /// @}
  8077.  
  8078.  
  8079.     /*! @name Object
  8080.     @{ */
  8081.     /*! */
  8082.     /// @}
  8083.  
  8084.  
  8085.     /*! @name Editing
  8086.     @{ */
  8087.     /*! */
  8088.     /// @}
  8089.  
  8090.  
  8091.     /*! @name Persistence
  8092.     @{ */
  8093.     /*! */
  8094.     /// @}
  8095.  
  8096.  };
  8097.  
  8098.  /*!
  8099.  @brief Basic HUD clock. Displays the current simulation time offset from some base.
  8100.  @tsexample
  8101.  
  8102.   new GuiClockHud(){
  8103.     fillColor = "0.0 1.0 0.0 1.0"; // Fills with a solid green color
  8104.     frameColor = "1.0 1.0 1.0 1.0"; // Solid white frame color
  8105.     textColor = "1.0 1.0 1.0 1.0"; // Solid white text Color
  8106.     showFill = "true";
  8107.     showFrame = "true";
  8108.  };
  8109.  @endtsexample
  8110.  
  8111.  @ingroup GuiGame
  8112.   */
  8113.  class  GuiClockHud : public GuiControl {
  8114.    public:
  8115.     /*! Sets the current base time for the clock.
  8116. @param timeInSeconds Time to set the clock, in seconds (IE: 00:02 would be 120)
  8117. @tsexample
  8118. // Define the time, in seconds
  8119. %timeInSeconds = 120;
  8120.  
  8121. // Change the time on the GuiClockHud control
  8122. %guiClockHud.setTime(%timeInSeconds);
  8123. @endtsexample
  8124.  */
  8125.     virtual void setTime(( float timeInSeconds=60 )) {}
  8126.     /*! Returns the current time, in seconds.
  8127. @return timeInseconds Current time, in seconds
  8128. @tsexample
  8129. // Get the current time from the GuiClockHud control
  8130. %timeInSeconds = %guiClockHud.getTime();
  8131. @endtsexample
  8132.  */
  8133.     virtual float getTime(()) {}
  8134.  
  8135.     /*! @name Misc
  8136.     @{ */
  8137.     /*! */
  8138.     /*!
  8139.     If true, draws a background color behind the control.
  8140.    
  8141.      */
  8142.     bool showFill;
  8143.     /*!
  8144.     If true, draws a frame around the control.
  8145.    
  8146.      */
  8147.     bool showFrame;
  8148.     /*!
  8149.     Standard color for the background of the control.
  8150.    
  8151.      */
  8152.     ColorF fillColor;
  8153.     /*!
  8154.     Color for the control's frame.
  8155.    
  8156.      */
  8157.     ColorF frameColor;
  8158.     /*!
  8159.     Color for the text on this control.
  8160.    
  8161.      */
  8162.     ColorF textColor;
  8163.     /// @}
  8164.  
  8165.  
  8166.     /*! @name Layout
  8167.     @{ */
  8168.     /*! */
  8169.     /// @}
  8170.  
  8171.  
  8172.     /*! @name Control
  8173.     @{ */
  8174.     /*! */
  8175.     /// @}
  8176.  
  8177.  
  8178.     /*! @name ToolTip
  8179.     @{ */
  8180.     /*! */
  8181.     /// @}
  8182.  
  8183.  
  8184.     /*! @name Editing
  8185.     @{ */
  8186.     /*! */
  8187.     /// @}
  8188.  
  8189.  
  8190.     /*! @name Localization
  8191.     @{ */
  8192.     /*! */
  8193.     /// @}
  8194.  
  8195.  
  8196.     /*! @name Ungrouped
  8197.     @{ */
  8198.     /*! */
  8199.     /// @}
  8200.  
  8201.  
  8202.     /*! @name Object
  8203.     @{ */
  8204.     /*! */
  8205.     /// @}
  8206.  
  8207.  
  8208.     /*! @name Editing
  8209.     @{ */
  8210.     /*! */
  8211.     /// @}
  8212.  
  8213.  
  8214.     /*! @name Persistence
  8215.     @{ */
  8216.     /*! */
  8217.     /// @}
  8218.  
  8219.  };
  8220.  
  8221.  /*!
  8222.  @brief Manages timing update information for the assigned particleEmitter. Particles can be
  8223.  assigned to this emitter through the method setEmitterDataBlock(%particleEmitterDatablock).
  8224.  @ingroup FX
  8225.   */
  8226.  class  ParticleEmitterNode : public GameBase {
  8227.    public:
  8228.     /*! Assigns the datablock for this emitter.
  8229. @param datablockID Numerical reference to datablock ID
  8230. @tsexample
  8231. // Get the editor's current particle emitter
  8232. %emitter = PE_EmitterEditor.currEmitter
  8233.  
  8234. // Assign a new datablock value
  8235. %emitter.setEmitterDatablock(%emitterDatablock);
  8236. @endtsexample
  8237.  */
  8238.     virtual void setEmitterDataBlock(( ParticleEmitterData emitterDatablock=0 )) {}
  8239.     /*! Turns the emitter on or off.
  8240. @param active New emitter state
  8241.  */
  8242.     virtual void setActive(( bool active )) {}
  8243.     /*! Store current emitter in the world.
  8244.  */
  8245.     virtual void storeEmitter(()) {}
  8246.     /*! Store current emitter in the world.
  8247.  */
  8248.     virtual void clearStoredEmitters(()) {}
  8249.     /*!
  8250.     Boolean which sets and determines if this EmitterNode is active or not.
  8251.  
  8252.    
  8253.      */
  8254.     bool active;
  8255.     /*!
  8256.     Particle emitter datablock to use.
  8257.  
  8258.    
  8259.      */
  8260.     ParticleEmitterData emitter;
  8261.     /*!
  8262.     Velocity to use when spawning the particles.
  8263.  
  8264.    
  8265.      */
  8266.     float velocity;
  8267.  
  8268.     /*! @name Game
  8269.     @{ */
  8270.     /*! */
  8271.     /// @}
  8272.  
  8273.  
  8274.     /*! @name Transform
  8275.     @{ */
  8276.     /*! */
  8277.     /// @}
  8278.  
  8279.  
  8280.     /*! @name Editing
  8281.     @{ */
  8282.     /*! */
  8283.     /// @}
  8284.  
  8285.  
  8286.     /*! @name Mounting
  8287.     @{ */
  8288.     /*! */
  8289.     /// @}
  8290.  
  8291.  
  8292.     /*! @name Ungrouped
  8293.     @{ */
  8294.     /*! */
  8295.     /// @}
  8296.  
  8297.  
  8298.     /*! @name Object
  8299.     @{ */
  8300.     /*! */
  8301.     /// @}
  8302.  
  8303.  
  8304.     /*! @name Editing
  8305.     @{ */
  8306.     /*! */
  8307.     /// @}
  8308.  
  8309.  
  8310.     /*! @name Persistence
  8311.     @{ */
  8312.     /*! */
  8313.     /// @}
  8314.  
  8315.  };
  8316.  
  8317.  /*!
  8318.  @brief Defines a precipitation based storm (IE: rain, snow, etc.).
  8319.  
  8320.  @tsexample
  8321.  // The following is added to a level file (.mis) by the World Editor
  8322.  new Precipitation(TheRain) {
  8323.     dropSize = "0.5";
  8324.     splashSize = "0.5";
  8325.     splashMS = "250";
  8326.     animateSplashes = "1";
  8327.     dropAnimateMS = "0";
  8328.     fadeDist = "0";
  8329.     fadeDistEnd = "0";
  8330.     useTrueBillboards = "0";
  8331.     useLighting = "0";
  8332.     glowIntensity = "0 0 0 0";
  8333.     reflect = "0";
  8334.     rotateWithCamVel = "1";
  8335.     doCollision = "1";
  8336.     hitPlayers = "0";
  8337.     hitVehicles = "0";
  8338.     followCam = "1";
  8339.     useWind = "0";
  8340.     minSpeed = "1.5";
  8341.     maxSpeed = "2";
  8342.     minMass = "0.75";
  8343.     maxMass = "0.85";
  8344.     useTurbulence = "0";
  8345.     maxTurbulence = "0.1";
  8346.     turbulenceSpeed = "0.2";
  8347.     numDrops = "1024";
  8348.     boxWidth = "200";
  8349.     boxHeight = "100";
  8350.     dataBlock = "HeavyRain";
  8351.  };
  8352.  @endtsexample
  8353.  @ingroup FX
  8354.   */
  8355.  class  Precipitation : public GameBase {
  8356.    public:
  8357.     /*! Sets how many drops are present at once.
  8358. @tsexample
  8359. // The percentage, from 0.0f to 1.0f, of the drops to display at once.
  8360. %percentage = 0.5f;
  8361.  
  8362. // Set the percentage by calling the method.
  8363. %Precipitation.setPercentage(%percentage);
  8364. @endtsexample
  8365.  */
  8366.     virtual void setPercentage(( float percentage=1.0f )) {}
  8367.     /*! Adjusts the droplet count and overall length of the Precipitation effect.
  8368. @tsexample
  8369. // The percentage, from 0.0f to 1.0f, of the drops to display at once.
  8370. %percentage = 0.5;
  8371.  
  8372. // The length of time for the Precipitation effect to last. Will be multiplied by 1000 to get the milliseconds.
  8373. %length = 5.0;
  8374.  
  8375. // Set the percentage and time by calling the method.
  8376. %Precipitation.modifyStorm(%percentage , %length);
  8377. @endtsexample
  8378.  */
  8379.     virtual void modifyStorm(( float percentage=1.0f, float length=5.0f )) {}
  8380.     /*! This is used to smoothly change the turbulence
  8381. over a desired time period. Setting ms to zero
  8382. will cause the change to be instantaneous. Setting
  8383. max zero will disable turbulence.
  8384. @tsexample
  8385. //Set the turbulence value. Set to 0 to disable turbulence.
  8386. %turbulence = 0.5;
  8387.  
  8388. // The speed of the turbulance effect.
  8389. %speed = 5.0;
  8390.  
  8391. // The length of time for the turbulence to last. Will be multiplied by 1000 to get the milliseconds.
  8392. %seconds = 5.0;
  8393.  
  8394. // Set the percentage and time by calling the method.
  8395. %Precipitation.setTurbulence(%turbulence , %speed , %seconds);
  8396. @endtsexample
  8397.  */
  8398.     virtual void setTurbulence(( float max=1.0f, float speed=5.0f, float seconds=5.0 )) {}
  8399.  
  8400.     /*! @name Precipitation
  8401.     @{ */
  8402.     /*! */
  8403.     /*!
  8404.     Number of drops allowed to exists in the precipitation box at any one time.
  8405.    
  8406.      */
  8407.     int numDrops;
  8408.     /*!
  8409.     Width of precipitation box.
  8410.    
  8411.      */
  8412.     float boxWidth;
  8413.     /*!
  8414.     Height of precipitation box.
  8415.    
  8416.      */
  8417.     float boxHeight;
  8418.     /// @}
  8419.  
  8420.  
  8421.     /*! @name Rendering
  8422.     @{ */
  8423.     /*! */
  8424.     /*!
  8425.     Size of each drop of precipitation. This will scale the texture.
  8426.    
  8427.      */
  8428.     float dropSize;
  8429.     /*!
  8430.     Size of each splash animation for when a drop collides.
  8431.    
  8432.      */
  8433.     float splashSize;
  8434.     /*!
  8435.     Life of splashes in milliseconds.
  8436.    
  8437.      */
  8438.     int splashMS;
  8439.     /*!
  8440.     Check to enable splash animation on collision.
  8441.    
  8442.      */
  8443.     bool animateSplashes;
  8444.     /*!
  8445.     If greater than zero, will animate the drops from the frames in the texture.
  8446.    
  8447.      */
  8448.     int dropAnimateMS;
  8449.     /*!
  8450.     The distance at which fading of the drops begins.
  8451.    
  8452.      */
  8453.     float fadeDist;
  8454.     /*!
  8455.     The distance at which fading of the particles ends.
  8456.    
  8457.      */
  8458.     float fadeDistEnd;
  8459.     /*!
  8460.     Check to make drops true (non axis-aligned) billboards.
  8461.    
  8462.      */
  8463.     bool useTrueBillboards;
  8464.     /*!
  8465.     Check to enable shading of the drops and splashes by the sun color.
  8466.    
  8467.      */
  8468.     bool useLighting;
  8469.     /*!
  8470.     Set to 0 to disable the glow or or use it to control the intensity of each channel.
  8471.    
  8472.      */
  8473.     ColorF glowIntensity;
  8474.     /*!
  8475.     This enables the precipitation to be rendered during reflection passes. This is expensive.
  8476.    
  8477.      */
  8478.     bool reflect;
  8479.     /*!
  8480.     Enables drops to rotate to face camera.
  8481.    
  8482.      */
  8483.     bool rotateWithCamVel;
  8484.     /// @}
  8485.  
  8486.  
  8487.     /*! @name Collision
  8488.     @{ */
  8489.     /*! */
  8490.     /*!
  8491.     Allow collision with world objects.
  8492.    
  8493.      */
  8494.     bool doCollision;
  8495.     /*!
  8496.     Allow collision on player objects.
  8497.    
  8498.      */
  8499.     bool hitPlayers;
  8500.     /*!
  8501.     Allow collision on vehicles.
  8502.    
  8503.      */
  8504.     bool hitVehicles;
  8505.     /// @}
  8506.  
  8507.  
  8508.     /*! @name Movement
  8509.     @{ */
  8510.     /*! */
  8511.     /*!
  8512.     Enables system to follow the camera or stay where it is placed.
  8513.    
  8514.      */
  8515.     bool followCam;
  8516.     /*!
  8517.     Check to have the Sky property windSpeed affect precipitation.
  8518.    
  8519.      */
  8520.     bool useWind;
  8521.     /*!
  8522.     Minimum speed that a drop will fall.
  8523.    
  8524.      */
  8525.     float minSpeed;
  8526.     /*!
  8527.     Maximum speed that a drop will fall.
  8528.    
  8529.      */
  8530.     float maxSpeed;
  8531.     /*!
  8532.     Minimum mass of a drop.
  8533.    
  8534.      */
  8535.     float minMass;
  8536.     /*!
  8537.     Maximum mass of a drop.
  8538.    
  8539.      */
  8540.     float maxMass;
  8541.     /// @}
  8542.  
  8543.  
  8544.     /*! @name Turbulence
  8545.     @{ */
  8546.     /*! */
  8547.     /*!
  8548.     Check to enable turbulence. This causes precipitation drops to spiral while falling.
  8549.    
  8550.      */
  8551.     bool useTurbulence;
  8552.     /*!
  8553.     Radius at which precipitation drops spiral when turbulence is enabled.
  8554.    
  8555.      */
  8556.     float maxTurbulence;
  8557.     /*!
  8558.     Speed at which precipitation drops spiral when turbulence is enabled.
  8559.    
  8560.      */
  8561.     float turbulenceSpeed;
  8562.     /// @}
  8563.  
  8564.  
  8565.     /*! @name Game
  8566.     @{ */
  8567.     /*! */
  8568.     /// @}
  8569.  
  8570.  
  8571.     /*! @name Transform
  8572.     @{ */
  8573.     /*! */
  8574.     /// @}
  8575.  
  8576.  
  8577.     /*! @name Editing
  8578.     @{ */
  8579.     /*! */
  8580.     /// @}
  8581.  
  8582.  
  8583.     /*! @name Mounting
  8584.     @{ */
  8585.     /*! */
  8586.     /// @}
  8587.  
  8588.  
  8589.     /*! @name Ungrouped
  8590.     @{ */
  8591.     /*! */
  8592.     /// @}
  8593.  
  8594.  
  8595.     /*! @name Object
  8596.     @{ */
  8597.     /*! */
  8598.     /// @}
  8599.  
  8600.  
  8601.     /*! @name Editing
  8602.     @{ */
  8603.     /*! */
  8604.     /// @}
  8605.  
  8606.  
  8607.     /*! @name Persistence
  8608.     @{ */
  8609.     /*! */
  8610.     /// @}
  8611.  
  8612.  };
  8613.  
  8614.  /*!
  8615.  @brief Defines the properties of a type of PhysicsDebrisData.
  8616.  
  8617.  @see PhysicsDebris.
  8618.   */
  8619.  class  PhysicsDebrisData : public GameBaseData {
  8620.    public:
  8621.     virtual void preload() {}
  8622.  
  8623.     /*! @name Display
  8624.     @{ */
  8625.     /*! */
  8626.     /*!
  8627.     Path to the shape file.
  8628.    
  8629.      */
  8630.     filename shapeFile;
  8631.     /*!
  8632.     Enable/Disable rendering into shadows.
  8633.    
  8634.      */
  8635.     bool castShadows;
  8636.     /// @}
  8637.  
  8638.  
  8639.     /*! @name Physical Properties
  8640.     @{ */
  8641.     /*! */
  8642.     /*!
  8643.     Base time in seconds that debris persists after time of creation.
  8644.    
  8645.      */
  8646.     float lifetime;
  8647.     /*!
  8648.     Range of variation randomly applied to lifetime when debris is created.
  8649.    
  8650.      */
  8651.     float lifetimeVariance;
  8652.     /*!
  8653.     Mass of each physical body.
  8654.    
  8655.      */
  8656.     float mass;
  8657.     /*!
  8658.     Friction of each physical body, slowing motion when in contact with a surface.
  8659.    
  8660.      */
  8661.     float friction;
  8662.     /*!
  8663.     Friction of each physical body, resisting motion when starting at rest.
  8664.    
  8665.      */
  8666.     float staticFriction;
  8667.     /*!
  8668.     Bounciness of each physical body in response to collisions.  Normal range is zero to one.
  8669.    
  8670.      */
  8671.     float restitution;
  8672.     /*!
  8673.     Larger values cause linear velocity to decay over time more quickly
  8674.    
  8675.      */
  8676.     float linearDamping;
  8677.     /*!
  8678.     Larger values cause rotational velocity to decay over time more quickly.
  8679.    
  8680.      */
  8681.     float angularDamping;
  8682.     /*!
  8683.     Linear velocity threshold below which the shape may be put to sleep to save simulation time.
  8684.    
  8685.      */
  8686.     float linearSleepThreshold;
  8687.     /*!
  8688.     Angular velocity threshold below which the shape may be put to sleep to save simulation time.
  8689.    
  8690.      */
  8691.     float angularSleepThreshold;
  8692.     /*!
  8693.     While the shape is in water linear and angular dampening will be scaled by this value. It is expected that this value will usually be greater than one.
  8694.    
  8695.      */
  8696.     float waterDampingScale;
  8697.     /*!
  8698.     The density of this shape for purposes of calculating buoyancy forces. The result of a particular value is relative to the density of the WaterObject it is within.
  8699.    
  8700.      */
  8701.     float buoyancyDensity;
  8702.     /// @}
  8703.  
  8704.  
  8705.     /*! @name Scripting
  8706.     @{ */
  8707.     /*! */
  8708.     /// @}
  8709.  
  8710.  
  8711.     /*! @name Ungrouped
  8712.     @{ */
  8713.     /*! */
  8714.     /// @}
  8715.  
  8716.  
  8717.     /*! @name Object
  8718.     @{ */
  8719.     /*! */
  8720.     /// @}
  8721.  
  8722.  
  8723.     /*! @name Editing
  8724.     @{ */
  8725.     /*! */
  8726.     /// @}
  8727.  
  8728.  
  8729.     /*! @name Persistence
  8730.     @{ */
  8731.     /*! */
  8732.     /// @}
  8733.  
  8734.  };
  8735.  
  8736.  /*!
  8737.  @brief Represents a destructible physical object simulated through the plugin system.
  8738.  
  8739.  @see PhysicsShapeData.
  8740.   */
  8741.  class  PhysicsShape : public GameBase {
  8742.    public:
  8743.     /*! Returns true if the shape is currently destroyed. */
  8744.     virtual bool isDestroyed(()) {}
  8745.     /*! Disables rendering and physical simulation of the shape and spawns the explosion, debri, and destroyedShape if any are specified. Note that this does not actually delete the PhysicsShape. */
  8746.     virtual void destroy(()) {}
  8747.     /*! Restore to un-destroyed state: enables rendering and physical simulation. */
  8748.     virtual void restore(()) {}
  8749.  
  8750.     /*! @name PhysicsShape
  8751.     @{ */
  8752.     /*! */
  8753.     /*!
  8754.     Enables automatic playing of the animation named "ambient" (if it exists) when the PhysicsShape is loaded.
  8755.    
  8756.      */
  8757.     bool playAmbient;
  8758.     /// @}
  8759.  
  8760.  
  8761.     /*! @name Game
  8762.     @{ */
  8763.     /*! */
  8764.     /// @}
  8765.  
  8766.  
  8767.     /*! @name Transform
  8768.     @{ */
  8769.     /*! */
  8770.     /// @}
  8771.  
  8772.  
  8773.     /*! @name Editing
  8774.     @{ */
  8775.     /*! */
  8776.     /// @}
  8777.  
  8778.  
  8779.     /*! @name Mounting
  8780.     @{ */
  8781.     /*! */
  8782.     /// @}
  8783.  
  8784.  
  8785.     /*! @name Ungrouped
  8786.     @{ */
  8787.     /*! */
  8788.     /// @}
  8789.  
  8790.  
  8791.     /*! @name Object
  8792.     @{ */
  8793.     /*! */
  8794.     /// @}
  8795.  
  8796.  
  8797.     /*! @name Editing
  8798.     @{ */
  8799.     /*! */
  8800.     /// @}
  8801.  
  8802.  
  8803.     /*! @name Persistence
  8804.     @{ */
  8805.     /*! */
  8806.     /// @}
  8807.  
  8808.  };
  8809.  
  8810.  /*!
  8811.  @brief An invisible 3D object that emits sound.
  8812.  
  8813.  Sound emitters are used to place sounds in the level.  They are full 3D objects with their own position and orientation and when assigned 3D sounds, the transform and velocity of the sound emitter object will be applied to the 3D sound.
  8814.  
  8815.  Sound emitters can be set up of in either of two ways:
  8816.  <ul>
  8817.  <li><p>By assigning an existing SFXTrack to the emitter's #track property.</p>
  8818.  <p>In this case the general sound setup (3D, streaming, looping, etc.) will be taken from #track.  However, the emitter's own properties will still override their corresponding properties in the #track's SFXDescription.</p></li>
  8819.  <li><p>By directly assigning a sound file to the emitter's #fileName property.</p>
  8820.  <p>In this case, the sound file will be set up for playback according to the properties defined on the emitter.</p>
  8821.  </ul>
  8822.  
  8823.  Using #playOnAdd emitters can be configured to start playing immediately when they are added to the system (e.g. when the level objects are loaded from the mission file).
  8824.  
  8825.  @note A sound emitter need not necessarily emit a 3D sound.  Instead, sound emitters may also be used to play non-positional sounds.  For placing background audio to a level, however, it is usually easier to use LevelInfo::soundAmbience.
  8826.  
  8827.  @section SFXEmitter_networking Sound Emitters and Networking
  8828.  
  8829.  It is important to be aware of the fact that sounds will only play client-side whereas SFXEmitter objects are server-side entities.  This means that a server-side object has no connection to the actual sound playing on the client.  It is thus not possible for the server-object to perform queries about playback status and other source-related properties as these may in fact differ from client to client.
  8830.  
  8831.  @ingroup SFX
  8832.   */
  8833.  class  SFXEmitter : public SceneObject {
  8834.    public:
  8835.     /*! Manually start playback of the emitter's sound.
  8836. If this is called on the server-side object, the play command will be related to all client-side ghosts.
  8837.  */
  8838.     virtual void play(()) {}
  8839.     /*! Manually stop playback of the emitter's sound.
  8840. If this is called on the server-side object, the stop command will be related to all client-side ghosts.
  8841.  */
  8842.     virtual void stop(()) {}
  8843.     /*! Get the sound source object from the emitter.
  8844.  
  8845. @return The sound source used by the emitter or null.@note This method will return null when called on the server-side SFXEmitter object.  Only client-side ghosts actually hold on to %SFXSources.
  8846.  
  8847.  */
  8848.     virtual string getSource(()) {}
  8849.  
  8850.     /*! @name Media
  8851.     @{ */
  8852.     /*! */
  8853.     /*!
  8854.     The track which the emitter should play.
  8855. @note If assigned, this field will take precedence over a #fileName that may also be assigned to the emitter.
  8856.    
  8857.      */
  8858.     SFXTrack track;
  8859.     /*!
  8860.     The sound file to play.
  8861. Use @b either this property @b or #track.  If both are assigned, #track takes precendence.  The primary purpose of this field is to avoid the need for the user to define SFXTrack datablocks for all sounds used in a level.
  8862.    
  8863.      */
  8864.     filename fileName;
  8865.     /// @}
  8866.  
  8867.  
  8868.     /*! @name Sound
  8869.     @{ */
  8870.     /*! */
  8871.     /*!
  8872.     Whether playback of the emitter's sound should start as soon as the emitter object is added to the level.
  8873. If this is true, the emitter will immediately start to play when the level is loaded.
  8874.    
  8875.      */
  8876.     bool playOnAdd;
  8877.     /*!
  8878.     If this is true, all fields except for #playOnAdd and #track are ignored on the emitter object.
  8879. This is useful to prevent fields in the #track's description from being overridden by emitter fields.
  8880.    
  8881.      */
  8882.     bool useTrackDescriptionOnly;
  8883.     /*!
  8884.     Whether to play #fileName in an infinite loop.
  8885. If a #track is assigned, the value of this field is ignored.
  8886. @see SFXDescription::isLooping
  8887.    
  8888.      */
  8889.     bool isLooping;
  8890.     /*!
  8891.     Whether to use streamed playback for #fileName.
  8892. If a #track is assigned, the value of this field is ignored.
  8893. @see SFXDescription::isStreaming
  8894.  
  8895. @ref SFX_streaming
  8896.    
  8897.      */
  8898.     bool isStreaming;
  8899.     /*!
  8900.     The SFXSource to which to assign the sound of this emitter as a child.
  8901. @note This field is ignored if #useTrackDescriptionOnly is true.
  8902.  
  8903. @see SFXDescription::sourceGroup
  8904.    
  8905.      */
  8906.     SFXSource sourceGroup;
  8907.     /*!
  8908.     Volume level to apply to the sound.
  8909. @note This field is ignored if #useTrackDescriptionOnly is true.
  8910.  
  8911. @see SFXDescription::volume
  8912.    
  8913.      */
  8914.     float volume;
  8915.     /*!
  8916.     Pitch shift to apply to the sound.  Default is 1 = play at normal speed.
  8917. @note This field is ignored if #useTrackDescriptionOnly is true.
  8918.  
  8919. @see SFXDescription::pitch
  8920.    
  8921.      */
  8922.     float pitch;
  8923.     /*!
  8924.     Number of seconds to gradually fade in volume from zero when playback starts.
  8925. @note This field is ignored if #useTrackDescriptionOnly is true.
  8926.  
  8927. @see SFXDescription::fadeInTime
  8928.    
  8929.      */
  8930.     float fadeInTime;
  8931.     /*!
  8932.     Number of seconds to gradually fade out volume down to zero when playback is stopped or paused.
  8933. @note This field is ignored if #useTrackDescriptionOnly is true.
  8934.  
  8935. @see SFXDescription::fadeOutTime
  8936.    
  8937.      */
  8938.     float fadeOutTime;
  8939.     /// @}
  8940.  
  8941.  
  8942.     /*! @name 3D Sound
  8943.     @{ */
  8944.     /*! */
  8945.     /*!
  8946.     Whether to play #fileName as a positional (3D) sound or not.
  8947. If a #track is assigned, the value of this field is ignored.
  8948.  
  8949. @see SFXDescription::is3D
  8950.    
  8951.      */
  8952.     bool is3D;
  8953.     /*!
  8954.     Distance at which to start volume attenuation of the 3D sound.
  8955. @note This field is ignored if #useTrackDescriptionOnly is true.
  8956.  
  8957. @see SFXDescription::referenceDistance
  8958.    
  8959.      */
  8960.     float referenceDistance;
  8961.     /*!
  8962.     Distance at which to stop volume attenuation of the 3D sound.
  8963. @note This field is ignored if #useTrackDescriptionOnly is true.
  8964.  
  8965. @see SFXDescription::maxDistance
  8966.    
  8967.      */
  8968.     float maxDistance;
  8969.     /*!
  8970.     Bounds on random offset to apply to initial 3D sound position.
  8971. @note This field is ignored if #useTrackDescriptionOnly is true.
  8972.  
  8973. @see SFXDescription::scatterDistance
  8974.    
  8975.      */
  8976.     Point3F scatterDistance;
  8977.     /*!
  8978.     Angle of inner volume cone of 3D sound in degrees.
  8979. @note This field is ignored if #useTrackDescriptionOnly is true.
  8980.  
  8981. @see SFXDescription::coneInsideAngle
  8982.    
  8983.      */
  8984.     int coneInsideAngle;
  8985.     /*!
  8986.     Angle of outer volume cone of 3D sound in degrees
  8987. @note This field is ignored if #useTrackDescriptionOnly is true.
  8988.  
  8989. @see SFXDescription::coneOutsideAngle
  8990.    
  8991.      */
  8992.     int coneOutsideAngle;
  8993.     /*!
  8994.     Volume scale factor of outside of outer volume 3D sound cone.
  8995. @note This field is ignored if #useTrackDescriptionOnly is true.
  8996.  
  8997. @see SFXDescription::coneOutsideVolume
  8998.    
  8999.      */
  9000.     float coneOutsideVolume;
  9001.     /// @}
  9002.  
  9003.  
  9004.     /*! @name Transform
  9005.     @{ */
  9006.     /*! */
  9007.     /// @}
  9008.  
  9009.  
  9010.     /*! @name Editing
  9011.     @{ */
  9012.     /*! */
  9013.     /// @}
  9014.  
  9015.  
  9016.     /*! @name Mounting
  9017.     @{ */
  9018.     /*! */
  9019.     /// @}
  9020.  
  9021.  
  9022.     /*! @name Ungrouped
  9023.     @{ */
  9024.     /*! */
  9025.     /// @}
  9026.  
  9027.  
  9028.     /*! @name Object
  9029.     @{ */
  9030.     /*! */
  9031.     /// @}
  9032.  
  9033.  
  9034.     /*! @name Editing
  9035.     @{ */
  9036.     /*! */
  9037.     /// @}
  9038.  
  9039.  
  9040.     /*! @name Persistence
  9041.     @{ */
  9042.     /*! */
  9043.     /// @}
  9044.  
  9045.  };
  9046.  
  9047.  class  Horse : public Vehicle {
  9048.    public:
  9049.     virtual void setThreadPos(( float pos )) {}
  9050.     virtual void animate(( int animation )) {}
  9051.     /*! @brief Get the name of the player's current state.
  9052.  
  9053. The state is one of the following:
  9054.  
  9055. <ul><li>Dead - The Player is dead.</li><li>Mounted - The Player is mounted to an object such as a vehicle.</li><li>Move - The Player is free to move.  The usual state.</li></ul>
  9056. @return The current state; one of: "Dead", "Mounted", "Move"
  9057.  */
  9058.     virtual string getState(()) {}
  9059.  
  9060.     /*! @name Game
  9061.     @{ */
  9062.     /*! */
  9063.     /// @}
  9064.  
  9065.  
  9066.     /*! @name Transform
  9067.     @{ */
  9068.     /*! */
  9069.     /// @}
  9070.  
  9071.  
  9072.     /*! @name Editing
  9073.     @{ */
  9074.     /*! */
  9075.     /// @}
  9076.  
  9077.  
  9078.     /*! @name Mounting
  9079.     @{ */
  9080.     /*! */
  9081.     /// @}
  9082.  
  9083.  
  9084.     /*! @name Ungrouped
  9085.     @{ */
  9086.     /*! */
  9087.     /// @}
  9088.  
  9089.  
  9090.     /*! @name Object
  9091.     @{ */
  9092.     /*! */
  9093.     /// @}
  9094.  
  9095.  
  9096.     /*! @name Editing
  9097.     @{ */
  9098.     /*! */
  9099.     /// @}
  9100.  
  9101.  
  9102.     /*! @name Persistence
  9103.     @{ */
  9104.     /*! */
  9105.     /// @}
  9106.  
  9107.  };
  9108.  
  9109.  /*!
  9110.  @brief A 3rd person camera object.
  9111.  
  9112.  @ingroup afxMisc
  9113.  @ingroup AFX
  9114.   */
  9115.  class  afxCamera : public ShapeBase {
  9116.    public:
  9117.     /*! Set the camera to orbit around some given object.
  9118.  
  9119. @param   orbitObject  Object we want to orbit.
  9120. @param   mat          A set of fields: posX posY posZ aaX aaY aaZ aaTheta
  9121. @param   minDistance  Minimum distance to keep from object.
  9122. @param   maxDistance  Maximum distance to keep from object.
  9123. @param   curDistance  Distance to set initially from object.
  9124. @param   ownClientObj Are we observing an object owned by us? */
  9125.     virtual void setOrbitMode((GameBase orbitObject, transform mat, float minDistance, float maxDistance, float curDistance, bool ownClientObject)) {}
  9126.     /*! Set the camera to be able to fly freely. */
  9127.     virtual void setFlyMode(()) {}
  9128.     /*! Get the position of the camera.
  9129.  
  9130. @returns A string of form "x y z". */
  9131.     virtual string getPosition(()) {}
  9132.     virtual bool setCameraSubject() {}
  9133.     virtual bool setThirdPersonDistance() {}
  9134.     virtual float getThirdPersonDistance() {}
  9135.     virtual bool setThirdPersonAngle() {}
  9136.     virtual float getThirdPersonAngle() {}
  9137.     virtual void setThirdPersonOffset((Point3F offset [, Point3f coi_offset])) {}
  9138.     virtual string getThirdPersonOffset(()) {}
  9139.     virtual string getThirdPersonCOIOffset(()) {}
  9140.     virtual void setThirdPersonMode(()) {}
  9141.     virtual void setThirdPersonSnap(()) {}
  9142.     virtual string getMode(()) {}
  9143.  
  9144.     /*! @name Game
  9145.     @{ */
  9146.     /*! */
  9147.     /// @}
  9148.  
  9149.  
  9150.     /*! @name Transform
  9151.     @{ */
  9152.     /*! */
  9153.     /// @}
  9154.  
  9155.  
  9156.     /*! @name Editing
  9157.     @{ */
  9158.     /*! */
  9159.     /// @}
  9160.  
  9161.  
  9162.     /*! @name Mounting
  9163.     @{ */
  9164.     /*! */
  9165.     /// @}
  9166.  
  9167.  
  9168.     /*! @name Ungrouped
  9169.     @{ */
  9170.     /*! */
  9171.     /// @}
  9172.  
  9173.  
  9174.     /*! @name Object
  9175.     @{ */
  9176.     /*! */
  9177.     /// @}
  9178.  
  9179.  
  9180.     /*! @name Editing
  9181.     @{ */
  9182.     /*! */
  9183.     /// @}
  9184.  
  9185.  
  9186.     /*! @name Persistence
  9187.     @{ */
  9188.     /*! */
  9189.     /// @}
  9190.  
  9191.  };
  9192.  
  9193.  /*!
  9194.  @brief Base class used by choreographers.
  9195.  
  9196.  @ingroup afxChoreographers
  9197.  @ingroup AFX
  9198.   */
  9199.  class  afxChoreographer : public GameBase {
  9200.    public:
  9201.     /*! Set a ranking value (0-255) for the choreographer.
  9202.  */
  9203.     virtual void setRanking(( unsigned int ranking )) {}
  9204.     /*! Set a level-of-detail value (0-255) for the choreographer.
  9205.  */
  9206.     virtual void setLevelOfDetail(( unsigned int lod )) {}
  9207.     /*! Set a bitmask to specifiy the state of exec-conditions.
  9208.  */
  9209.     virtual void setExecConditions(( int mask )) {}
  9210.     /*! Add a dynamic constraint consistiing of a source and name. The source can be a SceneObject, a 3-valued position, or a 7-valued transform.
  9211.  */
  9212.     virtual void addConstraint(( string source, string name )) {}
  9213.     /*! Add an explicit client.
  9214.  */
  9215.     virtual void addExplicitClient(( NetConnection client )) {}
  9216.     /*! Set a bit of the trigger-mask.
  9217.  */
  9218.     virtual void setTriggerBit(( int bit_num )) {}
  9219.     /*! Unset a bit of the trigger-mask.
  9220.  */
  9221.     virtual void clearTriggerBit(( int bit_num )) {}
  9222.     /*! Test state of a trigger-mask bit.
  9223.  */
  9224.     virtual bool testTriggerBit(( int bit_num )) {}
  9225.     /*! Remap a dynamic constraint to use a new source. The source can be a SceneObject, a 3-valued position, or a 7-valued transform. but must match type of existing source.
  9226.  */
  9227.     virtual void remapConstraint(( string source, string name )) {}
  9228.     /*!
  9229.     ...
  9230.    
  9231.      */
  9232.     SimObject extra;
  9233.     /*!
  9234.     ...
  9235.    
  9236.      */
  9237.     bool postponeActivation;
  9238.  
  9239.     /*! @name Game
  9240.     @{ */
  9241.     /*! */
  9242.     /// @}
  9243.  
  9244.  
  9245.     /*! @name Transform
  9246.     @{ */
  9247.     /*! */
  9248.     /// @}
  9249.  
  9250.  
  9251.     /*! @name Editing
  9252.     @{ */
  9253.     /*! */
  9254.     /// @}
  9255.  
  9256.  
  9257.     /*! @name Mounting
  9258.     @{ */
  9259.     /*! */
  9260.     /// @}
  9261.  
  9262.  
  9263.     /*! @name Ungrouped
  9264.     @{ */
  9265.     /*! */
  9266.     /// @}
  9267.  
  9268.  
  9269.     /*! @name Object
  9270.     @{ */
  9271.     /*! */
  9272.     /// @}
  9273.  
  9274.  
  9275.     /*! @name Editing
  9276.     @{ */
  9277.     /*! */
  9278.     /// @}
  9279.  
  9280.  
  9281.     /*! @name Persistence
  9282.     @{ */
  9283.     /*! */
  9284.     /// @}
  9285.  
  9286.  };
  9287.  
  9288.  /*!
  9289.  @brief A datablock that describes an Effect Group.
  9290.  
  9291.  afxEffectGroupData provides a way for adding several effects to a choreographer as a group and can be used wherever an afxEffectWrapperData is used. Basically, an effect-group is a simple list of effect-wrappers. When an effect-group is added to a choreographer, the end result is almost the same as adding all of the group's effect-wrappers directly to the choreographer. The main difference is that the grouped effects can be turned on and off collectively and created in multiples. Effect-groups can also contain other effect-groups, forming a hierarchy of effects.
  9292.  
  9293.  A great strength of effect-groups is that they have a count setting that multiplies the number of times the effects in the group are added to the owning choreographer and this doesn't happen until the choreographer instance is created and launched. This makes a big difference for certain kinds of effects, such as fireworks, that tend to consist of small groupings of effects that are repeated many times with slight variations. With groups, an effect like this has a very compact representation for transmitting from server to clients, that only expands when actually used.
  9294.  
  9295.  Effect-groups with a count greater than one are extremely useful when some of the effects use field substitutions. When an effect-group is expanded, it essentially runs through a for-loop from 0 to count-1 and creates a new set of effect instances each time through the loop. For each new set of effects, their group-index is set to the index of this for-loop, which in turn replaces the ## token used in any field substitutions in the child effects. In essence, the for-loop index becomes a parameter of the child effects which can be used to vary the effects created in each loop.
  9296.  
  9297.  @see afxEffectBaseData
  9298.  
  9299.  @see afxEffectWrapperData
  9300.  
  9301.  @ingroup afxEffects
  9302.  @ingroup AFX
  9303.  @ingroup Datablocks
  9304.   */
  9305.  class  afxEffectGroupData : public afxEffectBaseData {
  9306.    public:
  9307.     /*! Resets an effect-group datablock during reload.
  9308.  
  9309. @ingroup AFX */
  9310.     virtual void reset(()) {}
  9311.     /*! Adds an effect (wrapper or group) to an effect-group.
  9312.  
  9313. @ingroup AFX */
  9314.     virtual void addEffect(( afxEffectBaseData effect )) {}
  9315.     /*!
  9316.     ...
  9317.    
  9318.      */
  9319.     bool groupEnabled;
  9320.     /*!
  9321.     ...
  9322.    
  9323.      */
  9324.     int count;
  9325.     /*!
  9326.     ...
  9327.    
  9328.      */
  9329.     char indexOffset;
  9330.     /*!
  9331.     ...
  9332.    
  9333.      */
  9334.     bool assignIndices;
  9335.     /*!
  9336.     ...
  9337.    
  9338.      */
  9339.     float delay;
  9340.     /*!
  9341.     ...
  9342.    
  9343.      */
  9344.     float lifetime;
  9345.     /*!
  9346.     ...
  9347.    
  9348.      */
  9349.     float fadeInTime;
  9350.     /*!
  9351.     ...
  9352.    
  9353.      */
  9354.     float fadeOutTime;
  9355.     /*!
  9356.     ...
  9357.    
  9358.      */
  9359.     afxEffectBaseData addEffect;
  9360.  
  9361.     /*! @name Scripting
  9362.     @{ */
  9363.     /*! */
  9364.     /// @}
  9365.  
  9366.  
  9367.     /*! @name Ungrouped
  9368.     @{ */
  9369.     /*! */
  9370.     /// @}
  9371.  
  9372.  
  9373.     /*! @name Object
  9374.     @{ */
  9375.     /*! */
  9376.     /// @}
  9377.  
  9378.  
  9379.     /*! @name Editing
  9380.     @{ */
  9381.     /*! */
  9382.     /// @}
  9383.  
  9384.  
  9385.     /*! @name Persistence
  9386.     @{ */
  9387.     /*! */
  9388.     /// @}
  9389.  
  9390.  };
  9391.  
  9392.  /*!
  9393.  @brief Defines the properties of an afxEffectron.
  9394.  
  9395.  @ingroup afxChoreographers
  9396.  @ingroup AFX
  9397.  @ingroup Datablocks
  9398.   */
  9399.  class  afxEffectronData : public afxChoreographerData {
  9400.    public:
  9401.     /*! Resets an effectron datablock during reload.
  9402.  
  9403. @ingroup AFX */
  9404.     virtual void reset(()) {}
  9405.     /*! Adds an effect (wrapper or group) to an effectron's phase.
  9406.  
  9407. @ingroup AFX */
  9408.     virtual void addEffect(( afxEffectBaseData effect )) {}
  9409.     /*!
  9410.     ...
  9411.    
  9412.      */
  9413.     float Duration;
  9414.     /*!
  9415.     ...
  9416.    
  9417.      */
  9418.     int numLoops;
  9419.     /*!
  9420.     ...
  9421.    
  9422.      */
  9423.     afxEffectBaseData addEffect;
  9424.  
  9425.     /*! @name Scripting
  9426.     @{ */
  9427.     /*! */
  9428.     /// @}
  9429.  
  9430.  
  9431.     /*! @name Ungrouped
  9432.     @{ */
  9433.     /*! */
  9434.     /// @}
  9435.  
  9436.  
  9437.     /*! @name Object
  9438.     @{ */
  9439.     /*! */
  9440.     /// @}
  9441.  
  9442.  
  9443.     /*! @name Editing
  9444.     @{ */
  9445.     /*! */
  9446.     /// @}
  9447.  
  9448.  
  9449.     /*! @name Persistence
  9450.     @{ */
  9451.     /*! */
  9452.     /// @}
  9453.  
  9454.  };
  9455.  
  9456.  /*!
  9457.  @brief A basic effects choreographer.
  9458.  
  9459.  @ingroup afxChoreographers
  9460.  @ingroup AFX
  9461.   */
  9462.  class  afxEffectron : public afxChoreographer {
  9463.    public:
  9464.     /*! Sets the time-factor for the effectron.
  9465.  
  9466. @ingroup AFX */
  9467.     virtual void setTimeFactor(( float factor )) {}
  9468.     /*! Interrupts and deletes a running effectron.
  9469.  
  9470. @ingroup AFX */
  9471.     virtual void interrupt(()) {}
  9472.     /*! Activates an effectron that was started with postponeActivation=true.
  9473.  
  9474. @ingroup AFX */
  9475.     virtual void activate(()) {}
  9476.  
  9477.     /*! @name Game
  9478.     @{ */
  9479.     /*! */
  9480.     /// @}
  9481.  
  9482.  
  9483.     /*! @name Transform
  9484.     @{ */
  9485.     /*! */
  9486.     /// @}
  9487.  
  9488.  
  9489.     /*! @name Editing
  9490.     @{ */
  9491.     /*! */
  9492.     /// @}
  9493.  
  9494.  
  9495.     /*! @name Mounting
  9496.     @{ */
  9497.     /*! */
  9498.     /// @}
  9499.  
  9500.  
  9501.     /*! @name Ungrouped
  9502.     @{ */
  9503.     /*! */
  9504.     /// @}
  9505.  
  9506.  
  9507.     /*! @name Object
  9508.     @{ */
  9509.     /*! */
  9510.     /// @}
  9511.  
  9512.  
  9513.     /*! @name Editing
  9514.     @{ */
  9515.     /*! */
  9516.     /// @}
  9517.  
  9518.  
  9519.     /*! @name Persistence
  9520.     @{ */
  9521.     /*! */
  9522.     /// @}
  9523.  
  9524.  };
  9525.  
  9526.  /*!
  9527.  @brief Magic-missile class used internally by afxMagicSpell. Properties of individual missile types are defined using afxMagicMissileData.
  9528.  @ingroup AFX
  9529.   */
  9530.  class  afxMagicMissile : public GameBase {
  9531.    public:
  9532.     /*! Set the starting velocity-vector for a magic-missile.
  9533.  
  9534. @ingroup AFX */
  9535.     virtual void setStartingVelocityVector(( Point3F velocityVec )) {}
  9536.     /*! Set the starting velocity for a magic-missile.
  9537.  
  9538. @ingroup AFX */
  9539.     virtual void setStartingVelocity(( float velocity )) {}
  9540.  
  9541.     /*! @name Physics
  9542.     @{ */
  9543.     /*! */
  9544.     /*!
  9545.     Initial starting position for this missile.
  9546.    
  9547.      */
  9548.     Point3F initialPosition;
  9549.     /*!
  9550.     Initial starting velocity for this missile.
  9551.    
  9552.      */
  9553.     Point3F initialVelocity;
  9554.     /// @}
  9555.  
  9556.  
  9557.     /*! @name Game
  9558.     @{ */
  9559.     /*! */
  9560.     /// @}
  9561.  
  9562.  
  9563.     /*! @name Transform
  9564.     @{ */
  9565.     /*! */
  9566.     /// @}
  9567.  
  9568.  
  9569.     /*! @name Editing
  9570.     @{ */
  9571.     /*! */
  9572.     /// @}
  9573.  
  9574.  
  9575.     /*! @name Mounting
  9576.     @{ */
  9577.     /*! */
  9578.     /// @}
  9579.  
  9580.  
  9581.     /*! @name Ungrouped
  9582.     @{ */
  9583.     /*! */
  9584.     /// @}
  9585.  
  9586.  
  9587.     /*! @name Object
  9588.     @{ */
  9589.     /*! */
  9590.     /// @}
  9591.  
  9592.  
  9593.     /*! @name Editing
  9594.     @{ */
  9595.     /*! */
  9596.     /// @}
  9597.  
  9598.  
  9599.     /*! @name Persistence
  9600.     @{ */
  9601.     /*! */
  9602.     /// @}
  9603.  
  9604.  };
  9605.  
  9606.  /*!
  9607.  @brief Defines the properties of an afxMagicSpell.
  9608.  
  9609.  @ingroup afxChoreographers
  9610.  @ingroup AFX
  9611.  @ingroup Datablocks
  9612.   */
  9613.  class  afxMagicSpellData : public afxChoreographerData {
  9614.    public:
  9615.        /*! Called when the spell deals damage.
  9616. @param spell the spell object
  9617.  */
  9618.        void onDamage( afxMagicSpell spell, string label, string flaver, int target_id, float amount, U8 n, Point3F pos, float ad_amount, float radius, float impulse );
  9619.  
  9620.        /*! Called when the spell ends naturally.
  9621. @param spell the spell object
  9622.  */
  9623.        void onDeactivate( afxMagicSpell spell );
  9624.  
  9625.        /*! Called when the spell ends unnaturally due to an interruption.
  9626. @param spell the spell object
  9627.  */
  9628.        void onInterrupt( afxMagicSpell spell, ShapeBase caster );
  9629.  
  9630.        /*! Called when the spell's casting stage ends and the delivery stage begins.
  9631. @param spell the spell object
  9632.  */
  9633.        void onLaunch( afxMagicSpell spell, ShapeBase caster, SceneObject target, afxMagicMissile missile );
  9634.  
  9635.        /*! Called at the spell's missile impact marking the end of the deliver stage and the start of the linger stage.
  9636. @param spell the spell object
  9637.  */
  9638.        void onImpact( afxMagicSpell spell, ShapeBase caster, SceneObject impacted, Point3F pos, Point3F normal );
  9639.  
  9640.        /*! Called during spell casting before spell instance is fully created.
  9641.  */
  9642.        bool onPreactivate( SimObject param_holder, ShapeBase caster, SceneObject target, SimObject extra );
  9643.  
  9644.        /*! Called when the spell starts.
  9645. @param spell the spell object
  9646.  */
  9647.        void onActivate( afxMagicSpell spell, ShapeBase caster, SceneObject target );
  9648.  
  9649.     /*! Resets a spell datablock during reload.
  9650.  
  9651. @ingroup AFX */
  9652.     virtual void reset(()) {}
  9653.     /*! Adds an effect (wrapper or group) to a spell's casting phase.
  9654.  
  9655. @ingroup AFX */
  9656.     virtual void addCastingEffect(( afxEffectBaseData effect )) {}
  9657.     /*! Adds an effect (wrapper or group) to a spell's launch phase.
  9658.  
  9659. @ingroup AFX */
  9660.     virtual void addLaunchEffect(( afxEffectBaseData effect )) {}
  9661.     /*! Adds an effect (wrapper or group) to a spell's delivery phase.
  9662.  
  9663. @ingroup AFX */
  9664.     virtual void addDeliveryEffect(( afxEffectBaseData effect )) {}
  9665.     /*! Adds an effect (wrapper or group) to a spell's impact phase.
  9666.  
  9667. @ingroup AFX */
  9668.     virtual void addImpactEffect(( afxEffectBaseData effect )) {}
  9669.     /*! Adds an effect (wrapper or group) to a spell's linger phase.
  9670.  
  9671. @ingroup AFX */
  9672.     virtual void addLingerEffect(( afxEffectBaseData effect )) {}
  9673.  
  9674.     /*! @name Casting Stage
  9675.     @{ */
  9676.     /*! */
  9677.     /*!
  9678.     ...
  9679.    
  9680.      */
  9681.     float castingDur;
  9682.     /*!
  9683.     ...
  9684.    
  9685.      */
  9686.     int numCastingLoops;
  9687.     /*!
  9688.     ...
  9689.    
  9690.      */
  9691.     float extraCastingTime;
  9692.     /*!
  9693.     ...
  9694.    
  9695.      */
  9696.     afxEffectBaseData addCastingEffect;
  9697.     /// @}
  9698.  
  9699.  
  9700.     /*! @name Delivery Stage
  9701.     @{ */
  9702.     /*! */
  9703.     /*!
  9704.     ...
  9705.    
  9706.      */
  9707.     float deliveryDur;
  9708.     /*!
  9709.     ...
  9710.    
  9711.      */
  9712.     int numDeliveryLoops;
  9713.     /*!
  9714.     ...
  9715.    
  9716.      */
  9717.     float extraDeliveryTime;
  9718.     /*!
  9719.     ...
  9720.    
  9721.      */
  9722.     afxEffectBaseData addLaunchEffect;
  9723.     /*!
  9724.     ...
  9725.    
  9726.      */
  9727.     afxEffectBaseData addDeliveryEffect;
  9728.     /// @}
  9729.  
  9730.  
  9731.     /*! @name Linger Stage
  9732.     @{ */
  9733.     /*! */
  9734.     /*!
  9735.     ...
  9736.    
  9737.      */
  9738.     float lingerDur;
  9739.     /*!
  9740.     ...
  9741.    
  9742.      */
  9743.     int numLingerLoops;
  9744.     /*!
  9745.     ...
  9746.    
  9747.      */
  9748.     float extraLingerTime;
  9749.     /*!
  9750.     ...
  9751.    
  9752.      */
  9753.     afxEffectBaseData addImpactEffect;
  9754.     /*!
  9755.     ...
  9756.    
  9757.      */
  9758.     afxEffectBaseData addLingerEffect;
  9759.     /// @}
  9760.  
  9761.     /*!
  9762.     ...
  9763.    
  9764.      */
  9765.     bool allowMovementInterrupts;
  9766.     /*!
  9767.     ...
  9768.    
  9769.      */
  9770.     float movementInterruptSpeed;
  9771.     /*!
  9772.     ...
  9773.    
  9774.      */
  9775.     afxMagicMissileData missile;
  9776.     /*!
  9777.     ...
  9778.    
  9779.      */
  9780.     bool launchOnServerSignal;
  9781.     /*!
  9782.     ...
  9783.    
  9784.      */
  9785.     int primaryTargetTypes;
  9786.  
  9787.     /*! @name Scripting
  9788.     @{ */
  9789.     /*! */
  9790.     /// @}
  9791.  
  9792.  
  9793.     /*! @name Ungrouped
  9794.     @{ */
  9795.     /*! */
  9796.     /// @}
  9797.  
  9798.  
  9799.     /*! @name Object
  9800.     @{ */
  9801.     /*! */
  9802.     /// @}
  9803.  
  9804.  
  9805.     /*! @name Editing
  9806.     @{ */
  9807.     /*! */
  9808.     /// @}
  9809.  
  9810.  
  9811.     /*! @name Persistence
  9812.     @{ */
  9813.     /*! */
  9814.     /// @}
  9815.  
  9816.  };
  9817.  
  9818.  /*!
  9819.  @brief A magic spell effects choreographer.
  9820.  
  9821.  @ingroup afxChoreographers
  9822.  @ingroup AFX
  9823.   */
  9824.  class  afxMagicSpell : public afxChoreographer {
  9825.    public:
  9826.     /*! Returns ID of the spell's caster object.
  9827.  
  9828. @ingroup AFX */
  9829.     virtual int getCaster(()) {}
  9830.     /*! Returns ID of the spell's target object.
  9831.  
  9832. @ingroup AFX */
  9833.     virtual int getTarget(()) {}
  9834.     /*! Returns ID of the spell's magic-missile object.
  9835.  
  9836. @ingroup AFX */
  9837.     virtual int getMissile(()) {}
  9838.     /*! Returns ID of impacted-object for the spell.
  9839.  
  9840. @ingroup AFX */
  9841.     virtual int getImpactedObject(()) {}
  9842.     /*! or (string phase, F32 factor)Sets the time-factor for the spell, either overall or for a specific phrase.
  9843.  
  9844. @ingroup AFX */
  9845.     virtual void setTimeFactor((F32 factor)) {}
  9846.     /*! Interrupts the current stage of a magic spell causing it to move onto the next one.
  9847.  
  9848. @ingroup AFX */
  9849.     virtual void interruptStage(()) {}
  9850.     /*! Interrupts and deletes a running magic spell.
  9851.  
  9852. @ingroup AFX */
  9853.     virtual void interrupt(()) {}
  9854.     /*! Activates a magic spell that was started with postponeActivation=true.
  9855.  
  9856. @ingroup AFX */
  9857.     virtual void activate(()) {}
  9858.     /*!
  9859.     ...
  9860.    
  9861.      */
  9862.     SimObject caster;
  9863.     /*!
  9864.     ...
  9865.    
  9866.      */
  9867.     SimObject target;
  9868.  
  9869.     /*! @name Game
  9870.     @{ */
  9871.     /*! */
  9872.     /// @}
  9873.  
  9874.  
  9875.     /*! @name Transform
  9876.     @{ */
  9877.     /*! */
  9878.     /// @}
  9879.  
  9880.  
  9881.     /*! @name Editing
  9882.     @{ */
  9883.     /*! */
  9884.     /// @}
  9885.  
  9886.  
  9887.     /*! @name Mounting
  9888.     @{ */
  9889.     /*! */
  9890.     /// @}
  9891.  
  9892.  
  9893.     /*! @name Ungrouped
  9894.     @{ */
  9895.     /*! */
  9896.     /// @}
  9897.  
  9898.  
  9899.     /*! @name Object
  9900.     @{ */
  9901.     /*! */
  9902.     /// @}
  9903.  
  9904.  
  9905.     /*! @name Editing
  9906.     @{ */
  9907.     /*! */
  9908.     /// @}
  9909.  
  9910.  
  9911.     /*! @name Persistence
  9912.     @{ */
  9913.     /*! */
  9914.     /// @}
  9915.  
  9916.  };
  9917.  
  9918.  /*!
  9919.  @brief A choreographer for selection effects.
  9920.  
  9921.  @ingroup afxChoreographers
  9922.  @ingroup AFX
  9923.   */
  9924.  class  afxSelectron : public afxChoreographer {
  9925.    public:
  9926.     /*! Sets the time factor of the selectron.
  9927.  
  9928. @ingroup AFX */
  9929.     virtual void setTimeFactor(( float factor=1.0f )) {}
  9930.     /*! Interrupts and deletes a running selectron.
  9931.  
  9932. @ingroup AFX */
  9933.     virtual void interrupt(()) {}
  9934.     /*! Stops and deletes a running selectron.
  9935.  
  9936. @ingroup AFX */
  9937.     virtual void stopSelectron(()) {}
  9938.  
  9939.     /*! @name Game
  9940.     @{ */
  9941.     /*! */
  9942.     /// @}
  9943.  
  9944.  
  9945.     /*! @name Transform
  9946.     @{ */
  9947.     /*! */
  9948.     /// @}
  9949.  
  9950.  
  9951.     /*! @name Editing
  9952.     @{ */
  9953.     /*! */
  9954.     /// @}
  9955.  
  9956.  
  9957.     /*! @name Mounting
  9958.     @{ */
  9959.     /*! */
  9960.     /// @}
  9961.  
  9962.  
  9963.     /*! @name Ungrouped
  9964.     @{ */
  9965.     /*! */
  9966.     /// @}
  9967.  
  9968.  
  9969.     /*! @name Object
  9970.     @{ */
  9971.     /*! */
  9972.     /// @}
  9973.  
  9974.  
  9975.     /*! @name Editing
  9976.     @{ */
  9977.     /*! */
  9978.     /// @}
  9979.  
  9980.  
  9981.     /*! @name Persistence
  9982.     @{ */
  9983.     /*! */
  9984.     /// @}
  9985.  
  9986.  };
  9987.  
  9988.  /*!
  9989.  @brief A spellbook datablock.
  9990.  
  9991.  @ingroup afxMisc
  9992.  @ingroup AFX
  9993.  @ingroup Datablocks
  9994.   */
  9995.  class  afxSpellBookData : public GameBaseData {
  9996.    public:
  9997.     /*! ...
  9998.  
  9999. @ingroup AFX */
  10000.     virtual int getPageSlotIndex(( Point2I bookSlot )) {}
  10001.     /*! Get the capacity (total number of spell slots) in a spellbook.
  10002.  
  10003. @ingroup AFX */
  10004.     virtual int getCapacity(()) {}
  10005.     /*!
  10006.     ...
  10007.    
  10008.      */
  10009.     char spellsPerPage;
  10010.     /*!
  10011.     ...
  10012.    
  10013.      */
  10014.     char pagesPerBook;
  10015.     /*!
  10016.     ...
  10017.    
  10018.      */
  10019.     GameBaseData spells;
  10020.     /*!
  10021.     ...
  10022.    
  10023.      */
  10024.     GameBaseData rpgSpells;
  10025.  
  10026.     /*! @name Scripting
  10027.     @{ */
  10028.     /*! */
  10029.     /// @}
  10030.  
  10031.  
  10032.     /*! @name Ungrouped
  10033.     @{ */
  10034.     /*! */
  10035.     /// @}
  10036.  
  10037.  
  10038.     /*! @name Object
  10039.     @{ */
  10040.     /*! */
  10041.     /// @}
  10042.  
  10043.  
  10044.     /*! @name Editing
  10045.     @{ */
  10046.     /*! */
  10047.     /// @}
  10048.  
  10049.  
  10050.     /*! @name Persistence
  10051.     @{ */
  10052.     /*! */
  10053.     /// @}
  10054.  
  10055.  };
  10056.  
  10057.  /*!
  10058.  @brief A spellbook object.
  10059.  
  10060.  @ingroup afxMisc
  10061.  @ingroup AFX
  10062.   */
  10063.  class  afxSpellBook : public GameBase {
  10064.    public:
  10065.     /*! ...
  10066.  
  10067. @ingroup AFX */
  10068.     virtual int getPageSlotIndex(( Point2I bookSlot )) {}
  10069.     /*! Get spell datablock for spell stored at spellbook index, (page, slot).
  10070.  
  10071. @ingroup AFX */
  10072.     virtual int getSpellData(( Point2I bookSlot )) {}
  10073.     /*! Get spell RPG datablock for spell stored at spellbook index, (page, slot).
  10074.  
  10075. @ingroup AFX */
  10076.     virtual int getSpellRPGData(( Point2I bookSlot )) {}
  10077.     /*! ...
  10078.  
  10079. @ingroup AFX */
  10080.     virtual void startAllSpellCooldown(()) {}
  10081.  
  10082.     /*! @name Game
  10083.     @{ */
  10084.     /*! */
  10085.     /// @}
  10086.  
  10087.  
  10088.     /*! @name Transform
  10089.     @{ */
  10090.     /*! */
  10091.     /// @}
  10092.  
  10093.  
  10094.     /*! @name Editing
  10095.     @{ */
  10096.     /*! */
  10097.     /// @}
  10098.  
  10099.  
  10100.     /*! @name Mounting
  10101.     @{ */
  10102.     /*! */
  10103.     /// @}
  10104.  
  10105.  
  10106.     /*! @name Ungrouped
  10107.     @{ */
  10108.     /*! */
  10109.     /// @}
  10110.  
  10111.  
  10112.     /*! @name Object
  10113.     @{ */
  10114.     /*! */
  10115.     /// @}
  10116.  
  10117.  
  10118.     /*! @name Editing
  10119.     @{ */
  10120.     /*! */
  10121.     /// @}
  10122.  
  10123.  
  10124.     /*! @name Persistence
  10125.     @{ */
  10126.     /*! */
  10127.     /// @}
  10128.  
  10129.  };
  10130.  
  10131.  /*!
  10132.  @brief A datablock that specifies a Phrase Effect, a grouping of other effects.
  10133.  
  10134.  A Phrase Effect is a grouping or phrase of effects that do nothing until certain trigger events occur. It's like having a whole Effectron organized as an individual effect.
  10135.  
  10136.  Phrase effects can respond to a number of different kinds of triggers:
  10137.    -- Player triggers such as footsteps, jumps, landings, and idle triggers.
  10138.    -- Arbitrary animation triggers on dts-based scene objects.
  10139.    -- Arbitrary trigger bits assigned to active choreographer objects.
  10140.  
  10141.  @ingroup afxEffects
  10142.  @ingroup AFX
  10143.  @ingroup Datablocks
  10144.   */
  10145.  class  afxPhraseEffectData : public GameBaseData {
  10146.    public:
  10147.     /*! Add a child effect to a phrase effect datablock. Argument can be an afxEffectWrappperData or an afxEffectGroupData.
  10148.  */
  10149.     virtual void addEffect(( afxEffectBaseData effectData )) {}
  10150.     /*!
  10151.     Specifies a duration for the phrase-effect. If set to infinity, the phrase-effect needs to have a phraseType of \93continuous. Set infinite duration using $AFX::INFINITE_TIME.
  10152.    
  10153.      */
  10154.     float Duration;
  10155.     /*!
  10156.     Specifies the number of times the phrase-effect should loop. If set to infinity, the phrase-effect needs to have a phraseType of \93continuous\94. Set infinite looping using $AFX::INFINITE_REPEATS.
  10157.    
  10158.      */
  10159.     int numLoops;
  10160.     /*!
  10161.     Sets which bits to consider in the current trigger-state which consists of 32 trigger-bits combined from (possibly overlapping) player trigger bits, constraint trigger bits, and choreographer trigger bits.
  10162.    
  10163.      */
  10164.     int triggerMask;
  10165.     /*!
  10166.     Selects what combination of bits in triggerMask lead to a trigger. When set to 'any', any bit in triggerMask matching the current trigger-state will cause a trigger. If set to 'all', every bit in triggerMask must match the trigger-state. Possible values: any or all.
  10167.    
  10168.      */
  10169.     afxPhraseEffect_MatchType matchType;
  10170.     /*!
  10171.     Selects which bit-state(s) of bits in the triggerMask to consider when comparing to the current trigger-state. Possible values: on, off, or both.
  10172.    
  10173.      */
  10174.     afxPhraseEffect_StateType matchState;
  10175.     /*!
  10176.     Selects between triggered and continuous types of phrases. When set to 'triggered', the phrase-effect is triggered when the relevant trigger-bits change state. When set to 'continuous', the phrase-effect will stay active as long as the trigger-bits remain in a matching state. Possible values: triggered or continuous.
  10177.    
  10178.      */
  10179.     afxPhraseEffect_PhraseType phraseType;
  10180.     /*!
  10181.     When true, trigger-bits on the choreographer will be ignored.
  10182.    
  10183.      */
  10184.     bool ignoreChoreographerTriggers;
  10185.     /*!
  10186.     When true, animation triggers from dts-based constraint source objects will be ignored.
  10187.    
  10188.      */
  10189.     bool ignoreConstraintTriggers;
  10190.     /*!
  10191.     When true, Player-specific triggers from Player-derived constraint source objects will be ignored.
  10192.    
  10193.      */
  10194.     bool ignorePlayerTriggers;
  10195.     /*!
  10196.     Like a field substitution statement without the leading '$$' token, this eval statement will be executed when a trigger occurs. Any '%%' and '##'  tokens will be substituted.
  10197.    
  10198.      */
  10199.     string onTriggerCommand;
  10200.     /*!
  10201.     A field macro which adds an effect wrapper datablock to a list of effects associated with the phrase-effect's single phrase. Unlike other fields, addEffect follows an unusual syntax. Order is important since the effects will resolve in the order they are added to each list.
  10202.    
  10203.      */
  10204.     afxEffectBaseData addEffect;
  10205.  
  10206.     /*! @name Scripting
  10207.     @{ */
  10208.     /*! */
  10209.     /// @}
  10210.  
  10211.  
  10212.     /*! @name Ungrouped
  10213.     @{ */
  10214.     /*! */
  10215.     /// @}
  10216.  
  10217.  
  10218.     /*! @name Object
  10219.     @{ */
  10220.     /*! */
  10221.     /// @}
  10222.  
  10223.  
  10224.     /*! @name Editing
  10225.     @{ */
  10226.     /*! */
  10227.     /// @}
  10228.  
  10229.  
  10230.     /*! @name Persistence
  10231.     @{ */
  10232.     /*! */
  10233.     /// @}
  10234.  
  10235.  };
  10236.  
  10237.  /*!
  10238.  @brief A GUI button with some special features that are useful for casting AFX spells.
  10239.  
  10240.  @ingroup afxGUI
  10241.  @ingroup AFX
  10242.   */
  10243.  class  afxSpellButton : public GuiButtonCtrl {
  10244.    public:
  10245.     /*! Notify an afxSpellButton when its associated spellbook has changed.
  10246.  */
  10247.     virtual void onSpellbookChange(( afxSpellBook spellbook, unsigned int page )) {}
  10248.     /*! Notify an afxSpellButton when the spellbook turns to a new page.
  10249.  */
  10250.     virtual void onTurnPage(( unsigned int page )) {}
  10251.     /*! Get the text description of a spell.
  10252.  */
  10253.     virtual string getSpellDescription(()) {}
  10254.     /*! Get the spell's datablock.
  10255.  */
  10256.     virtual int getSpellDataBlock(()) {}
  10257.     /*! Get the spell's RPG datablock.
  10258.  */
  10259.     virtual int getSpellRPGDataBlock(()) {}
  10260.     /*! Test if spell uses free targeting.
  10261.  */
  10262.     virtual bool useFreeTargeting(()) {}
  10263.     /*! Get the free targeting style used by the spell.
  10264.  */
  10265.     virtual int getFreeTargetStyle(()) {}
  10266.     /*!
  10267.     ...
  10268.    
  10269.      */
  10270.     filename bitmap;
  10271.     /*!
  10272.     ...
  10273.    
  10274.      */
  10275.     Point2I book_slot;
  10276.  
  10277.     /*! @name Button
  10278.     @{ */
  10279.     /*! */
  10280.     /// @}
  10281.  
  10282.  
  10283.     /*! @name Button
  10284.     @{ */
  10285.     /*! */
  10286.     /// @}
  10287.  
  10288.  
  10289.     /*! @name Layout
  10290.     @{ */
  10291.     /*! */
  10292.     /// @}
  10293.  
  10294.  
  10295.     /*! @name Control
  10296.     @{ */
  10297.     /*! */
  10298.     /// @}
  10299.  
  10300.  
  10301.     /*! @name ToolTip
  10302.     @{ */
  10303.     /*! */
  10304.     /// @}
  10305.  
  10306.  
  10307.     /*! @name Editing
  10308.     @{ */
  10309.     /*! */
  10310.     /// @}
  10311.  
  10312.  
  10313.     /*! @name Localization
  10314.     @{ */
  10315.     /*! */
  10316.     /// @}
  10317.  
  10318.  
  10319.     /*! @name Ungrouped
  10320.     @{ */
  10321.     /*! */
  10322.     /// @}
  10323.  
  10324.  
  10325.     /*! @name Object
  10326.     @{ */
  10327.     /*! */
  10328.     /// @}
  10329.  
  10330.  
  10331.     /*! @name Editing
  10332.     @{ */
  10333.     /*! */
  10334.     /// @}
  10335.  
  10336.  
  10337.     /*! @name Persistence
  10338.     @{ */
  10339.     /*! */
  10340.     /// @}
  10341.  
  10342.  };
  10343.  
  10344.  /*!
  10345.  @brief A GUI progress bar useful as a spell casting bar.
  10346.  
  10347.  @ingroup afxGUI
  10348.  @ingroup AFX
  10349.   */
  10350.  class  afxSpellCastBar : public GuiControl {
  10351.    public:
  10352.     /*! Set the progress percentage on the progress-bar.
  10353.  
  10354. @ingroup AFX */
  10355.     virtual void setProgress(( float percentDone )) {}
  10356.  
  10357.     /*! @name Colors
  10358.     @{ */
  10359.     /*! */
  10360.     /*!
  10361.     ...
  10362.    
  10363.      */
  10364.     ColorF backgroundColor;
  10365.     /*!
  10366.     ...
  10367.    
  10368.      */
  10369.     ColorF borderColor;
  10370.     /*!
  10371.     ...
  10372.    
  10373.      */
  10374.     ColorF fillColor;
  10375.     /*!
  10376.     ...
  10377.    
  10378.      */
  10379.     ColorF fillColorFinal;
  10380.     /// @}
  10381.  
  10382.  
  10383.     /*! @name Layout
  10384.     @{ */
  10385.     /*! */
  10386.     /// @}
  10387.  
  10388.  
  10389.     /*! @name Control
  10390.     @{ */
  10391.     /*! */
  10392.     /// @}
  10393.  
  10394.  
  10395.     /*! @name ToolTip
  10396.     @{ */
  10397.     /*! */
  10398.     /// @}
  10399.  
  10400.  
  10401.     /*! @name Editing
  10402.     @{ */
  10403.     /*! */
  10404.     /// @}
  10405.  
  10406.  
  10407.     /*! @name Localization
  10408.     @{ */
  10409.     /*! */
  10410.     /// @}
  10411.  
  10412.  
  10413.     /*! @name Ungrouped
  10414.     @{ */
  10415.     /*! */
  10416.     /// @}
  10417.  
  10418.  
  10419.     /*! @name Object
  10420.     @{ */
  10421.     /*! */
  10422.     /// @}
  10423.  
  10424.  
  10425.     /*! @name Editing
  10426.     @{ */
  10427.     /*! */
  10428.     /// @}
  10429.  
  10430.  
  10431.     /*! @name Persistence
  10432.     @{ */
  10433.     /*! */
  10434.     /// @}
  10435.  
  10436.  };
  10437.  
  10438.  /*!
  10439.  @brief A GUI status bar for tracking and displaying health and energy of ShapeBase objects.
  10440.  
  10441.  @ingroup afxGUI
  10442.  @ingroup AFX
  10443.   */
  10444.  class  afxStatusBar : public GuiControl {
  10445.    public:
  10446.     /*! Set the progress percentage on the status-bar.
  10447.  
  10448. @ingroup AFX */
  10449.     virtual void setProgress(( float percentDone )) {}
  10450.     /*! Associate a ShapeBase-derived object with the status-bar.
  10451.  
  10452. @ingroup AFX */
  10453.     virtual void setShape(( ShapeBase shape )) {}
  10454.     /*! Clear out any ShapeBase-derived object associated with the status-bar.
  10455.  
  10456. @ingroup AFX */
  10457.     virtual void clearShape(()) {}
  10458.     /*!
  10459.     ...
  10460.    
  10461.      */
  10462.     ColorF fillColor;
  10463.     /*!
  10464.     ...
  10465.    
  10466.      */
  10467.     bool displayEnergy;
  10468.     /*!
  10469.     ...
  10470.    
  10471.      */
  10472.     bool monitorPlayer;
  10473.  
  10474.     /*! @name Layout
  10475.     @{ */
  10476.     /*! */
  10477.     /// @}
  10478.  
  10479.  
  10480.     /*! @name Control
  10481.     @{ */
  10482.     /*! */
  10483.     /// @}
  10484.  
  10485.  
  10486.     /*! @name ToolTip
  10487.     @{ */
  10488.     /*! */
  10489.     /// @}
  10490.  
  10491.  
  10492.     /*! @name Editing
  10493.     @{ */
  10494.     /*! */
  10495.     /// @}
  10496.  
  10497.  
  10498.     /*! @name Localization
  10499.     @{ */
  10500.     /*! */
  10501.     /// @}
  10502.  
  10503.  
  10504.     /*! @name Ungrouped
  10505.     @{ */
  10506.     /*! */
  10507.     /// @}
  10508.  
  10509.  
  10510.     /*! @name Object
  10511.     @{ */
  10512.     /*! */
  10513.     /// @}
  10514.  
  10515.  
  10516.     /*! @name Editing
  10517.     @{ */
  10518.     /*! */
  10519.     /// @}
  10520.  
  10521.  
  10522.     /*! @name Persistence
  10523.     @{ */
  10524.     /*! */
  10525.     /// @}
  10526.  
  10527.  };
  10528.  
  10529.  class  CmServerSharedLoadingStatus : public SimObject {
  10530.    public:
  10531.     virtual void setOnServerLoadedCallback(( string callback )) {}
  10532.  
  10533.     /*! @name Ungrouped
  10534.     @{ */
  10535.     /*! */
  10536.     /// @}
  10537.  
  10538.  
  10539.     /*! @name Object
  10540.     @{ */
  10541.     /*! */
  10542.     /// @}
  10543.  
  10544.  
  10545.     /*! @name Editing
  10546.     @{ */
  10547.     /*! */
  10548.     /// @}
  10549.  
  10550.  
  10551.     /*! @name Persistence
  10552.     @{ */
  10553.     /*! */
  10554.     /// @}
  10555.  
  10556.  };
  10557.  
  10558.  class  CmInventory : public SimGroup {
  10559.    public:
  10560.     virtual Script onSplitStackItem(( string this, string root_id1, string container_id1, string item_id1, string quantity1, string max_stack_size1, string root_id2, string container_id2, string item_id2, string quantity2, string max_stack_size2, string bitmap )) {}
  10561.        /*!  */
  10562.        void onSplitStackItem( int root_id1, int cont_id1, int item_id1, int quantity1, int max_stack_size1, int root_id2, int cont_id2, int item_id2, int quantity2, int max_stack_size2, string bitmap );
  10563.  
  10564.  
  10565.     /*! @name Ungrouped
  10566.     @{ */
  10567.     /*! */
  10568.     /// @}
  10569.  
  10570.  
  10571.     /*! @name Object
  10572.     @{ */
  10573.     /*! */
  10574.     /// @}
  10575.  
  10576.  
  10577.     /*! @name Editing
  10578.     @{ */
  10579.     /*! */
  10580.     /// @}
  10581.  
  10582.  
  10583.     /*! @name Persistence
  10584.     @{ */
  10585.     /*! */
  10586.     /// @}
  10587.  
  10588.  };
  10589.  
  10590.  /*!
  10591.  @brief For static-field copying/pasting, editor use only
  10592.  
  10593.   */
  10594.  class  FieldBrushObject : public SimObject {
  10595.    public:
  10596.     /*! Query available static-field groups for selected object./
  10597. @param simObject Object to query static-field groups on.
  10598. @return Space-seperated static-field group list. */
  10599.     virtual string queryGroups((simObject)) {}
  10600.     /*! Query available static-fields for selected object./
  10601. @param simObject Object to query static-fields on.
  10602. @param groupList groups to filter static-fields against.
  10603. @return Space-seperated static-field list. */
  10604.     virtual string queryFields((simObject, [groupList])) {}
  10605.     /*! Copy selected static-fields for selected object./
  10606. @param simObject Object to copy static-fields from.
  10607. @param fieldList fields to filter static-fields against.
  10608. @return No return value. */
  10609.     virtual void copyFields((simObject, [fieldList])) {}
  10610.     /*! Paste copied static-fields to selected object./
  10611. @param simObject Object to paste static-fields to.
  10612. @return No return value. */
  10613.     virtual void pasteFields((simObject)) {}
  10614.     /*!
  10615.    
  10616.    
  10617.      */
  10618.     caseString Description;
  10619.     /*!
  10620.    
  10621.    
  10622.      */
  10623.     string sortName;
  10624.  
  10625.     /*! @name Ungrouped
  10626.     @{ */
  10627.     /*! */
  10628.     /// @}
  10629.  
  10630.  
  10631.     /*! @name Object
  10632.     @{ */
  10633.     /*! */
  10634.     /// @}
  10635.  
  10636.  
  10637.     /*! @name Editing
  10638.     @{ */
  10639.     /*! */
  10640.     /// @}
  10641.  
  10642.  
  10643.     /*! @name Persistence
  10644.     @{ */
  10645.     /*! */
  10646.     /// @}
  10647.  
  10648.  };
  10649.  
  10650.  /*!
  10651.  @brief this class manages updating SimObjects in the file they were created in non-destructively (mostly aimed at datablocks and materials).
  10652.  
  10653.  Basic scripting interface:
  10654.  
  10655.     - Creation: new PersistenceManager(FooManager);
  10656.     - Flag objects as dirty: FooManager.setDirty(<object name or id>);
  10657.     - Remove objects from dirty list: FooManager.removeDirty(<object name or id>);
  10658.     - List all currently dirty objects: FooManager.listDirty();
  10659.     - Check to see if an object is dirty: FooManager.isDirty(<object name or id>);
  10660.     - Save dirty objects to their files: FooManager.saveDirty();
  10661.  
  10662.  @note Dirty objects don't update their files until saveDirty() is called so you can change their properties after you flag them as dirty
  10663.  
  10664.  @note Currently only used by editors, not intended for actual game development
  10665.  
  10666.  @ingroup Console
  10667.  @ingroup Editors
  10668.   */
  10669.  class  PersistenceManager : public SimObject {
  10670.    public:
  10671.     /*! Delete all of the objects that are created from the given file. */
  10672.     virtual void deleteObjectsFromFile(( fileName )) {}
  10673.     /*! Mark an existing SimObject as dirty (will be written out when saveDirty() is called). */
  10674.     virtual void setDirty((SimObject object, [filename])) {}
  10675.     /*! Remove a SimObject from the dirty list. */
  10676.     virtual void removeDirty((SimObject object)) {}
  10677.     /*! Returns true if the SimObject is on the dirty list. */
  10678.     virtual bool isDirty((SimObject object)) {}
  10679.     /*! Returns true if the manager has dirty objects to save. */
  10680.     virtual bool hasDirty(()) {}
  10681.     /*! Returns the number of dirty objects. */
  10682.     virtual int getDirtyObjectCount(()) {}
  10683.     /*! Returns the ith dirty object. */
  10684.     virtual int getDirtyObject(( index )) {}
  10685.     /*! Prints the dirty list to the console. */
  10686.     virtual void listDirty(()) {}
  10687.     /*! Saves all of the SimObject's on the dirty list to their respective files. */
  10688.     virtual bool saveDirty(()) {}
  10689.     /*! Save a dirty SimObject to it's file. */
  10690.     virtual bool saveDirtyObject((SimObject object)) {}
  10691.     /*! Clears all the tracked objects without saving them. */
  10692.     virtual void clearAll(()) {}
  10693.     /*! Remove an existing SimObject from a file (can optionally specify a different file than                the one it was created in. */
  10694.     virtual void removeObjectFromFile((SimObject object, [filename])) {}
  10695.     /*! Remove a specific field from an object declaration. */
  10696.     virtual void removeField((SimObject object, string fieldName)) {}
  10697.  
  10698.     /*! @name Ungrouped
  10699.     @{ */
  10700.     /*! */
  10701.     /// @}
  10702.  
  10703.  
  10704.     /*! @name Object
  10705.     @{ */
  10706.     /*! */
  10707.     /// @}
  10708.  
  10709.  
  10710.     /*! @name Editing
  10711.     @{ */
  10712.     /*! */
  10713.     /// @}
  10714.  
  10715.  
  10716.     /*! @name Persistence
  10717.     @{ */
  10718.     /*! */
  10719.     /// @}
  10720.  
  10721.  };
  10722.  
  10723.  /*!
  10724.  @brief A script-level OOP object which allows binding of a class, superClass and arguments along with declaration of methods.
  10725.  
  10726.  ScriptObjects are extrodinarily powerful objects that allow defining of any type of data required. They can optionally have
  10727.  a class and a superclass defined for added control of multiple ScriptObjects through a simple class definition.
  10728.  
  10729.  @tsexample
  10730.  new ScriptObject(Game)
  10731.  {
  10732.     class = "DeathMatchGame";
  10733.     superClass = GameCore;
  10734.     genre = "Action FPS"; // Note the new, non-Torque variable
  10735.  };
  10736.  @endtsexample
  10737.  @see SimObject
  10738.  @ingroup Console
  10739.   */
  10740.  class  ScriptObject : public SimObject {
  10741.    public:
  10742.        /*! Called when this ScriptObject is added to the system.
  10743. @param ID Unique object ID assigned when created (%this in script).
  10744.  */
  10745.        void onAdd( SimObjectId ID );
  10746.  
  10747.        /*! Called when this ScriptObject is removed from the system.
  10748. @param ID Unique object ID assigned when created (%this in script).
  10749.  */
  10750.        void onRemove( SimObjectId ID );
  10751.  
  10752.  
  10753.     /*! @name Ungrouped
  10754.     @{ */
  10755.     /*! */
  10756.     /// @}
  10757.  
  10758.  
  10759.     /*! @name Object
  10760.     @{ */
  10761.     /*! */
  10762.     /// @}
  10763.  
  10764.  
  10765.     /*! @name Editing
  10766.     @{ */
  10767.     /*! */
  10768.     /// @}
  10769.  
  10770.  
  10771.     /*! @name Persistence
  10772.     @{ */
  10773.     /*! */
  10774.     /// @}
  10775.  
  10776.  };
  10777.  
  10778.  /*!
  10779.  @brief Essentially a SimGroup, but with onAdd and onRemove script callbacks.
  10780.  
  10781.  @tsexample
  10782.  // First container, SimGroup containing a ScriptGroup
  10783.  new SimGroup(Scenes)
  10784.  {
  10785.     // Subcontainer, ScriptGroup containing variables
  10786.     // related to a cut scene and a starting WayPoint
  10787.     new ScriptGroup(WelcomeScene)
  10788.     {
  10789.         class = "Scene";
  10790.         pathName = "Pathx";
  10791.         description = "A small orc village set in the Hardesty mountains. This town and its surroundings will be used to illustrate some the Torque Game Engine's features.";
  10792.         pathTime = "0";
  10793.         title = "Welcome to Orc Town";
  10794.  
  10795.         new WayPoint(start)
  10796.         {
  10797.             position = "163.873 -103.82 208.354";
  10798.             rotation = "0.136165 -0.0544916 0.989186 44.0527";
  10799.             scale = "1 1 1";
  10800.             dataBlock = "WayPointMarker";
  10801.             team = "0";
  10802.         };
  10803.     };
  10804.  };
  10805.  @endtsexample
  10806.  
  10807.  @see SimGroup
  10808.  @ingroup Console
  10809.   */
  10810.  class  ScriptGroup : public SimGroup {
  10811.    public:
  10812.        /*! Called when this ScriptGroup is added to the system.
  10813. @param ID Unique object ID assigned when created (%this in script).
  10814.  */
  10815.        void onAdd( SimObjectId ID );
  10816.  
  10817.        /*! Called when this ScriptObject is removed from the system.
  10818. @param ID Unique object ID assigned when created (%this in script).
  10819.  */
  10820.        void onRemove( SimObjectId ID );
  10821.  
  10822.  
  10823.     /*! @name Ungrouped
  10824.     @{ */
  10825.     /*! */
  10826.     /// @}
  10827.  
  10828.  
  10829.     /*! @name Object
  10830.     @{ */
  10831.     /*! */
  10832.     /// @}
  10833.  
  10834.  
  10835.     /*! @name Editing
  10836.     @{ */
  10837.     /*! */
  10838.     /// @}
  10839.  
  10840.  
  10841.     /*! @name Persistence
  10842.     @{ */
  10843.     /*! */
  10844.     /// @}
  10845.  
  10846.  };
  10847.  
  10848.  /*!
  10849.  @brief A SimSet that can be safely persisted.
  10850.  
  10851.  Uses SimPersistIDs to reference objects in the set while persisted on disk.  This allows the set to resolve its references no matter whether they are loaded before or after the set is created.
  10852.  
  10853.  Not intended for game development, for editors or internal use only.
  10854.  
  10855.   */
  10856.  class  SimPersistSet : public SimSet {
  10857.    public:
  10858.     /*! Try to bind unresolved persistent IDs in the set. */
  10859.     virtual void resolvePersistentIds(()) {}
  10860.  
  10861.     /*! @name Ungrouped
  10862.     @{ */
  10863.     /*! */
  10864.     /// @}
  10865.  
  10866.  
  10867.     /*! @name Object
  10868.     @{ */
  10869.     /*! */
  10870.     /// @}
  10871.  
  10872.  
  10873.     /*! @name Editing
  10874.     @{ */
  10875.     /*! */
  10876.     /// @}
  10877.  
  10878.  
  10879.     /*! @name Persistence
  10880.     @{ */
  10881.     /*! */
  10882.     /// @}
  10883.  
  10884.  };
  10885.  
  10886.  /*!
  10887.  @brief File I/O object used for creating, reading, and writing XML documents.
  10888.  
  10889.  A SimXMLDocument is a container of various XML nodes.  The Document level may contain a header (sometimes called a declaration), comments and child Elements.  Elements may contain attributes, data (or text) and child Elements.
  10890.  
  10891.  You build new Elements using addNewElement().  This makes the new Element the current one you're working with.  You then use setAttribute() to add attributes to the Element.  You use addData() or addText() to write to the text area of an Element.@tsexample
  10892.  // Thanks to Rex Hiebert for this example
  10893.  // Given the following XML
  10894.  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  10895.  <DataTables>
  10896.     <table tableName="2DShapes">
  10897.         <rec id="1">Triangle</rec>
  10898.         <rec id="2">Square</rec>
  10899.         <rec id="3">Circle</rec>
  10900.     </table>
  10901.     <table tableName="3DShapes">
  10902.         <rec id="1">Pyramid</rec>
  10903.         <rec id="2">Cube</rec>
  10904.         <rec id="3">Sphere</rec>
  10905.     </table>
  10906.  </DataTables>
  10907.  
  10908.  // Using SimXMLDocument by itself
  10909.  function readXmlExample(%filename)
  10910.  {
  10911.     %xml = new SimXMLDocument() {};
  10912.     %xml.loadFile(%filename);
  10913.  
  10914.     %xml.pushChildElement("DataTables");
  10915.     %xml.pushFirstChildElement("table");
  10916.     while(true)
  10917.     {
  10918.       echo("TABLE:" SPC %xml.attribute("tableName"));
  10919.       %xml.pushFirstChildElement("rec");
  10920.       while (true)
  10921.       {
  10922.          %id = %xml.attribute("id");
  10923.          %desc = %xml.getData();
  10924.          echo("  Shape" SPC %id SPC %desc);
  10925.          if (!%xml.nextSiblingElement("rec")) break;
  10926.       }
  10927.       %xml.popElement();
  10928.       if (!%xml.nextSiblingElement("table")) break;
  10929.     }
  10930.  }
  10931.  
  10932.  // Thanks to Scott Peal for this example
  10933.  // Using FileObject in conjunction with SimXMLDocument
  10934.  // This example uses an XML file with a format of:
  10935.  // <Models>
  10936.  //    <Model category="" name="" path="" />
  10937.  // </Models>
  10938.  function getModelsInCatagory()
  10939.  {
  10940.     %file = "./Catalog.xml";
  10941.     %fo = new FileObject();
  10942.     %text = "";
  10943.  
  10944.     if(%fo.openForRead(%file))
  10945.     {
  10946.       while(!%fo.isEOF())
  10947.       {
  10948.          %text = %text @ %fo.readLine();
  10949.          if (!%fo.isEOF()) %text = %text @ "\n";
  10950.       }
  10951.     }
  10952.     else
  10953.     {
  10954.       echo("Unable to locate the file: " @ %file);
  10955.     }
  10956.  
  10957.     %fo.delete();
  10958.  
  10959.     %xml = new SimXMLDocument() {};
  10960.     %xml.parse(%text);
  10961.     // "Get" inside of the root element, "Models".
  10962.     %xml.pushChildElement(0);
  10963.  
  10964.     // "Get" into the first child element
  10965.     if (%xml.pushFirstChildElement("Model"))
  10966.     {
  10967.       while (true)
  10968.       {
  10969.          //
  10970.          //  Here, i read the element's attributes.
  10971.          //  You might want to save these values in an array or call the %xml.getElementValue()
  10972.          //  if you have a different XML structure.
  10973.  
  10974.          %catagory = %xml.attribute("catagory");
  10975.          %name = %xml.attribute("name");
  10976.          %path = %xml.attribute("path");
  10977.  
  10978.          // now, read the next "Model"
  10979.          if (!%xml.nextSiblingElement("Model")) break;
  10980.       }
  10981.     }
  10982.  }
  10983.  @endtsexample
  10984.  
  10985.  @note SimXMLDocument is a wrapper around TinyXml, a standard XML library.  If you're familiar with its concepts, you'll find they also apply here.
  10986.  
  10987.  @see FileObject
  10988.  
  10989.  @ingroup FileSystem
  10990.   */
  10991.  class  SimXMLDocument : public SimObject {
  10992.    public:
  10993.     /*! @brief Set this document to its default state.
  10994.  
  10995. Clears all Elements from the documents.  Equivalent to using clear()
  10996.  
  10997. @see clear() */
  10998.     virtual void reset(()) {}
  10999.     /*! @brief Load in given filename and prepare it for use.
  11000.  
  11001. @note Clears the current document's contents.
  11002.  
  11003. @param fileName Name and path of XML document
  11004. @return True if the file was loaded successfully. */
  11005.     virtual bool loadFile(( string fileName )) {}
  11006.     /*! @brief Save document to the given file name.
  11007.  
  11008. @param fileName Path and name of XML file to save to.
  11009. @return True if the file was successfully saved. */
  11010.     virtual bool saveFile(( string fileName )) {}
  11011.     /*! @brief Create a document from a XML string.
  11012.  
  11013. @note Clears the current document's contents.
  11014.  
  11015. @param xmlString Valid XML to parse and store as a document. */
  11016.     virtual void parse(( string xmlString )) {}
  11017.     /*! @brief Set this document to its default state.
  11018.  
  11019. Clears all Elements from the documents.  Equivalent to using reset()
  11020.  
  11021. @see reset() */
  11022.     virtual void clear(()) {}
  11023.     /*! @brief Get last error description.
  11024.  
  11025. @return A string of the last error message. */
  11026.     virtual string getErrorDesc(()) {}
  11027.     /*! @brief Clear the last error description.
  11028.  
  11029.  */
  11030.     virtual void clearError(()) {}
  11031.     /*! @brief Push the first child Element with the given name onto the stack, making it the current Element.
  11032.  
  11033. @param name String containing name of the child Element.
  11034. @return True if the Element was found and made the current one.
  11035. @tsexample
  11036. // Using the following test.xml file as an example:
  11037. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11038. // <NewElement>Some text</NewElement>
  11039.  
  11040. // Load in the file
  11041. %x = new SimXMLDocument();
  11042. %x.loadFile("test.xml");
  11043.  
  11044. // Make the first Element the current one
  11045. %x.pushFirstChildElement("NewElement");
  11046.  
  11047. // Store the current Element's text ('Some text' in this example)
  11048. // into 'result'
  11049. %result = %x.getText();
  11050. echo( %result );
  11051. @endtsexample
  11052.  
  11053.  */
  11054.     virtual bool pushFirstChildElement(( string name )) {}
  11055.     /*! @brief Push the child Element at the given index onto the stack, making it the current one.
  11056.  
  11057. @param index Numerical index of Element being pushed.@return True if the Element was found and made the current one.
  11058.  */
  11059.     virtual bool pushChildElement(( int index )) {}
  11060.     /*! @brief Put the next sibling Element with the given name on the stack, making it the current one.
  11061.  
  11062. @param name String containing name of the next sibling.@return True if the Element was found and made the current one.
  11063.  */
  11064.     virtual bool nextSiblingElement(( string name )) {}
  11065.     /*! @brief Get the Element's value if it exists.
  11066.  
  11067. Usually returns the text from the Element.
  11068. @return The value from the Element, or an empty string if none is found. */
  11069.     virtual string elementValue(()) {}
  11070.     /*! @brief Pop the last Element off the stack.
  11071.  
  11072.  */
  11073.     virtual void popElement(()) {}
  11074.     /*! @brief Get a string attribute from the current Element on the stack.
  11075.  
  11076. @param attributeName Name of attribute to retrieve.
  11077. @return The attribute string if found.  Otherwise returns an empty string.
  11078.  */
  11079.     virtual string attribute(( string attributeName )) {}
  11080.     /*! @brief Get float attribute from the current Element on the stack.
  11081.  
  11082. @param attributeName Name of attribute to retrieve.
  11083. @return The value of the given attribute in the form of a float.
  11084. @deprecated Use attribute(). */
  11085.     virtual float attributeF32((string attributeName)) {}
  11086.     /*! @brief Get int attribute from the current Element on the stack.
  11087.  
  11088. @param attributeName Name of attribute to retrieve.
  11089. @return The value of the given attribute in the form of an integer.
  11090. @deprecated Use attribute(). */
  11091.     virtual int attributeS32((string attributeName)) {}
  11092.     /*! @brief Tests if the requested attribute exists.
  11093.  
  11094. @param attributeName Name of attribute being queried for.
  11095.  
  11096. @return True if the attribute exists. */
  11097.     virtual bool attributeExists(( string attributeName )) {}
  11098.     /*! @brief Obtain the name of the current Element's first attribute.
  11099.  
  11100. @return String containing the first attribute's name, or an empty string if none is found.
  11101.  
  11102. @see nextAttribute()
  11103. @see lastAttribute()
  11104. @see prevAttribute() */
  11105.     virtual string firstAttribute(()) {}
  11106.     /*! @brief Obtain the name of the current Element's last attribute.
  11107.  
  11108. @return String containing the last attribute's name, or an empty string if none is found.
  11109.  
  11110. @see prevAttribute()
  11111. @see firstAttribute()
  11112. @see lastAttribute()
  11113.  */
  11114.     virtual string lastAttribute(()) {}
  11115.     /*! @brief Get the name of the next attribute for the current Element after a call to firstAttribute().
  11116.  
  11117. @return String containing the next attribute's name, or an empty string if none is found.@see firstAttribute()
  11118. @see lastAttribute()
  11119. @see prevAttribute()
  11120.  */
  11121.     virtual string nextAttribute(()) {}
  11122.     /*! @brief Get the name of the previous attribute for the current Element after a call to lastAttribute().
  11123.  
  11124. @return String containing the previous attribute's name, or an empty string if none is found.@see lastAttribute()
  11125. @see firstAttribute()
  11126. @see nextAttribute()
  11127.  */
  11128.     virtual string prevAttribute(()) {}
  11129.     /*! @brief Set the attribute of the current Element on the stack to the given value.
  11130.  
  11131. @param attributeName Name of attribute being changed
  11132. @param value New value to assign to the attribute
  11133.  */
  11134.     virtual void setAttribute(( string attributeName, string value )) {}
  11135.     /*! @brief Add the given SimObject's fields as attributes of the current Element on the stack.
  11136.  
  11137. @param objectID ID of SimObject being copied. */
  11138.     virtual void setObjectAttributes(( string objectID )) {}
  11139.     /*! @brief Create a new element with the given name as child of current Element and push it onto the Element stack making it the current one.
  11140.  
  11141. @note This differs from addNewElement() in that it adds the new Element as a child of the current Element (or a child of the document if no Element exists).
  11142.  
  11143. @param name XML tag for the new Element.
  11144. @see addNewElement() */
  11145.     virtual void pushNewElement(( string name )) {}
  11146.     /*! @brief Create a new element with the given name as child of current Element's parent and push it onto the Element stack making it the current one.
  11147.  
  11148. @note This differs from pushNewElement() in that it adds the new Element to the current Element's parent (or document if there is no parent Element).  This makes the new Element a sibling of the current one.
  11149.  
  11150. @param name XML tag for the new Element.
  11151. @see pushNewElement() */
  11152.     virtual void addNewElement(( string name )) {}
  11153.     /*! @brief Add a XML header to a document.
  11154.  
  11155. Sometimes called a declaration, you typically add a standard header to the document before adding any elements.  SimXMLDocument always produces the following header:
  11156.  
  11157. <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11158.  
  11159. @tsexample
  11160. // Create a new XML document with just a header and single element.
  11161. %x = new SimXMLDocument();
  11162. %x.addHeader();
  11163. %x.addNewElement("NewElement");
  11164. %x.saveFile("test.xml");
  11165.  
  11166. // Produces the following file:
  11167. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11168. // <NewElement />
  11169. @endtsexample
  11170.  
  11171.  */
  11172.     virtual void addHeader(()) {}
  11173.     /*! @brief Add the given comment as a child of the document.
  11174.  
  11175. @param comment String containing the comment.@tsexample
  11176. // Create a new XML document with a header, a comment and single element.
  11177. %x = new SimXMLDocument();
  11178. %x.addHeader();
  11179. %x.addComment("This is a test comment");
  11180. %x.addNewElement("NewElement");
  11181. %x.saveFile("test.xml");
  11182.  
  11183. // Produces the following file:
  11184. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11185. // <!--This is a test comment-->
  11186. // <NewElement />
  11187. @endtsexample
  11188.  
  11189. @see readComment() */
  11190.     virtual void addComment(( string comment )) {}
  11191.     /*! Gives the comment at the specified index, if any.
  11192.  
  11193. Unlike addComment() that only works at the document level, readComment() may read comments from the document or any child Element.  The current Element (or document if no Elements have been pushed to the stack) is the parent for any comments, and the provided index is the number of comments in to read back.@param index Comment index number to query from the current Element stack
  11194.  
  11195. @return String containing the comment, or an empty string if no comment is found.
  11196.  
  11197. @see addComment() */
  11198.     virtual string readComment(( int index )) {}
  11199.     /*! @brief Add the given text as a child of current Element.
  11200.  
  11201. Use getText() to retrieve any text from the current Element and removeText() to clear any text.
  11202.  
  11203. addText() and addData() may be used interchangeably.@param text String containing the text.
  11204.  
  11205. @tsexample
  11206. // Create a new XML document with a header and single element
  11207. // with some added text.
  11208. %x = new SimXMLDocument();
  11209. %x.addHeader();
  11210. %x.addNewElement("NewElement");
  11211. %x.addText("Some text");
  11212. %x.saveFile("test.xml");
  11213.  
  11214. // Produces the following file:
  11215. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11216. // <NewElement>Some text</NewElement>
  11217. @endtsexample
  11218.  
  11219. @see getText()
  11220. @see removeText()
  11221. @see addData()
  11222. @see getData() */
  11223.     virtual void addText(( string text )) {}
  11224.     /*! @brief Gets the text from the current Element.
  11225.  
  11226. Use addText() to add text to the current Element and removeText() to clear any text.
  11227.  
  11228. getText() and getData() may be used interchangeably.@return String containing the text in the current Element.@tsexample
  11229. // Using the following test.xml file as an example:
  11230. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11231. // <NewElement>Some text</NewElement>
  11232.  
  11233. // Load in the file
  11234. %x = new SimXMLDocument();
  11235. %x.loadFile("test.xml");
  11236.  
  11237. // Make the first Element the current one
  11238. %x.pushFirstChildElement("NewElement");
  11239.  
  11240. // Store the current Element's text ('Some text' in this example)
  11241. // into 'result'
  11242. %result = %x.getText();
  11243. echo( %result );
  11244. @endtsexample
  11245.  
  11246. @see addText()
  11247. @see removeText()
  11248. @see addData()
  11249. @see getData()
  11250.  */
  11251.     virtual string getText(()) {}
  11252.     /*! @brief Remove any text on the current Element.
  11253.  
  11254. Use getText() to retrieve any text from the current Element and addText() to add text to the current Element.  As getData() and addData() are equivalent to getText() and addText(), removeText() will also remove any data from the current Element.
  11255.  
  11256. @see addText()
  11257. @see getText()
  11258. @see addData()
  11259. @see getData()
  11260.  */
  11261.     virtual void removeText(()) {}
  11262.     /*! @brief Add the given text as a child of current Element.
  11263.  
  11264. Use getData() to retrieve any text from the current Element.
  11265.  
  11266. addData() and addText() may be used interchangeably.  As there is no difference between data and text, you may also use removeText() to clear any data from the current Element.
  11267.  
  11268. @param text String containing the text.
  11269.  
  11270. @tsexample
  11271. // Create a new XML document with a header and single element
  11272. // with some added data.
  11273. %x = new SimXMLDocument();
  11274. %x.addHeader();
  11275. %x.addNewElement("NewElement");
  11276. %x.addData("Some text");
  11277. %x.saveFile("test.xml");
  11278.  
  11279. // Produces the following file:
  11280. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11281. // <NewElement>Some text</NewElement>
  11282. @endtsexample
  11283.  
  11284. @see getData()@see addText()
  11285. @see getText()
  11286. @see removeText()
  11287.  */
  11288.     virtual void addData(( string text )) {}
  11289.     /*! @brief Gets the text from the current Element.
  11290.  
  11291. Use addData() to add text to the current Element.
  11292.  
  11293. getData() and getText() may be used interchangeably.  As there is no difference between data and text, you may also use removeText() to clear any data from the current Element.
  11294.  
  11295. @return String containing the text in the current Element.@tsexample
  11296. // Using the following test.xml file as an example:
  11297. // <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  11298. // <NewElement>Some data</NewElement>
  11299.  
  11300. // Load in the file
  11301. %x = new SimXMLDocument();
  11302. %x.loadFile("test.xml");
  11303.  
  11304. // Make the first Element the current one
  11305. %x.pushFirstChildElement("NewElement");
  11306.  
  11307. // Store the current Element's data ('Some data' in this example)
  11308. // into 'result'
  11309. %result = %x.getData();
  11310. echo( %result );
  11311. @endtsexample
  11312.  
  11313. @see addData()
  11314. @see addText()
  11315. @see getText()
  11316. @see removeText()
  11317.  */
  11318.     virtual string getData(()) {}
  11319.  
  11320.     /*! @name Ungrouped
  11321.     @{ */
  11322.     /*! */
  11323.     /// @}
  11324.  
  11325.  
  11326.     /*! @name Object
  11327.     @{ */
  11328.     /*! */
  11329.     /// @}
  11330.  
  11331.  
  11332.     /*! @name Editing
  11333.     @{ */
  11334.     /*! */
  11335.     /// @}
  11336.  
  11337.  
  11338.     /*! @name Persistence
  11339.     @{ */
  11340.     /*! */
  11341.     /// @}
  11342.  
  11343.  };
  11344.  
  11345.  /*!
  11346.  @brief This class is responsible opening, reading, creating, and saving file contents.
  11347.  
  11348.  FileObject acts as the interface with OS level files.  You create a new FileObject and pass into it a file's path and name.  The FileObject class supports three distinct operations for working with files:
  11349.  
  11350.  <table border='1' cellpadding='1'><tr><th>Operation</th><th>%FileObject Method</th><th>Description</th></tr><tr><td>Read</td><td>openForRead()</td><td>Open the file for reading</td></tr><tr><td>Write</td><td>openForWrite()</td><td>Open the file for writing to and replace its contents (if any)</td></tr><tr><td>Append</td><td>openForAppend()</td><td>Open the file and start writing at its end</td></tr></table>
  11351.  
  11352.  Before you may work with a file you need to use one of the three above methods on the FileObject.
  11353.  
  11354.  @tsexample
  11355.  // Create a file object for writing
  11356.  %fileWrite = new FileObject();
  11357.  
  11358.  // Open a file to write to, if it does not exist it will be created
  11359.  %result = %fileWrite.OpenForWrite("./test.txt");
  11360.  
  11361.  if ( %result )
  11362.  {
  11363.     // Write a line to the text files
  11364.     %fileWrite.writeLine("READ. READ CODE. CODE");
  11365.  }
  11366.  
  11367.  // Close the file when finished
  11368.  %fileWrite.close();
  11369.  
  11370.  // Cleanup the file object
  11371.  %fileWrite.delete();
  11372.  
  11373.  
  11374.  // Create a file object for reading
  11375.  %fileRead = new FileObject();
  11376.  
  11377.  // Open a text file, if it exists
  11378.  %result = %fileRead.OpenForRead("./test.txt");
  11379.  
  11380.  if ( %result )
  11381.  {
  11382.     // Read in the first line
  11383.     %line = %fileRead.readline();
  11384.  
  11385.     // Print the line we just read
  11386.     echo(%line);
  11387.  }
  11388.  
  11389.  // Close the file when finished
  11390.  %fileRead.close();
  11391.  
  11392.  // Cleanup the file object
  11393.  %fileRead.delete();
  11394.  @endtsexample
  11395.  
  11396.  @ingroup FileSystem
  11397.   */
  11398.  class  FileObject : public SimObject {
  11399.    public:
  11400.     /*! @brief Open a specified file for reading
  11401.  
  11402. There is no limit as to what kind of file you can read. Any format and data contained within is accessible, not just text
  11403.  
  11404. @param filename Path, name, and extension of file to be read@tsexample
  11405. // Create a file object for reading
  11406. %fileRead = new FileObject();
  11407.  
  11408. // Open a text file, if it exists
  11409. %result = %fileRead.OpenForRead("./test.txt");
  11410. @endtsexample
  11411.  
  11412. @return True if file was successfully opened, false otherwise
  11413.  */
  11414.     virtual bool openForRead(( string filename )) {}
  11415.     /*! @brief Open a specified file for writing
  11416.  
  11417. There is no limit as to what kind of file you can write. Any format and data is allowable, not just text
  11418.  
  11419. @param filename Path, name, and extension of file to write to@tsexample
  11420. // Create a file object for writing
  11421. %fileWrite = new FileObject();
  11422.  
  11423. // Open a file to write to, if it does not exist it will be created
  11424. %result = %fileWrite.OpenForWrite("./test.txt");
  11425. @endtsexample
  11426.  
  11427. @return True if file was successfully opened, false otherwise
  11428.  */
  11429.     virtual bool openForWrite(( string filename )) {}
  11430.     /*! @brief Open a specified file for writing, adding data to the end of the file
  11431.  
  11432. There is no limit as to what kind of file you can write. Any format and data is allowable, not just text. Unlike openForWrite(), which will erase an existing file if it is opened, openForAppend() preserves data in an existing file and adds to it.
  11433.  
  11434. @param filename Path, name, and extension of file to append to@tsexample
  11435. // Create a file object for writing
  11436. %fileWrite = new FileObject();
  11437.  
  11438. // Open a file to write to, if it does not exist it will be created
  11439. // If it does exist, whatever we write will be added to the end
  11440. %result = %fileWrite.OpenForAppend("./test.txt");
  11441. @endtsexample
  11442.  
  11443. @return True if file was successfully opened, false otherwise
  11444.  */
  11445.     virtual bool openForAppend(( string filename )) {}
  11446.     /*! @brief Determines if the parser for this FileObject has reached the end of the file
  11447.  
  11448. @tsexample
  11449. // Create a file object for reading
  11450. %fileRead = new FileObject();
  11451.  
  11452. // Open a text file, if it exists
  11453. %fileRead.OpenForRead("./test.txt");
  11454.  
  11455. // Keep reading until we reach the end of the file
  11456. while( !%fileRead.isEOF() )
  11457. {
  11458.    %line = %fileRead.readline();
  11459.    echo(%line);
  11460. }
  11461.  
  11462. // Made it to the end
  11463. echo("Finished reading file");
  11464. @endtsexample
  11465.  
  11466. @return True if the parser has reached the end of the file, false otherwise
  11467.  */
  11468.     virtual bool isEOF(()) {}
  11469.     /*! @brief Read a line from file.
  11470.  
  11471. Emphasis on *line*, as in you cannot parse individual characters or chunks of data.  There is no limitation as to what kind of data you can read.
  11472.  
  11473. @tsexample
  11474. // Create a file object for reading
  11475. %fileRead = new FileObject();
  11476.  
  11477. // Open a text file, if it exists
  11478. %fileRead.OpenForRead("./test.txt");
  11479.  
  11480. // Read in the first line
  11481. %line = %fileRead.readline();
  11482.  
  11483. // Print the line we just read
  11484. echo(%line);
  11485. @endtsexample
  11486.  
  11487. @return String containing the line of data that was just read
  11488.  */
  11489.     virtual string readLine(()) {}
  11490.     /*! @brief Read a line from the file without moving the stream position.
  11491.  
  11492. Emphasis on *line*, as in you cannot parse individual characters or chunks of data.  There is no limitation as to what kind of data you can read. Unlike readLine, the parser does not move forward after reading.
  11493.  
  11494. @param filename Path, name, and extension of file to be read@tsexample
  11495. // Create a file object for reading
  11496. %fileRead = new FileObject();
  11497.  
  11498. // Open a text file, if it exists
  11499. %fileRead.OpenForRead("./test.txt");
  11500.  
  11501. // Peek the first line
  11502. %line = %fileRead.peekLine();
  11503.  
  11504. // Print the line we just peeked
  11505. echo(%line);
  11506. // If we peek again...
  11507. %line = %fileRead.peekLine();
  11508.  
  11509. // We will get the same output as the first time
  11510. // since the stream did not move forward
  11511. echo(%line);
  11512. @endtsexample
  11513.  
  11514. @return String containing the line of data that was just peeked
  11515.  */
  11516.     virtual string peekLine(()) {}
  11517.     /*! @brief Write a line to the file, if it was opened for writing.
  11518.  
  11519. There is no limit as to what kind of text you can write. Any format and data is allowable, not just text. Be careful of what you write, as whitespace, current values, and literals will be preserved.
  11520.  
  11521. @param text The data we are writing out to file.@tsexample
  11522. // Create a file object for writing
  11523. %fileWrite = new FileObject();
  11524.  
  11525. // Open a file to write to, if it does not exist it will be created
  11526. %fileWrite.OpenForWrite("./test.txt");
  11527.  
  11528. // Write a line to the text files
  11529. %fileWrite.writeLine("READ. READ CODE. CODE");
  11530.  
  11531. @endtsexample
  11532.  
  11533. @return True if file was successfully opened, false otherwise
  11534.  */
  11535.     virtual void writeLine(( string text )) {}
  11536.     /*! @brief Close the file.
  11537.  
  11538. It is EXTREMELY important that you call this function when you are finished reading or writing to a file. Failing to do so is not only a bad programming practice, but could result in bad data or corrupt files. Remember: Open, Read/Write, Close, Delete...in that order!
  11539.  
  11540. @tsexample
  11541. // Create a file object for reading
  11542. %fileRead = new FileObject();
  11543.  
  11544. // Open a text file, if it exists
  11545. %fileRead.OpenForRead("./test.txt");
  11546.  
  11547. // Peek the first line
  11548. %line = %fileRead.peekLine();
  11549.  
  11550. // Print the line we just peeked
  11551. echo(%line);
  11552. // If we peek again...
  11553. %line = %fileRead.peekLine();
  11554.  
  11555. // We will get the same output as the first time
  11556. // since the stream did not move forward
  11557. echo(%line);
  11558.  
  11559. // Close the file when finished
  11560. %fileWrite.close();
  11561.  
  11562. // Cleanup the file object
  11563. %fileWrite.delete();
  11564. @endtsexample
  11565.  
  11566.  */
  11567.     virtual void close(()) {}
  11568.     /*! FileObject.writeObject(SimObject, object prepend)@hide */
  11569.     virtual void writeObject() {}
  11570.  
  11571.     /*! @name Ungrouped
  11572.     @{ */
  11573.     /*! */
  11574.     /// @}
  11575.  
  11576.  
  11577.     /*! @name Object
  11578.     @{ */
  11579.     /*! */
  11580.     /// @}
  11581.  
  11582.  
  11583.     /*! @name Editing
  11584.     @{ */
  11585.     /*! */
  11586.     /// @}
  11587.  
  11588.  
  11589.     /*! @name Persistence
  11590.     @{ */
  11591.     /*! */
  11592.     /// @}
  11593.  
  11594.  };
  11595.  
  11596.  /*!
  11597.  @brief Represents the sky with an artist-created cubemap.
  11598.  
  11599.  SkyBox is not a directional light and should be used in conjunction with a Sun object.
  11600.  
  11601.   */
  11602.  class  SkyBox : public SceneObject {
  11603.    public:
  11604.     virtual void postApply() {}
  11605.  
  11606.     /*! @name Sky Box
  11607.     @{ */
  11608.     /*! */
  11609.     /*!
  11610.     The name of a cubemap material for the sky box.
  11611.    
  11612.      */
  11613.     string Material;
  11614.     /*!
  11615.     If false the bottom of the skybox is not rendered.
  11616.    
  11617.      */
  11618.     bool drawBottom;
  11619.     /*!
  11620.     The height (0-1) of the fog band from the horizon to the top of the SkyBox.
  11621.    
  11622.      */
  11623.     float fogBandHeight;
  11624.     /// @}
  11625.  
  11626.  
  11627.     /*! @name Transform
  11628.     @{ */
  11629.     /*! */
  11630.     /// @}
  11631.  
  11632.  
  11633.     /*! @name Editing
  11634.     @{ */
  11635.     /*! */
  11636.     /// @}
  11637.  
  11638.  
  11639.     /*! @name Mounting
  11640.     @{ */
  11641.     /*! */
  11642.     /// @}
  11643.  
  11644.  
  11645.     /*! @name Ungrouped
  11646.     @{ */
  11647.     /*! */
  11648.     /// @}
  11649.  
  11650.  
  11651.     /*! @name Object
  11652.     @{ */
  11653.     /*! */
  11654.     /// @}
  11655.  
  11656.  
  11657.     /*! @name Editing
  11658.     @{ */
  11659.     /*! */
  11660.     /// @}
  11661.  
  11662.  
  11663.     /*! @name Persistence
  11664.     @{ */
  11665.     /*! */
  11666.     /// @}
  11667.  
  11668.  };
  11669.  
  11670.  /*!
  11671.  @brief Environmental object that triggers a day/night cycle in level.
  11672.  
  11673.  @note TimeOfDay only works in Advanced Lighting with a Sub object or ScatterSky
  11674.  
  11675.  @tsexample
  11676.  new TimeOfDay(tod)
  11677.  {
  11678.     axisTilt = "23.44";
  11679.     dayLength = "120";
  11680.     startTime = "0.15";
  11681.     time = "0.15";
  11682.     play = "0";
  11683.     azimuthOverride = "572.958";
  11684.     dayScale = "1";
  11685.     nightScale = "1.5";
  11686.     position = "598.399 550.652 196.297";
  11687.     rotation = "1 0 0 0";
  11688.     scale = "1 1 1";
  11689.     canSave = "1";
  11690.     canSaveDynamicFields = "1";
  11691.  };
  11692.  @endtsexample
  11693.  
  11694.   */
  11695.  class  TimeOfDay : public SceneObject {
  11696.    public:
  11697.     virtual void addTimeOfDayEvent(( float elevation, string identifier )) {}
  11698.     virtual void setTimeOfDay(( float time )) {}
  11699.     virtual void setPlay(( bool enabled )) {}
  11700.     virtual void setDayLength(( float seconds )) {}
  11701.     virtual void animate(( float elevation, float degreesPerSecond )) {}
  11702.  
  11703.     /*! @name TimeOfDay
  11704.     @{ */
  11705.     /*! */
  11706.     /*!
  11707.     The angle in degrees between global equator and tropic.
  11708.    
  11709.      */
  11710.     float axisTilt;
  11711.     /*!
  11712.     The length of a virtual day in real world seconds.
  11713.    
  11714.      */
  11715.     float dayLength;
  11716.     /*!
  11717.    
  11718.    
  11719.      */
  11720.     float startTime;
  11721.     /*!
  11722.     Current time of day.
  11723.    
  11724.      */
  11725.     float time;
  11726.     /*!
  11727.     True when the TimeOfDay object is operating.
  11728.    
  11729.      */
  11730.     bool play;
  11731.     /*!
  11732.    
  11733.    
  11734.      */
  11735.     float azimuthOverride;
  11736.     /*!
  11737.     Scalar applied to time that elapses while the sun is up.
  11738.    
  11739.      */
  11740.     float dayScale;
  11741.     /*!
  11742.     Scalar applied to time that elapses while the sun is down.
  11743.    
  11744.      */
  11745.     float nightScale;
  11746.     /// @}
  11747.  
  11748.  
  11749.     /*! @name Transform
  11750.     @{ */
  11751.     /*! */
  11752.     /// @}
  11753.  
  11754.  
  11755.     /*! @name Editing
  11756.     @{ */
  11757.     /*! */
  11758.     /// @}
  11759.  
  11760.  
  11761.     /*! @name Mounting
  11762.     @{ */
  11763.     /*! */
  11764.     /// @}
  11765.  
  11766.  
  11767.     /*! @name Ungrouped
  11768.     @{ */
  11769.     /*! */
  11770.     /// @}
  11771.  
  11772.  
  11773.     /*! @name Object
  11774.     @{ */
  11775.     /*! */
  11776.     /// @}
  11777.  
  11778.  
  11779.     /*! @name Editing
  11780.     @{ */
  11781.     /*! */
  11782.     /// @}
  11783.  
  11784.  
  11785.     /*! @name Persistence
  11786.     @{ */
  11787.     /*! */
  11788.     /// @}
  11789.  
  11790.  };
  11791.  
  11792.  /*!
  11793.  @brief Object responsible for simulating wind in a level.
  11794.  
  11795.  When placed in the level, a ForestWindEmitter will cause tree branches to bend and sway, leaves to flutter, and create vertical bending on the tree's trunk.
  11796.  
  11797.  @tsexample
  11798.  // The following is a full declaration of a wind emitter
  11799.  new ForestWindEmitter()
  11800.  {
  11801.     position = "497.739 765.821 102.395";
  11802.     windEnabled = "1";
  11803.     radialEmitter = "1";
  11804.     strength = "1";
  11805.     radius = "3";
  11806.     gustStrength = "0.5";
  11807.     gustFrequency = "1";
  11808.     gustYawAngle = "10";
  11809.     gustYawFrequency = "4";
  11810.     gustWobbleStrength = "2";
  11811.     turbulenceStrength = "1";
  11812.     turbulenceFrequency = "2";
  11813.     hasMount = "0";
  11814.     scale = "3 3 3";
  11815.     canSave = "1";
  11816.     canSaveDynamicFields = "1";
  11817.     rotation = "1 0 0 0";
  11818.  };
  11819.  @endtsexample
  11820.  
  11821.  @ingroup FX
  11822.  @ingroup Forest
  11823.   */
  11824.  class  ForestWindEmitter : public SceneObject {
  11825.    public:
  11826.     /*! @brief Mounts the wind emitter to another scene object
  11827.  
  11828. @param objectID Unique ID of the object wind emitter should attach to@tsexample
  11829. // Wind emitter previously created and named %windEmitter
  11830. // Going to attach it to the player, making him a walking wind storm
  11831. %windEmitter.attachToObject(%player);
  11832. @endtsexample
  11833.  
  11834.  */
  11835.     virtual void attachToObject(( int objectID )) {}
  11836.  
  11837.     /*! @name Transform
  11838.     @{ */
  11839.     /*! */
  11840.     /// @}
  11841.  
  11842.  
  11843.     /*! @name Editing
  11844.     @{ */
  11845.     /*! */
  11846.     /// @}
  11847.  
  11848.  
  11849.     /*! @name Mounting
  11850.     @{ */
  11851.     /*! */
  11852.     /// @}
  11853.  
  11854.  
  11855.     /*! @name Ungrouped
  11856.     @{ */
  11857.     /*! */
  11858.     /// @}
  11859.  
  11860.  
  11861.     /*! @name Object
  11862.     @{ */
  11863.     /*! */
  11864.     /// @}
  11865.  
  11866.  
  11867.     /*! @name Editing
  11868.     @{ */
  11869.     /*! */
  11870.     /// @}
  11871.  
  11872.  
  11873.     /*! @name Persistence
  11874.     @{ */
  11875.     /*! */
  11876.     /// @}
  11877.  
  11878.  
  11879.     /*! @name ForestWind
  11880.     @{ */
  11881.     /*! */
  11882.     /*!
  11883.     Determines if the emitter will be counted in wind calculations.
  11884.    
  11885.      */
  11886.     bool windEnabled;
  11887.     /*!
  11888.     Determines if the emitter is a global direction or local radial emitter.
  11889.    
  11890.      */
  11891.     bool radialEmitter;
  11892.     /*!
  11893.     The strength of the wind force.
  11894.    
  11895.      */
  11896.     float strength;
  11897.     /*!
  11898.     The radius of the emitter for local radial emitters.
  11899.    
  11900.      */
  11901.     float radius;
  11902.     /*!
  11903.     The maximum strength of a gust.
  11904.    
  11905.      */
  11906.     float gustStrength;
  11907.     /*!
  11908.     The frequency of gusting in seconds.
  11909.    
  11910.      */
  11911.     float gustFrequency;
  11912.     /*!
  11913.     The amount of degrees the wind direction can drift (both positive and negative).
  11914.    
  11915.      */
  11916.     float gustYawAngle;
  11917.     /*!
  11918.     The frequency of wind yaw drift, in seconds.
  11919.    
  11920.      */
  11921.     float gustYawFrequency;
  11922.     /*!
  11923.     The amount of random wobble added to gust and turbulence vectors.
  11924.    
  11925.      */
  11926.     float gustWobbleStrength;
  11927.     /*!
  11928.     The strength of gust turbulence.
  11929.    
  11930.      */
  11931.     float turbulenceStrength;
  11932.     /*!
  11933.     The frequency of gust turbulence, in seconds.
  11934.    
  11935.      */
  11936.     float turbulenceFrequency;
  11937.     /*!
  11938.     Determines if the emitter is mounted to another object.
  11939.    
  11940.      */
  11941.     bool hasMount;
  11942.     /// @}
  11943.  
  11944.  };
  11945.  
  11946.  class  GFXCardProfilerAPI {
  11947.    public:
  11948.     /*! Returns the driver version string. */
  11949.     virtual string getVersion(()) {}
  11950.     /*! Returns the card name. */
  11951.     virtual string getCard(()) {}
  11952.     /*! Returns the card vendor name. */
  11953.     virtual string getVendor(()) {}
  11954.     /*! Returns the renderer name.  For example D3D9 or OpenGL. */
  11955.     virtual string getRenderer(()) {}
  11956.     /*! Returns the amount of video memory in megabytes. */
  11957.     virtual int getVideoMemoryMB(()) {}
  11958.     /*! Used to set the value for a specific card capability.
  11959. @param name The name of the capability being set.
  11960. @param value The value to set for that capability. */
  11961.     virtual void setCapability(( string name, int value )) {}
  11962.     /*! Used to query the value of a specific card capability.
  11963. @param name The name of the capability being queried.
  11964. @param defaultValue The value to return if the capability is not defined. */
  11965.     virtual int queryProfile(( string name, int defaultValue )) {}
  11966.  };
  11967.  
  11968.  class  GFXInit {
  11969.    public:
  11970.     /*! Return the number of graphics adapters available. @ingroup GFX */
  11971.     virtual int getAdapterCount(()) {}
  11972.     /*! Returns the name of the graphics adapter.
  11973. @param index The index of the adapter. */
  11974.     virtual string getAdapterName(( int index )) {}
  11975.     /*! Returns the type (D3D9, D3D8, GL, Null) of a graphics adapter.
  11976. @param index The index of the adapter. */
  11977.     virtual string getAdapterType(( int index )) {}
  11978.     /*! Returns the supported shader model of the graphics adapter or -1 if the index is bad.
  11979. @param index The index of the adapter. */
  11980.     virtual float getAdapterShaderModel(( int index )) {}
  11981.     /*! Returns the index of the default graphics adapter.  This is the graphics device which will be used to initialize the engine. */
  11982.     virtual int getDefaultAdapterIndex(()) {}
  11983.     /*! Gets the number of modes available on the specified adapter.
  11984.  
  11985. @param index Index of the adapter to get modes from.
  11986. @return The number of video modes supported by the adapter or -1 if the given adapter was not found. */
  11987.     virtual int getAdapterModeCount(( int index )) {}
  11988.     /*! Gets the details of the specified adapter mode.
  11989.  
  11990. @param index Index of the adapter to query.
  11991. @param modeIndex Index of the mode to get data from.
  11992. @return A video mode string in the format 'width height fullscreen bitDepth refreshRate aaLevel'.
  11993. @see GuiCanvas::getVideoMode() */
  11994.     virtual string getAdapterMode(( int index, int modeIndex )) {}
  11995.     /*! Create the NULL graphics device used for testing or headless operation. */
  11996.     virtual void createNullDevice(()) {}
  11997.  };
  11998.  
  11999.  class  CmHotBarTabBook : public GuiTabBookCtrl {
  12000.    public:
  12001.     virtual void onTabSelected(( String text, int index )) {}
  12002.  
  12003.     /*! @name TabBook
  12004.     @{ */
  12005.     /*! */
  12006.     /// @}
  12007.  
  12008.  
  12009.     /*! @name Layout
  12010.     @{ */
  12011.     /*! */
  12012.     /// @}
  12013.  
  12014.  
  12015.     /*! @name Layout
  12016.     @{ */
  12017.     /*! */
  12018.     /// @}
  12019.  
  12020.  
  12021.     /*! @name Control
  12022.     @{ */
  12023.     /*! */
  12024.     /// @}
  12025.  
  12026.  
  12027.     /*! @name ToolTip
  12028.     @{ */
  12029.     /*! */
  12030.     /// @}
  12031.  
  12032.  
  12033.     /*! @name Editing
  12034.     @{ */
  12035.     /*! */
  12036.     /// @}
  12037.  
  12038.  
  12039.     /*! @name Localization
  12040.     @{ */
  12041.     /*! */
  12042.     /// @}
  12043.  
  12044.  
  12045.     /*! @name Ungrouped
  12046.     @{ */
  12047.     /*! */
  12048.     /// @}
  12049.  
  12050.  
  12051.     /*! @name Object
  12052.     @{ */
  12053.     /*! */
  12054.     /// @}
  12055.  
  12056.  
  12057.     /*! @name Editing
  12058.     @{ */
  12059.     /*! */
  12060.     /// @}
  12061.  
  12062.  
  12063.     /*! @name Persistence
  12064.     @{ */
  12065.     /*! */
  12066.     /// @}
  12067.  
  12068.  };
  12069.  
  12070.  class  CmHotBarTab : public GuiTabPageCtrl {
  12071.    public:
  12072.     virtual void onThisControlDropped(( Point2I dropPoint )) {}
  12073.  
  12074.     /*! @name Layout
  12075.     @{ */
  12076.     /*! */
  12077.     /// @}
  12078.  
  12079.  
  12080.     /*! @name Layout
  12081.     @{ */
  12082.     /*! */
  12083.     /// @}
  12084.  
  12085.  
  12086.     /*! @name Control
  12087.     @{ */
  12088.     /*! */
  12089.     /// @}
  12090.  
  12091.  
  12092.     /*! @name ToolTip
  12093.     @{ */
  12094.     /*! */
  12095.     /// @}
  12096.  
  12097.  
  12098.     /*! @name Editing
  12099.     @{ */
  12100.     /*! */
  12101.     /// @}
  12102.  
  12103.  
  12104.     /*! @name Localization
  12105.     @{ */
  12106.     /*! */
  12107.     /// @}
  12108.  
  12109.  
  12110.     /*! @name Ungrouped
  12111.     @{ */
  12112.     /*! */
  12113.     /// @}
  12114.  
  12115.  
  12116.     /*! @name Object
  12117.     @{ */
  12118.     /*! */
  12119.     /// @}
  12120.  
  12121.  
  12122.     /*! @name Editing
  12123.     @{ */
  12124.     /*! */
  12125.     /// @}
  12126.  
  12127.  
  12128.     /*! @name Persistence
  12129.     @{ */
  12130.     /*! */
  12131.     /// @}
  12132.  
  12133.  };
  12134.  
  12135.  class  CmHotBarWindow : public GuiWindowCtrl {
  12136.    public:
  12137.     virtual Script onSettings(( string obj )) {}
  12138.     virtual void onClose(()) {}
  12139.     virtual int getXCells(()) {}
  12140.     virtual void setXCells(( int num )) {}
  12141.  
  12142.     /*! @name Window
  12143.     @{ */
  12144.     /*! */
  12145.     /// @}
  12146.  
  12147.  
  12148.     /*! @name Layout
  12149.     @{ */
  12150.     /*! */
  12151.     /// @}
  12152.  
  12153.  
  12154.     /*! @name Layout
  12155.     @{ */
  12156.     /*! */
  12157.     /// @}
  12158.  
  12159.  
  12160.     /*! @name Control
  12161.     @{ */
  12162.     /*! */
  12163.     /// @}
  12164.  
  12165.  
  12166.     /*! @name ToolTip
  12167.     @{ */
  12168.     /*! */
  12169.     /// @}
  12170.  
  12171.  
  12172.     /*! @name Editing
  12173.     @{ */
  12174.     /*! */
  12175.     /// @}
  12176.  
  12177.  
  12178.     /*! @name Localization
  12179.     @{ */
  12180.     /*! */
  12181.     /// @}
  12182.  
  12183.  
  12184.     /*! @name Ungrouped
  12185.     @{ */
  12186.     /*! */
  12187.     /// @}
  12188.  
  12189.  
  12190.     /*! @name Object
  12191.     @{ */
  12192.     /*! */
  12193.     /// @}
  12194.  
  12195.  
  12196.     /*! @name Editing
  12197.     @{ */
  12198.     /*! */
  12199.     /// @}
  12200.  
  12201.  
  12202.     /*! @name Persistence
  12203.     @{ */
  12204.     /*! */
  12205.     /// @}
  12206.  
  12207.  };
  12208.  
  12209.  class  GuiCmIntegralBmpBtnCtrl {
  12210.    public:
  12211.     /*! Set the bitmap to show on the button.
  12212. @param path Path to the texture file in any of the supported formats.
  12213.  */
  12214.     virtual void setBitmap(( string path )) {}
  12215.  };
  12216.  
  12217.  /*!
  12218.  @brief Draws the bitmap within a special button control.  Only a single bitmap is used and the
  12219.  button will be drawn in a highlighted mode when the mouse hovers over it or when it
  12220.  has been clicked.
  12221.  
  12222.  @tsexample
  12223.  new GuiIconButtonCtrl(TestIconButton)
  12224.  {
  12225.     buttonMargin = "4 4";
  12226.     iconBitmap = "art/gui/lagIcon.png";
  12227.     iconLocation = "Center";
  12228.     sizeIconToButton = "0";
  12229.     makeIconSquare = "1";
  12230.     textLocation = "Bottom";
  12231.     textMargin = "-2";
  12232.     autoSize = "0";
  12233.     text = "Lag Icon";
  12234.     textID = ""STR_LAG"";
  12235.     buttonType = "PushButton";
  12236.     profile = "GuiIconButtonProfile";
  12237.  };
  12238.  @endtsexample
  12239.  
  12240.  @see GuiControl
  12241.  @see GuiButtonCtrl
  12242.  
  12243.  @ingroup GuiCore
  12244.   */
  12245.  class  GuiIconButtonCtrl : public GuiButtonCtrl {
  12246.    public:
  12247.     /*! @brief Set the bitmap to use for the button portion of this control.
  12248.  
  12249. @param buttonFilename Filename for the image
  12250. @tsexample
  12251. // Define the button filename
  12252. %buttonFilename = "pearlButton";
  12253.  
  12254. // Inform the GuiIconButtonCtrl control to update its main button graphic to the defined bitmap
  12255. %thisGuiIconButtonCtrl.setBitmap(%buttonFilename);
  12256. @endtsexample
  12257.  
  12258. @see GuiControl
  12259. @see GuiButtonCtrl
  12260.  
  12261.  */
  12262.     virtual void setBitmap(( string buttonFilename )) {}
  12263.     /*!
  12264.     Margin area around the button.
  12265.  
  12266.    
  12267.      */
  12268.     Point2I buttonMargin;
  12269.     /*!
  12270.     Bitmap file for the icon to display on the button.
  12271.  
  12272.    
  12273.      */
  12274.     filename iconBitmap;
  12275.     /*!
  12276.     Where to place the icon on the control. Options are 0 (None), 1 (Left), 2 (Right), 3 (Center).
  12277.  
  12278.    
  12279.      */
  12280.     GuiIconButtonIconLocation iconLocation;
  12281.     /*!
  12282.     If true, the icon will be scaled to be the same size as the button.
  12283.  
  12284.    
  12285.      */
  12286.     bool sizeIconToButton;
  12287.     /*!
  12288.     If true, will make sure the icon is square.
  12289.  
  12290.    
  12291.      */
  12292.     bool makeIconSquare;
  12293.     /*!
  12294.     Where to place the text on the control.
  12295. Options are 0 (None), 1 (Bottom), 2 (Right), 3 (Top), 4 (Left), 5 (Center).
  12296.  
  12297.    
  12298.      */
  12299.     GuiIconButtonTextLocation textLocation;
  12300.     /*!
  12301.     Margin between the icon and the text.
  12302.  
  12303.    
  12304.      */
  12305.     int textMargin;
  12306.     /*!
  12307.     If true, the text and icon will be automatically sized to the size of the control.
  12308.  
  12309.    
  12310.      */
  12311.     bool autoSize;
  12312.  
  12313.     /*! @name Button
  12314.     @{ */
  12315.     /*! */
  12316.     /// @}
  12317.  
  12318.  
  12319.     /*! @name Button
  12320.     @{ */
  12321.     /*! */
  12322.     /// @}
  12323.  
  12324.  
  12325.     /*! @name Layout
  12326.     @{ */
  12327.     /*! */
  12328.     /// @}
  12329.  
  12330.  
  12331.     /*! @name Control
  12332.     @{ */
  12333.     /*! */
  12334.     /// @}
  12335.  
  12336.  
  12337.     /*! @name ToolTip
  12338.     @{ */
  12339.     /*! */
  12340.     /// @}
  12341.  
  12342.  
  12343.     /*! @name Editing
  12344.     @{ */
  12345.     /*! */
  12346.     /// @}
  12347.  
  12348.  
  12349.     /*! @name Localization
  12350.     @{ */
  12351.     /*! */
  12352.     /// @}
  12353.  
  12354.  
  12355.     /*! @name Ungrouped
  12356.     @{ */
  12357.     /*! */
  12358.     /// @}
  12359.  
  12360.  
  12361.     /*! @name Object
  12362.     @{ */
  12363.     /*! */
  12364.     /// @}
  12365.  
  12366.  
  12367.     /*! @name Editing
  12368.     @{ */
  12369.     /*! */
  12370.     /// @}
  12371.  
  12372.  
  12373.     /*! @name Persistence
  12374.     @{ */
  12375.     /*! */
  12376.     /// @}
  12377.  
  12378.  };
  12379.  
  12380.  /*!
  12381.  @brief A button that is used to represent color; often used in correlation with a color picker.
  12382.  
  12383.  A swatch button is a push button that uses its color field to designate the color drawn over an image, on top of a button.
  12384.  
  12385.  The color itself is a float value stored inside the GuiSwatchButtonCtrl::color field. The texture path that represents
  12386.  the image underlying the color is stored inside the GuiSwatchButtonCtrl::bitmap field.
  12387.  The default value assigned toGuiSwatchButtonCtrl::color is "1 1 1 1"( White ). The default/fallback image assigned to
  12388.  GuiSwatchButtonCtrl::bitmap is "core/art/gui/images/transp_grid".
  12389.  
  12390.  @tsexample
  12391.  // Create a GuiSwatchButtonCtrl that calls randomFunction with its current color when clicked
  12392.  %swatchButton = new GuiSwatchButtonCtrl()
  12393.  {
  12394.     profile = "GuiInspectorSwatchButtonProfile";
  12395.     command = "randomFunction( $ThisControl.color );";
  12396.  };
  12397.  @endtsexample
  12398.  
  12399.   */
  12400.  class  GuiSwatchButtonCtrl : public GuiButtonBaseCtrl {
  12401.    public:
  12402.     /*! Set the color of the swatch control.
  12403. @param newColor The new color string given to the swatch control in float format "r g b a".
  12404. @note It's also important to note that when setColor is called causes
  12405. the control's altCommand field to be executed. */
  12406.     virtual void setColor(( string newColor )) {}
  12407.     /*!
  12408.     The foreground color of GuiSwatchButtonCtrl
  12409.    
  12410.      */
  12411.     ColorF color;
  12412.  
  12413.     /*! @name Button
  12414.     @{ */
  12415.     /*! */
  12416.     /// @}
  12417.  
  12418.  
  12419.     /*! @name Layout
  12420.     @{ */
  12421.     /*! */
  12422.     /// @}
  12423.  
  12424.  
  12425.     /*! @name Control
  12426.     @{ */
  12427.     /*! */
  12428.     /// @}
  12429.  
  12430.  
  12431.     /*! @name ToolTip
  12432.     @{ */
  12433.     /*! */
  12434.     /// @}
  12435.  
  12436.  
  12437.     /*! @name Editing
  12438.     @{ */
  12439.     /*! */
  12440.     /// @}
  12441.  
  12442.  
  12443.     /*! @name Localization
  12444.     @{ */
  12445.     /*! */
  12446.     /// @}
  12447.  
  12448.  
  12449.     /*! @name Ungrouped
  12450.     @{ */
  12451.     /*! */
  12452.     /// @}
  12453.  
  12454.  
  12455.     /*! @name Object
  12456.     @{ */
  12457.     /*! */
  12458.     /// @}
  12459.  
  12460.  
  12461.     /*! @name Editing
  12462.     @{ */
  12463.     /*! */
  12464.     /// @}
  12465.  
  12466.  
  12467.     /*! @name Persistence
  12468.     @{ */
  12469.     /*! */
  12470.     /// @}
  12471.  
  12472.  };
  12473.  
  12474.  /*!
  12475.  @brief Unimplemented GUI control meant to interact with Toolbox.
  12476.  
  12477.  For Torque 3D editors only, soon to be deprecated
  12478.  
  12479.   */
  12480.  class  GuiToolboxButtonCtrl : public GuiButtonCtrl {
  12481.    public:
  12482.     /*! sets the bitmap that shows when the button is active */
  12483.     virtual void setNormalBitmap(( filepath name )) {}
  12484.     /*! sets the bitmap that shows when the button is disabled */
  12485.     virtual void setLoweredBitmap(( filepath name )) {}
  12486.     /*! sets the bitmap that shows when the button is disabled */
  12487.     virtual void setHoverBitmap(( filepath name )) {}
  12488.     /*!
  12489.      */
  12490.     filename normalBitmap;
  12491.     /*!
  12492.      */
  12493.     filename loweredBitmap;
  12494.     /*!
  12495.      */
  12496.     filename hoverBitmap;
  12497.  
  12498.     /*! @name Button
  12499.     @{ */
  12500.     /*! */
  12501.     /// @}
  12502.  
  12503.  
  12504.     /*! @name Button
  12505.     @{ */
  12506.     /*! */
  12507.     /// @}
  12508.  
  12509.  
  12510.     /*! @name Layout
  12511.     @{ */
  12512.     /*! */
  12513.     /// @}
  12514.  
  12515.  
  12516.     /*! @name Control
  12517.     @{ */
  12518.     /*! */
  12519.     /// @}
  12520.  
  12521.  
  12522.     /*! @name ToolTip
  12523.     @{ */
  12524.     /*! */
  12525.     /// @}
  12526.  
  12527.  
  12528.     /*! @name Editing
  12529.     @{ */
  12530.     /*! */
  12531.     /// @}
  12532.  
  12533.  
  12534.     /*! @name Localization
  12535.     @{ */
  12536.     /*! */
  12537.     /// @}
  12538.  
  12539.  
  12540.     /*! @name Ungrouped
  12541.     @{ */
  12542.     /*! */
  12543.     /// @}
  12544.  
  12545.  
  12546.     /*! @name Object
  12547.     @{ */
  12548.     /*! */
  12549.     /// @}
  12550.  
  12551.  
  12552.     /*! @name Editing
  12553.     @{ */
  12554.     /*! */
  12555.     /// @}
  12556.  
  12557.  
  12558.     /*! @name Persistence
  12559.     @{ */
  12560.     /*! */
  12561.     /// @}
  12562.  
  12563.  };
  12564.  
  12565.  class  GuiCharWindow : public GuiWindowCtrl {
  12566.    public:
  12567.     virtual void onClose(()) {}
  12568.  
  12569.     /*! @name Window
  12570.     @{ */
  12571.     /*! */
  12572.     /// @}
  12573.  
  12574.  
  12575.     /*! @name Layout
  12576.     @{ */
  12577.     /*! */
  12578.     /// @}
  12579.  
  12580.  
  12581.     /*! @name Layout
  12582.     @{ */
  12583.     /*! */
  12584.     /// @}
  12585.  
  12586.  
  12587.     /*! @name Control
  12588.     @{ */
  12589.     /*! */
  12590.     /// @}
  12591.  
  12592.  
  12593.     /*! @name ToolTip
  12594.     @{ */
  12595.     /*! */
  12596.     /// @}
  12597.  
  12598.  
  12599.     /*! @name Editing
  12600.     @{ */
  12601.     /*! */
  12602.     /// @}
  12603.  
  12604.  
  12605.     /*! @name Localization
  12606.     @{ */
  12607.     /*! */
  12608.     /// @}
  12609.  
  12610.  
  12611.     /*! @name Ungrouped
  12612.     @{ */
  12613.     /*! */
  12614.     /// @}
  12615.  
  12616.  
  12617.     /*! @name Object
  12618.     @{ */
  12619.     /*! */
  12620.     /// @}
  12621.  
  12622.  
  12623.     /*! @name Editing
  12624.     @{ */
  12625.     /*! */
  12626.     /// @}
  12627.  
  12628.  
  12629.     /*! @name Persistence
  12630.     @{ */
  12631.     /*! */
  12632.     /// @}
  12633.  
  12634.  };
  12635.  
  12636.  class  CmGuiChatTab : public GuiTabPageCtrl {
  12637.    public:
  12638.     virtual void onThisControlDropped(( Point2I dropPoint )) {}
  12639.  
  12640.     /*! @name Layout
  12641.     @{ */
  12642.     /*! */
  12643.     /// @}
  12644.  
  12645.  
  12646.     /*! @name Layout
  12647.     @{ */
  12648.     /*! */
  12649.     /// @}
  12650.  
  12651.  
  12652.     /*! @name Control
  12653.     @{ */
  12654.     /*! */
  12655.     /// @}
  12656.  
  12657.  
  12658.     /*! @name ToolTip
  12659.     @{ */
  12660.     /*! */
  12661.     /// @}
  12662.  
  12663.  
  12664.     /*! @name Editing
  12665.     @{ */
  12666.     /*! */
  12667.     /// @}
  12668.  
  12669.  
  12670.     /*! @name Localization
  12671.     @{ */
  12672.     /*! */
  12673.     /// @}
  12674.  
  12675.  
  12676.     /*! @name Ungrouped
  12677.     @{ */
  12678.     /*! */
  12679.     /// @}
  12680.  
  12681.  
  12682.     /*! @name Object
  12683.     @{ */
  12684.     /*! */
  12685.     /// @}
  12686.  
  12687.  
  12688.     /*! @name Editing
  12689.     @{ */
  12690.     /*! */
  12691.     /// @}
  12692.  
  12693.  
  12694.     /*! @name Persistence
  12695.     @{ */
  12696.     /*! */
  12697.     /// @}
  12698.  
  12699.  };
  12700.  
  12701.  class  CmGuiChatTabBook : public GuiTabBookCtrl {
  12702.    public:
  12703.     virtual void onTabSelected(( String text, int index )) {}
  12704.  
  12705.     /*! @name TabBook
  12706.     @{ */
  12707.     /*! */
  12708.     /// @}
  12709.  
  12710.  
  12711.     /*! @name Layout
  12712.     @{ */
  12713.     /*! */
  12714.     /// @}
  12715.  
  12716.  
  12717.     /*! @name Layout
  12718.     @{ */
  12719.     /*! */
  12720.     /// @}
  12721.  
  12722.  
  12723.     /*! @name Control
  12724.     @{ */
  12725.     /*! */
  12726.     /// @}
  12727.  
  12728.  
  12729.     /*! @name ToolTip
  12730.     @{ */
  12731.     /*! */
  12732.     /// @}
  12733.  
  12734.  
  12735.     /*! @name Editing
  12736.     @{ */
  12737.     /*! */
  12738.     /// @}
  12739.  
  12740.  
  12741.     /*! @name Localization
  12742.     @{ */
  12743.     /*! */
  12744.     /// @}
  12745.  
  12746.  
  12747.     /*! @name Ungrouped
  12748.     @{ */
  12749.     /*! */
  12750.     /// @}
  12751.  
  12752.  
  12753.     /*! @name Object
  12754.     @{ */
  12755.     /*! */
  12756.     /// @}
  12757.  
  12758.  
  12759.     /*! @name Editing
  12760.     @{ */
  12761.     /*! */
  12762.     /// @}
  12763.  
  12764.  
  12765.     /*! @name Persistence
  12766.     @{ */
  12767.     /*! */
  12768.     /// @}
  12769.  
  12770.  };
  12771.  
  12772.  class  CmGuiChatWindow : public GuiWindowCtrl {
  12773.    public:
  12774.     virtual void onSettings(()) {}
  12775.     virtual void onClose(()) {}
  12776.     virtual void chatCommand(( String text )) {}
  12777.     virtual bool getShowTimestamps(()) {}
  12778.     virtual void setShowTimestamps(( bool showTimestamps )) {}
  12779.     /*!
  12780.     Show timestamps for messages?
  12781.    
  12782.      */
  12783.     bool showTimestamps;
  12784.     /*!
  12785.     Log chat to file?
  12786.    
  12787.      */
  12788.     bool logToFile;
  12789.     /*!
  12790.     Chat Log File Name
  12791.    
  12792.      */
  12793.     string logFileName;
  12794.  
  12795.     /*! @name Window
  12796.     @{ */
  12797.     /*! */
  12798.     /// @}
  12799.  
  12800.  
  12801.     /*! @name Layout
  12802.     @{ */
  12803.     /*! */
  12804.     /// @}
  12805.  
  12806.  
  12807.     /*! @name Layout
  12808.     @{ */
  12809.     /*! */
  12810.     /// @}
  12811.  
  12812.  
  12813.     /*! @name Control
  12814.     @{ */
  12815.     /*! */
  12816.     /// @}
  12817.  
  12818.  
  12819.     /*! @name ToolTip
  12820.     @{ */
  12821.     /*! */
  12822.     /// @}
  12823.  
  12824.  
  12825.     /*! @name Editing
  12826.     @{ */
  12827.     /*! */
  12828.     /// @}
  12829.  
  12830.  
  12831.     /*! @name Localization
  12832.     @{ */
  12833.     /*! */
  12834.     /// @}
  12835.  
  12836.  
  12837.     /*! @name Ungrouped
  12838.     @{ */
  12839.     /*! */
  12840.     /// @}
  12841.  
  12842.  
  12843.     /*! @name Object
  12844.     @{ */
  12845.     /*! */
  12846.     /// @}
  12847.  
  12848.  
  12849.     /*! @name Editing
  12850.     @{ */
  12851.     /*! */
  12852.     /// @}
  12853.  
  12854.  
  12855.     /*! @name Persistence
  12856.     @{ */
  12857.     /*! */
  12858.     /// @}
  12859.  
  12860.  };
  12861.  
  12862.  /*!
  12863.  @brief Brief Description.
  12864.  
  12865.  This Gui Control is designed to be subclassed to let people create controls which want to receive update ticks at a constant interval. This class was created to be the Parent class of a control which used a DynamicTexture along with a VectorField to create warping effects much like the ones found in visualization displays for iTunes or Winamp. Those displays are updated at the framerate frequency. This works fine for those effects, however for an application of the same type of effects for things like Gui transitions the framerate-driven update frequency is not desirable because it does not allow the developer to be able to have any idea of a consistent user-experience.
  12866.  
  12867.  Enter the ITickable interface. This lets the Gui control, in this case, update the dynamic texture at a constant rate of once per tick, even though it gets rendered every frame, thus creating a framerate-independent update frequency so that the effects are at a consistent speed regardless of the specifics of the system the user is on. This means that the screen-transitions will occur in the same time on a machine getting 300fps in the Gui shell as a machine which gets 150fps in the Gui shell.
  12868.  
  12869.  @ingroup GuiUtil
  12870.   */
  12871.  class  GuiTickCtrl : public GuiControl {
  12872.    public:
  12873.     /*! This will set this object to either be processing ticks or not */
  12874.     virtual void setProcessTicks(( [tick = true] )) {}
  12875.  
  12876.     /*! @name Layout
  12877.     @{ */
  12878.     /*! */
  12879.     /// @}
  12880.  
  12881.  
  12882.     /*! @name Control
  12883.     @{ */
  12884.     /*! */
  12885.     /// @}
  12886.  
  12887.  
  12888.     /*! @name ToolTip
  12889.     @{ */
  12890.     /*! */
  12891.     /// @}
  12892.  
  12893.  
  12894.     /*! @name Editing
  12895.     @{ */
  12896.     /*! */
  12897.     /// @}
  12898.  
  12899.  
  12900.     /*! @name Localization
  12901.     @{ */
  12902.     /*! */
  12903.     /// @}
  12904.  
  12905.  
  12906.     /*! @name Ungrouped
  12907.     @{ */
  12908.     /*! */
  12909.     /// @}
  12910.  
  12911.  
  12912.     /*! @name Object
  12913.     @{ */
  12914.     /*! */
  12915.     /// @}
  12916.  
  12917.  
  12918.     /*! @name Editing
  12919.     @{ */
  12920.     /*! */
  12921.     /// @}
  12922.  
  12923.  
  12924.     /*! @name Persistence
  12925.     @{ */
  12926.     /*! */
  12927.     /// @}
  12928.  
  12929.  };
  12930.  
  12931.  /*!
  12932.  @brief A container that scrolls its child control up over time.
  12933.  
  12934.  This container can be used to scroll a single child control in either of the four directions.
  12935.  
  12936.  @tsexample
  12937.  // Create a GuiAutoScrollCtrl that scrolls a long text of credits.
  12938.  new GuiAutoScrollCtrl( CreditsScroller )
  12939.  {
  12940.     position = "0 0";
  12941.     extent = Canvas.extent.x SPC Canvas.extent.y;
  12942.  
  12943.     scrollDirection = "Up"; // Scroll upwards.
  12944.     startDelay = 4; // Wait 4 seconds before starting to scroll.
  12945.     isLooping = false; // Don't loop the credits.
  12946.     scrollOutOfSight = true; // Scroll up fully.
  12947.  
  12948.     new GuiMLTextCtrl()
  12949.     {
  12950.        text = $CREDITS;
  12951.     };
  12952.  };
  12953.  
  12954.  function CreditsScroller::onComplete( %this )
  12955.  {
  12956.     // Switch back to main menu after credits have rolled.
  12957.     Canvas.setContent( MainMenu );
  12958.  }
  12959.  
  12960.  // Start rolling credits.
  12961.  Canvas.setContent( CreditsScroller );
  12962.  @endtsexample
  12963.  
  12964.  @note Only the first child will be scrolled.
  12965.  
  12966.   */
  12967.  class  GuiAutoScrollCtrl : public GuiTickCtrl {
  12968.    public:
  12969.        /*! Called every 32ms on the control. */
  12970.        void onTick();
  12971.  
  12972.        /*! Called when the control starts to scroll. */
  12973.        void onStart();
  12974.  
  12975.        /*! Called when the child control has been scrolled in entirety. */
  12976.        void onComplete();
  12977.  
  12978.        /*! Called when the child control is reset to its initial position and the cycle starts again. */
  12979.        void onReset();
  12980.  
  12981.     /*! Reset scrolling. */
  12982.     virtual void reset(()) {}
  12983.  
  12984.     /*! @name Scrolling
  12985.     @{ */
  12986.     /*! */
  12987.     /*!
  12988.     Direction in which the child control is moved.
  12989.    
  12990.      */
  12991.     GuiAutoScrollDirection scrollDirection;
  12992.     /*!
  12993.     Seconds to wait before starting to scroll.
  12994.    
  12995.      */
  12996.     float startDelay;
  12997.     /*!
  12998.     Seconds to wait after scrolling completes before resetting and starting over.
  12999.  
  13000. @note Only takes effect if #isLooping is true.
  13001.    
  13002.      */
  13003.     float resetDelay;
  13004.     /*!
  13005.     Padding to put around child control (in pixels).
  13006.    
  13007.      */
  13008.     int childBorder;
  13009.     /*!
  13010.     Scrolling speed in pixels per second.
  13011.    
  13012.      */
  13013.     float scrollSpeed;
  13014.     /*!
  13015.     If true, the scrolling will reset to the beginning once completing a cycle.
  13016.    
  13017.      */
  13018.     bool isLooping;
  13019.     /*!
  13020.     If true, the child control will be completely scrolled out of sight; otherwise it will only scroll until the other end becomes visible.
  13021.    
  13022.      */
  13023.     bool scrollOutOfSight;
  13024.     /// @}
  13025.  
  13026.  
  13027.     /*! @name Layout
  13028.     @{ */
  13029.     /*! */
  13030.     /// @}
  13031.  
  13032.  
  13033.     /*! @name Control
  13034.     @{ */
  13035.     /*! */
  13036.     /// @}
  13037.  
  13038.  
  13039.     /*! @name ToolTip
  13040.     @{ */
  13041.     /*! */
  13042.     /// @}
  13043.  
  13044.  
  13045.     /*! @name Editing
  13046.     @{ */
  13047.     /*! */
  13048.     /// @}
  13049.  
  13050.  
  13051.     /*! @name Localization
  13052.     @{ */
  13053.     /*! */
  13054.     /// @}
  13055.  
  13056.  
  13057.     /*! @name Ungrouped
  13058.     @{ */
  13059.     /*! */
  13060.     /// @}
  13061.  
  13062.  
  13063.     /*! @name Object
  13064.     @{ */
  13065.     /*! */
  13066.     /// @}
  13067.  
  13068.  
  13069.     /*! @name Editing
  13070.     @{ */
  13071.     /*! */
  13072.     /// @}
  13073.  
  13074.  
  13075.     /*! @name Persistence
  13076.     @{ */
  13077.     /*! */
  13078.     /// @}
  13079.  
  13080.  };
  13081.  
  13082.  /*!
  13083.  @brief A container control that can be used to implement drag&drop behavior.
  13084.  
  13085.  GuiDragAndDropControl is a special control that can be used to allow drag&drop behavior to be implemented where GuiControls may be dragged across the canvas and the dropped on other GuiControls.
  13086.  
  13087.  To start a drag operation, construct a GuiDragAndDropControl and add the control that should be drag&dropped as a child to it.  Note that this must be a single child control.  To drag multiple controls, wrap them in a new GuiControl object as a temporary container.
  13088.  
  13089.  Then, to initiate the drag, add the GuiDragAndDropControl to the canvas and call startDragging().  You can optionally supply an offset to better position the GuiDragAndDropControl on the mouse cursor.
  13090.  
  13091.  As the GuiDragAndDropControl is then moved across the canvas, it will call the onControlDragEnter(), onControlDragExit(), onControlDragged(), and finally onControlDropped() callbacks on the visible topmost controls that it moves across.  onControlDropped() is called when the mouse button is released and the drag operation thus finished.
  13092.  
  13093.  @tsexample
  13094.  // The following example implements drag&drop behavior for GuiSwatchButtonCtrl so that
  13095.  // one color swatch may be dragged over the other to quickly copy its color.
  13096.  //
  13097.  // This code is taken from the stock scripts.
  13098.  
  13099.  //---------------------------------------------------------------------------------------------
  13100.  
  13101.  // With this method, we start the operation when the mouse is click-dragged away from a color swatch.
  13102.  function GuiSwatchButtonCtrl::onMouseDragged( %this )
  13103.  {
  13104.     // First we construct a new temporary swatch button that becomes the payload for our
  13105.     // drag operation and give it the properties of the swatch button we want to copy.
  13106.  
  13107.     %payload = new GuiSwatchButtonCtrl();
  13108.     %payload.assignFieldsFrom( %this );
  13109.     %payload.position = "0 0";
  13110.     %payload.dragSourceControl = %this; // Remember where the drag originated from so that we don't copy a color swatch onto itself.
  13111.  
  13112.     // Calculate the offset of the GuiDragAndDropControl from the mouse cursor.  Here we center
  13113.     // it on the cursor.
  13114.  
  13115.     %xOffset = getWord( %payload.extent, 0 ) / 2;
  13116.     %yOffset = getWord( %payload.extent, 1 ) / 2;
  13117.  
  13118.     // Compute the initial position of the GuiDragAndDrop control on the cavas based on the current
  13119.     // mouse cursor position.
  13120.  
  13121.     %cursorpos = Canvas.getCursorPos();
  13122.     %xPos = getWord( %cursorpos, 0 ) - %xOffset;
  13123.     %yPos = getWord( %cursorpos, 1 ) - %yOffset;
  13124.  
  13125.     // Create the drag control.
  13126.  
  13127.     %ctrl = new GuiDragAndDropControl()
  13128.     {
  13129.        canSaveDynamicFields    = "0";
  13130.        Profile                 = "GuiSolidDefaultProfile";
  13131.        HorizSizing             = "right";
  13132.        VertSizing              = "bottom";
  13133.        Position                = %xPos SPC %yPos;
  13134.        extent                  = %payload.extent;
  13135.        MinExtent               = "4 4";
  13136.        canSave                 = "1";
  13137.        Visible                 = "1";
  13138.        hovertime               = "1000";
  13139.  
  13140.        // Let the GuiDragAndDropControl delete itself on mouse-up.  When the drag is aborted,
  13141.        // this not only deletes the drag control but also our payload.
  13142.        deleteOnMouseUp         = true;
  13143.  
  13144.        // To differentiate drags, use the namespace hierarchy to classify them.
  13145.        // This will allow a color swatch drag to tell itself apart from a file drag, for example.
  13146.        class                   = "GuiDragAndDropControlType_ColorSwatch";
  13147.     };
  13148.  
  13149.     // Add the temporary color swatch to the drag control as the payload.
  13150.     %ctrl.add( %payload );
  13151.  
  13152.     // Start drag by adding the drag control to the canvas and then calling startDragging().
  13153.  
  13154.     Canvas.getContent().add( %ctrl );
  13155.     %ctrl.startDragging( %xOffset, %yOffset );
  13156.  }
  13157.  
  13158.  //---------------------------------------------------------------------------------------------
  13159.  
  13160.  // This method receives the drop when the mouse button is released over a color swatch control
  13161.  // during a drag operation.
  13162.  function GuiSwatchButtonCtrl::onControlDropped( %this, %payload, %position )
  13163.  {
  13164.     // Make sure this is a color swatch drag operation.
  13165.     if( !%payload.parentGroup.isInNamespaceHierarchy( "GuiDragAndDropControlType_ColorSwatch" ) )
  13166.        return;
  13167.  
  13168.     // If dropped on same button whence we came from,
  13169.     // do nothing.
  13170.  
  13171.     if( %payload.dragSourceControl == %this )
  13172.        return;
  13173.  
  13174.     // If a swatch button control is dropped onto this control,
  13175.     // copy it's color.
  13176.  
  13177.     if( %payload.isMemberOfClass( "GuiSwatchButtonCtrl" ) )
  13178.     {
  13179.        // If the swatch button is part of a color-type inspector field,
  13180.        // remember the inspector field so we can later set the color
  13181.        // through it.
  13182.  
  13183.        if( %this.parentGroup.isMemberOfClass( "GuiInspectorTypeColorI" ) )
  13184.           %this.parentGroup.apply( ColorFloatToInt( %payload.color ) );
  13185.        else if( %this.parentGroup.isMemberOfClass( "GuiInspectorTypeColorF" ) )
  13186.           %this.parentGroup.apply( %payload.color );
  13187.        else
  13188.           %this.setColor( %payload.color );
  13189.     }
  13190.  }
  13191.  @endtsexample
  13192.  
  13193.  @see GuiControl::onControlDragEnter
  13194.  @see GuiControl::onControlDragExit
  13195.  @see GuiControl::onControlDragged
  13196.  @see GuiControl::onControlDropped
  13197.  
  13198.   */
  13199.  class  GuiDragAndDropControl : public GuiControl {
  13200.    public:
  13201.     /*! Start the drag operation.
  13202.  
  13203. @param x X coordinate for the mouse pointer offset which the drag control should position itself.
  13204. @param y Y coordinate for the mouse pointer offset which the drag control should position itself. */
  13205.     virtual void startDragging(( int x=0, int y=0 )) {}
  13206.     /*!
  13207.     If true, the control deletes itself when the left mouse button is released.
  13208.  
  13209. If at this point, the drag&drop control still contains its payload, it will be deleted along with the control.
  13210.    
  13211.      */
  13212.     bool deleteOnMouseUp;
  13213.  
  13214.     /*! @name Layout
  13215.     @{ */
  13216.     /*! */
  13217.     /// @}
  13218.  
  13219.  
  13220.     /*! @name Control
  13221.     @{ */
  13222.     /*! */
  13223.     /// @}
  13224.  
  13225.  
  13226.     /*! @name ToolTip
  13227.     @{ */
  13228.     /*! */
  13229.     /// @}
  13230.  
  13231.  
  13232.     /*! @name Editing
  13233.     @{ */
  13234.     /*! */
  13235.     /// @}
  13236.  
  13237.  
  13238.     /*! @name Localization
  13239.     @{ */
  13240.     /*! */
  13241.     /// @}
  13242.  
  13243.  
  13244.     /*! @name Ungrouped
  13245.     @{ */
  13246.     /*! */
  13247.     /// @}
  13248.  
  13249.  
  13250.     /*! @name Object
  13251.     @{ */
  13252.     /*! */
  13253.     /// @}
  13254.  
  13255.  
  13256.     /*! @name Editing
  13257.     @{ */
  13258.     /*! */
  13259.     /// @}
  13260.  
  13261.  
  13262.     /*! @name Persistence
  13263.     @{ */
  13264.     /*! */
  13265.     /// @}
  13266.  
  13267.  };
  13268.  
  13269.  /*!
  13270.  @brief A gui control allowing a window to be subdivided into panes, each of which displays a gui control child of the GuiFrameSetCtrl.
  13271.  
  13272.  Each gui control child will have an associated FrameDetail through which frame-specific details can be assigned. Frame-specific values override the values specified for the entire frameset.
  13273.  
  13274.  Note that it is possible to have more children than frames, or more frames than children. In the former case, the extra children will not be visible (they are moved beyond the visible extent of the frameset). In the latter case, frames will be empty. For example, if a frameset had two columns and two rows but only three gui control children they would be assigned to frames as follows:
  13275.  <pre>
  13276.                   1 | 2
  13277.                   -----
  13278.                   3 |
  13279.  </pre>
  13280.  The last frame would be blank.
  13281.  
  13282.  @tsexample
  13283.  new GuiFrameSetCtrl()
  13284.  {
  13285.     columns = "3";
  13286.     rows = "2";
  13287.     borderWidth = "1";
  13288.     borderColor = "128 128 128";
  13289.     borderEnable = "dynamic";
  13290.     borderMovable = "dynamic";
  13291.     autoBalance = "1";
  13292.     fudgeFactor = "0";
  13293.     //Properties not specific to this control have been omitted from this example.
  13294.  };
  13295.  @endtsexample
  13296.  
  13297.   */
  13298.  class  GuiFrameSetCtrl : public GuiContainer {
  13299.    public:
  13300.     /*! Override the <i>borderEnable</i> setting for this frame.
  13301.  
  13302. @param index  Index of the frame to modify
  13303. @param state  New borderEnable state: "on", "off" or "dynamic"
  13304.  */
  13305.     virtual void frameBorder(( int index, string state="dynamic" )) {}
  13306.     /*! Override the <i>borderMovable</i> setting for this frame.
  13307.  
  13308. @param index  Index of the frame to modify
  13309. @param state  New borderEnable state: "on", "off" or "dynamic"
  13310.  */
  13311.     virtual void frameMovable(( int index, string state="dynamic" )) {}
  13312.     /*! Set the minimum width and height for the frame. It will not be possible for the user to resize the frame smaller than this.
  13313.  
  13314. @param index  Index of the frame to modify
  13315. @param width  Minimum width in pixels
  13316. @param height Minimum height in pixels
  13317.  */
  13318.     virtual void frameMinExtent(( int index, int width, int height )) {}
  13319.     /*! Set the padding for this frame. Padding introduces blank space on the inside edge of the frame.
  13320.  
  13321. @param index     Index of the frame to modify
  13322. @param padding   Frame top, bottom, left, and right padding
  13323.  */
  13324.     virtual void framePadding(( int index, RectSpacingI padding )) {}
  13325.     /*! Get the padding for this frame.
  13326.  
  13327. @param index     Index of the frame to query
  13328.  */
  13329.     virtual string getFramePadding(( int index )) {}
  13330.     /*! Add a new column.
  13331.  
  13332.  */
  13333.     virtual void addColumn(()) {}
  13334.     /*! Add a new row.
  13335.  
  13336.  */
  13337.     virtual void addRow(()) {}
  13338.     /*! Remove the last (rightmost) column.
  13339.  
  13340.  */
  13341.     virtual void removeColumn(()) {}
  13342.     /*! Remove the last (bottom) row.
  13343.  
  13344.  */
  13345.     virtual void removeRow(()) {}
  13346.     /*! Get the number of columns.
  13347.  
  13348. @return The number of columns
  13349.  */
  13350.     virtual int getColumnCount(()) {}
  13351.     /*! Get the number of rows.
  13352.  
  13353. @return The number of rows
  13354.  */
  13355.     virtual int getRowCount(()) {}
  13356.     /*! Get the horizontal offset of a column.
  13357.  
  13358. @param index Index of the column to query
  13359. @return Column offset in pixels
  13360.  */
  13361.     virtual int getColumnOffset(( int index )) {}
  13362.     /*! Get the vertical offset of a row.
  13363.  
  13364. @param index Index of the row to query
  13365. @return Row offset in pixels
  13366.  */
  13367.     virtual int getRowOffset(( int index )) {}
  13368.     /*! Set the horizontal offset of a column.
  13369.  
  13370. Note that column offsets must always be in increasing order, and therefore this offset must be between the offsets of the colunns either side.
  13371. @param index  Index of the column to modify
  13372. @param offset New column offset
  13373.  */
  13374.     virtual void setColumnOffset(( int index, int offset )) {}
  13375.     /*! Set the vertical offset of a row.
  13376.  
  13377. Note that row offsets must always be in increasing order, and therefore this offset must be between the offsets of the rows either side.
  13378. @param index  Index of the row to modify
  13379. @param offset New row offset
  13380.  */
  13381.     virtual void setRowOffset(( int index, int offset )) {}
  13382.     /*! Recalculates child control sizes. */
  13383.     virtual void updateSizes(()) {}
  13384.     /*!
  13385.     A vector of column offsets (determines the width of each column).
  13386.    
  13387.      */
  13388.     intList columns;
  13389.     /*!
  13390.     A vector of row offsets (determines the height of each row).
  13391.    
  13392.      */
  13393.     intList rows;
  13394.     /*!
  13395.     Width of interior borders between cells in pixels.
  13396.    
  13397.      */
  13398.     int borderWidth;
  13399.     /*!
  13400.     Color of interior borders between cells.
  13401.    
  13402.      */
  13403.     ColorI borderColor;
  13404.     /*!
  13405.     Controls whether frame borders are enabled.
  13406.  
  13407. Frames use this value unless overridden for that frame using <i>%ctrl.frameBorder(index)</i>
  13408.    
  13409.      */
  13410.     GuiFrameState borderEnable;
  13411.     /*!
  13412.     Controls whether borders can be dynamically repositioned with the mouse by the user.
  13413.  
  13414. Frames use this value unless overridden for that frame using <i>%ctrl.frameMovable(index)</i>
  13415.    
  13416.      */
  13417.     GuiFrameState borderMovable;
  13418.     /*!
  13419.     If true, row and column offsets are automatically scaled to match the new extents when the control is resized.
  13420.    
  13421.      */
  13422.     bool autoBalance;
  13423.     /*!
  13424.     Offset for row and column dividers in pixels
  13425.    
  13426.      */
  13427.     int fudgeFactor;
  13428.  
  13429.     /*! @name Layout
  13430.     @{ */
  13431.     /*! */
  13432.     /// @}
  13433.  
  13434.  
  13435.     /*! @name Layout
  13436.     @{ */
  13437.     /*! */
  13438.     /// @}
  13439.  
  13440.  
  13441.     /*! @name Control
  13442.     @{ */
  13443.     /*! */
  13444.     /// @}
  13445.  
  13446.  
  13447.     /*! @name ToolTip
  13448.     @{ */
  13449.     /*! */
  13450.     /// @}
  13451.  
  13452.  
  13453.     /*! @name Editing
  13454.     @{ */
  13455.     /*! */
  13456.     /// @}
  13457.  
  13458.  
  13459.     /*! @name Localization
  13460.     @{ */
  13461.     /*! */
  13462.     /// @}
  13463.  
  13464.  
  13465.     /*! @name Ungrouped
  13466.     @{ */
  13467.     /*! */
  13468.     /// @}
  13469.  
  13470.  
  13471.     /*! @name Object
  13472.     @{ */
  13473.     /*! */
  13474.     /// @}
  13475.  
  13476.  
  13477.     /*! @name Editing
  13478.     @{ */
  13479.     /*! */
  13480.     /// @}
  13481.  
  13482.  
  13483.     /*! @name Persistence
  13484.     @{ */
  13485.     /*! */
  13486.     /// @}
  13487.  
  13488.  };
  13489.  
  13490.  /*!
  13491.  @brief A collapsable pane control.
  13492.  
  13493.  This class wraps a single child control and displays a header with caption above it. If you click the header it will collapse or expand (if <i>collapsable</i> is enabled). The control resizes itself based on its collapsed/expanded size.<br>In the GUI editor, if you just want the header you can make <i>collapsable</i> false. The caption field lets you set the caption; it expects a bitmap (from the GuiControlProfile) that contains two images - the first is displayed when the control is expanded and the second is displayed when it is collapsed. The header is sized based on the first image.
  13494.  
  13495.  @tsexample
  13496.  new GuiPaneControl()
  13497.  {
  13498.     caption = "Example Pane";
  13499.     collapsable = "1";
  13500.     barBehindText = "1";
  13501.     //Properties not specific to this control have been omitted from this example.
  13502.  };
  13503.  @endtsexample
  13504.  
  13505.   */
  13506.  class  GuiPaneControl : public GuiControl {
  13507.    public:
  13508.     /*! Collapse or un-collapse the control.
  13509.  
  13510. @param collapse True to collapse the control, false to un-collapse it
  13511.  */
  13512.     virtual void setCollapsed(( bool collapse )) {}
  13513.  
  13514.     /*! @name Pane
  13515.     @{ */
  13516.     /*! */
  13517.     /*!
  13518.     Text label to display as the pane header.
  13519.    
  13520.      */
  13521.     string caption;
  13522.     /*!
  13523.     String table text ID to use as caption string (overrides 'caption').
  13524.    
  13525.      */
  13526.     string captionID;
  13527.     /*!
  13528.     Whether the pane can be collapsed by clicking its header.
  13529.    
  13530.      */
  13531.     bool collapsable;
  13532.     /*!
  13533.     Whether to draw the bitmapped pane bar behind the header text, too.
  13534.    
  13535.      */
  13536.     bool barBehindText;
  13537.     /// @}
  13538.  
  13539.  
  13540.     /*! @name Layout
  13541.     @{ */
  13542.     /*! */
  13543.     /// @}
  13544.  
  13545.  
  13546.     /*! @name Control
  13547.     @{ */
  13548.     /*! */
  13549.     /// @}
  13550.  
  13551.  
  13552.     /*! @name ToolTip
  13553.     @{ */
  13554.     /*! */
  13555.     /// @}
  13556.  
  13557.  
  13558.     /*! @name Editing
  13559.     @{ */
  13560.     /*! */
  13561.     /// @}
  13562.  
  13563.  
  13564.     /*! @name Localization
  13565.     @{ */
  13566.     /*! */
  13567.     /// @}
  13568.  
  13569.  
  13570.     /*! @name Ungrouped
  13571.     @{ */
  13572.     /*! */
  13573.     /// @}
  13574.  
  13575.  
  13576.     /*! @name Object
  13577.     @{ */
  13578.     /*! */
  13579.     /// @}
  13580.  
  13581.  
  13582.     /*! @name Editing
  13583.     @{ */
  13584.     /*! */
  13585.     /// @}
  13586.  
  13587.  
  13588.     /*! @name Persistence
  13589.     @{ */
  13590.     /*! */
  13591.     /// @}
  13592.  
  13593.  };
  13594.  
  13595.  /*!
  13596.  @brief A container that shows a single child with an optional header bar that can be used to collapse and expand the rollout.
  13597.  
  13598.  A rollout is a container that can be collapsed and expanded using smooth animation.  By default, rollouts will display a header with a caption along the top edge of the control which can be clicked by the user to toggle the collapse state of the rollout.
  13599.  
  13600.  Rollouts will automatically size themselves to exactly fit around their child control.  They will also automatically position their child control in their upper left corner below the header (if present).
  13601.  
  13602.  @note GuiRolloutCtrls will only work correctly with a single child control.  To put multiple controls in a rollout, put them in their own group using a new GuiControl which then can be put inside the rollout.
  13603.  
  13604.   */
  13605.  class  GuiRolloutCtrl : public GuiControl {
  13606.    public:
  13607.        /*! Called when the user right-clicks on the rollout's header.  This is useful for implementing context menus for rollouts. */
  13608.        void onHeaderRightClick();
  13609.  
  13610.        /*! Called when the rollout is expanded. */
  13611.        void onExpanded();
  13612.  
  13613.        /*! Called when the rollout is collapsed. */
  13614.        void onCollapsed();
  13615.  
  13616.     /*! Determine whether the rollout is currently expanded, i.e. whether the child control is visible.
  13617.  
  13618. @return True if the rollout is expanded, false if not. */
  13619.     virtual bool isExpanded(()) {}
  13620.     /*! Collapse the rollout if it is currently expanded.  This will make the rollout's child control invisible.
  13621.  
  13622. @note The rollout will animate to collapsed state.  To instantly collapse without animation, use instantCollapse(). */
  13623.     virtual void collapse(()) {}
  13624.     /*! Expand the rollout if it is currently collapsed.  This will make the rollout's child control visible.
  13625.  
  13626. @note The rollout will animate to expanded state.  To instantly expand without animation, use instantExpand(). */
  13627.     virtual void expand(()) {}
  13628.     /*! Toggle the current collapse state of the rollout.  If it is currently expanded, then collapse it.  If it is currently collapsed, then expand it. */
  13629.     virtual void toggleCollapse(()) {}
  13630.     /*! Toggle the current expansion state of the rollout  If it is currently expanded, then collapse it.  If it is currently collapsed, then expand it.
  13631.  
  13632. @param instant If true, the rollout will toggle its state without animation.  Otherwise, the rollout will smoothly slide into the opposite state. */
  13633.     virtual void toggleExpanded(( bool instantly=false )) {}
  13634.     /*! Instantly collapse the rollout without animation.  To smoothly slide the rollout to collapsed state, use collapse(). */
  13635.     virtual void instantCollapse(()) {}
  13636.     /*! Instantly expand the rollout without animation.  To smoothly slide the rollout to expanded state, use expand(). */
  13637.     virtual void instantExpand(()) {}
  13638.     /*! Resize the rollout to exactly fit around its child control.  This can be used to manually trigger a recomputation of the rollout size. */
  13639.     virtual void sizeToContents(()) {}
  13640.  
  13641.     /*! @name Rollout
  13642.     @{ */
  13643.     /*! */
  13644.     /*!
  13645.     Text label to display on the rollout header.
  13646.    
  13647.      */
  13648.     string caption;
  13649.     /*!
  13650.     Margin to put around child control.
  13651.    
  13652.      */
  13653.     RectI margin;
  13654.     /*!
  13655.     Default height of the client area.  This is used when no child control has been added to the rollout.
  13656.    
  13657.      */
  13658.     int defaultHeight;
  13659.     /*!
  13660.     The current rollout expansion state.
  13661.    
  13662.      */
  13663.     bool expanded;
  13664.     /*!
  13665.     Whether the rollout can be collapsed by clicking its header.
  13666.    
  13667.      */
  13668.     bool clickCollapse;
  13669.     /*!
  13670.     Whether to render the rollout header.
  13671.  
  13672. @note If this is false, the user cannot toggle the rollout state with the mouse.
  13673.    
  13674.      */
  13675.     bool hideHeader;
  13676.     /*!
  13677.     Whether to automatically collapse sibling rollouts.
  13678.  
  13679. If this is true, the rollout will automatically collapse all sibling rollout controls when it is expanded.  If this is false, the auto-collapse behavior can be triggered by CTRL (CMD on MAC) clicking the rollout header.  CTRL/CMD clicking also works if this is false, in which case the auto-collapsing of sibling controls will be temporarily deactivated.
  13680.    
  13681.      */
  13682.     bool autoCollapseSiblings;
  13683.     /// @}
  13684.  
  13685.  
  13686.     /*! @name Layout
  13687.     @{ */
  13688.     /*! */
  13689.     /// @}
  13690.  
  13691.  
  13692.     /*! @name Control
  13693.     @{ */
  13694.     /*! */
  13695.     /// @}
  13696.  
  13697.  
  13698.     /*! @name ToolTip
  13699.     @{ */
  13700.     /*! */
  13701.     /// @}
  13702.  
  13703.  
  13704.     /*! @name Editing
  13705.     @{ */
  13706.     /*! */
  13707.     /// @}
  13708.  
  13709.  
  13710.     /*! @name Localization
  13711.     @{ */
  13712.     /*! */
  13713.     /// @}
  13714.  
  13715.  
  13716.     /*! @name Ungrouped
  13717.     @{ */
  13718.     /*! */
  13719.     /// @}
  13720.  
  13721.  
  13722.     /*! @name Object
  13723.     @{ */
  13724.     /*! */
  13725.     /// @}
  13726.  
  13727.  
  13728.     /*! @name Editing
  13729.     @{ */
  13730.     /*! */
  13731.     /// @}
  13732.  
  13733.  
  13734.     /*! @name Persistence
  13735.     @{ */
  13736.     /*! */
  13737.     /// @}
  13738.  
  13739.  };
  13740.  
  13741.  /*!
  13742.  @brief Editor GUI used for picking a ColorF from a palette.
  13743.  
  13744.  @note Editor use only.
  13745.  
  13746.   */
  13747.  class  GuiColorPickerCtrl : public GuiControl {
  13748.    public:
  13749.     /*! Gets the current position of the selector */
  13750.     virtual string getSelectorPos() {}
  13751.     /*! Sets the current position of the selector */
  13752.     virtual void setSelectorPos() {}
  13753.     /*! Forces update of pick color */
  13754.     virtual void updateColor() {}
  13755.  
  13756.     /*! @name ColorPicker
  13757.     @{ */
  13758.     /*! */
  13759.     /*!
  13760.      */
  13761.     ColorF baseColor;
  13762.     /*!
  13763.      */
  13764.     ColorF pickColor;
  13765.     /*!
  13766.      */
  13767.     int selectorGap;
  13768.     /*!
  13769.      */
  13770.     GuiColorPickMode displayMode;
  13771.     /*!
  13772.      */
  13773.     bool actionOnMove;
  13774.     /*!
  13775.      */
  13776.     bool showReticle;
  13777.     /// @}
  13778.  
  13779.  
  13780.     /*! @name Layout
  13781.     @{ */
  13782.     /*! */
  13783.     /// @}
  13784.  
  13785.  
  13786.     /*! @name Control
  13787.     @{ */
  13788.     /*! */
  13789.     /// @}
  13790.  
  13791.  
  13792.     /*! @name ToolTip
  13793.     @{ */
  13794.     /*! */
  13795.     /// @}
  13796.  
  13797.  
  13798.     /*! @name Editing
  13799.     @{ */
  13800.     /*! */
  13801.     /// @}
  13802.  
  13803.  
  13804.     /*! @name Localization
  13805.     @{ */
  13806.     /*! */
  13807.     /// @}
  13808.  
  13809.  
  13810.     /*! @name Ungrouped
  13811.     @{ */
  13812.     /*! */
  13813.     /// @}
  13814.  
  13815.  
  13816.     /*! @name Object
  13817.     @{ */
  13818.     /*! */
  13819.     /// @}
  13820.  
  13821.  
  13822.     /*! @name Editing
  13823.     @{ */
  13824.     /*! */
  13825.     /// @}
  13826.  
  13827.  
  13828.     /*! @name Persistence
  13829.     @{ */
  13830.     /*! */
  13831.     /// @}
  13832.  
  13833.  };
  13834.  
  13835.  /*!
  13836.  @brief A list of text items.
  13837.  
  13838.  A list of text items where each individual entry can have its own text value, text color and associated SimObject.
  13839.  
  13840.  @tsexample
  13841.  new GuiListBoxCtrl(GuiMusicPlayerMusicList)
  13842.  {
  13843.     allowMultipleSelections = "true";
  13844.     fitParentWidth = "true";
  13845.     mirrorSet = "AnotherGuiListBoxCtrl";
  13846.     makeNameCallback = "";
  13847.     colorBullet = "1";
  13848.     //Properties not specific to this control have been omitted from this example.
  13849.  };
  13850.  @endtsexample
  13851.  
  13852.  @see GuiControl
  13853.  
  13854.  @ingroup GuiCore
  13855.   */
  13856.  class  GuiListBoxCtrl : public GuiControl {
  13857.    public:
  13858.        /*! @brief Called whenever the mouse is dragged across the control.
  13859.  
  13860. @tsexample
  13861. // Mouse is dragged across the control, causing the callback to occur.
  13862. GuiListBoxCtrl::onMouseDragged(%this)
  13863.     {
  13864.         // Code to run whenever the mouse is dragged across the control
  13865.     }
  13866. @endtsexample
  13867.  
  13868. @see GuiControl
  13869.  
  13870.  */
  13871.        void onMouseDragged();
  13872.  
  13873.        /*! @brief Called whenever a selected item in the list is cleared.
  13874.  
  13875. @tsexample
  13876. // A selected item is cleared, causing the callback to occur.
  13877. GuiListBoxCtrl::onClearSelection(%this)
  13878.     {
  13879.         // Code to run whenever a selected item is cleared
  13880.     }
  13881. @endtsexample
  13882.  
  13883. @see GuiControl
  13884.  
  13885.  */
  13886.        void onClearSelection();
  13887.  
  13888.        /*! @brief Called whenever a selected item in the list has been unselected.
  13889.  
  13890. @param index Index id of the item that was unselected
  13891. @param itemText Text for the list entry at the index id that was unselected
  13892.  
  13893. @tsexample
  13894. // A selected item is unselected, causing the callback to occur
  13895. GuiListBoxCtrl::onUnSelect(%this, %indexId, %itemText)
  13896.     {
  13897.         // Code to run whenever a selected list item is unselected
  13898.     }
  13899. @endtsexample
  13900.  
  13901. @see GuiControl
  13902.  
  13903.  */
  13904.        void onUnselect( string index, string itemText );
  13905.  
  13906.        /*! @brief Called whenever an item in the list is selected.
  13907.  
  13908. @param index Index id for the item in the list that was selected.
  13909. @param itemText Text for the list item at the index that was selected.
  13910.  
  13911. @tsexample
  13912. // An item in the list is selected, causing the callback to occur
  13913. GuiListBoxCtrl::onSelect(%this, %index, %itemText)
  13914.     {
  13915.         // Code to run whenever an item in the list is selected
  13916.     }
  13917. @endtsexample
  13918.  
  13919. @see GuiControl
  13920.  
  13921.  */
  13922.        void onSelect( string index, string itemText );
  13923.  
  13924.        /*! @brief Called whenever an item in the list has been double clicked.
  13925.  
  13926. @tsexample
  13927. // An item in the list is double clicked, causing the callback to occur.
  13928. GuiListBoxCtrl::onDoubleClick(%this)
  13929.     {
  13930.         // Code to run whenever an item in the control has been double clicked
  13931.     }
  13932. @endtsexample
  13933.  
  13934. @see GuiControl
  13935.  
  13936.  */
  13937.        void onDoubleClick();
  13938.  
  13939.        /*! @brief Called whenever the mouse has previously been clicked down (onMouseDown) and has now been raised on the control.
  13940. If an item in the list was hit during the click cycle, then the index id of the clicked object along with how many clicks occured are passed
  13941. into the callback.
  13942.  
  13943. Detailed description
  13944.  
  13945. @param itemHit Index id for the list item that was hit
  13946. @param mouseClickCount How many mouse clicks occured on this list item
  13947.  
  13948. @tsexample
  13949. // Mouse was previously clicked down, and now has been released, causing the callback to occur.
  13950. GuiListBoxCtrl::onMouseUp(%this, %itemHit, %mouseClickCount)
  13951.     {
  13952.         // Code to call whenever the mouse has been clicked and released on the control
  13953.     }
  13954. @endtsexample
  13955.  
  13956. @see GuiControl
  13957.  
  13958.  */
  13959.        void onMouseUp( string itemHit, string mouseClickCount );
  13960.  
  13961.        /*! @brief Called whenever the Delete key on the keyboard has been pressed while in this control.
  13962.  
  13963. @tsexample
  13964. // The delete key on the keyboard has been pressed while this control is in focus, causing the callback to occur.
  13965. GuiListBoxCtrl::onDeleteKey(%this)
  13966.     {
  13967.         // Code to call whenever the delete key is pressed
  13968.     }
  13969. @endtsexample
  13970.  
  13971. @see GuiControl
  13972.  
  13973.  */
  13974.        void onDeleteKey();
  13975.  
  13976.        /*! @brief Checks if a list item at a defined index id is mirrored, and returns the result.
  13977.  
  13978. @param indexIdString Index id of the list to check.
  13979. @tsexample
  13980. // Engine has requested of the script level to determine if a list entry is mirrored or not.
  13981. GuiListBoxCtrl::isObjectMirrored(%this, %indexIdString)
  13982.     {
  13983.         // Perform code required to check and see if the list item at the index id is mirrored or not.
  13984.         return %isMirrored;
  13985.     }
  13986. @endtsexample
  13987.  
  13988. @return A boolean value on if the list item is mirrored or not.
  13989.  
  13990. @see GuiControl
  13991.  
  13992.  */
  13993.        bool isObjectMirrored( string indexIdString );
  13994.  
  13995.     /*! @brief Enable or disable multiple selections for this GuiListBoxCtrl object.
  13996.  
  13997. @param allowMultSelections Boolean variable to set the use of multiple selections or not.
  13998. @tsexample
  13999. // Define the multiple selection use state.
  14000. %allowMultSelections = "true";
  14001.  
  14002. // Set the allow  multiple selection state on the GuiListBoxCtrl object.
  14003. %thisGuiListBoxCtrl.setMultipleSelection(%allowMultSelections);
  14004. @endtsexample
  14005.  
  14006. @see GuiControl
  14007.  */
  14008.     virtual void setMultipleSelection(( bool allowMultSelections )) {}
  14009.     /*! @brief Clears all the items in the listbox.
  14010.  
  14011. @tsexample
  14012. // Inform the GuiListBoxCtrl object to clear all items from its list.
  14013. %thisGuiListBoxCtrl.clearItems();
  14014. @endtsexample
  14015.  
  14016. @see GuiControl */
  14017.     virtual void clearItems(()) {}
  14018.     /*! @brief Sets all currently selected items to unselected.
  14019.  
  14020. Detailed description
  14021.  
  14022. @tsexample
  14023. // Inform the GuiListBoxCtrl object to set all of its items to unselected./n%thisGuiListBoxCtrl.clearSelection();
  14024. @endtsexample
  14025.  
  14026. @see GuiControl */
  14027.     virtual void clearSelection(()) {}
  14028.     /*! @brief Sets the item at the index specified to selected or not.
  14029.  
  14030. Detailed description
  14031.  
  14032. @param index Item index to set selected or unselected.
  14033. @param setSelected Boolean selection state to set the requested item index.
  14034. @tsexample
  14035. // Define the index
  14036. %index = "5";
  14037.  
  14038. // Define the selection state
  14039. %selected = "true"
  14040.  
  14041. // Inform the GuiListBoxCtrl object of the new selection state for the requested index entry.
  14042. %thisGuiListBoxCtrl.setSelected(%index,%selected);
  14043. @endtsexample
  14044.  
  14045. @see GuiControl */
  14046.     virtual void setSelected(( int index, bool setSelected=true )) {}
  14047.     /*! @brief Returns the number of items in the list.
  14048.  
  14049. @tsexample
  14050. // Request the number of items in the list of the GuiListBoxCtrl object.
  14051. %listItemCount = %thisGuiListBoxCtrl.getItemCount();
  14052. @endtsexample
  14053.  
  14054. @return The number of items in the list.
  14055.  
  14056. @see GuiControl */
  14057.     virtual int getItemCount(()) {}
  14058.     /*! @brief Returns the number of items currently selected.
  14059.  
  14060. @tsexample
  14061. // Request the number of currently selected items
  14062. %selectedItemCount = %thisGuiListBoxCtrl.getSelCount();
  14063. @endtsexample
  14064.  
  14065. @return Number of currently selected items.
  14066.  
  14067. @see GuiControl */
  14068.     virtual int getSelCount(()) {}
  14069.     /*! @brief Returns the selected items index or -1 if none selected. If multiple selections exist it returns the first selected item.
  14070.  
  14071. @tsexample
  14072. // Request the index id of the currently selected item
  14073. %selectedItemId = %thisGuiListBoxCtrl.getSelectedItem();
  14074. @endtsexample
  14075.  
  14076. @return The selected items index or -1 if none selected.
  14077.  
  14078. @see GuiControl */
  14079.     virtual int getSelectedItem(()) {}
  14080.     /*! @brief Returns a space delimited list of the selected items indexes in the list.
  14081.  
  14082. @tsexample
  14083. // Request a space delimited list of the items in the GuiListBoxCtrl object.
  14084. %selectionList = %thisGuiListBoxCtrl.getSelectedItems();
  14085. @endtsexample
  14086.  
  14087. @return Space delimited list of the selected items indexes in the list
  14088.  
  14089. @see GuiControl */
  14090.     virtual string getSelectedItems(()) {}
  14091.     /*! @brief Returns index of item with matching text or -1 if none found.
  14092.  
  14093. @param findText Text in the list to find.
  14094. @param isCaseSensitive If true, the search will be case sensitive.
  14095. @tsexample
  14096. // Define the text we wish to find in the list.
  14097. %findText = "Hickory Smoked Gideon"/n/n// Define if this is a case sensitive search or not.
  14098. %isCaseSensitive = "false";
  14099.  
  14100. // Ask the GuiListBoxCtrl object what item id in the list matches the requested text.
  14101. %matchingId = %thisGuiListBoxCtrl.findItemText(%findText,%isCaseSensitive);
  14102. @endtsexample
  14103.  
  14104. @return Index id of item with matching text or -1 if none found.
  14105.  
  14106. @see GuiControl */
  14107.     virtual int findItemText(( string findText, bool bCaseSensitive=false )) {}
  14108.     /*! @brief Sets the currently selected item at the specified index.
  14109.  
  14110. @param indexId Index Id to set selected.
  14111. @tsexample
  14112. // Define the index id that we wish to select.
  14113. %selectId = "4";
  14114.  
  14115. // Inform the GuiListBoxCtrl object to set the requested index as selected.
  14116. %thisGuiListBoxCtrl.setCurSel(%selectId);
  14117. @endtsexample
  14118.  
  14119. @see GuiControl */
  14120.     virtual void setCurSel(( int indexId )) {}
  14121.     /*! @brief Sets the current selection range from index start to stop. If no stop is specified it sets from start index to the end of the list
  14122.  
  14123. @param indexStart Index Id to start selection.
  14124. @param indexStop Index Id to end selection.
  14125. @tsexample
  14126. // Set start id
  14127. %indexStart = "3";
  14128.  
  14129. // Set end id
  14130. %indexEnd = "6";
  14131.  
  14132. // Request the GuiListBoxCtrl object to select the defined range.
  14133. %thisGuiListBoxCtrl.setCurSelRange(%indexStart,%indexEnd);
  14134. @endtsexample
  14135.  
  14136. @see GuiControl */
  14137.     virtual void setCurSelRange(( int indexStart, int indexStop=999999 )) {}
  14138.     /*! @brief Adds an item to the end of the list with an optional color.
  14139.  
  14140. @param newItem New item to add to the list.
  14141. @param color Optional color parameter to add to the new item.
  14142. @tsexample
  14143. // Define the item to add to the list.
  14144. %newItem = "Gideon's Blue Coat";
  14145.  
  14146. // Define the optional color for the new list item.
  14147. %color = "0.0 0.0 1.0";
  14148.  
  14149. // Inform the GuiListBoxCtrl object to add the item to the end of the list with the defined color.
  14150. %thisGuiListBoxCtrl.addItem(%newItem,%color);
  14151. @endtsexample
  14152.  
  14153. @return If not void, return value and description
  14154.  
  14155. @see GuiControl
  14156. @hide */
  14157.     virtual int addItem(( string newItem, string color="" )) {}
  14158.     /*! @brief Sets the color of a single list entry at the specified index id.
  14159.  
  14160. @param index Index id to modify the color of in the list.
  14161. @param color Color value to set the list entry to.
  14162. @tsexample
  14163. // Define the index id value
  14164. %index = "5";
  14165.  
  14166. // Define the color value
  14167. %color = "1.0 0.0 0.0";
  14168.  
  14169. // Inform the GuiListBoxCtrl object to change the color of the requested index
  14170. %thisGuiListBoxCtrl.setItemColor(%index,%color);
  14171. @endtsexample
  14172.  
  14173. @see GuiControl */
  14174.     virtual void setItemColor(( int index, ColorF color )) {}
  14175.     /*! @brief Removes any custom coloring from an item at the defined index id in the list.
  14176.  
  14177. @param index Index id for the item to clear any custom color from.
  14178. @tsexample
  14179. // Define the index id
  14180. %index = "4";
  14181.  
  14182. // Request the GuiListBoxCtrl object to remove any custom coloring from the defined index entry
  14183. %thisGuiListBoxCtrl.clearItemColor(%index);
  14184. @endtsexample
  14185.  
  14186. @see GuiControl */
  14187.     virtual void clearItemColor(( int index )) {}
  14188.     /*! @brief Inserts an item into the list at the specified index and returns the index assigned or -1 on error.
  14189.  
  14190. @param text Text item to add.
  14191. @param index Index id to insert the list item text at.
  14192. @tsexample
  14193. // Define the text to insert
  14194. %text = "Secret Agent Gideon";
  14195.  
  14196. // Define the index entry to insert the text at
  14197. %index = "14";
  14198.  
  14199. // In form the GuiListBoxCtrl object to insert the text at the defined index.
  14200. %assignedId = %thisGuiListBoxCtrl.insertItem(%text,%index);
  14201. @endtsexample
  14202.  
  14203. @return If successful will return the index id assigned. If unsuccessful, will return -1.
  14204.  
  14205. @see GuiControl */
  14206.     virtual void insertItem(( string text, int index )) {}
  14207.     /*! @brief Removes the list entry at the requested index id from the control and clears the memory associated with it.
  14208.  
  14209. @param itemIndex Index id location to remove the item from.
  14210. @tsexample
  14211. // Define the index id we want to remove from the list
  14212. %itemIndex = "8";
  14213.  
  14214. // Inform the GuiListBoxCtrl object to remove the item at the defined index id.
  14215. %thisGuiListBoxCtrl.deleteItem(%itemIndex);
  14216. @endtsexample
  14217.  
  14218. @see References */
  14219.     virtual void deleteItem(( int itemIndex )) {}
  14220.     /*! @brief Returns the text of the item at the specified index.
  14221.  
  14222. @param index Index id to return the item text from.
  14223. @tsexample
  14224. // Define the index id entry to request the text from
  14225. %index = "12";
  14226.  
  14227. // Request the item id text from the GuiListBoxCtrl object.
  14228. %text = %thisGuiListBoxCtrl.getItemText(%index);
  14229. @endtsexample
  14230.  
  14231. @return The text of the requested index id.
  14232.  
  14233. @see GuiControl */
  14234.     virtual string getItemText(( int index )) {}
  14235.     /*! @brief Returns the object associated with an item. This only makes sense if you are mirroring a simset.
  14236.  
  14237. @param index Index id to request the associated item from.
  14238. @tsexample
  14239. // Define the index id
  14240. %index = "12";
  14241.  
  14242. // Request the item from the GuiListBoxCtrl object
  14243. %object = %thisGuiListBoxCtrl.getItemObject(%index);
  14244. @endtsexample
  14245.  
  14246. @return The object associated with the item in the list.
  14247.  
  14248. @see References */
  14249.     virtual string getItemObject(( int index )) {}
  14250.     /*! @brief Sets the items text at the specified index.
  14251.  
  14252. @param index Index id to set the item text at.
  14253. @param newtext Text to change the list item at index id to.
  14254. @tsexample
  14255. // Define the index id/n%index = "12";
  14256.  
  14257. // Define the text to set the list item to
  14258. %newtext = "Gideon's Fancy Goggles";
  14259.  
  14260. // Inform the GuiListBoxCtrl object to change the text at the requested index
  14261. %thisGuiListBoxCtrl.setItemText(%index,%newText);
  14262. @endtsexample
  14263.  
  14264. @see GuiControl */
  14265.     virtual void setItemText(( int index, string newtext )) {}
  14266.     /*! @brief Set the tooltip text to display for the given list item.
  14267.  
  14268. @param index Index id to change the tooltip text
  14269. @param text Text for the tooltip.
  14270. @tsexample
  14271. // Define the index id
  14272. %index = "12";
  14273.  
  14274. // Define the tooltip text
  14275. %tooltip = "Gideon's goggles can see through space and time."
  14276.  
  14277. // Inform the GuiListBoxCtrl object to set the tooltop for the item at the defined index id
  14278. %thisGuiListBoxCtrl.setItemToolTip(%index,%tooltip);
  14279. @endtsexample
  14280.  
  14281. @see GuiControl */
  14282.     virtual void setItemTooltip(( int index, string text )) {}
  14283.     /*! @brief Request the item index for the item that was last clicked.
  14284.  
  14285. @tsexample
  14286. // Request the item index for the last clicked item in the list
  14287. %lastClickedIndex = %thisGuiListBoxCtrl.getLastClickItem();
  14288. @endtsexample
  14289.  
  14290. @return Index id for the last clicked item in the list.
  14291.  
  14292. @see GuiControl */
  14293.     virtual int getLastClickItem(()) {}
  14294.     /*! @brief Informs the GuiListBoxCtrl object to mirror the contents of the GuiListBoxCtrl stored in the mirrorSet field.
  14295.  
  14296. @tsexample
  14297. \ Inform the object to mirror the object located at %thisGuiListBox.mirrorSet
  14298. %thisGuiListBox.doMirror();
  14299. @endtsexample
  14300.  
  14301. @see GuiCore */
  14302.     virtual void doMirror(()) {}
  14303.     /*! @brief Checks if there is an item with the exact text of what is passed in, and if so
  14304. the item is removed from the list and adds that item's data to the filtered list.
  14305.  
  14306. @param itemName Name of the item that we wish to add to the filtered item list of the GuiListBoxCtrl.
  14307. @tsexample
  14308. // Define the itemName that we wish to add to the filtered item list.
  14309. %itemName = "This Item Name";
  14310.  
  14311. // Add the item name to the filtered item list.
  14312. %thisGuiListBoxCtrl.addFilteredItem(%filteredItemName);
  14313. @endtsexample
  14314.  
  14315. @see GuiControl */
  14316.     virtual void addFilteredItem(( string newItem )) {}
  14317.     /*! @brief Removes an item of the entered name from the filtered items list.
  14318.  
  14319. @param itemName Name of the item to remove from the filtered list.
  14320. @tsexample
  14321. // Define the itemName that you wish to remove.
  14322. %itemName = "This Item Name";
  14323.  
  14324. // Remove the itemName from the GuiListBoxCtrl
  14325. %thisGuiListBoxCtrl.removeFilteredItem(%itemName);
  14326. @endtsexample
  14327.  
  14328. @see GuiControl */
  14329.     virtual void removeFilteredItem(( string itemName )) {}
  14330.     /*! @brief Returns the associated ID.
  14331.  
  14332.  */
  14333.     virtual int getItemData(( int index )) {}
  14334.     /*! @brief Returns the associated ID.
  14335.  
  14336.  */
  14337.     virtual int getItemIndexByData(( int data )) {}
  14338.     /*!
  14339.     If true, will allow the selection of multiple items in the listbox.
  14340.  
  14341.    
  14342.      */
  14343.     bool allowMultipleSelections;
  14344.     /*!
  14345.     If true, the width of the listbox will match the width of its parent control.
  14346.  
  14347.    
  14348.      */
  14349.     bool fitParentWidth;
  14350.     /*!
  14351.     If true, colored items will render a colored rectangular bullet next to the item text.
  14352.  
  14353.    
  14354.      */
  14355.     bool colorBullet;
  14356.     /*!
  14357.     If populated with the name of another GuiListBoxCtrl, then this list box will mirror the contents of the mirrorSet listbox.
  14358.  
  14359.    
  14360.      */
  14361.     string mirrorSet;
  14362.     /*!
  14363.     A script snippet to control what is displayed in the list for a SimObject. Within this snippet, $ThisControl is bound to the guiListBoxCtrl and $ThisObject to the contained object in question.
  14364.  
  14365.    
  14366.      */
  14367.     string makeNameCallback;
  14368.  
  14369.     /*! @name Layout
  14370.     @{ */
  14371.     /*! */
  14372.     /// @}
  14373.  
  14374.  
  14375.     /*! @name Control
  14376.     @{ */
  14377.     /*! */
  14378.     /// @}
  14379.  
  14380.  
  14381.     /*! @name ToolTip
  14382.     @{ */
  14383.     /*! */
  14384.     /// @}
  14385.  
  14386.  
  14387.     /*! @name Editing
  14388.     @{ */
  14389.     /*! */
  14390.     /// @}
  14391.  
  14392.  
  14393.     /*! @name Localization
  14394.     @{ */
  14395.     /*! */
  14396.     /// @}
  14397.  
  14398.  
  14399.     /*! @name Ungrouped
  14400.     @{ */
  14401.     /*! */
  14402.     /// @}
  14403.  
  14404.  
  14405.     /*! @name Object
  14406.     @{ */
  14407.     /*! */
  14408.     /// @}
  14409.  
  14410.  
  14411.     /*! @name Editing
  14412.     @{ */
  14413.     /*! */
  14414.     /// @}
  14415.  
  14416.  
  14417.     /*! @name Persistence
  14418.     @{ */
  14419.     /*! */
  14420.     /// @}
  14421.  
  14422.  };
  14423.  
  14424.  /*!
  14425.  @brief A control that displays a list of files from within a single directory in the game file system.
  14426.  
  14427.  @tsexample
  14428.  
  14429.  new GuiDirectoryFileListCtrl()
  14430.  {
  14431.     filePath = "art/shapes";
  14432.     fileFilter = "*.dts" TAB "*.dae";
  14433.     //Properties not specific to this control have been omitted from this example.
  14434.  };
  14435.  @endtsexample
  14436.  
  14437.  @ingroup GuiControls
  14438.   */
  14439.  class  GuiDirectoryFileListCtrl : public GuiListBoxCtrl {
  14440.    public:
  14441.     /*! Set the file filter.
  14442.  
  14443. @param filter Tab-delimited list of file name patterns. Only matched files will be displayed.
  14444.  */
  14445.     virtual void setFilter(( string filter )) {}
  14446.     /*! Update the file list. */
  14447.     virtual void reload(()) {}
  14448.     /*! Set the search path and file filter.
  14449.  
  14450. @param path   Path in game directory from which to list files.
  14451. @param filter Tab-delimited list of file name patterns. Only matched files will be displayed.
  14452.  */
  14453.     virtual bool setPath(( string path, string filter )) {}
  14454.     /*! Get the list of selected files.
  14455.  
  14456. @return A space separated list of selected files */
  14457.     virtual string getSelectedFiles(()) {}
  14458.     /*! Get the currently selected filename.
  14459.  
  14460. @return The filename of the currently selected file
  14461.  */
  14462.     virtual string getSelectedFile(()) {}
  14463.     /*!
  14464.     Path in game directory from which to list files.
  14465.    
  14466.      */
  14467.     string filePath;
  14468.     /*!
  14469.     Tab-delimited list of file name patterns. Only matched files will be displayed.
  14470.    
  14471.      */
  14472.     string fileFilter;
  14473.  
  14474.     /*! @name Layout
  14475.     @{ */
  14476.     /*! */
  14477.     /// @}
  14478.  
  14479.  
  14480.     /*! @name Control
  14481.     @{ */
  14482.     /*! */
  14483.     /// @}
  14484.  
  14485.  
  14486.     /*! @name ToolTip
  14487.     @{ */
  14488.     /*! */
  14489.     /// @}
  14490.  
  14491.  
  14492.     /*! @name Editing
  14493.     @{ */
  14494.     /*! */
  14495.     /// @}
  14496.  
  14497.  
  14498.     /*! @name Localization
  14499.     @{ */
  14500.     /*! */
  14501.     /// @}
  14502.  
  14503.  
  14504.     /*! @name Ungrouped
  14505.     @{ */
  14506.     /*! */
  14507.     /// @}
  14508.  
  14509.  
  14510.     /*! @name Object
  14511.     @{ */
  14512.     /*! */
  14513.     /// @}
  14514.  
  14515.  
  14516.     /*! @name Editing
  14517.     @{ */
  14518.     /*! */
  14519.     /// @}
  14520.  
  14521.  
  14522.     /*! @name Persistence
  14523.     @{ */
  14524.     /*! */
  14525.     /// @}
  14526.  
  14527.  };
  14528.  
  14529.  /*!
  14530.  @brief Hierarchical list of text items with optional icons.
  14531.  
  14532.  Can also be used to inspect SimObject hierarchies, primarily within editors.
  14533.  
  14534.  GuiTreeViewCtrls can either display arbitrary user-defined trees or can be used to display SimObject hierarchies where each parent node in the tree is a SimSet or SimGroup and each leaf node is a SimObject.
  14535.  
  14536.  Each item in the tree has a text and a value.  For trees that display SimObject hierarchies, the text for each item is automatically derived from objects while the value for each item is the ID of the respective SimObject.  For trees that are not tied to SimObjects, both text and value of each item are set by the user.
  14537.  
  14538.  Additionally, items in the tree can have icons.
  14539.  
  14540.  Each item in the tree has a distinct numeric ID that is unique within its tree.  The ID of the root item, which is always present on a tree, is 0.
  14541.  
  14542.  @tsexample
  14543.  new GuiTreeViewCtrl(DatablockEditorTree)
  14544.  {
  14545.     tabSize = "16";
  14546.     textOffset = "2";
  14547.     fullRowSelect = "0";
  14548.     itemHeight = "21";
  14549.     destroyTreeOnSleep = "0";
  14550.     MouseDragging = "0";
  14551.     MultipleSelections = "1";
  14552.     DeleteObjectAllowed = "1";
  14553.     DragToItemAllowed = "0";
  14554.     ClearAllOnSingleSelection = "1";
  14555.     showRoot = "1";
  14556.     internalNamesOnly = "0";
  14557.     objectNamesOnly = "0";
  14558.     compareToObjectID = "0";
  14559.     Profile = "GuiTreeViewProfile";
  14560.     tooltipprofile = "GuiToolTipProfile";
  14561.     hovertime = "1000";
  14562.  };
  14563.  @endtsexample
  14564.  
  14565.  @ingroup GuiContainers
  14566.   */
  14567.  class  GuiTreeViewCtrl : public GuiArrayCtrl {
  14568.    public:
  14569.     virtual Script handleRenameObject(( string this, string name, string obj )) {}
  14570.     virtual Script onDefineIcons(( string this )) {}
  14571.        /*!  */
  14572.        bool onDeleteObject( SimObject object );
  14573.  
  14574.        /*!  */
  14575.        bool isValidDragTarget( int id, string value );
  14576.  
  14577.        /*!  */
  14578.        void onDefineIcons();
  14579.  
  14580.        /*!  */
  14581.        void onAddGroupSelected( SimGroup group );
  14582.  
  14583.        /*!  */
  14584.        void onAddSelection( int itemOrObjectId, bool isLastSelection );
  14585.  
  14586.        /*!  */
  14587.        void onSelect( int itemOrObjectId );
  14588.  
  14589.        /*!  */
  14590.        void onInspect( int itemOrObjectId );
  14591.  
  14592.        /*!  */
  14593.        void onRemoveSelection( int itemOrObjectId );
  14594.  
  14595.        /*!  */
  14596.        void onUnselect( int itemOrObjectId );
  14597.  
  14598.        /*!  */
  14599.        void onDeleteSelection();
  14600.  
  14601.        /*!  */
  14602.        void onObjectDeleteCompleted();
  14603.  
  14604.        /*!  */
  14605.        void onKeyDown( int modifier, int keyCode );
  14606.  
  14607.        /*!  */
  14608.        void onMouseUp( int hitItemId, int mouseClickCount );
  14609.  
  14610.        /*!  */
  14611.        void onMouseDragged();
  14612.  
  14613.        /*!  */
  14614.        void onRightMouseDown( int itemId, Point2I mousePos, SimObject object );
  14615.  
  14616.        /*!  */
  14617.        void onRightMouseUp( int itemId, Point2I mousePos, SimObject object );
  14618.  
  14619.        /*!  */
  14620.        void onBeginReparenting();
  14621.  
  14622.        /*!  */
  14623.        void onEndReparenting();
  14624.  
  14625.        /*!  */
  14626.        void onReparent( int itemOrObjectId, int oldParentItemOrObjectId, int newParentItemOrObjectId );
  14627.  
  14628.        /*!  */
  14629.        void onDragDropped();
  14630.  
  14631.        /*!  */
  14632.        void onAddMultipleSelectionBegin();
  14633.  
  14634.        /*!  */
  14635.        void onAddMultipleSelectionEnd();
  14636.  
  14637.        /*!  */
  14638.        bool canRenameObject( SimObject object );
  14639.  
  14640.        /*!  */
  14641.        bool handleRenameObject( string newName, SimObject object );
  14642.  
  14643.        /*!  */
  14644.        void onClearSelection();
  14645.  
  14646.     /*! Get the ID of the item whose text matches the given @a text.
  14647.  
  14648. @param text Item text to match.
  14649. @return ID of the item or -1 if no item matches the given text. */
  14650.     virtual int findItemByName(( string text )) {}
  14651.     /*! Get the ID of the item whose value matches @a value.
  14652.  
  14653. @param value Value text to match.
  14654. @return ID of the item or -1 if no item has the given value. */
  14655.     virtual int findItemByValue(( string value )) {}
  14656.     /*! Get the child item of the given parent item whose text matches @a childName.
  14657.  
  14658. @param parentId Item ID of the parent in which to look for the child.
  14659. @param childName Text of the child item to find.
  14660. @return ID of the child item or -1 if no child in @a parentId has the given text @a childName.
  14661.  
  14662. @note This method does not recurse, i.e. it only looks for direct children. */
  14663.     virtual int findChildItemByName(( int parentId, string childName )) {}
  14664.     /*! Add a new item to the tree.
  14665.  
  14666. @param parentId Item ID of parent to which to add the item as a child.  0 is root item.
  14667. @param text Text to display on the item in the tree.
  14668. @param value Behind-the-scenes value of the item.
  14669. @param icon
  14670. @param normalImage
  14671. @param expandedImage
  14672. @return The ID of the newly added item. */
  14673.     virtual int insertItem(( int parentId, string text, string value="", string icon="", int normalImage=0, int expandedImage=0 )) {}
  14674.     /*! Call SimObject::setHidden( @a state ) on all objects in the current selection.
  14675.  
  14676. @param state Visibility state to set objects in selection to. */
  14677.     virtual void hideSelection(( bool state=true )) {}
  14678.     /*! Toggle the hidden state of all objects in the current selection. */
  14679.     virtual void toggleHideSelection(()) {}
  14680.     /*! Unselect all currently selected items. */
  14681.     virtual void clearSelection(()) {}
  14682.     /*! Delete all items/objects in the current selection. */
  14683.     virtual void deleteSelection(()) {}
  14684.     /*! Add an item/object to the current selection.
  14685.  
  14686. @param id ID of item/object to add to the selection.
  14687. @param isLastSelection Whether there are more pending items/objects to be added to the selection.  If false, the control will defer refreshing the tree and wait until addSelection() is called with this parameter set to true. */
  14688.     virtual void addSelection(( int id, bool isLastSelection=true )) {}
  14689.     /*! addChildSelectionByValue(TreeItemId parent, value) */
  14690.     virtual void addChildSelectionByValue() {}
  14691.     virtual void removeSelection((deselects an item)) {}
  14692.     /*! removeChildSelectionByValue(TreeItemId parent, value) */
  14693.     virtual void removeChildSelectionByValue() {}
  14694.     virtual bool selectItem((TreeItemId item, bool select=true)) {}
  14695.     virtual bool expandItem((TreeItemId item, bool expand=true)) {}
  14696.     virtual bool markItem((TreeItemId item, bool mark=true)) {}
  14697.     virtual void scrollVisible((TreeItemId item)) {}
  14698.     virtual bool buildIconTable((builds an icon table)) {}
  14699.     /*! Set the root of the tree view to the specified object, or to the root set. */
  14700.     virtual void open((SimSet obj, bool okToEdit=true)) {}
  14701.     /*! Set the tooltip to show for the given item. */
  14702.     virtual void setItemTooltip(( int id, string text )) {}
  14703.     /*! Sets the normal and expanded images to show for the given item. */
  14704.     virtual void setItemImages(( int id, int normalImage, int expandedImage )) {}
  14705.     /*! Returns true if the given item contains child items. */
  14706.     virtual bool isParentItem(( int id )) {}
  14707.     virtual string getItemText((TreeItemId item)) {}
  14708.     virtual string getItemValue((TreeItemId item)) {}
  14709.     virtual bool editItem((TreeItemId item, string newText, string newValue)) {}
  14710.     virtual bool removeItem((TreeItemId item)) {}
  14711.     /*! removeAllChildren(TreeItemId parent) */
  14712.     virtual void removeAllChildren() {}
  14713.     /*! empty tree */
  14714.     virtual void clear(()) {}
  14715.     /*! Get id for root item. */
  14716.     virtual int getFirstRootItem() {}
  14717.     virtual int getChild((TreeItemId item)) {}
  14718.     /*! Build the visible tree */
  14719.     virtual void buildVisibleTree() {}
  14720.     virtual int getParent((TreeItemId item)) {}
  14721.     virtual int getNextSibling((TreeItemId item)) {}
  14722.     virtual int getPrevSibling((TreeItemId item)) {}
  14723.     virtual int getItemCount() {}
  14724.     /*! Return the selected item at the given index. */
  14725.     virtual int getSelectedItem(( int index=0 )) {}
  14726.     /*! Return the currently selected SimObject at the given index in inspector mode or -1 */
  14727.     virtual int getSelectedObject(( int index=0 )) {}
  14728.     /*! Returns a space sperated list of all selected object ids. */
  14729.     virtual string getSelectedObjectList() {}
  14730.     virtual void moveItemUp((TreeItemId item)) {}
  14731.     virtual int getSelectedItemsCount() {}
  14732.     virtual void moveItemDown((TreeItemId item)) {}
  14733.     /*! gets the text from the current node to the root, concatenating at each branch upward, with a specified delimiter optionally */
  14734.     virtual string getTextToRoot((TreeItemId item,Delimiter=none)) {}
  14735.     /*! returns a space seperated list of mulitple item ids */
  14736.     virtual string getSelectedItemList() {}
  14737.     virtual int findItemByObjectId((find item by object id and returns the mId)) {}
  14738.     virtual int scrollVisibleByObjectId((show item by object id. returns true if sucessful.)) {}
  14739.     /*! Sorts all items of the given parent (or root).  With 'hierarchy', traverses hierarchy. */
  14740.     virtual void sort(( int parent, bool traverseHierarchy=false, bool parentsFirst=false, bool caseSensitive=true )) {}
  14741.     /*! For internal use. */
  14742.     virtual void cancelRename() {}
  14743.     /*! For internal use. */
  14744.     virtual void onRenameValidate() {}
  14745.     /*! Show the rename text field for the given item (only one at a time). */
  14746.     virtual void showItemRenameCtrl(( TreeItemId id )) {}
  14747.     /*! Enable/disable debug output. */
  14748.     virtual void setDebug(( bool value=true )) {}
  14749.     /*! Check whether the given item is currently selected in the tree.
  14750.  
  14751. @param id Item/object ID.
  14752. @return True if the given item/object is currently selected in the tree. */
  14753.     virtual bool isItemSelected(( int id )) {}
  14754.     /*! Get the current filter expression.  Only tree items whose text matches this expression are displayed.  By default, the expression is empty and all items are shown.
  14755.  
  14756. @return The current filter pattern or an empty string if no filter pattern is currently active.
  14757.  
  14758. @see setFilterText
  14759. @see clearFilterText */
  14760.     virtual string getFilterText(()) {}
  14761.     /*! Set the pattern by which to filter items in the tree.  Only items in the tree whose text matches this pattern are displayed.
  14762.  
  14763. @param pattern New pattern based on which visible items in the tree should be filtered.  If empty, all items become visible.
  14764.  
  14765. @see getFilterText
  14766. @see clearFilterText */
  14767.     virtual void setFilterText(( string pattern )) {}
  14768.     /*! Clear the current item filtering pattern.
  14769.  
  14770. @see setFilterText
  14771. @see getFilterText */
  14772.     virtual void clearFilterText(()) {}
  14773.  
  14774.     /*! @name TreeView
  14775.     @{ */
  14776.     /*! */
  14777.     /*!
  14778.      */
  14779.     int tabSize;
  14780.     /*!
  14781.      */
  14782.     int textOffset;
  14783.     /*!
  14784.      */
  14785.     bool fullRowSelect;
  14786.     /*!
  14787.      */
  14788.     int itemHeight;
  14789.     /*!
  14790.     If true, the entire tree item hierarchy is deleted when the control goes to sleep.
  14791.    
  14792.      */
  14793.     bool destroyTreeOnSleep;
  14794.     /*!
  14795.      */
  14796.     bool mouseDragging;
  14797.     /*!
  14798.     If true, multiple items can be selected concurrently.
  14799.    
  14800.      */
  14801.     bool multipleSelections;
  14802.     /*!
  14803.      */
  14804.     bool deleteObjectAllowed;
  14805.     /*!
  14806.      */
  14807.     bool dragToItemAllowed;
  14808.     /*!
  14809.      */
  14810.     bool clearAllOnSingleSelection;
  14811.     /*!
  14812.     If true, the root item is shown in the tree.
  14813.    
  14814.      */
  14815.     bool showRoot;
  14816.     /*!
  14817.      */
  14818.     bool useInspectorTooltips;
  14819.     /*!
  14820.      */
  14821.     bool tooltipOnWidthOnly;
  14822.     /*!
  14823.      */
  14824.     string itemFilter;
  14825.     /*!
  14826.      */
  14827.     bool itemFilterEnable;
  14828.     /// @}
  14829.  
  14830.  
  14831.     /*! @name Inspector Trees
  14832.     @{ */
  14833.     /*! */
  14834.     /*!
  14835.     If true, item text labels for objects will include object IDs.
  14836.    
  14837.      */
  14838.     bool showObjectIds;
  14839.     /*!
  14840.     If true, item text labels for objects will include class names.
  14841.    
  14842.      */
  14843.     bool showClassNames;
  14844.     /*!
  14845.     If true, item text labels for objects will include object names.
  14846.    
  14847.      */
  14848.     bool showObjectNames;
  14849.     /*!
  14850.     If true, item text labels for obje ts will include internal names.
  14851.    
  14852.      */
  14853.     bool showInternalNames;
  14854.     /*!
  14855.     If true, class names will be used as object names for unnamed objects.
  14856.    
  14857.      */
  14858.     bool showClassNameForUnnamedObjects;
  14859.     /*!
  14860.      */
  14861.     bool compareToObjectID;
  14862.     /*!
  14863.     If true clicking on a selected item ( that is an object and not the root ) will allow you to rename it.
  14864.    
  14865.      */
  14866.     bool canRenameObjects;
  14867.     /*!
  14868.     If true then object renaming operates on the internalName rather than the object name.
  14869.    
  14870.      */
  14871.     bool renameInternal;
  14872.     /// @}
  14873.  
  14874.  
  14875.     /*! @name Layout
  14876.     @{ */
  14877.     /*! */
  14878.     /// @}
  14879.  
  14880.  
  14881.     /*! @name Control
  14882.     @{ */
  14883.     /*! */
  14884.     /// @}
  14885.  
  14886.  
  14887.     /*! @name ToolTip
  14888.     @{ */
  14889.     /*! */
  14890.     /// @}
  14891.  
  14892.  
  14893.     /*! @name Editing
  14894.     @{ */
  14895.     /*! */
  14896.     /// @}
  14897.  
  14898.  
  14899.     /*! @name Localization
  14900.     @{ */
  14901.     /*! */
  14902.     /// @}
  14903.  
  14904.  
  14905.     /*! @name Ungrouped
  14906.     @{ */
  14907.     /*! */
  14908.     /// @}
  14909.  
  14910.  
  14911.     /*! @name Object
  14912.     @{ */
  14913.     /*! */
  14914.     /// @}
  14915.  
  14916.  
  14917.     /*! @name Editing
  14918.     @{ */
  14919.     /*! */
  14920.     /// @}
  14921.  
  14922.  
  14923.     /*! @name Persistence
  14924.     @{ */
  14925.     /*! */
  14926.     /// @}
  14927.  
  14928.  };
  14929.  
  14930.  /*!
  14931.  @brief A control that displays a hierarchical tree view of a path in the game file system.
  14932.  
  14933.  @note Currently not used, most likely existed for editors. Possibly deprecated.
  14934.  
  14935.   */
  14936.  class  GuiFileTreeCtrl : public GuiTreeViewCtrl {
  14937.    public:
  14938.     /*! getSelectedPath() - returns the currently selected path in the tree */
  14939.     virtual string getSelectedPath() {}
  14940.     /*! setSelectedPath(path) - expands the tree to the specified path */
  14941.     virtual bool setSelectedPath() {}
  14942.     /*! Reread the directory tree hierarchy. */
  14943.     virtual void reload(()) {}
  14944.  
  14945.     /*! @name File Tree
  14946.     @{ */
  14947.     /*! */
  14948.     /*!
  14949.     Path in game directory that should be displayed in the control.
  14950.    
  14951.      */
  14952.     string rootPath;
  14953.     /*!
  14954.     Vector of file patterns.  If not empty, only files matching the pattern will be shown in the control.
  14955.    
  14956.      */
  14957.     string fileFilter;
  14958.     /// @}
  14959.  
  14960.  
  14961.     /*! @name TreeView
  14962.     @{ */
  14963.     /*! */
  14964.     /// @}
  14965.  
  14966.  
  14967.     /*! @name Inspector Trees
  14968.     @{ */
  14969.     /*! */
  14970.     /// @}
  14971.  
  14972.  
  14973.     /*! @name Layout
  14974.     @{ */
  14975.     /*! */
  14976.     /// @}
  14977.  
  14978.  
  14979.     /*! @name Control
  14980.     @{ */
  14981.     /*! */
  14982.     /// @}
  14983.  
  14984.  
  14985.     /*! @name ToolTip
  14986.     @{ */
  14987.     /*! */
  14988.     /// @}
  14989.  
  14990.  
  14991.     /*! @name Editing
  14992.     @{ */
  14993.     /*! */
  14994.     /// @}
  14995.  
  14996.  
  14997.     /*! @name Localization
  14998.     @{ */
  14999.     /*! */
  15000.     /// @}
  15001.  
  15002.  
  15003.     /*! @name Ungrouped
  15004.     @{ */
  15005.     /*! */
  15006.     /// @}
  15007.  
  15008.  
  15009.     /*! @name Object
  15010.     @{ */
  15011.     /*! */
  15012.     /// @}
  15013.  
  15014.  
  15015.     /*! @name Editing
  15016.     @{ */
  15017.     /*! */
  15018.     /// @}
  15019.  
  15020.  
  15021.     /*! @name Persistence
  15022.     @{ */
  15023.     /*! */
  15024.     /// @}
  15025.  
  15026.  };
  15027.  
  15028.  /*!
  15029.  @brief A base class for cross platform menu controls that are gamepad friendly.
  15030.  
  15031.  This class is used to build row-based menu GUIs that can be easily navigated using the keyboard, mouse or gamepad. The desired row can be selected using the mouse, or by navigating using the Up and Down buttons.
  15032.  
  15033.  @tsexample
  15034.  
  15035.  new GuiGameListMenuCtrl()
  15036.  {
  15037.     debugRender = "0";
  15038.     callbackOnA = "applyOptions();";
  15039.     callbackOnB = "Canvas.setContent(MainMenuGui);";
  15040.     callbackOnX = "";
  15041.     callbackOnY = "revertOptions();";
  15042.     //Properties not specific to this control have been omitted from this example.
  15043.  };
  15044.  @endtsexample
  15045.  
  15046.  @see GuiGameListMenuProfile
  15047.  
  15048.   */
  15049.  class  GuiGameListMenuCtrl : public GuiControl {
  15050.    public:
  15051.        /*! Called when the selected row changes. */
  15052.        void onChange();
  15053.  
  15054.     /*! Add a row to the list control.
  15055.  
  15056. @param label The text to display on the row as a label.
  15057. @param callback Name of a script function to use as a callback when this row is activated.
  15058. @param icon [optional] Index of the icon to use as a marker.
  15059. @param yPad [optional] An extra amount of height padding before the row. Does nothing on the first row.
  15060. @param useHighlightIcon [optional] Does this row use the highlight icon?.
  15061. @param enabled [optional] If this row is initially enabled. */
  15062.     virtual void addRow(( string label, string callback, int icon=-1, int yPad=0, bool useHighlightIcon=true, bool enabled=true )) {}
  15063.     /*! Determines if the specified row is enabled or disabled.
  15064.  
  15065. @param row The row to set the enabled status of.
  15066. @return True if the specified row is enabled. False if the row is not enabled or the given index was not valid. */
  15067.     virtual bool isRowEnabled(( int row )) {}
  15068.     /*! Sets a row's enabled status according to the given parameters.
  15069.  
  15070. @param row The index to check for validity.
  15071. @param enabled Indicate true to enable the row or false to disable it. */
  15072.     virtual void setRowEnabled(( int row, bool enabled )) {}
  15073.     /*! Activates the current row. The script callback of  the current row will be called (if it has one). */
  15074.     virtual void activateRow(()) {}
  15075.     /*! Gets the number of rows on the control.
  15076.  
  15077. @return (int) The number of rows on the control. */
  15078.     virtual int getRowCount(()) {}
  15079.     /*! Gets the label displayed on the specified row.
  15080.  
  15081. @param row Index of the row to get the label of.
  15082. @return The label for the row. */
  15083.     virtual string getRowLabel(( int row )) {}
  15084.     /*! Sets the label on the given row.
  15085.  
  15086. @param row Index of the row to set the label on.
  15087. @param label Text to set as the label of the row.
  15088.  */
  15089.     virtual void setRowLabel(( int row, string label )) {}
  15090.     /*! Sets the selected row. Only rows that are enabled can be selected.
  15091.  
  15092. @param row Index of the row to set as selected. */
  15093.     virtual void setSelected(( int row )) {}
  15094.     /*! Gets the index of the currently selected row.
  15095.  
  15096. @return Index of the selected row. */
  15097.     virtual int getSelectedRow(()) {}
  15098.     /*!
  15099.     Enable debug rendering
  15100.    
  15101.      */
  15102.     bool debugRender;
  15103.     /*!
  15104.     Script callback when the 'A' button is pressed. 'A' inputs are Keyboard: A, Return, Space; Gamepad: A, Start
  15105.    
  15106.      */
  15107.     string callbackOnA;
  15108.     /*!
  15109.     Script callback when the 'B' button is pressed. 'B' inputs are Keyboard: B, Esc, Backspace, Delete; Gamepad: B, Back
  15110.    
  15111.      */
  15112.     string callbackOnB;
  15113.     /*!
  15114.     Script callback when the 'X' button is pressed. 'X' inputs are Keyboard: X; Gamepad: X
  15115.    
  15116.      */
  15117.     string callbackOnX;
  15118.     /*!
  15119.     Script callback when the 'Y' button is pressed. 'Y' inputs are Keyboard: Y; Gamepad: Y
  15120.    
  15121.      */
  15122.     string callbackOnY;
  15123.  
  15124.     /*! @name Layout
  15125.     @{ */
  15126.     /*! */
  15127.     /// @}
  15128.  
  15129.  
  15130.     /*! @name Control
  15131.     @{ */
  15132.     /*! */
  15133.     /// @}
  15134.  
  15135.  
  15136.     /*! @name ToolTip
  15137.     @{ */
  15138.     /*! */
  15139.     /// @}
  15140.  
  15141.  
  15142.     /*! @name Editing
  15143.     @{ */
  15144.     /*! */
  15145.     /// @}
  15146.  
  15147.  
  15148.     /*! @name Localization
  15149.     @{ */
  15150.     /*! */
  15151.     /// @}
  15152.  
  15153.  
  15154.     /*! @name Ungrouped
  15155.     @{ */
  15156.     /*! */
  15157.     /// @}
  15158.  
  15159.  
  15160.     /*! @name Object
  15161.     @{ */
  15162.     /*! */
  15163.     /// @}
  15164.  
  15165.  
  15166.     /*! @name Editing
  15167.     @{ */
  15168.     /*! */
  15169.     /// @}
  15170.  
  15171.  
  15172.     /*! @name Persistence
  15173.     @{ */
  15174.     /*! */
  15175.     /// @}
  15176.  
  15177.  };
  15178.  
  15179.  /*!
  15180.  @brief A control for showing pages of options that are gamepad friendly.
  15181.  
  15182.  Each row in this control allows the selection of one value from a set of options using the keyboard, gamepad or mouse. The row is rendered as 2 columns: the first column contains the row label, the second column contains left and right arrows (for mouse picking) and the currently selected value.
  15183.  
  15184.  @see GuiGameListOptionsProfile
  15185.  
  15186.   */
  15187.  class  GuiGameListOptionsCtrl : public GuiGameListMenuCtrl {
  15188.    public:
  15189.     /*! Add a row to the list control.
  15190.  
  15191. @param label The text to display on the row as a label.
  15192. @param options A tab separated list of options.
  15193. @param wrapOptions Specify true to allow options to wrap at each end or false to prevent wrapping.
  15194. @param callback Name of a script function to use as a callback when this row is activated.
  15195. @param icon [optional] Index of the icon to use as a marker.
  15196. @param yPad [optional] An extra amount of height padding before the row. Does nothing on the first row.
  15197. @param enabled [optional] If this row is initially enabled. */
  15198.     virtual void addRow(( string label, string options, bool wrapOptions, string callback, int icon=-1, int yPad=0, bool enabled=true )) {}
  15199.     /*! Gets the text for the currently selected option of the given row.
  15200.  
  15201. @param row Index of the row to get the option from.
  15202. @return A string representing the text currently displayed as the selected option on the given row. If there is no such displayed text then the empty string is returned. */
  15203.     virtual string getCurrentOption(( int row )) {}
  15204.     /*! Set the row's current option to the one specified
  15205.  
  15206. @param row Index of the row to set an option on.
  15207. @param option The option to be made active.
  15208. @return True if the row contained the option and was set, false otherwise. */
  15209.     virtual bool selectOption(( int row, string option )) {}
  15210.     /*! Sets the list of options on the given row.
  15211.  
  15212. @param row Index of the row to set options on.@param optionsList A tab separated list of options for the control. */
  15213.     virtual void setOptions(( int row, string optionsList )) {}
  15214.  
  15215.     /*! @name Layout
  15216.     @{ */
  15217.     /*! */
  15218.     /// @}
  15219.  
  15220.  
  15221.     /*! @name Control
  15222.     @{ */
  15223.     /*! */
  15224.     /// @}
  15225.  
  15226.  
  15227.     /*! @name ToolTip
  15228.     @{ */
  15229.     /*! */
  15230.     /// @}
  15231.  
  15232.  
  15233.     /*! @name Editing
  15234.     @{ */
  15235.     /*! */
  15236.     /// @}
  15237.  
  15238.  
  15239.     /*! @name Localization
  15240.     @{ */
  15241.     /*! */
  15242.     /// @}
  15243.  
  15244.  
  15245.     /*! @name Ungrouped
  15246.     @{ */
  15247.     /*! */
  15248.     /// @}
  15249.  
  15250.  
  15251.     /*! @name Object
  15252.     @{ */
  15253.     /*! */
  15254.     /// @}
  15255.  
  15256.  
  15257.     /*! @name Editing
  15258.     @{ */
  15259.     /*! */
  15260.     /// @}
  15261.  
  15262.  
  15263.     /*! @name Persistence
  15264.     @{ */
  15265.     /*! */
  15266.     /// @}
  15267.  
  15268.  };
  15269.  
  15270.  /*!
  15271.  @brief Swatch selector that appears inside the GuiGradientCtrl object. These objects are automatically created by GuiGradientCtrl.
  15272.  
  15273.  Currently only appears to be editor specific
  15274.  
  15275.  @see GuiSwatchButtonCtrl
  15276.  @see GuiGradientCtrl
  15277.  
  15278.  @ingroup GuiCore
  15279.   */
  15280.  class  GuiGradientSwatchCtrl : public GuiSwatchButtonCtrl {
  15281.    public:
  15282.        /*! @brief Called whenever the left mouse button has entered the down state while in this control.
  15283.  
  15284. @tsexample
  15285. // The left mouse button is down on the control, causing the callback to occur.
  15286. GuiGradientSwatchCtrl::onMouseDown(%this)
  15287.     {
  15288.         // Code to run when the callback occurs
  15289.     }
  15290. @endtsexample
  15291.  
  15292. @see GuiControl
  15293. @see GuiSwatchButtonCtrl
  15294.  
  15295. @internal */
  15296.        void onMouseDown();
  15297.  
  15298.        /*! @brief Called whenever the left mouse button performs a double click while in this control.
  15299.  
  15300. @tsexample
  15301. // The left mouse button has performed a double click on the control, causing the callback to occur.
  15302. GuiGradientSwatchCtrl::onDoubleClick(%this)
  15303.     {
  15304.         // Code to run when the callback occurs
  15305.     }
  15306. @endtsexample
  15307.  
  15308. @see GuiControl
  15309. @see GuiSwatchButtonCtrl
  15310.  
  15311. @internal */
  15312.        void onDoubleClick();
  15313.  
  15314.  
  15315.     /*! @name Button
  15316.     @{ */
  15317.     /*! */
  15318.     /// @}
  15319.  
  15320.  
  15321.     /*! @name Layout
  15322.     @{ */
  15323.     /*! */
  15324.     /// @}
  15325.  
  15326.  
  15327.     /*! @name Control
  15328.     @{ */
  15329.     /*! */
  15330.     /// @}
  15331.  
  15332.  
  15333.     /*! @name ToolTip
  15334.     @{ */
  15335.     /*! */
  15336.     /// @}
  15337.  
  15338.  
  15339.     /*! @name Editing
  15340.     @{ */
  15341.     /*! */
  15342.     /// @}
  15343.  
  15344.  
  15345.     /*! @name Localization
  15346.     @{ */
  15347.     /*! */
  15348.     /// @}
  15349.  
  15350.  
  15351.     /*! @name Ungrouped
  15352.     @{ */
  15353.     /*! */
  15354.     /// @}
  15355.  
  15356.  
  15357.     /*! @name Object
  15358.     @{ */
  15359.     /*! */
  15360.     /// @}
  15361.  
  15362.  
  15363.     /*! @name Editing
  15364.     @{ */
  15365.     /*! */
  15366.     /// @}
  15367.  
  15368.  
  15369.     /*! @name Persistence
  15370.     @{ */
  15371.     /*! */
  15372.     /// @}
  15373.  
  15374.  };
  15375.  
  15376.  /*!
  15377.  @brief Visual representation of color box used with the GuiColorPickerCtrl
  15378.  
  15379.  Editor use only.
  15380.  
  15381.   */
  15382.  class  GuiGradientCtrl : public GuiControl {
  15383.    public:
  15384.     /*! Get color count */
  15385.     virtual int getColorCount() {}
  15386.     /*! Get color value */
  15387.     virtual string getColor() {}
  15388.  
  15389.     /*! @name ColorPicker
  15390.     @{ */
  15391.     /*! */
  15392.     /*!
  15393.      */
  15394.     ColorF baseColor;
  15395.     /*!
  15396.      */
  15397.     ColorF pickColor;
  15398.     /*!
  15399.      */
  15400.     GuiGradientPickMode displayMode;
  15401.     /*!
  15402.      */
  15403.     bool actionOnMove;
  15404.     /*!
  15405.      */
  15406.     bool showReticle;
  15407.     /*!
  15408.      */
  15409.     int swatchFactor;
  15410.     /// @}
  15411.  
  15412.  
  15413.     /*! @name Layout
  15414.     @{ */
  15415.     /*! */
  15416.     /// @}
  15417.  
  15418.  
  15419.     /*! @name Control
  15420.     @{ */
  15421.     /*! */
  15422.     /// @}
  15423.  
  15424.  
  15425.     /*! @name ToolTip
  15426.     @{ */
  15427.     /*! */
  15428.     /// @}
  15429.  
  15430.  
  15431.     /*! @name Editing
  15432.     @{ */
  15433.     /*! */
  15434.     /// @}
  15435.  
  15436.  
  15437.     /*! @name Localization
  15438.     @{ */
  15439.     /*! */
  15440.     /// @}
  15441.  
  15442.  
  15443.     /*! @name Ungrouped
  15444.     @{ */
  15445.     /*! */
  15446.     /// @}
  15447.  
  15448.  
  15449.     /*! @name Object
  15450.     @{ */
  15451.     /*! */
  15452.     /// @}
  15453.  
  15454.  
  15455.     /*! @name Editing
  15456.     @{ */
  15457.     /*! */
  15458.     /// @}
  15459.  
  15460.  
  15461.     /*! @name Persistence
  15462.     @{ */
  15463.     /*! */
  15464.     /// @}
  15465.  
  15466.  };
  15467.  
  15468.  /*!
  15469.  @brief Container for GuiMaterialPreview
  15470.  
  15471.  Editor use only.
  15472.  
  15473.   */
  15474.  class  GuiMaterialCtrl : public GuiContainer {
  15475.    public:
  15476.     /*! Set the material to be displayed in the control. */
  15477.     virtual bool setMaterial(( string materialName )) {}
  15478.  
  15479.     /*! @name Material
  15480.     @{ */
  15481.     /*! */
  15482.     /*!
  15483.    
  15484.    
  15485.      */
  15486.     filename materialName;
  15487.     /// @}
  15488.  
  15489.  
  15490.     /*! @name Layout
  15491.     @{ */
  15492.     /*! */
  15493.     /// @}
  15494.  
  15495.  
  15496.     /*! @name Layout
  15497.     @{ */
  15498.     /*! */
  15499.     /// @}
  15500.  
  15501.  
  15502.     /*! @name Control
  15503.     @{ */
  15504.     /*! */
  15505.     /// @}
  15506.  
  15507.  
  15508.     /*! @name ToolTip
  15509.     @{ */
  15510.     /*! */
  15511.     /// @}
  15512.  
  15513.  
  15514.     /*! @name Editing
  15515.     @{ */
  15516.     /*! */
  15517.     /// @}
  15518.  
  15519.  
  15520.     /*! @name Localization
  15521.     @{ */
  15522.     /*! */
  15523.     /// @}
  15524.  
  15525.  
  15526.     /*! @name Ungrouped
  15527.     @{ */
  15528.     /*! */
  15529.     /// @}
  15530.  
  15531.  
  15532.     /*! @name Object
  15533.     @{ */
  15534.     /*! */
  15535.     /// @}
  15536.  
  15537.  
  15538.     /*! @name Editing
  15539.     @{ */
  15540.     /*! */
  15541.     /// @}
  15542.  
  15543.  
  15544.     /*! @name Persistence
  15545.     @{ */
  15546.     /*! */
  15547.     /// @}
  15548.  
  15549.  };
  15550.  
  15551.  class  GuiSliderVerticalCtrl : public GuiControl {
  15552.    public:
  15553.        /*! Called when the left mouse button is dragged across the slider. */
  15554.        void onMouseDragged();
  15555.  
  15556.     /*! Get the current value of the slider based on the position of the thumb.
  15557. @return Slider position (from range.x to range.y). */
  15558.     virtual float getValue(()) {}
  15559.     /*! Set position of the thumb on the slider.
  15560. @param pos New slider position (from range.x to range.y)
  15561. @param doCallback If true, the altCommand callback will be invoked
  15562.  */
  15563.     virtual void setValue(( float pos, bool doCallback=false )) {}
  15564.     virtual void setRange(( Point2F range )) {}
  15565.     /*! Returns true if the thumb is currently being dragged by the user.  This method is mainly useful for scrubbing type sliders where the slider position is sync'd to a changing value.  When the user is dragging the thumb, however, the sync'ing should pause and not get in the way of the user. */
  15566.     virtual bool isThumbBeingDragged(()) {}
  15567.  
  15568.     /*! @name Slider
  15569.     @{ */
  15570.     /*! */
  15571.     /*!
  15572.     Min and max values corresponding to left and right slider position.
  15573.    
  15574.      */
  15575.     Point2F range;
  15576.     /*!
  15577.     The value corresponding to the current slider position.
  15578.    
  15579.      */
  15580.     float value;
  15581.     /// @}
  15582.  
  15583.  
  15584.     /*! @name Layout
  15585.     @{ */
  15586.     /*! */
  15587.     /// @}
  15588.  
  15589.  
  15590.     /*! @name Control
  15591.     @{ */
  15592.     /*! */
  15593.     /// @}
  15594.  
  15595.  
  15596.     /*! @name ToolTip
  15597.     @{ */
  15598.     /*! */
  15599.     /// @}
  15600.  
  15601.  
  15602.     /*! @name Editing
  15603.     @{ */
  15604.     /*! */
  15605.     /// @}
  15606.  
  15607.  
  15608.     /*! @name Localization
  15609.     @{ */
  15610.     /*! */
  15611.     /// @}
  15612.  
  15613.  
  15614.     /*! @name Ungrouped
  15615.     @{ */
  15616.     /*! */
  15617.     /// @}
  15618.  
  15619.  
  15620.     /*! @name Object
  15621.     @{ */
  15622.     /*! */
  15623.     /// @}
  15624.  
  15625.  
  15626.     /*! @name Editing
  15627.     @{ */
  15628.     /*! */
  15629.     /// @}
  15630.  
  15631.  
  15632.     /*! @name Persistence
  15633.     @{ */
  15634.     /*! */
  15635.     /// @}
  15636.  
  15637.  };
  15638.  
  15639.  class  GuiClickTextCtrl : public GuiTextCtrl {
  15640.    public:
  15641.        /*! Called when the left mouse button is double-clicked on the text control. */
  15642.        void onDoubleClick();
  15643.  
  15644.  
  15645.     /*! @name Layout
  15646.     @{ */
  15647.     /*! */
  15648.     /// @}
  15649.  
  15650.  
  15651.     /*! @name Layout
  15652.     @{ */
  15653.     /*! */
  15654.     /// @}
  15655.  
  15656.  
  15657.     /*! @name Control
  15658.     @{ */
  15659.     /*! */
  15660.     /// @}
  15661.  
  15662.  
  15663.     /*! @name ToolTip
  15664.     @{ */
  15665.     /*! */
  15666.     /// @}
  15667.  
  15668.  
  15669.     /*! @name Editing
  15670.     @{ */
  15671.     /*! */
  15672.     /// @}
  15673.  
  15674.  
  15675.     /*! @name Localization
  15676.     @{ */
  15677.     /*! */
  15678.     /// @}
  15679.  
  15680.  
  15681.     /*! @name Ungrouped
  15682.     @{ */
  15683.     /*! */
  15684.     /// @}
  15685.  
  15686.  
  15687.     /*! @name Object
  15688.     @{ */
  15689.     /*! */
  15690.     /// @}
  15691.  
  15692.  
  15693.     /*! @name Editing
  15694.     @{ */
  15695.     /*! */
  15696.     /// @}
  15697.  
  15698.  
  15699.     /*! @name Persistence
  15700.     @{ */
  15701.     /*! */
  15702.     /// @}
  15703.  
  15704.  };
  15705.  
  15706.  /*!
  15707.  @brief GUI Control which displays a numerical value which can be increased or decreased using a pair of bitmap up/down buttons.
  15708.  
  15709.  This control uses the bitmap specified in it's profile (GuiControlProfile::bitmapName). It takes this image and breaks up aspects of it to render the up and down arrows. It is also important to set GuiControlProfile::hasBitmapArray to true on the profile as well.
  15710.  
  15711.  The bitmap referenced should be broken up into a 1 x 4 grid (using the top left color pixel as a border color between each of the images) in which it will map to the following places:
  15712.  <ol>
  15713.  <li>Up arrow active</li>
  15714.  <li>Up arrow inactive</li>
  15715.  <li>Down arrow active</li>
  15716.  <li>Down arrow inactive</li>
  15717.  </ol>
  15718.  
  15719.  <pre>
  15720.  1
  15721.  2
  15722.  3
  15723.  4</pre>
  15724.  
  15725.  @tsexample
  15726.  singleton GuiControlProfile (SliderBitmapGUIProfile)
  15727.  {
  15728.     bitmap = "core/art/gui/images/sliderArray";
  15729.     hasBitmapArray = true;
  15730.     opaque = false;
  15731.  };
  15732.  
  15733.  new GuiTextEditSliderBitmapCtrl()
  15734.  {
  15735.     profile = "SliderBitmapGUIProfile";
  15736.     format = "%3.2f";
  15737.     range = "-1e+03 1e+03";
  15738.     increment = "0.1";
  15739.     focusOnMouseWheel = "0";
  15740.     bitmap = "";
  15741.     //Properties not specific to this control have been omitted from this example.
  15742.  };
  15743.  @endtsexample
  15744.  
  15745.  @see GuiTextEditSliderCtrl
  15746.  
  15747.  @see GuiTextEditCtrl
  15748.  
  15749.  @ingroup GuiCore
  15750.   */
  15751.  class  GuiTextEditSliderBitmapCtrl : public GuiTextEditCtrl {
  15752.    public:
  15753.        /*! Called when value changed */
  15754.        void onValueChanged();
  15755.  
  15756.     /*!
  15757.     Character format type to place in the control.
  15758.  
  15759.    
  15760.      */
  15761.     string format;
  15762.     /*!
  15763.     Maximum vertical and horizontal range to allow in the control.
  15764.  
  15765.    
  15766.      */
  15767.     Point2F range;
  15768.     /*!
  15769.     How far to increment the slider on each step.
  15770.  
  15771.    
  15772.      */
  15773.     float increment;
  15774.     /*!
  15775.     If true, the control will accept giving focus to the user when the mouse wheel is used.
  15776.  
  15777.    
  15778.      */
  15779.     bool focusOnMouseWheel;
  15780.     /*!
  15781.     Unused
  15782.    
  15783.      */
  15784.     filename bitmap;
  15785.  
  15786.     /*! @name Text Input
  15787.     @{ */
  15788.     /*! */
  15789.     /// @}
  15790.  
  15791.  
  15792.     /*! @name Layout
  15793.     @{ */
  15794.     /*! */
  15795.     /// @}
  15796.  
  15797.  
  15798.     /*! @name Layout
  15799.     @{ */
  15800.     /*! */
  15801.     /// @}
  15802.  
  15803.  
  15804.     /*! @name Control
  15805.     @{ */
  15806.     /*! */
  15807.     /// @}
  15808.  
  15809.  
  15810.     /*! @name ToolTip
  15811.     @{ */
  15812.     /*! */
  15813.     /// @}
  15814.  
  15815.  
  15816.     /*! @name Editing
  15817.     @{ */
  15818.     /*! */
  15819.     /// @}
  15820.  
  15821.  
  15822.     /*! @name Localization
  15823.     @{ */
  15824.     /*! */
  15825.     /// @}
  15826.  
  15827.  
  15828.     /*! @name Ungrouped
  15829.     @{ */
  15830.     /*! */
  15831.     /// @}
  15832.  
  15833.  
  15834.     /*! @name Object
  15835.     @{ */
  15836.     /*! */
  15837.     /// @}
  15838.  
  15839.  
  15840.     /*! @name Editing
  15841.     @{ */
  15842.     /*! */
  15843.     /// @}
  15844.  
  15845.  
  15846.     /*! @name Persistence
  15847.     @{ */
  15848.     /*! */
  15849.     /// @}
  15850.  
  15851.  };
  15852.  
  15853.  /*!
  15854.  @brief A control which adds several reactions to other GUIs via callbacks.
  15855.  
  15856.  GuiScriptNotifyCtrl does not exist to render anything. When parented or made a child of other controls, you can toggle flags on or off to make use of its specialized callbacks. Normally these callbacks are used as utility functions by the GUI Editor, or other container classes. However, for very fancy GUI work where controls interact with each other constantly, this is a handy utility to make use of.
  15857.  
  15858.   @tsexample
  15859.  // Common member fields left out for sake of example
  15860.  new GuiScriptNotifyCtrl()
  15861.  {
  15862.     onChildAdded = "0";
  15863.     onChildRemoved = "0";
  15864.     onChildResized = "0";
  15865.     onParentResized = "0";
  15866.  };
  15867.  @endtsexample
  15868.  
  15869.  @ingroup GuiUtil
  15870.   */
  15871.  class  GuiScriptNotifyCtrl : public GuiControl {
  15872.    public:
  15873.        /*! Called when this GUI is resized.
  15874.  
  15875. @param ID Unique object ID assigned when created (%this in script).
  15876.  */
  15877.        void onResize( SimObjectId ID );
  15878.  
  15879.        /*! Called when a child is added to this GUI.
  15880.  
  15881. @param ID Unique object ID assigned when created (%this in script).
  15882. @param childID Unique object ID of child being added.
  15883.  */
  15884.        void onChildAdded( SimObjectId ID, SimObjectId childID );
  15885.  
  15886.        /*! Called when a child is removed from this GUI.
  15887.  
  15888. @param ID Unique object ID assigned when created (%this in script).
  15889. @param childID Unique object ID of child being removed.
  15890.  */
  15891.        void onChildRemoved( SimObjectId ID, SimObjectId childID );
  15892.  
  15893.        /*! Called when a child is of this GUI is being resized.
  15894.  
  15895. @param ID Unique object ID assigned when created (%this in script).
  15896. @param childID Unique object ID of child being resized.
  15897.  */
  15898.        void onChildResized( SimObjectId ID, SimObjectId childID );
  15899.  
  15900.        /*! Called when this GUI's parent is resized.
  15901.  
  15902. @param ID Unique object ID assigned when created (%this in script).
  15903.  */
  15904.        void onParentResized( SimObjectId ID );
  15905.  
  15906.        /*! Called when this GUI loses focus.
  15907.  
  15908. @param ID Unique object ID assigned when created (%this in script).
  15909.  */
  15910.        void onLoseFirstResponder( SimObjectId ID );
  15911.  
  15912.        /*! Called when this GUI gains focus.
  15913.  
  15914. @param ID Unique object ID assigned when created (%this in script).
  15915.  */
  15916.        void onGainFirstResponder( SimObjectId ID );
  15917.  
  15918.  
  15919.     /*! @name Callbacks
  15920.     @{ */
  15921.     /*! */
  15922.     /*!
  15923.     Enables/disables onChildAdded callback
  15924.    
  15925.      */
  15926.     bool onChildAdded;
  15927.     /*!
  15928.     Enables/disables onChildRemoved callback
  15929.    
  15930.      */
  15931.     bool onChildRemoved;
  15932.     /*!
  15933.     Enables/disables onChildResized callback
  15934.    
  15935.      */
  15936.     bool onChildResized;
  15937.     /*!
  15938.     Enables/disables onParentResized callback
  15939.    
  15940.      */
  15941.     bool onParentResized;
  15942.     /*!
  15943.     Enables/disables onResize callback
  15944.    
  15945.      */
  15946.     bool onResize;
  15947.     /*!
  15948.     Enables/disables onLoseFirstResponder callback
  15949.    
  15950.      */
  15951.     bool onLoseFirstResponder;
  15952.     /*!
  15953.     Enables/disables onGainFirstResponder callback
  15954.    
  15955.      */
  15956.     bool onGainFirstResponder;
  15957.     /// @}
  15958.  
  15959.  
  15960.     /*! @name Layout
  15961.     @{ */
  15962.     /*! */
  15963.     /// @}
  15964.  
  15965.  
  15966.     /*! @name Control
  15967.     @{ */
  15968.     /*! */
  15969.     /// @}
  15970.  
  15971.  
  15972.     /*! @name ToolTip
  15973.     @{ */
  15974.     /*! */
  15975.     /// @}
  15976.  
  15977.  
  15978.     /*! @name Editing
  15979.     @{ */
  15980.     /*! */
  15981.     /// @}
  15982.  
  15983.  
  15984.     /*! @name Localization
  15985.     @{ */
  15986.     /*! */
  15987.     /// @}
  15988.  
  15989.  
  15990.     /*! @name Ungrouped
  15991.     @{ */
  15992.     /*! */
  15993.     /// @}
  15994.  
  15995.  
  15996.     /*! @name Object
  15997.     @{ */
  15998.     /*! */
  15999.     /// @}
  16000.  
  16001.  
  16002.     /*! @name Editing
  16003.     @{ */
  16004.     /*! */
  16005.     /// @}
  16006.  
  16007.  
  16008.     /*! @name Persistence
  16009.     @{ */
  16010.     /*! */
  16011.     /// @}
  16012.  
  16013.  };
  16014.  
  16015.  /*!
  16016.  @brief A control that plots one or more curves in a chart.
  16017.  
  16018.  Up to 6 individual curves can be plotted in the graph.  Each plotted curve can have its own display style including its own charting style (#plotType) and color (#plotColor).
  16019.  
  16020.  The data points on each curve can be added in one of two ways:
  16021.  
  16022.  - Manually by calling addDatum().  This causes new data points to be added to the left end of the plotting curve.
  16023.  - Automatically by letting the graph plot the values of a variable over time.  This is achieved by calling addAutoPlot and specifying the variable and update frequency.
  16024.  
  16025.  @tsexample
  16026.  // Create a graph that plots a red polyline graph of the FPS counter in a 1 second (1000 milliseconds) interval.
  16027.  new GuiGraphCtrl( FPSGraph )
  16028.  {
  16029.     plotType[ 0 ] = "PolyLine";
  16030.     plotColor[ 0 ] = "1 0 0";
  16031.     plotVariable[ 0 ] = "fps::real";
  16032.     plotInterval[ 0 ] = 1000;
  16033.  };
  16034.  @endtsexample
  16035.  
  16036.  @note Each curve has a maximum number of 200 data points it can have at any one time.  Adding more data points to a curve will cause older data points to be removed.
  16037.  
  16038.   */
  16039.  class  GuiGraphCtrl : public GuiControl {
  16040.    public:
  16041.     /*! Add a data point to the plot's curve.
  16042.  
  16043. @param plotId Index of the plotting curve to which to add the data point.  Must be 0<=plotId<6.
  16044. @param value Value of the data point to add to the curve.
  16045.  
  16046. @note Data values are added to the @b left end of the plotting curve.
  16047.  
  16048. @note A maximum number of 200 data points can be added to any single plotting curve at any one time.  If this limit is exceeded, data points on the right end of the curve are culled. */
  16049.     virtual void addDatum(( int plotId, float value )) {}
  16050.     /*! Get a data point on the given plotting curve.
  16051.  
  16052. @param plotId Index of the plotting curve from which to fetch the data point.  Must be 0<=plotId<6.
  16053. @param index Index of the data point on the curve.
  16054. @return The value of the data point or -1 if @a plotId or @a index are out of range. */
  16055.     virtual float getDatum(( int plotId, int index )) {}
  16056.     /*! Sets up the given plotting curve to automatically plot the value of the @a variable with a frequency of @a updateFrequency.
  16057. @param plotId Index of the plotting curve.  Must be 0<=plotId<6.
  16058. @param variable Name of the global variable.
  16059. @param updateFrequency Frequency with which to add new data points to the plotting curve (in milliseconds).
  16060. @tsexample
  16061. // Plot FPS counter at 1 second intervals.
  16062. %graph.addAutoPlot( 0, "fps::real", 1000 );
  16063. @endtsexample */
  16064.     virtual void addAutoPlot(( int plotId, string variable, int updateFrequency )) {}
  16065.     /*! Stop automatic variable plotting for the given curve.
  16066. @param plotId Index of the plotting curve.  Must be 0<=plotId<6.
  16067.  */
  16068.     virtual void removeAutoPlot(( int plotId )) {}
  16069.     /*! Change the charting type of the given plotting curve.
  16070. @param plotId Index of the plotting curve.  Must be 0<=plotId<6.
  16071. @param graphType Charting type to use for the curve.
  16072. @note Instead of calling this method, you can directly assign to #plotType. */
  16073.     virtual void setGraphType(( int plotId, GuiGraphType graphType )) {}
  16074.     /*! Set the scale of all specified plots to the maximum scale among them.
  16075.  
  16076. @param plotID1 Index of plotting curve.
  16077. @param plotID2 Index of plotting curve. */
  16078.     virtual void matchScale(( int plotID1, int plotID2, ... )) {}
  16079.     virtual void setMax(( int plotId, float max )) {}
  16080.     virtual void clearPlot(( int plotId )) {}
  16081.  
  16082.     /*! @name Graph
  16083.     @{ */
  16084.     /*! */
  16085.     /*!
  16086.     Ratio of where to place the center coordinate of the graph on the Y axis. 0.5=middle height of control.
  16087.  
  16088. This allows to account for graphs that have only positive or only negative data points, for example.
  16089.    
  16090.      */
  16091.     float centerY;
  16092.     /*!
  16093.     Color to use for the plotting curves in the graph.
  16094.    
  16095.      */
  16096.     ColorF plotColor;
  16097.     /*!
  16098.     Charting type of the plotting curves.
  16099.    
  16100.      */
  16101.     GuiGraphType plotType;
  16102.     /*!
  16103.     Name of the variable to automatically plot on the curves.  If empty, auto-plotting is disabled for the respective curve.
  16104.    
  16105.      */
  16106.     string plotVariable;
  16107.     /*!
  16108.     Interval between auto-plots of #plotVariable for the respective curve (in milliseconds).
  16109.    
  16110.      */
  16111.     int plotInterval;
  16112.     /// @}
  16113.  
  16114.  
  16115.     /*! @name Layout
  16116.     @{ */
  16117.     /*! */
  16118.     /// @}
  16119.  
  16120.  
  16121.     /*! @name Control
  16122.     @{ */
  16123.     /*! */
  16124.     /// @}
  16125.  
  16126.  
  16127.     /*! @name ToolTip
  16128.     @{ */
  16129.     /*! */
  16130.     /// @}
  16131.  
  16132.  
  16133.     /*! @name Editing
  16134.     @{ */
  16135.     /*! */
  16136.     /// @}
  16137.  
  16138.  
  16139.     /*! @name Localization
  16140.     @{ */
  16141.     /*! */
  16142.     /// @}
  16143.  
  16144.  
  16145.     /*! @name Ungrouped
  16146.     @{ */
  16147.     /*! */
  16148.     /// @}
  16149.  
  16150.  
  16151.     /*! @name Object
  16152.     @{ */
  16153.     /*! */
  16154.     /// @}
  16155.  
  16156.  
  16157.     /*! @name Editing
  16158.     @{ */
  16159.     /*! */
  16160.     /// @}
  16161.  
  16162.  
  16163.     /*! @name Persistence
  16164.     @{ */
  16165.     /*! */
  16166.     /// @}
  16167.  
  16168.  };
  16169.  
  16170.  class  CmVersionBar : public GuiTextCtrl {
  16171.    public:
  16172.     virtual void updateText(()) {}
  16173.  
  16174.     /*! @name Layout
  16175.     @{ */
  16176.     /*! */
  16177.     /// @}
  16178.  
  16179.  
  16180.     /*! @name Layout
  16181.     @{ */
  16182.     /*! */
  16183.     /// @}
  16184.  
  16185.  
  16186.     /*! @name Control
  16187.     @{ */
  16188.     /*! */
  16189.     /// @}
  16190.  
  16191.  
  16192.     /*! @name ToolTip
  16193.     @{ */
  16194.     /*! */
  16195.     /// @}
  16196.  
  16197.  
  16198.     /*! @name Editing
  16199.     @{ */
  16200.     /*! */
  16201.     /// @}
  16202.  
  16203.  
  16204.     /*! @name Localization
  16205.     @{ */
  16206.     /*! */
  16207.     /// @}
  16208.  
  16209.  
  16210.     /*! @name Ungrouped
  16211.     @{ */
  16212.     /*! */
  16213.     /// @}
  16214.  
  16215.  
  16216.     /*! @name Object
  16217.     @{ */
  16218.     /*! */
  16219.     /// @}
  16220.  
  16221.  
  16222.     /*! @name Editing
  16223.     @{ */
  16224.     /*! */
  16225.     /// @}
  16226.  
  16227.  
  16228.     /*! @name Persistence
  16229.     @{ */
  16230.     /*! */
  16231.     /// @}
  16232.  
  16233.  };
  16234.  
  16235.  /*!
  16236.  @brief GUI that will fade the current view in and out.
  16237.  
  16238.  Main difference between this and FadeinBitmap is this appears to fade based on the source texture.
  16239.  
  16240.  This is going to be deprecated, and any useful code ported to FadeinBitmap
  16241.  
  16242.   */
  16243.  class  GuiIdleCamFadeBitmapCtrl : public GuiBitmapCtrl {
  16244.    public:
  16245.     /*! @internal */
  16246.     virtual void fadeIn(()) {}
  16247.     /*! @internal */
  16248.     virtual void fadeOut(()) {}
  16249.     /*!
  16250.      */
  16251.     int fadeInTime;
  16252.     /*!
  16253.      */
  16254.     int fadeOutTime;
  16255.     /*!
  16256.      */
  16257.     bool done;
  16258.  
  16259.     /*! @name Bitmap
  16260.     @{ */
  16261.     /*! */
  16262.     /// @}
  16263.  
  16264.  
  16265.     /*! @name Layout
  16266.     @{ */
  16267.     /*! */
  16268.     /// @}
  16269.  
  16270.  
  16271.     /*! @name Control
  16272.     @{ */
  16273.     /*! */
  16274.     /// @}
  16275.  
  16276.  
  16277.     /*! @name ToolTip
  16278.     @{ */
  16279.     /*! */
  16280.     /// @}
  16281.  
  16282.  
  16283.     /*! @name Editing
  16284.     @{ */
  16285.     /*! */
  16286.     /// @}
  16287.  
  16288.  
  16289.     /*! @name Localization
  16290.     @{ */
  16291.     /*! */
  16292.     /// @}
  16293.  
  16294.  
  16295.     /*! @name Ungrouped
  16296.     @{ */
  16297.     /*! */
  16298.     /// @}
  16299.  
  16300.  
  16301.     /*! @name Object
  16302.     @{ */
  16303.     /*! */
  16304.     /// @}
  16305.  
  16306.  
  16307.     /*! @name Editing
  16308.     @{ */
  16309.     /*! */
  16310.     /// @}
  16311.  
  16312.  
  16313.     /*! @name Persistence
  16314.     @{ */
  16315.     /*! */
  16316.     /// @}
  16317.  
  16318.  };
  16319.  
  16320.  class  GuiJoinWorldWindow : public GuiControl {
  16321.    public:
  16322.     virtual void connectToCurrentServer(( string password="" )) {}
  16323.  
  16324.     /*! @name Layout
  16325.     @{ */
  16326.     /*! */
  16327.     /// @}
  16328.  
  16329.  
  16330.     /*! @name Control
  16331.     @{ */
  16332.     /*! */
  16333.     /// @}
  16334.  
  16335.  
  16336.     /*! @name ToolTip
  16337.     @{ */
  16338.     /*! */
  16339.     /// @}
  16340.  
  16341.  
  16342.     /*! @name Editing
  16343.     @{ */
  16344.     /*! */
  16345.     /// @}
  16346.  
  16347.  
  16348.     /*! @name Localization
  16349.     @{ */
  16350.     /*! */
  16351.     /// @}
  16352.  
  16353.  
  16354.     /*! @name Ungrouped
  16355.     @{ */
  16356.     /*! */
  16357.     /// @}
  16358.  
  16359.  
  16360.     /*! @name Object
  16361.     @{ */
  16362.     /*! */
  16363.     /// @}
  16364.  
  16365.  
  16366.     /*! @name Editing
  16367.     @{ */
  16368.     /*! */
  16369.     /// @}
  16370.  
  16371.  
  16372.     /*! @name Persistence
  16373.     @{ */
  16374.     /*! */
  16375.     /// @}
  16376.  
  16377.  };
  16378.  
  16379.  /*!
  16380.  @brief A chat HUD control that displays messages from a MessageVector.
  16381.  
  16382.  This renders messages from a MessageVector; the important thing here is that the MessageVector holds all the messages we care about, while we can destroy and create these GUI controls as needed.
  16383.  
  16384.  @tsexample
  16385.  // Declare ChatHud, which is what will display the actual chat from a MessageVector
  16386.  new GuiMessageVectorCtrl(ChatHud) {
  16387.     profile = "ChatHudMessageProfile";
  16388.     horizSizing = "width";
  16389.     vertSizing = "height";
  16390.     position = "1 1";
  16391.     extent = "252 16";
  16392.     minExtent = "8 8";
  16393.     visible = "1";
  16394.     helpTag = "0";
  16395.     lineSpacing = "0";
  16396.     lineContinuedIndex = "10";
  16397.     matchColor = "0 0 255 255";
  16398.     maxColorIndex = "5";
  16399.  };
  16400.  
  16401.  // All messages are stored in this HudMessageVector, the actual
  16402.  // MainChatHud only displays the contents of this vector.
  16403.  new MessageVector(HudMessageVector);
  16404.  
  16405.  // Attach the MessageVector to the chat control
  16406.  chatHud.attach(HudMessageVector);
  16407.  @endtsexample
  16408.  
  16409.  @see MessageVector for more details on how this is used
  16410.  @ingroup GuiUtil
  16411.   */
  16412.  class  GuiMessageVectorCtrl : public GuiControl {
  16413.    public:
  16414.     /*! @brief Push a line onto the back of the list.
  16415.  
  16416. @param item The GUI element being pushed into the control
  16417.  
  16418. @tsexample
  16419. // All messages are stored in this HudMessageVector, the actual
  16420. // MainChatHud only displays the contents of this vector.
  16421. new MessageVector(HudMessageVector);
  16422.  
  16423. // Attach the MessageVector to the chat control
  16424. chatHud.attach(HudMessageVector);
  16425. @endtsexample
  16426.  
  16427. @return Value */
  16428.     virtual bool attach(( MessageVector item )) {}
  16429.     /*! @brief Stop listing messages from the MessageVector previously attached to, if any.
  16430.  
  16431. Detailed description
  16432.  
  16433. @param param Description
  16434.  
  16435. @tsexample
  16436. // Deatch the MessageVector from HudMessageVector
  16437. // HudMessageVector will no longer render the text
  16438. chatHud.detach();
  16439. @endtsexample
  16440.  
  16441.  */
  16442.     virtual void detach(()) {}
  16443.     /*!
  16444.      */
  16445.     int lineSpacing;
  16446.     /*!
  16447.      */
  16448.     int lineContinuedIndex;
  16449.     /*!
  16450.      */
  16451.     string allowedMatches;
  16452.     /*!
  16453.      */
  16454.     ColorI matchColor;
  16455.     /*!
  16456.      */
  16457.     int maxColorIndex;
  16458.  
  16459.     /*! @name Layout
  16460.     @{ */
  16461.     /*! */
  16462.     /// @}
  16463.  
  16464.  
  16465.     /*! @name Control
  16466.     @{ */
  16467.     /*! */
  16468.     /// @}
  16469.  
  16470.  
  16471.     /*! @name ToolTip
  16472.     @{ */
  16473.     /*! */
  16474.     /// @}
  16475.  
  16476.  
  16477.     /*! @name Editing
  16478.     @{ */
  16479.     /*! */
  16480.     /// @}
  16481.  
  16482.  
  16483.     /*! @name Localization
  16484.     @{ */
  16485.     /*! */
  16486.     /// @}
  16487.  
  16488.  
  16489.     /*! @name Ungrouped
  16490.     @{ */
  16491.     /*! */
  16492.     /// @}
  16493.  
  16494.  
  16495.     /*! @name Object
  16496.     @{ */
  16497.     /*! */
  16498.     /// @}
  16499.  
  16500.  
  16501.     /*! @name Editing
  16502.     @{ */
  16503.     /*! */
  16504.     /// @}
  16505.  
  16506.  
  16507.     /*! @name Persistence
  16508.     @{ */
  16509.     /*! */
  16510.     /// @}
  16511.  
  16512.  };
  16513.  
  16514.  class  GuiPlayersWindow : public GuiControl {
  16515.    public:
  16516.     virtual void onClose(()) {}
  16517.  
  16518.     /*! @name Layout
  16519.     @{ */
  16520.     /*! */
  16521.     /// @}
  16522.  
  16523.  
  16524.     /*! @name Control
  16525.     @{ */
  16526.     /*! */
  16527.     /// @}
  16528.  
  16529.  
  16530.     /*! @name ToolTip
  16531.     @{ */
  16532.     /*! */
  16533.     /// @}
  16534.  
  16535.  
  16536.     /*! @name Editing
  16537.     @{ */
  16538.     /*! */
  16539.     /// @}
  16540.  
  16541.  
  16542.     /*! @name Localization
  16543.     @{ */
  16544.     /*! */
  16545.     /// @}
  16546.  
  16547.  
  16548.     /*! @name Ungrouped
  16549.     @{ */
  16550.     /*! */
  16551.     /// @}
  16552.  
  16553.  
  16554.     /*! @name Object
  16555.     @{ */
  16556.     /*! */
  16557.     /// @}
  16558.  
  16559.  
  16560.     /*! @name Editing
  16561.     @{ */
  16562.     /*! */
  16563.     /// @}
  16564.  
  16565.  
  16566.     /*! @name Persistence
  16567.     @{ */
  16568.     /*! */
  16569.     /// @}
  16570.  
  16571.  };
  16572.  
  16573.  class  CmEquipmentWindow : public GuiWindowCtrl {
  16574.    public:
  16575.     virtual Script onSleep(( string this )) {}
  16576.     virtual Script onWake(( string this )) {}
  16577.     virtual void onClose(()) {}
  16578.     virtual void onControlDragEnter(( GuiControl control, Point2I dropPoint )) {}
  16579.     virtual void onControlDragged(( GuiControl control, Point2I dropPoint )) {}
  16580.     virtual void onControlDragExit(( GuiControl control, Point2I dropPoint )) {}
  16581.  
  16582.     /*! @name Window
  16583.     @{ */
  16584.     /*! */
  16585.     /// @}
  16586.  
  16587.  
  16588.     /*! @name Layout
  16589.     @{ */
  16590.     /*! */
  16591.     /// @}
  16592.  
  16593.  
  16594.     /*! @name Layout
  16595.     @{ */
  16596.     /*! */
  16597.     /// @}
  16598.  
  16599.  
  16600.     /*! @name Control
  16601.     @{ */
  16602.     /*! */
  16603.     /// @}
  16604.  
  16605.  
  16606.     /*! @name ToolTip
  16607.     @{ */
  16608.     /*! */
  16609.     /// @}
  16610.  
  16611.  
  16612.     /*! @name Editing
  16613.     @{ */
  16614.     /*! */
  16615.     /// @}
  16616.  
  16617.  
  16618.     /*! @name Localization
  16619.     @{ */
  16620.     /*! */
  16621.     /// @}
  16622.  
  16623.  
  16624.     /*! @name Ungrouped
  16625.     @{ */
  16626.     /*! */
  16627.     /// @}
  16628.  
  16629.  
  16630.     /*! @name Object
  16631.     @{ */
  16632.     /*! */
  16633.     /// @}
  16634.  
  16635.  
  16636.     /*! @name Editing
  16637.     @{ */
  16638.     /*! */
  16639.     /// @}
  16640.  
  16641.  
  16642.     /*! @name Persistence
  16643.     @{ */
  16644.     /*! */
  16645.     /// @}
  16646.  
  16647.  };
  16648.  
  16649.  class  GuiAlchemyMixer : public GuiWindowCtrl {
  16650.    public:
  16651.     virtual void onClose(()) {}
  16652.  
  16653.     /*! @name Window
  16654.     @{ */
  16655.     /*! */
  16656.     /// @}
  16657.  
  16658.  
  16659.     /*! @name Layout
  16660.     @{ */
  16661.     /*! */
  16662.     /// @}
  16663.  
  16664.  
  16665.     /*! @name Layout
  16666.     @{ */
  16667.     /*! */
  16668.     /// @}
  16669.  
  16670.  
  16671.     /*! @name Control
  16672.     @{ */
  16673.     /*! */
  16674.     /// @}
  16675.  
  16676.  
  16677.     /*! @name ToolTip
  16678.     @{ */
  16679.     /*! */
  16680.     /// @}
  16681.  
  16682.  
  16683.     /*! @name Editing
  16684.     @{ */
  16685.     /*! */
  16686.     /// @}
  16687.  
  16688.  
  16689.     /*! @name Localization
  16690.     @{ */
  16691.     /*! */
  16692.     /// @}
  16693.  
  16694.  
  16695.     /*! @name Ungrouped
  16696.     @{ */
  16697.     /*! */
  16698.     /// @}
  16699.  
  16700.  
  16701.     /*! @name Object
  16702.     @{ */
  16703.     /*! */
  16704.     /// @}
  16705.  
  16706.  
  16707.     /*! @name Editing
  16708.     @{ */
  16709.     /*! */
  16710.     /// @}
  16711.  
  16712.  
  16713.     /*! @name Persistence
  16714.     @{ */
  16715.     /*! */
  16716.     /// @}
  16717.  
  16718.  };
  16719.  
  16720.  class  GuiAnimalHusbandry : public GuiObjectInventoryContainer {
  16721.    public:
  16722.     virtual void onClose(()) {}
  16723.  
  16724.     /*! @name Window
  16725.     @{ */
  16726.     /*! */
  16727.     /// @}
  16728.  
  16729.  
  16730.     /*! @name Layout
  16731.     @{ */
  16732.     /*! */
  16733.     /// @}
  16734.  
  16735.  
  16736.     /*! @name Layout
  16737.     @{ */
  16738.     /*! */
  16739.     /// @}
  16740.  
  16741.  
  16742.     /*! @name Control
  16743.     @{ */
  16744.     /*! */
  16745.     /// @}
  16746.  
  16747.  
  16748.     /*! @name ToolTip
  16749.     @{ */
  16750.     /*! */
  16751.     /// @}
  16752.  
  16753.  
  16754.     /*! @name Editing
  16755.     @{ */
  16756.     /*! */
  16757.     /// @}
  16758.  
  16759.  
  16760.     /*! @name Localization
  16761.     @{ */
  16762.     /*! */
  16763.     /// @}
  16764.  
  16765.  
  16766.     /*! @name Ungrouped
  16767.     @{ */
  16768.     /*! */
  16769.     /// @}
  16770.  
  16771.  
  16772.     /*! @name Object
  16773.     @{ */
  16774.     /*! */
  16775.     /// @}
  16776.  
  16777.  
  16778.     /*! @name Editing
  16779.     @{ */
  16780.     /*! */
  16781.     /// @}
  16782.  
  16783.  
  16784.     /*! @name Persistence
  16785.     @{ */
  16786.     /*! */
  16787.     /// @}
  16788.  
  16789.  };
  16790.  
  16791.  /*!
  16792.  @brief GUI Control which displays a numerical value which can be increased or decreased using a pair of bitmap up/down buttons.
  16793.  
  16794.  This control uses the bitmap specified in it's profile (GuiControlProfile::bitmapName). It takes this image and breaks up aspects of it to render the up and down arrows. It is also important to set GuiControlProfile::hasBitmapArray to true on the profile as well.
  16795.  
  16796.  The bitmap referenced should be broken up into a 1 x 4 grid (using the top left color pixel as a border color between each of the images) in which it will map to the following places:
  16797.  <ol>
  16798.  <li>Up arrow active</li>
  16799.  <li>Up arrow inactive</li>
  16800.  <li>Down arrow active</li>
  16801.  <li>Down arrow inactive</li>
  16802.  </ol>
  16803.  
  16804.  <pre>
  16805.  1
  16806.  2
  16807.  3
  16808.  4</pre>
  16809.  
  16810.  @tsexample
  16811.  singleton GuiControlProfile (SliderBitmapGUIProfile)
  16812.  {
  16813.     bitmap = "core/art/gui/images/sliderArray";
  16814.     hasBitmapArray = true;
  16815.     opaque = false;
  16816.  };
  16817.  
  16818.  new GuiCmSliderBitmapCtrl()
  16819.  {
  16820.     profile = "SliderBitmapGUIProfile";
  16821.     format = "%3.2f";
  16822.     range = "-1e+03 1e+03";
  16823.     increment = "0.1";
  16824.     focusOnMouseWheel = "0";
  16825.     bitmap = "";
  16826.     //Properties not specific to this control have been omitted from this example.
  16827.  };
  16828.  @endtsexample
  16829.  
  16830.  @see GuiTextEditSliderCtrl
  16831.  
  16832.  @see GuiTextEditCtrl
  16833.  
  16834.  @ingroup GuiCore
  16835.   */
  16836.  class  GuiCmSliderBitmapCtrl : public GuiTextEditCtrl {
  16837.    public:
  16838.        /*! Called when value changed */
  16839.        void onValueChanged();
  16840.  
  16841.     /*!
  16842.     Character format type to place in the control.
  16843.  
  16844.    
  16845.      */
  16846.     string format;
  16847.     /*!
  16848.     Maximum vertical and horizontal range to allow in the control.
  16849.  
  16850.    
  16851.      */
  16852.     Point2F range;
  16853.     /*!
  16854.     How far to increment the slider on each step.
  16855.  
  16856.    
  16857.      */
  16858.     float increment;
  16859.     /*!
  16860.     If true, the control will accept giving focus to the user when the mouse wheel is used.
  16861.  
  16862.    
  16863.      */
  16864.     bool focusOnMouseWheel;
  16865.     /*!
  16866.     Unused
  16867.    
  16868.      */
  16869.     filename bitmap;
  16870.  
  16871.     /*! @name Text Input
  16872.     @{ */
  16873.     /*! */
  16874.     /// @}
  16875.  
  16876.  
  16877.     /*! @name Layout
  16878.     @{ */
  16879.     /*! */
  16880.     /// @}
  16881.  
  16882.  
  16883.     /*! @name Layout
  16884.     @{ */
  16885.     /*! */
  16886.     /// @}
  16887.  
  16888.  
  16889.     /*! @name Control
  16890.     @{ */
  16891.     /*! */
  16892.     /// @}
  16893.  
  16894.  
  16895.     /*! @name ToolTip
  16896.     @{ */
  16897.     /*! */
  16898.     /// @}
  16899.  
  16900.  
  16901.     /*! @name Editing
  16902.     @{ */
  16903.     /*! */
  16904.     /// @}
  16905.  
  16906.  
  16907.     /*! @name Localization
  16908.     @{ */
  16909.     /*! */
  16910.     /// @}
  16911.  
  16912.  
  16913.     /*! @name Ungrouped
  16914.     @{ */
  16915.     /*! */
  16916.     /// @}
  16917.  
  16918.  
  16919.     /*! @name Object
  16920.     @{ */
  16921.     /*! */
  16922.     /// @}
  16923.  
  16924.  
  16925.     /*! @name Editing
  16926.     @{ */
  16927.     /*! */
  16928.     /// @}
  16929.  
  16930.  
  16931.     /*! @name Persistence
  16932.     @{ */
  16933.     /*! */
  16934.     /// @}
  16935.  
  16936.  };
  16937.  
  16938.  class  GuiCraftToolInventory : public GuiWindowCtrl {
  16939.    public:
  16940.     virtual void onClose(()) {}
  16941.  
  16942.     /*! @name Window
  16943.     @{ */
  16944.     /*! */
  16945.     /// @}
  16946.  
  16947.  
  16948.     /*! @name Layout
  16949.     @{ */
  16950.     /*! */
  16951.     /// @}
  16952.  
  16953.  
  16954.     /*! @name Layout
  16955.     @{ */
  16956.     /*! */
  16957.     /// @}
  16958.  
  16959.  
  16960.     /*! @name Control
  16961.     @{ */
  16962.     /*! */
  16963.     /// @}
  16964.  
  16965.  
  16966.     /*! @name ToolTip
  16967.     @{ */
  16968.     /*! */
  16969.     /// @}
  16970.  
  16971.  
  16972.     /*! @name Editing
  16973.     @{ */
  16974.     /*! */
  16975.     /// @}
  16976.  
  16977.  
  16978.     /*! @name Localization
  16979.     @{ */
  16980.     /*! */
  16981.     /// @}
  16982.  
  16983.  
  16984.     /*! @name Ungrouped
  16985.     @{ */
  16986.     /*! */
  16987.     /// @}
  16988.  
  16989.  
  16990.     /*! @name Object
  16991.     @{ */
  16992.     /*! */
  16993.     /// @}
  16994.  
  16995.  
  16996.     /*! @name Editing
  16997.     @{ */
  16998.     /*! */
  16999.     /// @}
  17000.  
  17001.  
  17002.     /*! @name Persistence
  17003.     @{ */
  17004.     /*! */
  17005.     /// @}
  17006.  
  17007.  };
  17008.  
  17009.  class  GuiInventoryItem : public GuiButtonBaseCtrl {
  17010.    public:
  17011.     /*! Set the bitmap to show on the button.
  17012. @param path Path to the texture file in any of the supported formats.
  17013.  */
  17014.     virtual void setBitmap(( string path )) {}
  17015.  
  17016.     /*! @name Bitmap
  17017.     @{ */
  17018.     /*! */
  17019.     /*!
  17020.     Texture file to display on this button.
  17021. If useStates is false, this will be the file that renders on the control.  Otherwise, this will specify the default texture name to which the various state and modifier suffixes are appended to find the per-state and per-modifier (if enabled) textures.
  17022.    
  17023.      */
  17024.     filename bitmap;
  17025.     /*!
  17026.     If true, the control's extents will be set to match the bitmap's extents when setting the bitmap.
  17027. The bitmap extents will always be taken from the default/normal bitmap (in case the extents of the various bitmaps do not match up.)
  17028.    
  17029.      */
  17030.     bool autoFitExtents;
  17031.     /*!
  17032.     If true, per-modifier button functionality is enabled.
  17033. @ref guibitmapbutton_modifiers
  17034.    
  17035.      */
  17036.     bool useModifiers;
  17037.     /*!
  17038.     If true, per-mouse state button functionality is enabled.
  17039. Defaults to true.
  17040.  
  17041. If you do not use per-state images on this button set this to false to speed up the loading process by inhibiting searches for the individual images.
  17042.    
  17043.      */
  17044.     bool useStates;
  17045.     /// @}
  17046.  
  17047.  
  17048.     /*! @name Button
  17049.     @{ */
  17050.     /*! */
  17051.     /// @}
  17052.  
  17053.  
  17054.     /*! @name Layout
  17055.     @{ */
  17056.     /*! */
  17057.     /// @}
  17058.  
  17059.  
  17060.     /*! @name Control
  17061.     @{ */
  17062.     /*! */
  17063.     /// @}
  17064.  
  17065.  
  17066.     /*! @name ToolTip
  17067.     @{ */
  17068.     /*! */
  17069.     /// @}
  17070.  
  17071.  
  17072.     /*! @name Editing
  17073.     @{ */
  17074.     /*! */
  17075.     /// @}
  17076.  
  17077.  
  17078.     /*! @name Localization
  17079.     @{ */
  17080.     /*! */
  17081.     /// @}
  17082.  
  17083.  
  17084.     /*! @name Ungrouped
  17085.     @{ */
  17086.     /*! */
  17087.     /// @}
  17088.  
  17089.  
  17090.     /*! @name Object
  17091.     @{ */
  17092.     /*! */
  17093.     /// @}
  17094.  
  17095.  
  17096.     /*! @name Editing
  17097.     @{ */
  17098.     /*! */
  17099.     /// @}
  17100.  
  17101.  
  17102.     /*! @name Persistence
  17103.     @{ */
  17104.     /*! */
  17105.     /// @}
  17106.  
  17107.  };
  17108.  
  17109.  class  GuiTrebuchet : public GuiObjectInventoryContainer {
  17110.    public:
  17111.     virtual void onClose(()) {}
  17112.  
  17113.     /*! @name Window
  17114.     @{ */
  17115.     /*! */
  17116.     /// @}
  17117.  
  17118.  
  17119.     /*! @name Layout
  17120.     @{ */
  17121.     /*! */
  17122.     /// @}
  17123.  
  17124.  
  17125.     /*! @name Layout
  17126.     @{ */
  17127.     /*! */
  17128.     /// @}
  17129.  
  17130.  
  17131.     /*! @name Control
  17132.     @{ */
  17133.     /*! */
  17134.     /// @}
  17135.  
  17136.  
  17137.     /*! @name ToolTip
  17138.     @{ */
  17139.     /*! */
  17140.     /// @}
  17141.  
  17142.  
  17143.     /*! @name Editing
  17144.     @{ */
  17145.     /*! */
  17146.     /// @}
  17147.  
  17148.  
  17149.     /*! @name Localization
  17150.     @{ */
  17151.     /*! */
  17152.     /// @}
  17153.  
  17154.  
  17155.     /*! @name Ungrouped
  17156.     @{ */
  17157.     /*! */
  17158.     /// @}
  17159.  
  17160.  
  17161.     /*! @name Object
  17162.     @{ */
  17163.     /*! */
  17164.     /// @}
  17165.  
  17166.  
  17167.     /*! @name Editing
  17168.     @{ */
  17169.     /*! */
  17170.     /// @}
  17171.  
  17172.  
  17173.     /*! @name Persistence
  17174.     @{ */
  17175.     /*! */
  17176.     /// @}
  17177.  
  17178.  };
  17179.  
  17180.  class  GuiSkillsWindow : public GuiWindowCtrl {
  17181.    public:
  17182.     virtual void onClose(()) {}
  17183.  
  17184.     /*! @name Window
  17185.     @{ */
  17186.     /*! */
  17187.     /// @}
  17188.  
  17189.  
  17190.     /*! @name Layout
  17191.     @{ */
  17192.     /*! */
  17193.     /// @}
  17194.  
  17195.  
  17196.     /*! @name Layout
  17197.     @{ */
  17198.     /*! */
  17199.     /// @}
  17200.  
  17201.  
  17202.     /*! @name Control
  17203.     @{ */
  17204.     /*! */
  17205.     /// @}
  17206.  
  17207.  
  17208.     /*! @name ToolTip
  17209.     @{ */
  17210.     /*! */
  17211.     /// @}
  17212.  
  17213.  
  17214.     /*! @name Editing
  17215.     @{ */
  17216.     /*! */
  17217.     /// @}
  17218.  
  17219.  
  17220.     /*! @name Localization
  17221.     @{ */
  17222.     /*! */
  17223.     /// @}
  17224.  
  17225.  
  17226.     /*! @name Ungrouped
  17227.     @{ */
  17228.     /*! */
  17229.     /// @}
  17230.  
  17231.  
  17232.     /*! @name Object
  17233.     @{ */
  17234.     /*! */
  17235.     /// @}
  17236.  
  17237.  
  17238.     /*! @name Editing
  17239.     @{ */
  17240.     /*! */
  17241.     /// @}
  17242.  
  17243.  
  17244.     /*! @name Persistence
  17245.     @{ */
  17246.     /*! */
  17247.     /// @}
  17248.  
  17249.  };
  17250.  
  17251.  class  GuiUnitWindow : public GuiWindowCtrl {
  17252.    public:
  17253.     virtual void onClose(()) {}
  17254.  
  17255.     /*! @name Window
  17256.     @{ */
  17257.     /*! */
  17258.     /// @}
  17259.  
  17260.  
  17261.     /*! @name Layout
  17262.     @{ */
  17263.     /*! */
  17264.     /// @}
  17265.  
  17266.  
  17267.     /*! @name Layout
  17268.     @{ */
  17269.     /*! */
  17270.     /// @}
  17271.  
  17272.  
  17273.     /*! @name Control
  17274.     @{ */
  17275.     /*! */
  17276.     /// @}
  17277.  
  17278.  
  17279.     /*! @name ToolTip
  17280.     @{ */
  17281.     /*! */
  17282.     /// @}
  17283.  
  17284.  
  17285.     /*! @name Editing
  17286.     @{ */
  17287.     /*! */
  17288.     /// @}
  17289.  
  17290.  
  17291.     /*! @name Localization
  17292.     @{ */
  17293.     /*! */
  17294.     /// @}
  17295.  
  17296.  
  17297.     /*! @name Ungrouped
  17298.     @{ */
  17299.     /*! */
  17300.     /// @}
  17301.  
  17302.  
  17303.     /*! @name Object
  17304.     @{ */
  17305.     /*! */
  17306.     /// @}
  17307.  
  17308.  
  17309.     /*! @name Editing
  17310.     @{ */
  17311.     /*! */
  17312.     /// @}
  17313.  
  17314.  
  17315.     /*! @name Persistence
  17316.     @{ */
  17317.     /*! */
  17318.     /// @}
  17319.  
  17320.  };
  17321.  
  17322.  /*!
  17323.  @brief Store a list of chat messages.
  17324.  
  17325.  This is responsible for managing messages which appear in the chat HUD, not the actual control rendered to the screen
  17326.  
  17327.  @tsexample
  17328.  // Declare ChatHud, which is what will display the actual chat from a MessageVector
  17329.  new GuiMessageVectorCtrl(ChatHud) {
  17330.     profile = "ChatHudMessageProfile";
  17331.     horizSizing = "width";
  17332.     vertSizing = "height";
  17333.     position = "1 1";
  17334.     extent = "252 16";
  17335.     minExtent = "8 8";
  17336.     visible = "1";
  17337.     helpTag = "0";
  17338.     lineSpacing = "0";
  17339.     lineContinuedIndex = "10";
  17340.     matchColor = "0 0 255 255";
  17341.     maxColorIndex = "5";
  17342.  };
  17343.  
  17344.  // All messages are stored in this HudMessageVector, the actual
  17345.  // MainChatHud only displays the contents of this vector.
  17346.  new MessageVector(HudMessageVector);
  17347.  
  17348.  // Attach the MessageVector to the chat control
  17349.  chatHud.attach(HudMessageVector);
  17350.  @endtsexample
  17351.  
  17352.  @see GuiMessageVectorCtrl for more details on how this is used.@ingroup GuiUtil
  17353.   */
  17354.  class  MessageVector : public SimObject {
  17355.    public:
  17356.     /*! Clear all messages in the vector
  17357.  
  17358. @tsexample
  17359. HudMessageVector.clear();
  17360. @endtsexample
  17361.  
  17362.  */
  17363.     virtual void clear(()) {}
  17364.     /*! Push a line onto the back of the list.
  17365.  
  17366. @param msg Text that makes up the message
  17367. @param tag Numerical value associated with this message, useful for searching.
  17368.  
  17369. @tsexample
  17370. // Add the message...
  17371. HudMessageVector.pushBackLine("Hello World", 0);
  17372. @endtsexample
  17373.  
  17374.  */
  17375.     virtual void pushBackLine(( string msg, int tag )) {}
  17376.     /*! Pop a line from the back of the list; destroys the line.
  17377.  
  17378. @tsexample
  17379. HudMessageVector.popBackLine();
  17380. @endtsexample
  17381.  
  17382. @return False if there are no lines to pop (underflow), true otherwise */
  17383.     virtual bool popBackLine(()) {}
  17384.     /*! Push a line onto the front of the vector.
  17385.  
  17386. @param msg Text that makes up the message
  17387. @param tag Numerical value associated with this message, useful for searching.
  17388.  
  17389. @tsexample
  17390. // Add the message...
  17391. HudMessageVector.pushFrontLine("Hello World", 0);
  17392. @endtsexample
  17393.  
  17394.  */
  17395.     virtual void pushFrontLine(( string msg, int tag )) {}
  17396.     /*! Pop a line from the front of the vector, destroying the line.
  17397.  
  17398. @tsexample
  17399. HudMessageVector.popFrontLine();
  17400. @endtsexample
  17401.  
  17402. @return False if there are no lines to pop (underflow), true otherwise */
  17403.     virtual bool popFrontLine(()) {}
  17404.     /*! Push a line onto the back of the list.
  17405.  
  17406. @param msg Text that makes up the message
  17407. @param tag Numerical value associated with this message, useful for searching.
  17408.  
  17409. @tsexample
  17410. // Add the message...
  17411. HudMessageVector.insertLine(1, "Hello World", 0);
  17412. @endtsexample
  17413.  
  17414. @return False if insertPos is greater than the number of lines in the current vector */
  17415.     virtual bool insertLine(( int insertPos, string msg, int tag )) {}
  17416.     /*! Delete the line at the specified position.
  17417.  
  17418. @param deletePos Position in the vector containing the line to be deleted
  17419. @tsexample
  17420. // Delete the first line (index 0) in the vector...
  17421. HudMessageVector.deleteLine(0);
  17422. @endtsexample
  17423.  
  17424. @return False if deletePos is greater than the number of lines in the current vector */
  17425.     virtual bool deleteLine(( int deletePos )) {}
  17426.     /*! Dump the message vector to a file, optionally prefixing a header.@hide */
  17427.     virtual void dump((string filename, string header=NULL)) {}
  17428.     /*! Get the number of lines in the vector.
  17429.  
  17430. @tsexample
  17431. // Find out how many lines have been stored in HudMessageVector
  17432. %chatLines = HudMessageVector.getNumLines();
  17433. echo(%chatLines);
  17434. @endtsexample
  17435.  
  17436.  */
  17437.     virtual int getNumLines(()) {}
  17438.     /*! Scan through the lines in the vector, returning the first line that has a matching tag.
  17439.  
  17440. @param tag Numerical value assigned to a message when it was added or inserted
  17441. @tsexample
  17442. // Locate text in the vector tagged with the value "1", then print it
  17443. %taggedText = HudMessageVector.getLineTextByTag(1);
  17444. echo(%taggedText);
  17445. @endtsexample
  17446.  
  17447. @return Text from a line with matching tag, other wise "" */
  17448.     virtual string getLineTextByTag(( int tag )) {}
  17449.     /*! Scan through the vector, returning the line number of the first line that matches the specified tag; else returns -1 if no match was found.
  17450.  
  17451. @param tag Numerical value assigned to a message when it was added or inserted
  17452. @tsexample
  17453. // Locate a line of text tagged with the value "1", then delete it.
  17454. %taggedLine = HudMessageVector.getLineIndexByTag(1);
  17455. HudMessageVector.deleteLine(%taggedLine);
  17456. @endtsexample
  17457.  
  17458. @return Line with matching tag, other wise -1 */
  17459.     virtual int getLineIndexByTag(( int tag )) {}
  17460.     /*! Get the text at a specified line.
  17461.  
  17462. @param pos Position in vector to grab text from
  17463. @tsexample
  17464. // Print a line of text at position 1.
  17465. %text = HudMessageVector.getLineText(1);
  17466. echo(%text);
  17467. @endtsexample
  17468.  
  17469. @return Text at specified line, if the position is greater than the number of lines return "" */
  17470.     virtual string getLineText(( int pos )) {}
  17471.     /*! Get the tag of a specified line.
  17472.  
  17473. @param pos Position in vector to grab tag from
  17474. @tsexample
  17475. // Remove all lines that do not have a tag value of 1.
  17476. while( HudMessageVector.getNumLines())
  17477. {
  17478.    %tag = HudMessageVector.getLineTag(1);
  17479.    if(%tag != 1)
  17480.       %tag.delete();
  17481.    HudMessageVector.popFrontLine();
  17482. }
  17483. @endtsexample
  17484.  
  17485. @return Tag value of a given line, if the position is greater than the number of lines return 0 */
  17486.     virtual int getLineTag(( int pos )) {}
  17487.  
  17488.     /*! @name Ungrouped
  17489.     @{ */
  17490.     /*! */
  17491.     /// @}
  17492.  
  17493.  
  17494.     /*! @name Object
  17495.     @{ */
  17496.     /*! */
  17497.     /// @}
  17498.  
  17499.  
  17500.     /*! @name Editing
  17501.     @{ */
  17502.     /*! */
  17503.     /// @}
  17504.  
  17505.  
  17506.     /*! @name Persistence
  17507.     @{ */
  17508.     /*! */
  17509.     /// @}
  17510.  
  17511.  };
  17512.  
  17513.  class  guiBrowserWindow : public GuiWindowCtrl {
  17514.    public:
  17515.     virtual void onClose(()) {}
  17516.  
  17517.     /*! @name Window
  17518.     @{ */
  17519.     /*! */
  17520.     /// @}
  17521.  
  17522.  
  17523.     /*! @name Layout
  17524.     @{ */
  17525.     /*! */
  17526.     /// @}
  17527.  
  17528.  
  17529.     /*! @name Layout
  17530.     @{ */
  17531.     /*! */
  17532.     /// @}
  17533.  
  17534.  
  17535.     /*! @name Control
  17536.     @{ */
  17537.     /*! */
  17538.     /// @}
  17539.  
  17540.  
  17541.     /*! @name ToolTip
  17542.     @{ */
  17543.     /*! */
  17544.     /// @}
  17545.  
  17546.  
  17547.     /*! @name Editing
  17548.     @{ */
  17549.     /*! */
  17550.     /// @}
  17551.  
  17552.  
  17553.     /*! @name Localization
  17554.     @{ */
  17555.     /*! */
  17556.     /// @}
  17557.  
  17558.  
  17559.     /*! @name Ungrouped
  17560.     @{ */
  17561.     /*! */
  17562.     /// @}
  17563.  
  17564.  
  17565.     /*! @name Object
  17566.     @{ */
  17567.     /*! */
  17568.     /// @}
  17569.  
  17570.  
  17571.     /*! @name Editing
  17572.     @{ */
  17573.     /*! */
  17574.     /// @}
  17575.  
  17576.  
  17577.     /*! @name Persistence
  17578.     @{ */
  17579.     /*! */
  17580.     /// @}
  17581.  
  17582.  };
  17583.  
  17584.  /*!
  17585.  @brief Provides the code necessary to handle the low level management of the string tables for localization
  17586.  
  17587.  One LangTable is created for each mod, as well as one for the C++ code. LangTable is responsible for obtaining the correct strings from each and relaying it to the appropriate controls.
  17588.  
  17589.  @see Localization for a full description
  17590.  
  17591.  @ingroup Localization
  17592.   */
  17593.  class  LangTable : public SimObject {
  17594.    public:
  17595.     /*! @brief Adds a language to the table
  17596.  
  17597. @param filename Name and path to the language file
  17598. @param languageName Optional name to assign to the new language entry
  17599.  
  17600. @return True If file was successfully found and language created
  17601.  */
  17602.     virtual int addLanguage((string filename, [string languageName])) {}
  17603.     /*! @brief Grabs a string from the specified table
  17604.  
  17605. If an invalid is passed, the function will attempt to to grab from the default table
  17606.  
  17607. @param filename Name of the language table to access
  17608.  
  17609. @return Text from the specified language table, "" if ID was invalid and default table is not set */
  17610.     virtual string getString((string filename)) {}
  17611.     /*! @brief Sets the default language table
  17612.  
  17613. @param language ID of the table
  17614.  */
  17615.     virtual void setDefaultLanguage((int language)) {}
  17616.     /*! @brief Sets the current language table for grabbing text
  17617.  
  17618. @param language ID of the table
  17619.  */
  17620.     virtual void setCurrentLanguage((int language)) {}
  17621.     /*! @brief Get the ID of the current language table
  17622.  
  17623. @return Numerical ID of the current language table */
  17624.     virtual int getCurrentLanguage(()) {}
  17625.     /*! @brief Return the readable name of the language table
  17626.  
  17627. @param language Numerical ID of the language table to access
  17628.  
  17629. @return String containing the name of the table, NULL if ID was invalid or name was never specified */
  17630.     virtual string getLangName((int language)) {}
  17631.     /*! @brief Used to find out how many languages are in the table
  17632.  
  17633. @return Size of the vector containing the languages, numerical */
  17634.     virtual int getNumLang(()) {}
  17635.  
  17636.     /*! @name Ungrouped
  17637.     @{ */
  17638.     /*! */
  17639.     /// @}
  17640.  
  17641.  
  17642.     /*! @name Object
  17643.     @{ */
  17644.     /*! */
  17645.     /// @}
  17646.  
  17647.  
  17648.     /*! @name Editing
  17649.     @{ */
  17650.     /*! */
  17651.     /// @}
  17652.  
  17653.  
  17654.     /*! @name Persistence
  17655.     @{ */
  17656.     /*! */
  17657.     /// @}
  17658.  
  17659.  };
  17660.  
  17661.  /*!
  17662.  @brief A ResponseCurve<F32> wrapped as a SimObject.
  17663.  
  17664.  Currently no applied use, not network ready, not intended for game development, for editors or internal use only.
  17665.  
  17666.   */
  17667.  class  SimResponseCurve : public SimObject {
  17668.    public:
  17669.     /*! addPoint( F32 value, F32 time ) */
  17670.     virtual void addPoint() {}
  17671.     /*! getValue( F32 time ) */
  17672.     virtual float getValue() {}
  17673.     /*! clear() */
  17674.     virtual void clear() {}
  17675.  
  17676.     /*! @name Ungrouped
  17677.     @{ */
  17678.     /*! */
  17679.     /// @}
  17680.  
  17681.  
  17682.     /*! @name Object
  17683.     @{ */
  17684.     /*! */
  17685.     /// @}
  17686.  
  17687.  
  17688.     /*! @name Editing
  17689.     @{ */
  17690.     /*! */
  17691.     /// @}
  17692.  
  17693.  
  17694.     /*! @name Persistence
  17695.     @{ */
  17696.     /*! */
  17697.     /// @}
  17698.  
  17699.  };
  17700.  
  17701.  /*!
  17702.  @brief Used for rendering platform menu bars
  17703.  
  17704.  Internal use only
  17705.  
  17706.   */
  17707.  class  MenuBar : public SimSet {
  17708.    public:
  17709.     virtual void attachToCanvas((GuiCanvas, pos)) {}
  17710.     virtual void removeFromCanvas(()) {}
  17711.     /*! insert object at position */
  17712.     virtual void insert((object, pos)) {}
  17713.  
  17714.     /*! @name Ungrouped
  17715.     @{ */
  17716.     /*! */
  17717.     /// @}
  17718.  
  17719.  
  17720.     /*! @name Object
  17721.     @{ */
  17722.     /*! */
  17723.     /// @}
  17724.  
  17725.  
  17726.     /*! @name Editing
  17727.     @{ */
  17728.     /*! */
  17729.     /// @}
  17730.  
  17731.  
  17732.     /*! @name Persistence
  17733.     @{ */
  17734.     /*! */
  17735.     /// @}
  17736.  
  17737.  };
  17738.  
  17739.  /*!
  17740.  @brief PopupMenu represents a system menu.
  17741.  
  17742.  You can add menu items to the menu, but there is no torque object associated with these menu items, they exist only in a  platform specific manner.
  17743.  
  17744.  @note Internal use only
  17745.  
  17746.   */
  17747.  class  PopupMenu : public SimObject {
  17748.    public:
  17749.     virtual int insertItem((pos[, title][, accelerator])) {}
  17750.     virtual void removeItem((pos)) {}
  17751.     virtual int insertSubMenu((pos, title, subMenu)) {}
  17752.     virtual bool setItem((pos, title[, accelerator])) {}
  17753.     virtual void enableItem((pos, enabled)) {}
  17754.     virtual void checkItem((pos, checked)) {}
  17755.     virtual void checkRadioItem((firstPos, lastPos, checkPos)) {}
  17756.     virtual bool isItemChecked((pos)) {}
  17757.     virtual int getItemCount(()) {}
  17758.     virtual void attachToMenuBar((GuiCanvas, pos, title)) {}
  17759.     virtual void removeFromMenuBar(()) {}
  17760.     virtual void showPopup((Canvas,[x, y])) {}
  17761.     /*!
  17762.     true if this is a pop-up/context menu. defaults to false.
  17763.    
  17764.      */
  17765.     bool isPopup;
  17766.     /*!
  17767.     the title of this menu when attached to a menu bar
  17768.    
  17769.      */
  17770.     caseString barTitle;
  17771.  
  17772.     /*! @name Ungrouped
  17773.     @{ */
  17774.     /*! */
  17775.     /// @}
  17776.  
  17777.  
  17778.     /*! @name Object
  17779.     @{ */
  17780.     /*! */
  17781.     /// @}
  17782.  
  17783.  
  17784.     /*! @name Editing
  17785.     @{ */
  17786.     /*! */
  17787.     /// @}
  17788.  
  17789.  
  17790.     /*! @name Persistence
  17791.     @{ */
  17792.     /*! */
  17793.     /// @}
  17794.  
  17795.  };
  17796.  
  17797.  class  PfxVis {
  17798.    public:
  17799.     /*! @hide */
  17800.     virtual void clear(()) {}
  17801.     /*! @hide */
  17802.     virtual void open(( PostEffect, [bool clear = false] )) {}
  17803.     /*! @hide */
  17804.     virtual void hide(()) {}
  17805.     /*! @hide */
  17806.     virtual void show(()) {}
  17807.     /*! @hide */
  17808.     virtual void onWindowClosed(( GuiWindowCtrl )) {}
  17809.  };
  17810.  
  17811.  /*!
  17812.  @brief A sound source that drives multi-source playback.
  17813.  
  17814.  This class acts as an interpreter for SFXPlayLists.  It goes through the slots of the playlist it is attached to and performs the actions described by each of the slots in turn.
  17815.  As SFXControllers are created implicitly by the SFX system when instantiating a source for a play list it is in most cases not necessary to directly deal with the class.
  17816.  The following example demonstrates how a controller would commonly be created.
  17817.  @tsexample
  17818.  // Create a play list from two SFXProfiles.
  17819.  %playList = new SFXPlayList()
  17820.  {
  17821.     // Use a looped description so the list playback will loop.
  17822.     description = AudioMusicLoop2D;
  17823.  
  17824.     track[ 0 ] = Profile1;
  17825.     track[ 1 ] = Profile2;
  17826.  };
  17827.  
  17828.  // Play the list.  This will implicitly create a controller.
  17829.  sfxPlayOnce( %playList );
  17830.  @endtsexample
  17831.  
  17832.  @note Play lists are updated at regular intervals by the sound system.  This processing determines the granularity at which playlist action timing takes place.
  17833.  @note This class cannot be instantiated directly.  Use sfxPlayOnce() or sfxCreateSource() with the playlist you want to play to create an instance of this class.
  17834.  @see SFXPlayList
  17835.  @ingroup SFX
  17836.   */
  17837.  class  SFXController : public SFXSource {
  17838.    public:
  17839.     /*! Get the index of the playlist slot currently processed by the controller.
  17840. @return The slot index currently being played.
  17841. @see SFXPlayList */
  17842.     virtual int getCurrentSlot(()) {}
  17843.     /*! Set the index of the playlist slot to play by the controller.  This can be used to seek in the playlist.
  17844. @param index Index of the playlist slot. */
  17845.     virtual void setCurrentSlot(( int index )) {}
  17846.  
  17847.     /*! @name Debug
  17848.     @{ */
  17849.     /*! */
  17850.     /*!
  17851.     If true, the controller logs its operation to the console.
  17852. This is a non-networked field that will work locally only.
  17853.    
  17854.      */
  17855.     bool trace;
  17856.     /// @}
  17857.  
  17858.  
  17859.     /*! @name Sound
  17860.     @{ */
  17861.     /*! */
  17862.     /// @}
  17863.  
  17864.  
  17865.     /*! @name Ungrouped
  17866.     @{ */
  17867.     /*! */
  17868.     /// @}
  17869.  
  17870.  
  17871.     /*! @name Object
  17872.     @{ */
  17873.     /*! */
  17874.     /// @}
  17875.  
  17876.  
  17877.     /*! @name Editing
  17878.     @{ */
  17879.     /*! */
  17880.     /// @}
  17881.  
  17882.  
  17883.     /*! @name Persistence
  17884.     @{ */
  17885.     /*! */
  17886.     /// @}
  17887.  
  17888.  };
  17889.  
  17890.  /*!
  17891.  @brief A sound channel value that can be bound to multiple sound sources.
  17892.  
  17893.  Parameters are special objects that isolate a specific property that sound sources can have and allows to bind this isolated instance to multiple sound sources such that when the value of the parameter changes, all sources bound to the parameter will have their respective property changed.
  17894.  
  17895.  Parameters are identified and referenced by their #internalName.  This means that the SFXDescription::parameters and SFXTrack::parameters fields should contain the #internalNames of the SFXParameter objects which should be attached to the SFXSources when they are created.  No two SFXParameters should have the same #internalName.
  17896.  
  17897.  All SFXParameter instances are automatically made children of the SFXParameterGroup.
  17898.  
  17899.  @note To simply control the volume and/or pitch levels of a group of sounds, it is easier and more efficient to use a sound source group rather than SFXParameters (see @ref SFXSource_hierarchies).  Simply create a SFXSource object representing the group, assign SFXDescription::sourceGroup of the sounds appropriately, and then set the volume and/or pitch level of the group to modulate the respective properties of all children.
  17900.  
  17901.  @section SFXParameter_updates Parameter Updates
  17902.  Parameters are periodically allowed to update their own values.  This makes it possible to attach custom logic to a parameter and have individual parameters synchronize their values autonomously.  Use the onUpdate() callback to attach script code to a parameter update.
  17903.  
  17904.  @tsexample
  17905.  new SFXParameter( EngineRPMLevel )
  17906.  {
  17907.     // Set the name by which this parameter is identified.
  17908.     internalName = "EngineRPMLevel";
  17909.  
  17910.     // Let this parameter control the pitch of attached sources to simulate engine RPM ramping up and down.
  17911.     channel = "Pitch";
  17912.  
  17913.     // Start out with unmodified pitch.
  17914.     defaultValue = 1;
  17915.  
  17916.     // Add a texture description of what this parameter does.
  17917.     description = "Engine RPM Level";
  17918.  };
  17919.  
  17920.  // Create a description that automatically attaches the engine RPM parameter.
  17921.  singleton SFXDescription( EngineRPMSound : AudioLoop2D )
  17922.  {
  17923.     parameters[ 0 ] = "EngineRPMLevel";
  17924.  };
  17925.  
  17926.  // Create sound sources for the engine.
  17927.  sfxCreateSource( EngineRPMSound, "art/sound/engine/enginePrimary" );
  17928.  sfxCreateSource( EngineRPMSound, "art/sound/engine/engineSecondary" );
  17929.  
  17930.  // Setting the parameter value will now affect the pitch level of both sound sources.
  17931.  EngineRPMLevel.value = 0.5;
  17932.  EngineRPMLevel.value = 1.5;
  17933.  @endtsexample
  17934.  
  17935.  @ref SFX_interactive
  17936.  
  17937.   */
  17938.  class  SFXParameter : public SimObject {
  17939.    public:
  17940.        /*! Called when the sound system triggers an update on the parameter.
  17941. This occurs periodically during system operation. */
  17942.        void onUpdate();
  17943.  
  17944.     /*! Get the name of the parameter.
  17945. @return The paramete name. */
  17946.     virtual string getParameterName(()) {}
  17947.     /*! Reset the parameter's value to its default.
  17948. @see SFXParameter::defaultValue
  17949.  */
  17950.     virtual void reset(()) {}
  17951.  
  17952.     /*! @name Sound
  17953.     @{ */
  17954.     /*! */
  17955.     /*!
  17956.     Current value of the audio parameter.
  17957. All attached sources are notified when this value changes.
  17958.    
  17959.      */
  17960.     float value;
  17961.     /*!
  17962.     Permitted range for #value.
  17963. Minimum and maximum allowed value for the parameter.  Both inclusive.
  17964.  
  17965. For all but the User0-3 channels, this property is automatically set up by SFXParameter.
  17966.    
  17967.      */
  17968.     Point2F range;
  17969.     /*!
  17970.     Channel that the parameter controls.
  17971. This controls which property of the sources it is attached to the parameter controls.
  17972.    
  17973.      */
  17974.     SFXChannel channel;
  17975.     /*!
  17976.     Value to which the parameter is initially set.
  17977. When the parameter is first added to the system, #value will be set to #defaultValue.
  17978.    
  17979.      */
  17980.     float defaultValue;
  17981.     /*!
  17982.     Textual description of the parameter.
  17983. Primarily for use in the Audio Parameters dialog of the editor to allow for easier identification of parameters.
  17984.    
  17985.      */
  17986.     string Description;
  17987.     /// @}
  17988.  
  17989.  
  17990.     /*! @name Ungrouped
  17991.     @{ */
  17992.     /*! */
  17993.     /// @}
  17994.  
  17995.  
  17996.     /*! @name Object
  17997.     @{ */
  17998.     /*! */
  17999.     /// @}
  18000.  
  18001.  
  18002.     /*! @name Editing
  18003.     @{ */
  18004.     /*! */
  18005.     /// @}
  18006.  
  18007.  
  18008.     /*! @name Persistence
  18009.     @{ */
  18010.     /*! */
  18011.     /// @}
  18012.  
  18013.  };
  18014.  
  18015.  /*!
  18016.  @brief A sound controller that directly plays a single sound file.
  18017.  
  18018.  When playing individual audio files, SFXSounds are implicitly created by the sound system.
  18019.  
  18020.  Each sound source has an associated play cursor that can be queried and explicitly positioned by the user.  The cursor is a floating-point value measured in seconds.
  18021.  
  18022.  For streamed sources, playback may not be continuous in case the streaming queue is interrupted.
  18023.  
  18024.  @note This class cannot be instantiated directly by the user but rather is implicitly created by the sound system when sfxCreateSource() or sfxPlayOnce() is called on a SFXProfile instance.
  18025.  
  18026.  @section SFXSound_virtualization Sounds and Voices
  18027.  
  18028.  To actually emit an audible signal, a sound must allocate a resource on the sound device through which the sound data is being played back.  This resource is called 'voice'.
  18029.  
  18030.  As with other types of resources, the availability of these resources may be restricted, i.e. a given sound device will usually only support a fixed number of voices that are playing at the same time.  Since, however, there may be arbitrary many SFXSounds instantiated and playing at the same time, this needs to be solved.  
  18031.  
  18032.  @see SFXDescription::priority
  18033.   */
  18034.  class  SFXSound : public SFXSource {
  18035.    public:
  18036.     /*! Test whether the sound data associated with the sound has been fully loaded and is ready for playback.
  18037. For streamed sounds, this will be false during playback when the stream queue for the sound is starved and waiting for data.  For buffered sounds, only an initial loading phase will potentially cause isReady to return false.
  18038.  
  18039. @return True if the sound is ready for playback. */
  18040.     virtual bool isReady(()) {}
  18041.     /*! Get the current playback position in seconds.
  18042. @return The current play cursor offset. */
  18043.     virtual float getPosition(()) {}
  18044.     /*! Set the current playback position in seconds.
  18045. If the source is currently playing, playback will jump to the new position.  If playback is stopped or paused, playback will resume at the given position when play() is called.
  18046.  
  18047. @param position The new position of the play cursor (in seconds).
  18048.  */
  18049.     virtual void setPosition(( float position )) {}
  18050.     /*! Get the total play time (in seconds) of the sound data attached to the sound.
  18051. @return
  18052.  
  18053. @note Be aware that for looped sounds, this will not return the total playback time of the sound.
  18054.  */
  18055.     virtual float getDuration(()) {}
  18056.  
  18057.     /*! @name Sound
  18058.     @{ */
  18059.     /*! */
  18060.     /// @}
  18061.  
  18062.  
  18063.     /*! @name Ungrouped
  18064.     @{ */
  18065.     /*! */
  18066.     /// @}
  18067.  
  18068.  
  18069.     /*! @name Object
  18070.     @{ */
  18071.     /*! */
  18072.     /// @}
  18073.  
  18074.  
  18075.     /*! @name Editing
  18076.     @{ */
  18077.     /*! */
  18078.     /// @}
  18079.  
  18080.  
  18081.     /*! @name Persistence
  18082.     @{ */
  18083.     /*! */
  18084.     /// @}
  18085.  
  18086.  };
  18087.  
  18088.  /*!
  18089.  @brief A group of events in an imported FMOD Designer project.
  18090.  
  18091.  @note Instances of this class
  18092.  
  18093.  @ingroup SFXFMOD
  18094.   */
  18095.  class  SFXFMODEventGroup : public SimDataBlock {
  18096.    public:
  18097.     /*! Test whether the resource data for this group has been loaded.
  18098.  
  18099. @return True if the resource data for this group is currently loaded.
  18100.  */
  18101.     virtual bool isDataLoaded(()) {}
  18102.     /*! Load the resource data for this group, if it has not already been loaded (either directly or indirectly through a parent group).
  18103. This method works recursively and thus data for direct and indirect child groups to this group will be loaded as well.
  18104.  
  18105. @param loadStreams Whether to open streams.
  18106. @param loadSamples Whether to load sample banks.
  18107. @return True if the data has been successfully loaded; false otherwise.
  18108.  
  18109. @see SFXFMODProject_resources */
  18110.     virtual bool loadData(( bool loadStreams=true, bool loadSamples=true )) {}
  18111.     /*! Release the resource data for this group and its subgroups.
  18112.  
  18113. @see SFXFMODProject_resources */
  18114.     virtual void freeData(()) {}
  18115.  
  18116.     /*! @name DO NOT MODIFY!!
  18117.     @{ */
  18118.     /*! */
  18119.     /*!
  18120.     DO NOT MODIFY!!
  18121.    
  18122.      */
  18123.     SFXFMODProject fmodProject;
  18124.     /*!
  18125.     DO NOT MODIFY!!
  18126.    
  18127.      */
  18128.     SFXFMODEventGroup fmodGroup;
  18129.     /*!
  18130.     DO NOT MODIFY!!
  18131.    
  18132.      */
  18133.     string fmodName;
  18134.     /// @}
  18135.  
  18136.  
  18137.     /*! @name Ungrouped
  18138.     @{ */
  18139.     /*! */
  18140.     /// @}
  18141.  
  18142.  
  18143.     /*! @name Object
  18144.     @{ */
  18145.     /*! */
  18146.     /// @}
  18147.  
  18148.  
  18149.     /*! @name Editing
  18150.     @{ */
  18151.     /*! */
  18152.     /// @}
  18153.  
  18154.  
  18155.     /*! @name Persistence
  18156.     @{ */
  18157.     /*! */
  18158.     /// @}
  18159.  
  18160.  };
  18161.  
  18162.  class  ShaderGen {
  18163.    public:
  18164.     virtual void preloadCache() {}
  18165.  };
  18166.  
  18167.  class  TCPConnection : public SimObject {
  18168.    public:
  18169.     virtual bool sendRPC((cmd, args...)) {}
  18170.     virtual bool sendCommand((cmd, args...)) {}
  18171.     virtual void setConnectArgs((authInfoToSend, authInfoToRecieve)) {}
  18172.     virtual void connect((address, port)) {}
  18173.     virtual string getRemoteAddress() {}
  18174.     virtual int getRemotePort() {}
  18175.     virtual string getLocalAddress() {}
  18176.     virtual int getLocalPort() {}
  18177.     virtual bool isServerSide() {}
  18178.     virtual bool isInitiator() {}
  18179.  
  18180.     /*! @name TCPConnection
  18181.     @{ */
  18182.     /*! */
  18183.     /*!
  18184.     The hostname we are online with.
  18185.    
  18186.      */
  18187.     string hostname;
  18188.     /*!
  18189.     The port number we are using atm.
  18190.    
  18191.      */
  18192.     int port;
  18193.     /*!
  18194.     Account ID of the client
  18195.    
  18196.      */
  18197.     int ac_id;
  18198.     /// @}
  18199.  
  18200.  
  18201.     /*! @name TCP Stats
  18202.     @{ */
  18203.     /*! */
  18204.     /*!
  18205.     When this connection was established (unixtime)
  18206.    
  18207.      */
  18208.     int initatedAt;
  18209.     /*!
  18210.     Bytes read from network stream since the connection was established.
  18211.    
  18212.      */
  18213.     int bytesRead;
  18214.     /*!
  18215.     Bytes sent to network stream since the connection was established.
  18216.    
  18217.      */
  18218.     int bytesSent;
  18219.     /// @}
  18220.  
  18221.  
  18222.     /*! @name Ungrouped
  18223.     @{ */
  18224.     /*! */
  18225.     /// @}
  18226.  
  18227.  
  18228.     /*! @name Object
  18229.     @{ */
  18230.     /*! */
  18231.     /// @}
  18232.  
  18233.  
  18234.     /*! @name Editing
  18235.     @{ */
  18236.     /*! */
  18237.     /// @}
  18238.  
  18239.  
  18240.     /*! @name Persistence
  18241.     @{ */
  18242.     /*! */
  18243.     /// @}
  18244.  
  18245.  };
  18246.  
  18247.  class  TCPServer : public SimGroup {
  18248.    public:
  18249.     virtual void closeServer(()) {}
  18250.     virtual void startListening(([port])) {}
  18251.     virtual int serverPort() {}
  18252.     virtual bool isActive() {}
  18253.     virtual void delete((bool removeConnections = true)) {}
  18254.  
  18255.     /*! @name TCP Server
  18256.     @{ */
  18257.     /*! */
  18258.     /*!
  18259.     The class name to be assigned for connected clients.
  18260.    
  18261.      */
  18262.     string clientsClassName;
  18263.     /*!
  18264.     Authorization string which should be sent by client so we can check if its valid connection.
  18265.    
  18266.      */
  18267.     string authInfoIn;
  18268.     /*!
  18269.     Authorization string which should be sent by client so we can check if its valid connection.
  18270.    
  18271.      */
  18272.     string authInfoOut;
  18273.     /// @}
  18274.  
  18275.  
  18276.     /*! @name Ungrouped
  18277.     @{ */
  18278.     /*! */
  18279.     /// @}
  18280.  
  18281.  
  18282.     /*! @name Object
  18283.     @{ */
  18284.     /*! */
  18285.     /// @}
  18286.  
  18287.  
  18288.     /*! @name Editing
  18289.     @{ */
  18290.     /*! */
  18291.     /// @}
  18292.  
  18293.  
  18294.     /*! @name Persistence
  18295.     @{ */
  18296.     /*! */
  18297.     /// @}
  18298.  
  18299.  };
  18300.  
  18301.  class  SimDownloadHelper : public SimObject {
  18302.    public:
  18303.        /*!  */
  18304.        void onFinished();
  18305.  
  18306.        /*!  */
  18307.        void onFailed( int errorCode, String errorMessage );
  18308.  
  18309.        /*!  */
  18310.        void onProgress( float progress, int current, int total, String speed );
  18311.  
  18312.     virtual void delete(()) {}
  18313.     virtual bool start(()) {}
  18314.     virtual int getSizeTransfer(()) {}
  18315.     virtual int getSizeTotal(()) {}
  18316.  
  18317.     /*! @name Download Details
  18318.     @{ */
  18319.     /*! */
  18320.     /*!
  18321.    
  18322.    
  18323.      */
  18324.     string url;
  18325.     /*!
  18326.    
  18327.    
  18328.      */
  18329.     string fileName;
  18330.     /*!
  18331.    
  18332.    
  18333.      */
  18334.     string cbFinished;
  18335.     /*!
  18336.    
  18337.    
  18338.      */
  18339.     string cbFailed;
  18340.     /*!
  18341.    
  18342.    
  18343.      */
  18344.     string cbProgress;
  18345.     /// @}
  18346.  
  18347.  
  18348.     /*! @name Ungrouped
  18349.     @{ */
  18350.     /*! */
  18351.     /// @}
  18352.  
  18353.  
  18354.     /*! @name Object
  18355.     @{ */
  18356.     /*! */
  18357.     /// @}
  18358.  
  18359.  
  18360.     /*! @name Editing
  18361.     @{ */
  18362.     /*! */
  18363.     /// @}
  18364.  
  18365.  
  18366.     /*! @name Persistence
  18367.     @{ */
  18368.     /*! */
  18369.     /// @}
  18370.  
  18371.  };
  18372.  
  18373.  /*!
  18374.  @brief An undo action that is comprised of other undo actions.
  18375.  
  18376.  Not intended for game development, for editors or internal use only.
  18377.  
  18378.   */
  18379.  class  CompoundUndoAction : public UndoAction {
  18380.    public:
  18381.     /*! addAction( UndoAction ) */
  18382.     virtual void addAction() {}
  18383.  
  18384.     /*! @name Ungrouped
  18385.     @{ */
  18386.     /*! */
  18387.     /// @}
  18388.  
  18389.  
  18390.     /*! @name Object
  18391.     @{ */
  18392.     /*! */
  18393.     /// @}
  18394.  
  18395.  
  18396.     /*! @name Editing
  18397.     @{ */
  18398.     /*! */
  18399.     /// @}
  18400.  
  18401.  
  18402.     /*! @name Persistence
  18403.     @{ */
  18404.     /*! */
  18405.     /// @}
  18406.  
  18407.  };
  18408.  
  18409.  /*!
  18410.  @brief SimObject which adds, tracks, and deletes UndoAction objects.
  18411.  
  18412.  Not intended for game development, for editors or internal use only.
  18413.  
  18414.   */
  18415.  class  UndoManager : public SimObject {
  18416.    public:
  18417.     /*! Clears the undo manager. */
  18418.     virtual void clearAll() {}
  18419.     virtual int getUndoCount() {}
  18420.     virtual string getUndoName((index)) {}
  18421.     virtual int getUndoAction((index)) {}
  18422.     virtual int getRedoCount() {}
  18423.     virtual string getRedoName((index)) {}
  18424.     virtual int getRedoAction((index)) {}
  18425.     /*! UndoManager.undo(); */
  18426.     virtual void undo() {}
  18427.     /*! UndoManager.redo(); */
  18428.     virtual void redo() {}
  18429.     /*! UndoManager.getNextUndoName(); */
  18430.     virtual string getNextUndoName() {}
  18431.     /*! UndoManager.getNextRedoName(); */
  18432.     virtual string getNextRedoName() {}
  18433.     /*! Push a CompoundUndoAction onto the compound stack for assembly. */
  18434.     virtual string pushCompound(( string name="" )) {}
  18435.     /*! Pop the current CompoundUndoAction off the stack. */
  18436.     virtual void popCompound(( bool discard=false )) {}
  18437.     /*!
  18438.     Number of undo & redo levels.
  18439.    
  18440.      */
  18441.     int numLevels;
  18442.  };
Add Comment
Please, Sign In to add comment