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

游戏引擎

开发平台:

C++ Builder

  1. /**
  2.  * @file llpartdata_tut.cpp
  3.  * @author Adroit
  4.  * @date March 2007
  5.  * @brief LLPartData and LLPartSysData test cases.
  6.  *
  7.  * $LicenseInfo:firstyear=2007&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2007-2010, Linden Research, Inc.
  10.  * 
  11.  * Second Life Viewer Source Code
  12.  * The source code in this file ("Source Code") is provided by Linden Lab
  13.  * to you under the terms of the GNU General Public License, version 2.0
  14.  * ("GPL"), unless you have obtained a separate licensing agreement
  15.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  16.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  17.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  18.  * 
  19.  * There are special exceptions to the terms and conditions of the GPL as
  20.  * it is applied to this Source Code. View the full text of the exception
  21.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  22.  * online at
  23.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  24.  * 
  25.  * By copying, modifying or distributing this software, you acknowledge
  26.  * that you have read and understood your obligations described above,
  27.  * and agree to abide by those obligations.
  28.  * 
  29.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  30.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  31.  * COMPLETENESS OR PERFORMANCE.
  32.  * $/LicenseInfo$
  33.  */
  34. #include "linden_common.h"
  35. #include "lldatapacker.h"
  36. #include "v3math.h"
  37. #include "llsdserialize.h"
  38. #include "message.h"
  39. #include "../llpartdata.h"
  40. #include "../test/lltut.h"
  41. namespace tut
  42. {
  43. struct partdata_test
  44. {
  45. };
  46. typedef test_group<partdata_test> partdata_test_t;
  47. typedef partdata_test_t::object partdata_test_object_t;
  48. tut::partdata_test_t tut_partdata_test("partdata_test");
  49. template<> template<>
  50. void partdata_test_object_t::test<1>()
  51. {
  52. LLPartData llpdata,llpdata1;
  53. U8 pkbuf[128];
  54. llpdata.setFlags(LLPartData::LL_PART_INTERP_COLOR_MASK | LLPartData::LL_PART_INTERP_SCALE_MASK |
  55. LLPartData::LL_PART_BOUNCE_MASK | LLPartData::LL_PART_WIND_MASK | LLPartData::LL_PART_FOLLOW_SRC_MASK |
  56. LLPartData::LL_PART_FOLLOW_VELOCITY_MASK | LLPartData::LL_PART_TARGET_POS_MASK | LLPartData::LL_PART_TARGET_LINEAR_MASK |
  57. LLPartData::LL_PART_EMISSIVE_MASK | LLPartData::LL_PART_BEAM_MASK | LLPartData::LL_PART_DEAD_MASK);
  58. llpdata.setMaxAge(29.3f);
  59. LLVector3 llvec1(1.0f, .5f, .25f);
  60. llpdata.setStartColor(llvec1);
  61. llpdata.setStartAlpha(.7f);
  62. LLVector3 llvec2(.2f, .3f, 1.0f);
  63. llpdata.setEndColor(llvec2);
  64. llpdata.setEndAlpha(1.0f);
  65. llpdata.setStartScale(3.23f, 4.0f);
  66. llpdata.setEndScale(2.4678f, 1.0f);
  67. LLDataPackerBinaryBuffer dp((U8*)pkbuf, 128);
  68. llpdata.pack(dp);
  69. S32 cur_size = dp.getCurrentSize();
  70. LLDataPackerBinaryBuffer dp1((U8*)pkbuf, cur_size);
  71. llpdata1.unpack(dp1);
  72. ensure("1.mFlags values are different after unpacking", llpdata1.mFlags == llpdata.mFlags);
  73. ensure_approximately_equals("2.mMaxAge values are different after unpacking", llpdata1.mMaxAge, llpdata.mMaxAge, 8);
  74. ensure_approximately_equals("3.mStartColor[0] values are different after unpacking", llpdata1.mStartColor.mV[0], llpdata.mStartColor.mV[0], 8);
  75. ensure_approximately_equals("4.mStartColor[1] values are different after unpacking", llpdata1.mStartColor.mV[1], llpdata.mStartColor.mV[1], 8);
  76. ensure_approximately_equals("5.mStartColor[2] values are different after unpacking", llpdata1.mStartColor.mV[2], llpdata.mStartColor.mV[2], 8);
  77. ensure_approximately_equals("6.mStartColor[3] values are different after unpacking", llpdata1.mStartColor.mV[3], llpdata.mStartColor.mV[3], 8);
  78. ensure_approximately_equals("7.mEndColor[0] values are different after unpacking", llpdata1.mEndColor.mV[0], llpdata.mEndColor.mV[0], 8);
  79. ensure_approximately_equals("8.mEndColor[1] values are different after unpacking", llpdata1.mEndColor.mV[1], llpdata.mEndColor.mV[1], 8);
  80. ensure_approximately_equals("9.mEndColor[2] values are different after unpacking", llpdata1.mEndColor.mV[2], llpdata.mEndColor.mV[2], 8);
  81. ensure_approximately_equals("10.mEndColor[2] values are different after unpacking", llpdata1.mEndColor.mV[3], llpdata.mEndColor.mV[3], 8);
  82. ensure_approximately_equals("11.mStartScale[0] values are different after unpacking", llpdata1.mStartScale.mV[0], llpdata.mStartScale.mV[0], 5);
  83. ensure_approximately_equals("12.mStartScale[1] values are different after unpacking", llpdata1.mStartScale.mV[1], llpdata.mStartScale.mV[1], 5);
  84. ensure_approximately_equals("13.mEndScale[0] values are different after unpacking", llpdata1.mEndScale.mV[0], llpdata.mEndScale.mV[0], 5);
  85. ensure_approximately_equals("14.mEndScale[1] values are different after unpacking", llpdata1.mEndScale.mV[1], llpdata.mEndScale.mV[1], 5);
  86. }
  87. template<> template<>
  88. void partdata_test_object_t::test<2>()
  89. {
  90. LLPartData llpdata,llpdata1;
  91. llpdata.setFlags(LLPartData::LL_PART_INTERP_COLOR_MASK | LLPartData::LL_PART_INTERP_SCALE_MASK |
  92. LLPartData::LL_PART_BOUNCE_MASK | LLPartData::LL_PART_WIND_MASK | LLPartData::LL_PART_FOLLOW_SRC_MASK |
  93. LLPartData::LL_PART_FOLLOW_VELOCITY_MASK | LLPartData::LL_PART_TARGET_POS_MASK | LLPartData::LL_PART_TARGET_LINEAR_MASK |
  94. LLPartData::LL_PART_EMISSIVE_MASK | LLPartData::LL_PART_BEAM_MASK | LLPartData::LL_PART_DEAD_MASK);
  95. llpdata.setMaxAge(29.3f);
  96. LLVector3 llvec1(1.0f, .5f, .25f);
  97. llpdata.setStartColor(llvec1);
  98. llpdata.setStartAlpha(.7f);
  99. LLVector3 llvec2(.2f, .3f, 1.0f);
  100. llpdata.setEndColor(llvec2);
  101. llpdata.setEndAlpha(1.0f);
  102. llpdata.setStartScale(3.23f, 4.0f);
  103. llpdata.setEndScale(2.4678f, 1.0f);
  104. LLSD llsd = llpdata.asLLSD();
  105. llpdata1.fromLLSD(llsd);
  106. ensure("1.mFlags values are different after unpacking", llpdata1.mFlags == llpdata.mFlags);
  107. ensure_approximately_equals("2.mMaxAge values are different after unpacking", llpdata1.mMaxAge, llpdata.mMaxAge, 8);
  108. ensure_approximately_equals("3.mStartColor[0] values are different after unpacking", llpdata1.mStartColor.mV[0], llpdata.mStartColor.mV[0], 8);
  109. ensure_approximately_equals("4.mStartColor[1] values are different after unpacking", llpdata1.mStartColor.mV[1], llpdata.mStartColor.mV[1], 8);
  110. ensure_approximately_equals("5.mStartColor[2] values are different after unpacking", llpdata1.mStartColor.mV[2], llpdata.mStartColor.mV[2], 8);
  111. ensure_approximately_equals("6.mStartColor[3] values are different after unpacking", llpdata1.mStartColor.mV[3], llpdata.mStartColor.mV[3], 8);
  112. ensure_approximately_equals("7.mEndColor[0] values are different after unpacking", llpdata1.mEndColor.mV[0], llpdata.mEndColor.mV[0], 8);
  113. ensure_approximately_equals("8.mEndColor[1] values are different after unpacking", llpdata1.mEndColor.mV[1], llpdata.mEndColor.mV[1], 8);
  114. ensure_approximately_equals("9.mEndColor[2] values are different after unpacking", llpdata1.mEndColor.mV[2], llpdata.mEndColor.mV[2], 8);
  115. ensure_approximately_equals("10.mEndColor[2] values are different after unpacking", llpdata1.mEndColor.mV[3], llpdata.mEndColor.mV[3], 8);
  116. ensure_approximately_equals("11.mStartScale[0] values are different after unpacking", llpdata1.mStartScale.mV[0], llpdata.mStartScale.mV[0], 5);
  117. ensure_approximately_equals("12.mStartScale[1] values are different after unpacking", llpdata1.mStartScale.mV[1], llpdata.mStartScale.mV[1], 5);
  118. ensure_approximately_equals("13.mEndScale[0] values are different after unpacking", llpdata1.mEndScale.mV[0], llpdata.mEndScale.mV[0], 5);
  119. ensure_approximately_equals("14.mEndScale[1] values are different after unpacking", llpdata1.mEndScale.mV[1], llpdata.mEndScale.mV[1], 5);
  120. }
  121. //*********llpartsysdata***********
  122. template<> template<>
  123. void partdata_test_object_t::test<3>()
  124. {
  125. LLPartSysData llpsysdata, llpsysdata1;
  126. U8 pkbuf[256];
  127. llpsysdata.setBurstSpeedMin(33.33f);
  128. ensure("1.mBurstSpeedMin coudnt be set", 33.33f == llpsysdata.mBurstSpeedMin);
  129. llpsysdata.setBurstSpeedMax(44.44f); 
  130. ensure("2.mBurstSpeedMax coudnt be set", 44.44f == llpsysdata.mBurstSpeedMax);
  131. llpsysdata.setBurstRadius(45.55f);
  132. ensure("3.mBurstRadius coudnt be set", 45.55f == llpsysdata.mBurstRadius);
  133. LLVector3 llvec(44.44f, 111.11f, -40.4f);
  134. llpsysdata.setPartAccel(llvec);
  135. llpsysdata.mCRC = 0xFFFFFFFF;
  136. llpsysdata.mFlags = 0x20;
  137. llpsysdata.mPattern = LLPartSysData::LL_PART_SRC_PATTERN_ANGLE_CONE_EMPTY;
  138. llpsysdata.mMaxAge = 99.99f;
  139. llpsysdata.mStartAge = 18.5f;
  140. llpsysdata.mInnerAngle = 4.234f;
  141. llpsysdata.mOuterAngle = 7.123f;
  142. llpsysdata.mBurstRate  = 245.53f;
  143. llpsysdata.mBurstPartCount = 0xFF;
  144. llpsysdata.mAngularVelocity = llvec;
  145. llpsysdata.mPartImageID.generate();
  146. llpsysdata.mTargetUUID.generate();
  147. LLDataPackerBinaryBuffer dp((U8*)pkbuf, 256);
  148. llpsysdata.pack(dp);
  149. S32 cur_size = dp.getCurrentSize();
  150. LLDataPackerBinaryBuffer dp1((U8*)pkbuf, cur_size);
  151. llpsysdata1.unpack(dp1);
  152. ensure("1.mCRC's not equal", llpsysdata.mCRC == llpsysdata1.mCRC);
  153. ensure("2.mFlags's not equal", llpsysdata.mFlags == llpsysdata1.mFlags);
  154. ensure("3.mPattern's not equal", llpsysdata.mPattern == llpsysdata1.mPattern);
  155. ensure_approximately_equals("4.mMaxAge's not equal", llpsysdata.mMaxAge , llpsysdata1.mMaxAge, 8);
  156. ensure_approximately_equals("5.mStartAge's not equal", llpsysdata.mStartAge, llpsysdata1.mStartAge, 8);
  157. ensure_approximately_equals("6.mOuterAngle's not equal", llpsysdata.mOuterAngle, llpsysdata1.mOuterAngle, 5);
  158. ensure_approximately_equals("7.mInnerAngles's not equal", llpsysdata.mInnerAngle, llpsysdata1.mInnerAngle, 5);
  159. ensure_approximately_equals("8.mBurstRate's not equal", llpsysdata.mBurstRate, llpsysdata1.mBurstRate, 8);
  160. ensure("9.mBurstPartCount's not equal", llpsysdata.mBurstPartCount == llpsysdata1.mBurstPartCount);
  161. ensure_approximately_equals("10.mBurstSpeedMin's not equal", llpsysdata.mBurstSpeedMin, llpsysdata1.mBurstSpeedMin, 8);
  162. ensure_approximately_equals("11.mBurstSpeedMax's not equal", llpsysdata.mBurstSpeedMax, llpsysdata1.mBurstSpeedMax, 8);
  163. ensure_approximately_equals("12.mAngularVelocity's not equal", llpsysdata.mAngularVelocity.mV[0], llpsysdata1.mAngularVelocity.mV[0], 7);
  164. ensure_approximately_equals("13.mAngularVelocity's not equal", llpsysdata.mAngularVelocity.mV[1], llpsysdata1.mAngularVelocity.mV[1], 7);
  165. ensure_approximately_equals("14.mAngularVelocity's not equal", llpsysdata.mAngularVelocity.mV[2], llpsysdata1.mAngularVelocity.mV[2], 7);
  166. ensure_approximately_equals("15.mPartAccel's not equal", llpsysdata.mPartAccel.mV[0], llpsysdata1.mPartAccel.mV[0], 7);
  167. ensure_approximately_equals("16.mPartAccel's not equal", llpsysdata.mPartAccel.mV[1], llpsysdata1.mPartAccel.mV[1], 7);
  168. ensure_approximately_equals("17.mPartAccel's not equal", llpsysdata.mPartAccel.mV[2], llpsysdata1.mPartAccel.mV[2], 7);
  169. ensure("18.mPartImageID's not equal", llpsysdata.mPartImageID == llpsysdata1.mPartImageID);
  170. ensure("19.mTargetUUID's not equal", llpsysdata.mTargetUUID == llpsysdata1.mTargetUUID);
  171. ensure_approximately_equals("20.mBurstRadius's not equal", llpsysdata.mBurstRadius, llpsysdata1.mBurstRadius, 8);
  172. }
  173. }