EditorLine.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /***********************************************************************************************
  19. *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
  20. ***********************************************************************************************
  21. * *
  22. * Project Name : LevelEdit *
  23. * *
  24. * $Archive:: /Commando/Code/Tools/LevelEdit/EditorLine.h $*
  25. * *
  26. * Author:: Patrick Smith *
  27. * *
  28. * $Modtime:: 3/26/01 2:19p $*
  29. * *
  30. * $Revision:: 3 $*
  31. * *
  32. *---------------------------------------------------------------------------------------------*
  33. * Functions: *
  34. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  35. #if defined(_MSC_VER)
  36. #pragma once
  37. #endif
  38. #ifndef __EDITOR_LINE_H
  39. #define __EDITOR_LINE_H
  40. #include "editorphys.h"
  41. #include "segline.h"
  42. #include "vector3.h"
  43. ///////////////////////////////////////////////////////////////////////////////
  44. //
  45. // EditorLineClass
  46. //
  47. ///////////////////////////////////////////////////////////////////////////////
  48. class EditorLineClass : public EditorPhysClass
  49. {
  50. public:
  51. ////////////////////////////////////////////////////////
  52. // Public contsructors/destructors
  53. ////////////////////////////////////////////////////////
  54. EditorLineClass (void);
  55. virtual ~EditorLineClass (void) { MEMBER_RELEASE (Line); }
  56. ////////////////////////////////////////////////////////
  57. // Public methods
  58. ////////////////////////////////////////////////////////
  59. //
  60. // Position methods
  61. //
  62. void Reset (const Vector3 &start, const Vector3 &end);
  63. void Reset_Start (const Vector3 &start);
  64. void Reset_End (const Vector3 &end);
  65. void Hide (bool onoff);
  66. void Set_Color (const Vector3 &color) { Line->Set_Color ((Vector3 &)color); }
  67. void Set_Width (float width) { Line->Set_Width (width); Update_Cull_Box (); }
  68. private:
  69. ////////////////////////////////////////////////////////
  70. // Private member data
  71. ////////////////////////////////////////////////////////
  72. Vector3 StartPos;
  73. Vector3 EndPos;
  74. SegmentedLineClass * Line;
  75. };
  76. ///////////////////////////////////////////////////////////////////////////////////
  77. // EditorLineClass
  78. ///////////////////////////////////////////////////////////////////////////////////
  79. inline
  80. EditorLineClass::EditorLineClass (void) :
  81. StartPos (0, 0, 0),
  82. EndPos (1, 1, 1),
  83. EditorPhysClass ()
  84. {
  85. Line = new SegmentedLineClass;
  86. Vector3 locs[2] = { Vector3 (0,0,0), Vector3 (1,1,1) };
  87. Line->Set_Points (2, locs);
  88. Line->Set_Width (0.075F);
  89. Line->Set_Color (Vector3 (0, 0, 0.75F));
  90. Line->Set_Opacity (1.0F);
  91. //Line->Set_Shader (ShaderClass::_PresetOpaqueSolidShader);
  92. Set_Model (Line);
  93. return ;
  94. }
  95. ///////////////////////////////////////////////////////////////////////////////////
  96. // Reset
  97. ///////////////////////////////////////////////////////////////////////////////////
  98. inline void
  99. EditorLineClass::Reset (const Vector3 &start, const Vector3 &end)
  100. {
  101. Reset_Start (start);
  102. Reset_End (end);
  103. return ;
  104. }
  105. ///////////////////////////////////////////////////////////////////////////////////
  106. // Reset_Start
  107. ///////////////////////////////////////////////////////////////////////////////////
  108. inline void
  109. EditorLineClass::Reset_Start (const Vector3 &start)
  110. {
  111. StartPos = start;
  112. Set_Position (StartPos);
  113. Update_Cull_Box ();
  114. return ;
  115. }
  116. ///////////////////////////////////////////////////////////////////////////////////
  117. // Reset_End
  118. ///////////////////////////////////////////////////////////////////////////////////
  119. inline void
  120. EditorLineClass::Reset_End (const Vector3 &end)
  121. {
  122. Matrix3D::Inverse_Transform_Vector (Get_Transform (), end, &EndPos);
  123. Line->Set_Point_Location (1, EndPos);
  124. Update_Cull_Box ();
  125. return ;
  126. }
  127. ///////////////////////////////////////////////////////////////////////////////////
  128. // Hide
  129. ///////////////////////////////////////////////////////////////////////////////////
  130. inline void
  131. EditorLineClass::Hide (bool onoff)
  132. {
  133. if (Line != NULL) {
  134. Line->Set_Hidden (onoff);
  135. }
  136. return ;
  137. }
  138. #endif //__EDITOR_LINE_H