llwlparamset.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /**
  2.  * @file llwlparamset.h
  3.  * @brief Interface for the LLWLParamSet class.
  4.  *
  5.  * $LicenseInfo:firstyear=2005&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2005-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_WLPARAM_SET_H
  33. #define LL_WLPARAM_SET_H
  34. #include <string>
  35. #include <map>
  36. #include "v4math.h"
  37. #include "v4color.h"
  38. #include "llviewershadermgr.h"
  39. class LLFloaterWindLight;
  40. class LLWLParamSet;
  41. /// A class representing a set of parameter values for the WindLight shaders.
  42. class LLWLParamSet {
  43. friend class LLWLParamManager;
  44. public:
  45. std::string mName;
  46. private:
  47. LLSD mParamValues;
  48. float mCloudScrollXOffset, mCloudScrollYOffset;
  49. public:
  50. LLWLParamSet();
  51. /// Update this set of shader uniforms from the parameter values.
  52. void update(LLGLSLShader * shader) const;
  53. /// set the total llsd
  54. void setAll(const LLSD& val);
  55. /// get the total llsd
  56. const LLSD& getAll();
  57. /// Set a float parameter.
  58. /// param paramName The name of the parameter to set.
  59. /// param x The float value to set.
  60. void set(const std::string& paramName, float x);
  61. /// Set a float2 parameter.
  62. /// param paramName The name of the parameter to set.
  63. /// param x The x component's value to set.
  64. /// param y The y component's value to set.
  65. void set(const std::string& paramName, float x, float y);
  66. /// Set a float3 parameter.
  67. /// param paramName The name of the parameter to set.
  68. /// param x The x component's value to set.
  69. /// param y The y component's value to set.
  70. /// param z The z component's value to set.
  71. void set(const std::string& paramName, float x, float y, float z);
  72. /// Set a float4 parameter.
  73. /// param paramName The name of the parameter to set.
  74. /// param x The x component's value to set.
  75. /// param y The y component's value to set.
  76. /// param z The z component's value to set.
  77. /// param w The w component's value to set.
  78. void set(const std::string& paramName, float x, float y, float z, float w);
  79. /// Set a float4 parameter.
  80. /// param paramName The name of the parameter to set.
  81. /// param val An array of the 4 float values to set the parameter to.
  82. void set(const std::string& paramName, const float * val);
  83. /// Set a float4 parameter.
  84. /// param paramName The name of the parameter to set.
  85. /// param val A struct of the 4 float values to set the parameter to.
  86. void set(const std::string& paramName, const LLVector4 & val);
  87. /// Set a float4 parameter.
  88. /// param paramName The name of the parameter to set.
  89. /// param val A struct of the 4 float values to set the parameter to.
  90. void set(const std::string& paramName, const LLColor4 & val);
  91. /// Get a float4 parameter.
  92. /// param paramName The name of the parameter to set.
  93. /// param error A flag to set if it's not the proper return type
  94. LLVector4 getVector(const std::string& paramName, bool& error);
  95. /// Get an integer parameter
  96. /// param paramName The name of the parameter to set.
  97. /// param error A flag to set if it's not the proper return type
  98. F32 getFloat(const std::string& paramName, bool& error);
  99. // specific getters and setters
  100. /// set the star's brightness
  101. /// param val brightness value
  102. void setStarBrightness(F32 val);
  103. /// get the star brightness value;
  104. F32 getStarBrightness();
  105. void setSunAngle(F32 val);
  106. F32 getSunAngle();
  107. void setEastAngle(F32 val);
  108. F32 getEastAngle();
  109. /// set the cloud scroll x enable value
  110. /// param val scroll x value
  111. void setEnableCloudScrollX(bool val);
  112. /// get the scroll x enable value;
  113. bool getEnableCloudScrollX();
  114. /// set the star's brightness
  115. /// param val scroll y bool value
  116. void setEnableCloudScrollY(bool val);
  117. /// get the scroll enable y value;
  118. bool getEnableCloudScrollY();
  119. /// set the cloud scroll x enable value
  120. /// param val scroll x value
  121. void setCloudScrollX(F32 val);
  122. /// get the scroll x enable value;
  123. F32 getCloudScrollX();
  124. /// set the star's brightness
  125. /// param val scroll y bool value
  126. void setCloudScrollY(F32 val);
  127. /// get the scroll enable y value;
  128. F32 getCloudScrollY();
  129. /// interpolate two parameter sets
  130. /// param src The parameter set to start with
  131. /// param dest The parameter set to end with
  132. /// param weight The amount to interpolate
  133. void mix(LLWLParamSet& src, LLWLParamSet& dest, 
  134. F32 weight);
  135. void updateCloudScrolling(void);
  136. };
  137. inline void LLWLParamSet::setAll(const LLSD& val)
  138. {
  139. if(val.isMap()) {
  140. mParamValues = val;
  141. }
  142. }
  143. inline const LLSD& LLWLParamSet::getAll()
  144. {
  145. return mParamValues;
  146. }
  147. inline void LLWLParamSet::setStarBrightness(float val) {
  148. mParamValues["star_brightness"] = val;
  149. }
  150. inline F32 LLWLParamSet::getStarBrightness() {
  151. return (F32) mParamValues["star_brightness"].asReal();
  152. }
  153. inline F32 LLWLParamSet::getSunAngle() {
  154. return (F32) mParamValues["sun_angle"].asReal();
  155. }
  156. inline F32 LLWLParamSet::getEastAngle() {
  157. return (F32) mParamValues["east_angle"].asReal();
  158. }
  159. inline void LLWLParamSet::setEnableCloudScrollX(bool val) {
  160. mParamValues["enable_cloud_scroll"][0] = val;
  161. }
  162. inline bool LLWLParamSet::getEnableCloudScrollX() {
  163. return mParamValues["enable_cloud_scroll"][0].asBoolean();
  164. }
  165. inline void LLWLParamSet::setEnableCloudScrollY(bool val) {
  166. mParamValues["enable_cloud_scroll"][1] = val;
  167. }
  168. inline bool LLWLParamSet::getEnableCloudScrollY() {
  169. return mParamValues["enable_cloud_scroll"][1].asBoolean();
  170. }
  171. inline void LLWLParamSet::setCloudScrollX(F32 val) {
  172. mParamValues["cloud_scroll_rate"][0] = val;
  173. }
  174. inline F32 LLWLParamSet::getCloudScrollX() {
  175. return (F32) mParamValues["cloud_scroll_rate"][0].asReal();
  176. }
  177. inline void LLWLParamSet::setCloudScrollY(F32 val) {
  178. mParamValues["cloud_scroll_rate"][1] = val;
  179. }
  180. inline F32 LLWLParamSet::getCloudScrollY() {
  181. return (F32) mParamValues["cloud_scroll_rate"][1].asReal();
  182. }
  183. #endif // LL_WLPARAM_SET_H