Ported Selection Beam Particle Effects from Phoenix by LordGregGreg Back (licensed LGPL w/ permission)

master
Ansariel 2011-06-29 23:21:38 +02:00
parent 9c698bceae
commit 3f2cf42eb0
46 changed files with 8217 additions and 7 deletions

View File

@ -83,6 +83,10 @@ set(viewer_SOURCE_FILES
fslslbridge.cpp
fslslbridgerequest.cpp
fsradarlistctrl.cpp
lggbeammapfloater.cpp
lggbeammaps.cpp
lggbeamscolors.cpp
lggbeamcolormapfloater.cpp
llagent.cpp
llagentaccess.cpp
llagentcamera.cpp
@ -654,6 +658,10 @@ set(viewer_HEADER_FILES
fskeywords.h
fslslbridge.h
fslslbridgerequest.h
lggbeammapfloater.h
lggbeammaps.h
lggbeamscolors.h
lggbeamcolormapfloater.h
llagent.h
llagentaccess.h
llagentcamera.h

View File

@ -0,0 +1,369 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-118</real>
<real>-107</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-107</real>
<real>-85</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-85</real>
<real>-63</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-54</real>
<real>-49</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-18</real>
<real>-39</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>14</real>
<real>-37</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>37</real>
<real>-51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>66</real>
<real>-76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>85</real>
<real>-103</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.4296875</real>
<real>0</real>
<real>1.5366822481155396e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>63</real>
<real>67</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.4296875</real>
<real>0</real>
<real>1.5366822481155396e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>63</real>
<real>45</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.4296875</real>
<real>0</real>
<real>1.5366822481155396e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-71</real>
<real>61</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.4296875</real>
<real>0</real>
<real>1.5366822481155396e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-71</real>
<real>41</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-2</real>
<real>52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>17</real>
<real>71</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>37</real>
<real>91</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>62</real>
<real>111</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>82</real>
<real>125</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-22</real>
<real>60</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-39</real>
<real>76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-67</real>
<real>101</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-94</real>
<real>123</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-123</real>
<real>140</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>99</real>
<real>143</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,219 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-141</real>
<real>-28</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-127</real>
<real>-52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-111</real>
<real>-75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-89</real>
<real>-97</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-54</real>
<real>-115</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-14</real>
<real>-115</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>23</real>
<real>-100</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>50</real>
<real>-83</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>70</real>
<real>-61</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>91</real>
<real>-17</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>42</real>
<real>104</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>42</real>
<real>80</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-85</real>
<real>101</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-87</real>
<real>75</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,152 @@
<llsd>
<map>
<key>scale</key>
<real>.7</real>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>4</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>3.5</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>2</real>
<real>3.5</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>-4</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>2</real>
<real>-3.5</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>3.5</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-3.5</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-2</real>
<real>3.5</real>
</array>
</map><map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-2</real>
<real>-3.5</real>
</array></map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-3.5</real>
<real>-2</real>
</array>
</map>
</array>
</map>
</llsd>

View File

@ -0,0 +1,504 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-142</real>
<real>-1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>113</real>
<real>88</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>105</real>
<real>-5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>7</real>
<real>-75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-23</real>
<real>129</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-91</real>
<real>-67</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-90</real>
<real>105</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-57</real>
<real>-85</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-146</real>
<real>52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>123</real>
<real>51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>18</real>
<real>-11</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-49</real>
<real>52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0.5</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>47</real>
<real>109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0.5</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-71</real>
<real>1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>27</real>
<real>69</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>93</real>
<real>-63</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.75</real>
<real>0.75</real>
<real>0.75</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>51</real>
<real>12</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.75</real>
<real>0.75</real>
<real>0.75</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-138</real>
<real>101</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-146</real>
<real>-104</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>5</real>
<real>-105</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-23</real>
<real>16</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-101</real>
<real>81</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>99</real>
<real>117</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-27</real>
<real>-5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-42</real>
<real>89</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>58</real>
<real>-119</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>157</real>
<real>-109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.5</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>133</real>
<real>25</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.5</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>169</real>
<real>107</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.5</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-150</real>
<real>-72</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-107</real>
<real>-124</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>163</real>
<real>-52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>75</real>
<real>132</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,249 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.328125</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-109</real>
<real>57</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.6796875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-82</real>
<real>89</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.890625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-43</real>
<real>111</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.75781238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-2</real>
<real>112</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.38281238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>38</real>
<real>97</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.17187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>67</real>
<real>77</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.20312494039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>79</real>
<real>51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.55468744039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>81</real>
<real>13</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0000001192092896</real>
<real>0.99999994039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>65</real>
<real>-25</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.76562511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>37</real>
<real>-51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.41406261920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>6</real>
<real>-69</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.10937511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-35</real>
<real>-72</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.3125002384185791</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-69</real>
<real>-52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.6875002384185791</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-91</real>
<real>-39</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0.82031285762786865</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-107</real>
<real>-11</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-120</real>
<real>20</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,219 @@
<llsd>
<map>
<key>scale</key>
<real>.8</real>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>2</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>3</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>4</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>4</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-1</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-2</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-3</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-4</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>-1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>0</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>-3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>4</real>
</array></map>
</array>
</map>
</llsd>

View File

@ -0,0 +1,579 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-175</real>
<real>-125</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-154</real>
<real>-89</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-134</real>
<real>-43</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-117</real>
<real>9</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-113</real>
<real>75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-95</real>
<real>25</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-86</real>
<real>-29</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-79</real>
<real>-84</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-61</real>
<real>-60</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-35</real>
<real>-15</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-14</real>
<real>36</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-1</real>
<real>85</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>5</real>
<real>44</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-5</real>
<real>-1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-5</real>
<real>-55</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>21</real>
<real>-96</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>47</real>
<real>-104</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>65</real>
<real>-68</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>79</real>
<real>-29</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>87</real>
<real>36</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>87</real>
<real>76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>99</real>
<real>-23</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>115</real>
<real>-69</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>143</real>
<real>-111</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-141</real>
<real>-129</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-125</real>
<real>-81</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-113</real>
<real>-47</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-63</real>
<real>-109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-46</real>
<real>-76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-33</real>
<real>-33</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>62</real>
<real>-121</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.3515625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>78</real>
<real>-97</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-101</real>
<real>-125</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-97</real>
<real>-91</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-39</real>
<real>-123</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-25</real>
<real>-96</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>10</real>
<real>-117</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.1640625</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>102</real>
<real>-111</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,339 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>90</real>
<real>75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>75</real>
<real>105</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>45</real>
<real>120</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>15</real>
<real>-121</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-95</real>
<real>0</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-91</real>
<real>75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-76</real>
<real>105</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-46</real>
<real>120</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-16</real>
<real>-121</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>60</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>-151</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-17</real>
<real>92</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>15</real>
<real>92</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-30</real>
<real>109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>27</real>
<real>109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>99</real>
<real>6</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>104</real>
<real>48</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-105</real>
<real>34</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-78</real>
<real>-38</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-46</real>
<real>-78</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>46</real>
<real>-82</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>75</real>
<real>-35</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,324 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-163</real>
<real>88</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-165</real>
<real>51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-166</real>
<real>17</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-166</real>
<real>-37</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-166</real>
<real>-75</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-139</real>
<real>-79</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-105</real>
<real>-80</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-75</real>
<real>-81</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>126</real>
<real>103</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>86</real>
<real>108</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>46</real>
<real>87</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>33</real>
<real>55</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>26</real>
<real>8</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>35</real>
<real>-35</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>66</real>
<real>-71</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>99</real>
<real>-67</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>126</real>
<real>-61</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>145</real>
<real>-19</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>143</real>
<real>5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>113</real>
<real>1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>90</real>
<real>0</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,369 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-113</real>
<real>-95</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-126</real>
<real>-63</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-113</real>
<real>-8</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-68</real>
<real>57</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-8</real>
<real>107</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>39</real>
<real>116</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>66</real>
<real>103</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>68</real>
<real>63</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>44</real>
<real>-1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>7</real>
<real>-60</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.047707695513963699</real>
<real>0.002288818359375</real>
<real>0.583648681640625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-56</real>
<real>-99</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-128</real>
<real>39</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-137</real>
<real>93</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-114</real>
<real>121</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-54</real>
<real>115</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>111</real>
<real>-41</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>110</real>
<real>-87</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>64</real>
<real>-137</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>11</real>
<real>-116</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-53</real>
<real>-59</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.00390625</real>
<real>0.78680431842803955</real>
<real>0.99609375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-102</real>
<real>-5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>3</real>
<real>86</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>86</real>
<real>5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>48</real>
<real>46</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,249 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.18</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-26</real>
<real>-27</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.18</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>26</real>
<real>-27</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.05</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-24</real>
<real>-80</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.05</real>
<real></real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>24</real>
<real>-80</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.12</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>-51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.51</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-37</real>
<real>107</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.51</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>37</real>
<real>107</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.34</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>78</real>
<real>38</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.34</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-78</real>
<real>38</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.25</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-62</real>
<real>4</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.44</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-58</real>
<real>76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.44</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>58</real>
<real>76</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>.99</real>
<real>.25</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>62</real>
<real>4</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.8359375</real>
<real>0</real>
<real>2.989545464515686e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>-11</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.8359375</real>
<real>0</real>
<real>2.989545464515686e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>10</real>
<real>14</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.8359375</real>
<real>0</real>
<real>2.989545464515686e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-8</real>
<real>21</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,309 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0.19531238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-102</real>
<real>-1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.19531238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-139</real>
<real>55</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.19531238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-183</real>
<real>124</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.19531238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-105</real>
<real>85</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.19531238079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-37</real>
<real>41</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.92187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-3</real>
<real>40</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.92187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>59</real>
<real>84</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.92187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>130</real>
<real>123</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.92187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>93</real>
<real>47</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.92187488079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>49</real>
<real>-12</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.46875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>61</real>
<real>-43</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.46875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>109</real>
<real>-87</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.46875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>158</real>
<real>-131</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.46875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>71</real>
<real>-108</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.46875</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-9</real>
<real>-71</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>3.5762786865234375e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-49</real>
<real>-64</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>3.5762786865234375e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-119</real>
<real>-100</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>3.5762786865234375e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-187</real>
<real>-125</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>3.5762786865234375e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-141</real>
<real>-52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>3.5762786865234375e-007</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-101</real>
<real>-19</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,165 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-1</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-2</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-3</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-4</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-5</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-6</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-7</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-8</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-9</real>
<real>0</real>
<real>0</real>
</array>
</map><map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>-10</real>
<real>0</real>
<real>0</real>
</array>
</map>
</array>
<key>scale</key>
<real>2.3</real>
</map>
</llsd>

View File

@ -0,0 +1,369 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.2578125</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-137</real>
<real>32</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.994140625</real>
<real>0.33013916015625</real>
<real>0.005859375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-129</real>
<real>59</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.994140625</real>
<real>0.33013916015625</real>
<real>0.005859375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-109</real>
<real>77</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.99609375</real>
<real>0.6085205078125</real>
<real>0.00390625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-82</real>
<real>92</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.99609375</real>
<real>0.6085205078125</real>
<real>0.00390625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-50</real>
<real>105</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.998046875</real>
<real>0.88909912109375</real>
<real>0.001953125</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-22</real>
<real>108</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.998046875</real>
<real>0.88909912109375</real>
<real>0.001953125</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>17</real>
<real>109</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.80468738079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>47</real>
<real>99</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.80468738079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>71</real>
<real>83</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.52343738079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>94</real>
<real>52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.52343738079071045</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>97</real>
<real>21</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.078124880790710449</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>89</real>
<real>-3</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.078124880790710449</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>69</real>
<real>-28</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.32031244039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>39</real>
<real>-45</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.32031244039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>2</real>
<real>-48</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.67187494039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-21</real>
<real>-29</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1</real>
<real>0.67187494039535522</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-25</real>
<real>7</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.85937511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-6</real>
<real>27</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.85937511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>21</real>
<real>32</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.57812511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>38</real>
<real>23</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0.57812511920928955</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>41</real>
<real>1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.0078127384185791016</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>26</real>
<real>-9</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.0078127384185791016</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>13</real>
<real>5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.7343752384185791</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>23</real>
<real>9</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,218 @@
<llsd>
<map>
<key>scale</key>
<real>1.3</real>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>2</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>1</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-1</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-2</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-2</real>
<real>1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-2</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-2</real>
<real>-1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-2</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-1</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>1</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>2</real>
<real>-2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>2</real>
<real>-1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>2</real>
<real>0</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>2</real>
<real>1</real>
</array></map>
</array>
</map>
</llsd>

View File

@ -0,0 +1,271 @@
<llsd>
<map>
<key>scale</key>
<real>.3</real>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>0</real>
<real>9</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>1</real>
<real>6</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>2</real>
<real>3.5</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>4</real>
<real>3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>6.5</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>5</real>
<real>-1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>3.5</real>
<real>-3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>3.75</real>
<real>-6</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>4</real>
<real>-9</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>2</real>
<real>-7.7</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-1</real>
<real>6</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-2</real>
<real>3.5</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-4</real>
<real>3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-6.5</real>
<real>2</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-5</real>
<real>-1</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key> <array>
<real>0</real>
<real>-3.5</real>
<real>-3</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-3.75</real>
<real>-6</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-4</real>
<real>-9</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>-2</real>
<real>-7.7</real>
</array>
</map> <map>
<key>color</key>
<array>
<real>0</real>
<real>1.0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key><array>
<real>0</real>
<real>0</real>
<real>-6.5</real>
</array></map>
</array>
</map>
</llsd>

View File

@ -0,0 +1,264 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-145</real>
<real>-59</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-44</real>
<real>-52</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>86</real>
<real>-49</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-45</real>
<real>27</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>78</real>
<real>29</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-145</real>
<real>-93</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-34</real>
<real>-84</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>84</real>
<real>-77</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-38</real>
<real>-16</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>78</real>
<real>-7</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>75</real>
<real>57</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-48</real>
<real>61</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-92</real>
<real>57</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-88</real>
<real>-5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-152</real>
<real>-11</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-157</real>
<real>49</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-124</real>
<real>24</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,564 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-25</real>
<real>92</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-53</real>
<real>83</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-81</real>
<real>65</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-98</real>
<real>43</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-103</real>
<real>17</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-95</real>
<real>-7</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-81</real>
<real>-39</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-61</real>
<real>-51</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-35</real>
<real>-39</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-21</real>
<real>-21</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.96484375</real>
<real>0.96484375</real>
<real>0.96484375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-22</real>
<real>1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-53</real>
<real>-55</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-27</real>
<real>-56</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>7</real>
<real>-43</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>25</real>
<real>-23</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>37</real>
<real>4</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>39</real>
<real>47</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>29</real>
<real>72</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>2</real>
<real>87</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-22</real>
<real>85</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-39</real>
<real>63</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-47</real>
<real>47</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-41</real>
<real>32</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-27</real>
<real>19</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-33</real>
<real>13</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-43</real>
<real>21</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-57</real>
<real>47</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-47</real>
<real>68</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-73</real>
<real>43</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-70</real>
<real>1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.9375</real>
<real>0.9375</real>
<real>0.9375</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-45</real>
<real>-7</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-17</real>
<real>5</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-14</real>
<real>-15</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-17</real>
<real>-29</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>1</real>
<real>-8</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>1</real>
<real>35</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-14</real>
<real>53</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,399 @@
<llsd>
<map>
<key>data</key>
<array>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-187</real>
<real>-56</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-173</real>
<real>-32</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-155</real>
<real>-9</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-134</real>
<real>22</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-107</real>
<real>-1</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-85</real>
<real>-22</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-62</real>
<real>-45</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-43</real>
<real>-22</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-27</real>
<real>-2</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-10</real>
<real>27</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>14</real>
<real>7</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>34</real>
<real>-9</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>49</real>
<real>-24</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>78</real>
<real>-4</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>94</real>
<real>10</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>113</real>
<real>30</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-182</real>
<real>12</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-130</real>
<real>-45</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-69</real>
<real>23</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>1</real>
<real>-34</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>58</real>
<real>32</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>0.20584124326705933</real>
<real>0.130859375</real>
<real>0.869140625</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>117</real>
<real>-14</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-139</real>
<real>48</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-57</real>
<real>-70</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>-18</real>
<real>62</real>
</array>
</map>
<map>
<key>color</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>offset</key>
<array>
<real>0</real>
<real>54</real>
<real>-52</real>
</array>
</map>
</array>
<key>scale</key>
<real>0.02</real>
</map>
</llsd>

View File

@ -0,0 +1,10 @@
<llsd>
<map>
<key>endHue</key>
<real>312.72726440429687</real>
<key>rotateSpeed</key>
<real>0.64999997615814209</real>
<key>startHue</key>
<real>280</real>
</map>
</llsd>

View File

@ -0,0 +1,10 @@
<llsd>
<map>
<key>endHue</key>
<real>410.90908813476562</real>
<key>rotateSpeed</key>
<real>1</real>
<key>startHue</key>
<real>360</real>
</map>
</llsd>

View File

@ -0,0 +1,10 @@
<llsd>
<map>
<key>endHue</key>
<real>398.18182373046875</real>
<key>rotateSpeed</key>
<real>0.23000000417232513</real>
<key>startHue</key>
<real>350.90908813476562</real>
</map>
</llsd>

View File

@ -0,0 +1,10 @@
<llsd>
<map>
<key>endHue</key>
<real>360</real>
<key>rotateSpeed</key>
<real>1</real>
<key>startHue</key>
<real>0</real>
</map>
</llsd>

View File

@ -0,0 +1,10 @@
<llsd>
<map>
<key>endHue</key>
<real>243.63636779785156</real>
<key>rotateSpeed</key>
<real>2.3299999237060547</real>
<key>startHue</key>
<real>176.36363220214844</real>
</map>
</llsd>

View File

@ -14347,6 +14347,61 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>PhoenixBeamShape</key>
<map>
<key>Comment</key>
<string>Beam file for the shape of your beam</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>Phoenix</string>
</map>
<key>PhoenixBeamColorFile</key>
<map>
<key>Comment</key>
<string>Beam file for the shape of your beam</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>===OFF===</string>
</map>
<key>PhoenixMaxBeamsPerSecond</key>
<map>
<key>Comment</key>
<string>How many selection beam updates to send in a second</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>40</real>
</map>
<key>PhoenixBeamShapeScale</key>
<map>
<key>Comment</key>
<string>How Big You Want to let the beam be</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>1.3</real>
</map>
<key>PhoenixParticleChat</key>
<map>
<key>Comment</key>
<string>Speak Particle Info on channel 9000</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -0,0 +1,415 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back). All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llviewerprecompiledheaders.h"
#include "lggbeamcolormapfloater.h"
#include "llagentdata.h"
#include "llcommandhandler.h"
#include "llfloater.h"
#include "llsdutil.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
#include "llagent.h"
#include "llfilepicker.h"
#include "llpanel.h"
#include "lliconctrl.h"
#include "llbutton.h"
#include "llcolorswatch.h"
#include "lggbeammaps.h"
#include "llsdserialize.h"
#include "panel_prefs_firestorm.h"
#include "lggbeamscolors.h"
#include "llsliderctrl.h"
#include "llfocusmgr.h"
F32 convertXToHue(S32 place)
{
return ((place-6)/396.0f)*720.0f;
}
S32 convertHueToX(F32 place)
{
return llround((place/720.0f)*396.0f)+6;
}
F32 hueToRgb1 ( F32 val1In, F32 val2In, F32 valHUeIn )
{
if ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
return ( val1In );
}
void hslToRgb1 ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
{
if ( sValIn < 0.00001f )
{
rValOut = lValIn;
gValOut = lValIn;
bValOut = lValIn;
}
else
{
F32 interVal1;
F32 interVal2;
if ( lValIn < 0.5f )
interVal2 = lValIn * ( 1.0f + sValIn );
else
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
interVal1 = 2.0f * lValIn - interVal2;
rValOut = hueToRgb1 ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
gValOut = hueToRgb1 ( interVal1, interVal2, hValIn );
bValOut = hueToRgb1 ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
}
}
const F32 CONTEXT_CONE_IN_ALPHA = 0.0f;
const F32 CONTEXT_CONE_OUT_ALPHA = 1.f;
const F32 CONTEXT_FADE_TIME = 0.08f;
// Correction factors needed after porting from Phoenix
const S32 CORRECTION_X = 0;
const S32 CORRECTION_Y = -40;
void lggBeamColorMapFloater::onClickSlider(LLUICtrl* crtl, void* userdata)
{
lggBeamColorMapFloater* self = (lggBeamColorMapFloater*)userdata;
self->fixOrder();
}
void lggBeamColorMapFloater::draw()
{
//set the color of the preview thing
LLColorSwatchCtrl* colorctrl = getChild<LLColorSwatchCtrl>("BeamColor_Preview");
LLColor4 bColor = LLColor4(lggBeamMaps::beamColorFromData(myData));
colorctrl->set(bColor, TRUE);
//Try draw rectangle attach beam
LLRect swatch_rect;
LLButton* createButton = fspanel->getChild<LLButton>("BeamColor_new");
createButton->localRectToOtherView(createButton->getLocalRect(), &swatch_rect, this);
LLRect local_rect = getLocalRect();
if (gFocusMgr.childHasKeyboardFocus(this) && fspanel->isInVisibleChain() && mContextConeOpacity > 0.001f)
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLGLEnable(GL_CULL_FACE);
gGL.begin(LLRender::QUADS);
{
F32 r = bColor.mV[0];
F32 g = bColor.mV[1];
F32 b = bColor.mV[2];
gGL.color4f(r, g, b, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mTop);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mTop);
gGL.color4f(r, g, b, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mRight, local_rect.mTop);
gGL.vertex2i(local_rect.mLeft, local_rect.mTop);
gGL.color4f(r, g, b, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mLeft, local_rect.mTop);
gGL.vertex2i(local_rect.mLeft, local_rect.mBottom);
gGL.color4f(r, g, b, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mBottom);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mTop);
gGL.color4f(r, g, b, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mRight, local_rect.mBottom);
gGL.vertex2i(local_rect.mRight, local_rect.mTop);
gGL.color4f(r, g, b, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mTop);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mBottom);
gGL.color4f(r, g, b, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mLeft, local_rect.mBottom);
gGL.vertex2i(local_rect.mRight, local_rect.mBottom);
gGL.color4f(r, g, b, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mBottom);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mBottom);
}
gGL.end();
}
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
//Draw Base Stuff
LLFloater::draw();
//Draw hues and pointers at color
gGL.pushMatrix();
F32 r, g, b;
LLColor4 output;
for (int i = 0;i <= 720;i++)
{
int hi =i%360;
hslToRgb1((hi/360.0f), 1.0f, 0.5f, r, g, b);
output.set(r, g, b);
gl_line_2d(
convertHueToX(i) + CORRECTION_X, 201 + CORRECTION_Y,
convertHueToX(i) + CORRECTION_X, 277 + CORRECTION_Y, output);
//convertHueToX(i),161,
//convertHueToX(i),237,output);
}
S32 X1 = convertHueToX(myData.startHue) + CORRECTION_X;
S32 X2 = convertHueToX(myData.endHue) + CORRECTION_X;
LLFontGL* font = LLFontGL::getFontSansSerifSmall();
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(X1 + CORRECTION_X, 238 + CORRECTION_Y,9.0f, (S32)30, false);
gGL.color4fv(LLColor4::black.mV);
gl_circle_2d(X1 + CORRECTION_X, 238 + CORRECTION_Y,8.0f, (S32)30, false);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(X1 + CORRECTION_X, 238 + CORRECTION_Y,7.0f, (S32)30, false);
gl_line_2d(X1+1 + CORRECTION_X, 210 + CORRECTION_Y, X1+1 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X1-1 + CORRECTION_X, 210 + CORRECTION_Y, X1-1 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X1 + CORRECTION_X, 210 + CORRECTION_Y, X1 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::black);
gl_line_2d(X1-25 + CORRECTION_X, 238+1 + CORRECTION_Y, X1+25 + CORRECTION_X, 238+1 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X1-25 + CORRECTION_X, 238-1 + CORRECTION_Y, X1+25 + CORRECTION_X, 238-1 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X1-25 + CORRECTION_X, 238 + CORRECTION_Y, X1+25 + CORRECTION_X, 238 + CORRECTION_Y, LLColor4::black);
font->renderUTF8(
"Start Hue", 0,
X1 + CORRECTION_X,
212 + CORRECTION_Y,
LLColor4::white, LLFontGL::HCENTER,
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(X2 + CORRECTION_X, 238 + CORRECTION_Y, 9.0f, (S32)30, false);
gGL.color4fv(LLColor4::black.mV);
gl_circle_2d(X2 + CORRECTION_X, 238 + CORRECTION_Y, 8.0f, (S32)30, false);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(X2 + CORRECTION_X, 238 + CORRECTION_Y, 7.0f, (S32)30, false);
gl_line_2d(X2+1 + CORRECTION_X, 210 + CORRECTION_Y, X2+1 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X2-1 + CORRECTION_X, 210 + CORRECTION_Y, X2-1 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X2 + CORRECTION_X ,210 + CORRECTION_Y, X2 + CORRECTION_X, 266 + CORRECTION_Y, LLColor4::black);
gl_line_2d(X2-25 + CORRECTION_X, 238+1 + CORRECTION_Y, X2+25 + CORRECTION_X, 238+1 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X2-25 + CORRECTION_X, 238-1 + CORRECTION_Y, X2+25 + CORRECTION_X, 238-1 + CORRECTION_Y, LLColor4::white);
gl_line_2d(X2-25 + CORRECTION_X, 238 + CORRECTION_Y, X2+25 + CORRECTION_X, 238 + CORRECTION_Y, LLColor4::black);
font->renderUTF8(
"End Hue", 0,
X2 + CORRECTION_X,
212 + CORRECTION_Y,
LLColor4::white, LLFontGL::HCENTER,
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
gGL.popMatrix();
}
lggBeamColorMapFloater::~lggBeamColorMapFloater()
{
}
lggBeamColorMapFloater::lggBeamColorMapFloater(const LLSD& seed): LLFloater(seed),
mContextConeOpacity(0.0f)
{
}
BOOL lggBeamColorMapFloater::postBuild(void)
{
setCanMinimize(false);
getChild<LLUICtrl>("BeamColor_Save")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickSave, this));
getChild<LLUICtrl>("BeamColor_Load")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickLoad, this));
getChild<LLUICtrl>("BeamColor_Cancel")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickCancel, this));
mColorSlider = getChild<LLSliderCtrl>("BeamColor_Speed");
childSetCommitCallback("BeamColor_Speed", onClickSlider, this);
// Is this still needed???
//mColorSlider->setCallbackUserData(this);
fixOrder();
return true;
}
BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
{
//6, 277
//402 201
if (y > (201 + CORRECTION_Y) && y < (277 + CORRECTION_Y))
{
if (x < (6 + CORRECTION_X))
{
myData.startHue=0.0f;
}
else if (x > (402 + CORRECTION_X))
{
myData.endHue=720.0f;
}
else
{
myData.startHue = convertXToHue(x + CORRECTION_X);
}
fixOrder();
}
llinfos << "we got clicked at (" << x << ", " << y << " yay! " << llendl;
return LLFloater::handleMouseDown(x,y,mask);
}
BOOL lggBeamColorMapFloater::handleRightMouseDown(S32 x,S32 y,MASK mask)
{
if (y > (201 + CORRECTION_Y) && y < (277 + CORRECTION_Y))
{
if (x < (6 + CORRECTION_X))
{
myData.startHue=0.0f;
}
else if (x > (402 + CORRECTION_X))
{
myData.endHue=720.0f;
}
else
{
myData.endHue = convertXToHue(x + CORRECTION_X);
}
fixOrder();
}
llinfos << "we got right clicked at (" << x << ", " << y << " yay! " << llendl;
return LLFloater::handleRightMouseDown(x,y,mask);
}
void lggBeamColorMapFloater::fixOrder()
{
myData.rotateSpeed = mColorSlider->getValueF32();
myData.rotateSpeed /= 100.0f;
if(myData.endHue < myData.startHue)
{
F32 temp = myData.startHue;
myData.startHue = myData.endHue;
myData.endHue = temp;
}
}
void lggBeamColorMapFloater::setData(void* data)
{
fspanel = (PanelPreferenceFirestorm*)data;
if (fspanel)
{
gFloaterView->getParentFloater(fspanel)->addDependentFloater(this);
}
}
void lggBeamColorMapFloater::update()
{
}
LLSD lggBeamColorMapFloater::getMyDataSerialized()
{
return myData.toLLSD();
}
void lggBeamColorMapFloater::onClickSave()
{
LLFilePicker& picker = LLFilePicker::instance();
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors", ""));
std::string filename=path_name2 + "myNewBeamColor.xml";
if(!picker.getSaveFile( LLFilePicker::FFSAVE_BEAM, filename ) )
{
return;
}
filename = path_name2 + gDirUtilp->getBaseFileName(picker.getFirstFile());
LLSD main = getMyDataSerialized();
llofstream export_file;
export_file.open(filename);
LLSDSerialize::toPrettyXML(main, export_file);
export_file.close();
gSavedSettings.setString("PhoenixBeamColorFile", gDirUtilp->getBaseFileName(filename,true));
if (fspanel != NULL)
{
fspanel->refreshBeamLists();
}
closeFloater();
}
void lggBeamColorMapFloater::onClickCancel()
{
closeFloater();
}
void lggBeamColorMapFloater::onClickLoad()
{
LLFilePicker& picker = LLFilePicker::instance();
if(!picker.getOpenFile(LLFilePicker::FFLOAD_XML))
{
return;
}
LLSD minedata;
llifstream importer(picker.getFirstFile());
LLSDSerialize::fromXMLDocument(minedata, importer);
myData = lggBeamsColors::fromLLSD(minedata);
childSetValue("BeamColor_Speed",/*self->*/myData.rotateSpeed*100);
}

View File

@ -0,0 +1,89 @@
/* Copyright (c) 2009
*
* Modular Systems All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llviewerprecompiledheaders.h"
#include "llagentdata.h"
#include "llcommandhandler.h"
#include "llfloater.h"
#include "llsdutil.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
#include "llagent.h"
#include "llfilepicker.h"
#include "llpanel.h"
#include "lliconctrl.h"
#include "llbutton.h"
#include "llcolorswatch.h"
#include "llsdserialize.h"
#include "panel_prefs_firestorm.h"
#include "lggbeamscolors.h"
#include "llsliderctrl.h"
#include "llfocusmgr.h"
////////////////////////////////////////////////////////////////////////////
// lggBeamMapFloater
class lggBeamColorMapFloater : public LLFloater
{
public:
lggBeamColorMapFloater(const LLSD& seed);
virtual ~lggBeamColorMapFloater();
void fixOrder();
BOOL postBuild(void);
BOOL handleMouseDown(S32 x,S32 y,MASK mask);
BOOL handleRightMouseDown(S32 x,S32 y,MASK mask);
void update();
void setData(void* data);
void draw();
LLSD getMyDataSerialized();
// UI Handlers
static void onClickSlider(LLUICtrl* crtl, void* userdata);
void onClickSave();
void onClickLoad();
void onClickCancel();
protected:
F32 mContextConeOpacity;
PanelPreferenceFirestorm * fspanel;
lggBeamsColors myData;
LLSliderCtrl* mColorSlider;
};

View File

@ -0,0 +1,309 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back). All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llviewerprecompiledheaders.h"
#include "lggbeammapfloater.h"
#include "llagentdata.h"
#include "llcommandhandler.h"
#include "llfloater.h"
#include "llsdutil.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
#include "llagent.h"
#include "llfilepicker.h"
#include "llpanel.h"
#include "lliconctrl.h"
#include "llbutton.h"
#include "llcolorswatch.h"
#include "lggbeammaps.h"
#include "llsdserialize.h"
#include "panel_prefs_firestorm.h"
#include "llfocusmgr.h"
const F32 CONTEXT_CONE_IN_ALPHA = 0.0f;
const F32 CONTEXT_CONE_OUT_ALPHA = 1.f;
const F32 CONTEXT_FADE_TIME = 0.08f;
void lggBeamMapFloater::clearPoints()
{
dots.clear();
}
void lggBeamMapFloater::draw()
{
LLRect swatch_rect;
LLButton* createButton = fspanel->getChild<LLButton>("custom_beam_btn");
createButton->localRectToOtherView(createButton->getLocalRect(), &swatch_rect, this);
LLRect local_rect = getLocalRect();
if (gFocusMgr.childHasKeyboardFocus(this) && createButton->isInVisibleChain() && mContextConeOpacity > 0.001f)
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLGLEnable(GL_CULL_FACE);
gGL.begin(LLRender::QUADS);
{
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mTop);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mTop);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mRight, local_rect.mTop);
gGL.vertex2i(local_rect.mLeft, local_rect.mTop);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mLeft, local_rect.mTop);
gGL.vertex2i(local_rect.mLeft, local_rect.mBottom);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mBottom);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mTop);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mRight, local_rect.mBottom);
gGL.vertex2i(local_rect.mRight, local_rect.mTop);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mTop);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mBottom);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_OUT_ALPHA * mContextConeOpacity);
gGL.vertex2i(local_rect.mLeft, local_rect.mBottom);
gGL.vertex2i(local_rect.mRight, local_rect.mBottom);
gGL.color4f(0.f, 0.f, 0.f, CONTEXT_CONE_IN_ALPHA * mContextConeOpacity);
gGL.vertex2i(swatch_rect.mRight, swatch_rect.mBottom);
gGL.vertex2i(swatch_rect.mLeft, swatch_rect.mBottom);
}
gGL.end();
}
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
//getChild<LLPanel>("beamshape_draw")->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
LLFloater::draw();
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
gGL.pushMatrix();
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(rec.getCenterX(), rec.getCenterY() ,2.0f, (S32)30, false);
gGL.color4fv(LLColor4::black.mV);
gl_circle_2d(rec.getCenterX(), rec.getCenterY(), 30.0f, (S32)30, false);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(rec.getCenterX(), rec.getCenterY(), 60.0f, (S32)30, false);
gGL.color4fv(LLColor4::black.mV);
gl_circle_2d(rec.getCenterX(), rec.getCenterY(), 90.0f, (S32)30, false);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(rec.getCenterX(), rec.getCenterY(), 120.0f, (S32)30, false);
for(int i = 0; i < (int)dots.size(); i++)
{
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(dots[i].x, dots[i].y, 9.0f, (S32)30, true);
gGL.color4fv(LLColor4::black.mV);
gl_circle_2d(dots[i].x, dots[i].y, 8.0f, (S32)30, true);
gGL.color4fv(dots[i].c.mV);
gl_circle_2d(dots[i]. x,dots[i].y, 7.0f, (S32)30, true);
}
gGL.popMatrix();
}
lggBeamMapFloater::~lggBeamMapFloater()
{
}
lggBeamMapFloater::lggBeamMapFloater(const LLSD& seed): LLFloater(seed),
mContextConeOpacity(0.0f)
{
}
BOOL lggBeamMapFloater::postBuild(void)
{
setCanMinimize(false);
getChild<LLUICtrl>("beamshape_save")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickSave, this));
getChild<LLUICtrl>("beamshape_clear")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickClear, this));
getChild<LLUICtrl>("beamshape_load")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickLoad, this));
//getChild<LLColorSwatchCtrl>("back_color_swatch")->setCommitCallback(onBackgroundChange);
childSetCommitCallback("back_color_swatch", onBackgroundChange, this);
getChild<LLColorSwatchCtrl>("beam_color_swatch")->setColor(LLColor4::red);
return true;
}
BOOL lggBeamMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
{
if(y>39 && x>16 && x<394 && y<317)
{
lggPoint a;
a.x=x;
a.y=y;
a.c= getChild<LLColorSwatchCtrl>("beam_color_swatch")->get();
dots.push_back(a);
llinfos << "we got clicked at (" << x << ", " << y << " and color was " << a.c << llendl;
}
return LLFloater::handleMouseDown(x,y,mask);
}
void lggBeamMapFloater::setData(void* data)
{
fspanel = (PanelPreferenceFirestorm*)data;
if (fspanel)
{
gFloaterView->getParentFloater(fspanel)->addDependentFloater(this);
}
}
BOOL lggBeamMapFloater::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
std::vector<lggPoint> newDots;
for(int i = 0; i < (int)dots.size(); i++)
{
if(dist_vec(LLVector2(x,y), LLVector2(dots[i].x,dots[i].y)) < 7)
{
}
else
{
newDots.push_back(dots[i]);
}
}
dots = newDots;
return LLFloater::handleMouseDown(x,y,mask);
}
void lggBeamMapFloater::onBackgroundChange(LLUICtrl* ctrl, void* userdata)
{
lggBeamMapFloater* self = (lggBeamMapFloater*)userdata;
LLColorSwatchCtrl* cctrl = (LLColorSwatchCtrl*)ctrl;
if(cctrl)
{
self->getChild<LLPanel>("beamshape_draw")->setBackgroundColor(cctrl->get());
}
}
void lggBeamMapFloater::update()
{
}
LLSD lggBeamMapFloater::getMyDataSerialized()
{
LLSD out;
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
for(int i =0; i<(int)dots.size(); i++)
{
LLSD point;
lggPoint t = dots[i];
LLVector3 vec = LLVector3((F32)0.0, (F32)t.x, (F32)t.y);
vec -= LLVector3((F32)0.0, (F32)r.getCenterX(), r.getCenterY());
point["offset"]= vec.getValue();
point["color"] = t.c.getValue();
out[i]=point;
}
return out;
}
void lggBeamMapFloater::onClickSave()
{
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
LLFilePicker& picker = LLFilePicker::instance();
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "beams", ""));
std::string filename=path_name2 + "myNewBeam.xml";
if(!picker.getSaveFile( LLFilePicker::FFSAVE_BEAM, filename ) )
{
return;
}
filename = path_name2 +gDirUtilp->getBaseFileName(picker.getFirstFile());
LLSD main;
main["scale"] = 8.0f / (r.getWidth());
main["data"] = getMyDataSerialized();
llofstream export_file;
export_file.open(filename);
LLSDSerialize::toPrettyXML(main, export_file);
export_file.close();
gSavedSettings.setString("PhoenixBeamShape",gDirUtilp->getBaseFileName(filename,true));
if(fspanel)
{
fspanel->refreshBeamLists();
}
}
void lggBeamMapFloater::onClickClear()
{
clearPoints();
}
void lggBeamMapFloater::onClickLoad()
{
LLFilePicker& picker = LLFilePicker::instance();
if(!picker.getOpenFile( LLFilePicker::FFLOAD_XML ) )
{
return;
}
dots.clear();
LLSD mydata;
llifstream importer(picker.getFirstFile());
LLSDSerialize::fromXMLDocument(mydata, importer);
LLSD myPicture = mydata["data"];
F32 scale = (F32)mydata["scale"].asReal();
for(int i = 0; i < myPicture.size(); i++)
{
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
LLSD beamData = myPicture[i];
lggPoint p;
LLVector3 vec = LLVector3(beamData["offset"]);
vec *= (scale)/(8.0f/(rec.getWidth()));
LLColor4 color = beamData["color"];
p.c = color;
p.x = (S32)(vec.mV[VY]+rec.getCenterX());
p.y = (S32)(vec.mV[VZ]+rec.getCenterY());
dots.push_back(p);
}
}

View File

@ -0,0 +1,95 @@
/* Copyright (c) 2009
*
* Modular Systems All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llviewerprecompiledheaders.h"
#include "llagentdata.h"
#include "llcommandhandler.h"
#include "llfloater.h"
#include "llsdutil.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
#include "llagent.h"
#include "llfilepicker.h"
#include "llpanel.h"
#include "lliconctrl.h"
#include "llbutton.h"
#include "llcolorswatch.h"
#include "llsdserialize.h"
#include "panel_prefs_firestorm.h"
#include "llfocusmgr.h"
class lggPoint
{
public:
S32 x;
S32 y;
LLColor4 c;
};
////////////////////////////////////////////////////////////////////////////
// lggBeamMapFloater
class lggBeamMapFloater : public LLFloater
{
public:
lggBeamMapFloater(const LLSD& seed);
virtual ~lggBeamMapFloater();
BOOL postBuild(void);
BOOL handleMouseDown(S32 x,S32 y,MASK mask);
void update();
BOOL handleRightMouseDown(S32 x,S32 y,MASK mask);
void setData(void* data);
PanelPreferenceFirestorm* fspanel;
void draw();
void clearPoints();
LLSD getMyDataSerialized();
std::vector<lggPoint> dots;
// UI Handlers
void onClickSave();
void onClickClear();
void onClickLoad();
private:
static void onBackgroundChange(LLUICtrl* ctrl, void* userdata);
F32 mContextConeOpacity;
};

View File

@ -0,0 +1,433 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back) All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llviewerprecompiledheaders.h"
#include "lggbeammaps.h"
#include "lggbeamscolors.h"
#include "llappviewer.h"
#include "llfile.h"
#include "llagent.h"
#include "llsdserialize.h"
#include "llviewercontrol.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
//using namespace std;
#include "message.h"
#include <curl/curl.h>
lggBeamMaps gLggBeamMaps;
F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn )
{
while ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
while ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
return ( val1In );
}
void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
{
if ( sValIn < 0.00001f )
{
rValOut = lValIn;
gValOut = lValIn;
bValOut = lValIn;
}
else
{
F32 interVal1;
F32 interVal2;
if ( lValIn < 0.5f )
interVal2 = lValIn * ( 1.0f + sValIn );
else
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
interVal1 = 2.0f * lValIn - interVal2;
rValOut = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
gValOut = hueToRgb ( interVal1, interVal2, hValIn );
bValOut = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
}
}
LLSD lggBeamMaps::getPic(std::string filename)
{
LLSD data;
llifstream importer(filename);
LLSDSerialize::fromXMLDocument(data, importer);
return data;
}
LLColor4U lggBeamMaps::getCurrentColor(LLColor4U agentColor)
{
//static std::string* settingName = rebind_llcontrol<std::string >("PhoenixBeamColorFile", &gSavedSettings, true);
std::string settingName = gSavedSettings.getString("PhoenixBeamColorFile");
if(settingName == "===OFF===") return agentColor;
if(settingName != lastColorFileName)
{
lastColorFileName = settingName;
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beamsColors", ""));
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "beamsColors", ""));
std::string filename = path_name + settingName + ".xml";
if(gDirUtilp->fileExists(filename))
{
}else
{
filename = path_name2 + settingName + ".xml";
if(!gDirUtilp->fileExists(filename))
{
return agentColor;
}
}
lastColorsData = lggBeamsColors::fromLLSD(getPic(filename));
}
agentColor = beamColorFromData(lastColorsData);
return agentColor;
}
static LLFrameTimer timer;
LLColor4U lggBeamMaps::beamColorFromData(lggBeamsColors data)
{
F32 r, g, b;
LLColor4 output;
LLColor4U toReturn;
F32 timeinc = timer.getElapsedTimeF32()*0.3f*((data.rotateSpeed+.01f)) * (360/(data.endHue-data.startHue));
S32 diference = llround(data.endHue - data.startHue);
if(diference == 360 || diference == 720)
{
//full rainbow
//liner one
hslToRgb(fmod(timeinc,1.0f), 1.0f, 0.5f, r, g, b);
}else
{
F32 variance = ((data.endHue/360.0f)-(data.startHue/360.0f))/2.0f;
hslToRgb((data.startHue/360.0f) + variance + (sinf(timeinc)*(variance)), 1.0f, 0.5f, r, g, b);
}
output.set(r, g, b);
toReturn.setVecScaleClamp(output);
return toReturn;
}
void lggBeamMaps::fireCurrentBeams(LLPointer<LLHUDEffectSpiral> mBeam, LLColor4U rgb)
{
if(scale == 0.0f) return;
static LLCachedControl<std::string> colorf(gSavedSettings, "PhoenixBeamColorFile");
bool colorsDisabled = std::string(colorf) == "===OFF===";
for(int i = 0; i < (int)dots.size(); i++)
{
LLColor4U myColor = rgb;
if (colorsDisabled) myColor = dots[i].c;
F32 distanceAdjust = dist_vec(mBeam->getPositionGlobal(),gAgent.getPositionGlobal()) ;
F32 pulse = (F32)(.75f+sinf(gFrameTimeSeconds*1.0f)*0.25f);
LLVector3d offset = dots[i].p;
offset.mdV[VY] *= -1;
offset *= pulse * scale * distanceAdjust * 0.1;
//llinfos << "dist is " << distanceAdjust << "scale is " << scale << llendl;
LLVector3 beamLine = LLVector3( mBeam->getPositionGlobal() - gAgent.getPositionGlobal());
LLVector3 beamLineFlat = beamLine;
beamLineFlat.mV[VZ]= 0.0f;
LLVector3 newDirFlat = LLVector3::x_axis;
beamLine.normalize();
beamLineFlat.normalize();
LLQuaternion change;
change.shortestArc(newDirFlat,beamLineFlat);
offset.rotVec(change);
newDirFlat.rotVec(change);
change.shortestArc(newDirFlat,beamLine);
offset.rotVec(change);
LLPointer<LLHUDEffectSpiral> myBeam = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM);
myBeam->setPositionGlobal(mBeam->getPositionGlobal() + offset + (LLVector3d(beamLine) * sinf(gFrameTimeSeconds*2.0f) * 0.2f));
myBeam->setColor(myColor);
myBeam->setTargetObject(mBeam->getTargetObject());
myBeam->setSourceObject(mBeam->getSourceObject());
myBeam->setNeedsSendToSim(mBeam->getNeedsSendToSim());
myBeam->setDuration(duration* 1.2f);
}
}
void lggBeamMaps::forceUpdate()
{
dots.clear();
scale = 0.0f;
lastFileName="";
}
F32 lggBeamMaps::setUpAndGetDuration()
{
static LLCachedControl<std::string> settingNameCached(gSavedSettings, "PhoenixBeamShape");
std::string settingName(settingNameCached);
if(settingName != lastFileName)
{
lastFileName = settingName;
if( settingName != "===OFF===" && settingName != "")
{
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beams", ""));
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "beams", ""));
std::string filename = path_name + settingName + ".xml";
if(gDirUtilp->fileExists(filename))
{
}else
{
filename =path_name2 + settingName +".xml";
}
LLSD mydata = getPic(filename);
scale = (F32)mydata["scale"].asReal()/10.0f;
LLSD myPicture = mydata["data"];
dots.clear();
for(int i = 0; i < myPicture.size(); i++)
{
LLSD beamData = myPicture[i];
lggBeamData dot;
dot.p = LLVector3d(beamData["offset"]);
dot.p *= (gSavedSettings.getF32("PhoenixBeamShapeScale")*2.0f);
LLColor4 color = beamData["color"];
dot.c = LLColor4U(color);
dots.push_back(dot);
}
F32 maxBPerQS = gSavedSettings.getF32("PhoenixMaxBeamsPerSecond") / 4.0f;
duration = llceil((F32)(myPicture.size()) / maxBPerQS) * 0.25f;
llinfos << "reading it all now size is " << myPicture.size() << " and duration is " << duration << llendl;
}else
{
dots.clear();
scale = 0.0f;//used as a flag too
duration = 0.25f;
}
}
//llinfos << "sent final dur of " << duration << llendl;
return duration;
}
std::vector<std::string> lggBeamMaps::getFileNames()
{
std::vector<std::string> names;
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beams", ""));
bool found = true;
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
if(found)
{
name=name.erase(name.length()-4);
// bugfix for SL-46920: preventing filenames that break stuff.
char * curl_str = curl_unescape(name.c_str(), name.size());
std::string unescaped_name(curl_str);
curl_free(curl_str);
curl_str = NULL;
names.push_back(name);
//LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
//loadPreset(unescaped_name,FALSE);
}
}
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beams", ""));
found = true;
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
if(found)
{
name=name.erase(name.length()-4);
// bugfix for SL-46920: preventing filenames that break stuff.
char * curl_str = curl_unescape(name.c_str(), name.size());
std::string unescaped_name(curl_str);
curl_free(curl_str);
curl_str = NULL;
names.push_back(name);
//LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
//loadPreset(unescaped_name,FALSE);
}
}
return names;
}
std::vector<std::string> lggBeamMaps::getColorsFileNames()
{
std::vector<std::string> names;
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beamsColors", ""));
bool found = true;
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
if(found)
{
name=name.erase(name.length()-4);
// bugfix for SL-46920: preventing filenames that break stuff.
char * curl_str = curl_unescape(name.c_str(), name.size());
std::string unescaped_name(curl_str);
curl_free(curl_str);
curl_str = NULL;
names.push_back(name);
//LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
//loadPreset(unescaped_name,FALSE);
}
}
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors", ""));
found = true;
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
if(found)
{
name=name.erase(name.length()-4);
// bugfix for SL-46920: preventing filenames that break stuff.
char * curl_str = curl_unescape(name.c_str(), name.size());
std::string unescaped_name(curl_str);
curl_free(curl_str);
curl_str = NULL;
names.push_back(name);
//LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
//loadPreset(unescaped_name,FALSE);
}
}
return names;
}
void lggBeamMaps::stopBeamChat()
{
if(gSavedSettings.getBOOL("PhoenixParticleChat"))
{
if(sPartsNow != FALSE)
{
sPartsNow = FALSE;
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ChatFromViewer);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_ChatData);
msg->addStringFast(_PREHASH_Message, "stop");
msg->addU8Fast(_PREHASH_Type, 0);
msg->addS32("Channel", 9000);
gAgent.sendReliableMessage();
sBeamLastAt = LLVector3d::zero;
}
}
}
void lggBeamMaps::updateBeamChat(LLVector3d currentPos)
{
if(gSavedSettings.getBOOL("PhoenixParticleChat"))
{
if(sPartsNow != TRUE)
{
sPartsNow = TRUE;
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ChatFromViewer);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_ChatData);
msg->addStringFast(_PREHASH_Message, "start");
msg->addU8Fast(_PREHASH_Type, 0);
msg->addS32("Channel", 9000);
gAgent.sendReliableMessage();
}
//LLVector3d a = sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal();
//if(a.length > 2)
if( (sBeamLastAt-currentPos).length() > .2)
//if(sBeamLastAt!=gAgent.mPointAt->getPointAtPosGlobal())
{
sBeamLastAt = currentPos;
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_ChatFromViewer);
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_ChatData);
msg->addStringFast(_PREHASH_Message, llformat("<%.6f, %.6f, %.6f>",(F32)(sBeamLastAt.mdV[VX]),(F32)(sBeamLastAt.mdV[VY]),(F32)(sBeamLastAt.mdV[VZ])));
msg->addU8Fast(_PREHASH_Type, 0);
msg->addS32("Channel", 9000); // *TODO: make configurable
gAgent.sendReliableMessage();
}
}
}

View File

@ -0,0 +1,72 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back) All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "llhudeffecttrail.h"
#include "llviewerprecompiledheaders.h"
#include "lggbeamscolors.h"
#include "llframetimer.h"
class lggBeamData
{
public:
LLVector3d p;
LLColor4U c;
};
class lggBeamMaps
{
public:
lggBeamMaps():lastFileName(""),scale(0.0f),duration(0.25f),sPartsNow(FALSE),sBeamLastAt(LLVector3d::zero){}
~lggBeamMaps() {}
public:
F32 setUpAndGetDuration();
void fireCurrentBeams(LLPointer<LLHUDEffectSpiral>, LLColor4U rgb);
void forceUpdate();
static LLColor4U beamColorFromData(lggBeamsColors data);
LLColor4U getCurrentColor(LLColor4U agentColor);
std::vector<std::string> getFileNames();
std::vector<std::string> getColorsFileNames();
void stopBeamChat();
void updateBeamChat(LLVector3d currentPos);
private:
LLSD getPic(std::string filename);
std::string lastFileName;
std::string lastColorFileName;
BOOL sPartsNow;
LLVector3d sBeamLastAt;
lggBeamsColors lastColorsData;
F32 duration;
F32 scale;
std::vector<lggBeamData> dots;
};
extern lggBeamMaps gLggBeamMaps;

View File

@ -0,0 +1,78 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back). All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
////////////////////////////////////////////////////
//////////////DATA TYPE/////////////////////////////
#include "llviewerprecompiledheaders.h"
#include "lggbeamscolors.h"
lggBeamsColors lggBeamsColors::fromLLSD(LLSD inputData)
{
lggBeamsColors toReturn;
if(inputData.has("startHue")) toReturn.startHue = (F32)inputData["startHue"].asReal();
if(inputData.has("endHue")) toReturn.endHue = (F32)inputData["endHue"].asReal();
if(inputData.has("rotateSpeed")) toReturn.rotateSpeed = (F32)inputData["rotateSpeed"].asReal();
return toReturn;
}
LLSD lggBeamsColors::toLLSD()
{
LLSD out;
out["startHue"]=startHue;
out["endHue"]=endHue;
out["rotateSpeed"]=rotateSpeed;
return out;
}
std::string lggBeamsColors::toString()
{
return llformat("Start Hue %d\nEnd Hue is %d\nRotate Speed is %d",
startHue,endHue,rotateSpeed
);
}
lggBeamsColors::lggBeamsColors(F32 istartHue, F32 iendHue, F32 irotateSpeed):
startHue(istartHue),endHue(iendHue),rotateSpeed(irotateSpeed)
{
}
lggBeamsColors::lggBeamsColors():
startHue(0.0f),endHue(360.0f),rotateSpeed(1.0f)
{
}
lggBeamsColors::~lggBeamsColors()
{
}

View File

@ -0,0 +1,61 @@
/* Copyright (c) 2009
*
* Greg Hendrickson (LordGregGreg Back). All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. Neither the name Modular Systems nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef LGGBEAMCOLORDATA
#define LGGBEAMCOLORDATA
#include "llviewerprecompiledheaders.h"
#include "llfile.h"
#include "llsdserialize.h"
class lggBeamsColors
{
public:
lggBeamsColors(
F32 istartHue,
F32 iendHue,
F32 irotateSpeed);
lggBeamsColors();
~lggBeamsColors();
F32 startHue;
F32 endHue;
F32 rotateSpeed;
public:
LLSD toLLSD();
static lggBeamsColors fromLLSD(LLSD inputData);
std::string toString();
// List sorted by name.
};
#endif

View File

@ -480,6 +480,16 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
L"Compressed Images (*.j2c)\0*.j2c\0" \
L"\0";
break;
case FFSAVE_BEAM:
if (filename.empty())
{
wcsncpy( mFilesW,L"untitled.xml", FILENAME_BUFFER_SIZE); /*Flawfinder: ignore*/
}
mOFN.lpstrDefExt = L"xml";
mOFN.lpstrFilter =
L"XML File (*.xml)\0*.xml\0" \
L"\0";
break;
default:
return FALSE;
}

View File

@ -101,6 +101,7 @@ public:
FFSAVE_J2C = 12,
FFSAVE_PNG = 13,
FFSAVE_JPEG = 14,
FFSAVE_BEAM = 15,
};
// open the dialog. This is a modal operation

View File

@ -379,6 +379,13 @@ bool idle_startup()
gViewerWindow->showCursor();
gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT);
std::string beamsFolder(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beams",""));
LLFile::mkdir(beamsFolder.c_str());
std::string beamsColorsFolder(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors",""));
LLFile::mkdir(beamsColorsFolder.c_str());
/////////////////////////////////////////////////
//
// Initialize stuff that doesn't need data from simulators

View File

@ -34,6 +34,8 @@
#include "ao.h" // ## Zi: Animation Overrider
#include "kvfloaterflickrauth.h"
#include "kvfloaterflickrupload.h"
#include "lggbeamcolormapfloater.h"
#include "lggbeammapfloater.h"
#include "llcompilequeue.h"
#include "llcallfloater.h"
#include "llfloaterabout.h"
@ -117,7 +119,7 @@
#include "llnearbychat.h"
#include "llpanelblockedlist.h"
#include "llpanelclassified.h"
//-TT - Patch : ShowGroupFloaters
//-TT - Patch : ShowGroupFloaters
#include "llpanelgroup.h"
//-TT
// [SL:KB] - Patch : UI-ProfileGroupFloater
@ -182,8 +184,8 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("env_windlight", "floater_windlight_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWindLight>);
LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>);
//-TT - Patch : ShowGroupFloaters
LLFloaterReg::add("floater_group_view", "floater_group_view.xml",&LLFloaterReg::build<LLFloaterGroupView>);
//-TT - Patch : ShowGroupFloaters
LLFloaterReg::add("floater_group_view", "floater_group_view.xml",&LLFloaterReg::build<LLFloaterGroupView>);
//-TT
// [SL:KB] - Patch : UI-ProfileGroupFloater | Checked: 2010-09-08 (Catznip-2.1.2c) | Added: Catznip-2.1.2c
LLFloaterReg::add("floater_profile_view", "floater_profile_view.xml",&LLFloaterReg::build<LLFloaterProfileView>);
@ -215,7 +217,10 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>);
LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
LLFloaterReg::add("lgg_beamcolormap", "floater_beamcolor.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<lggBeamColorMapFloater>);
LLFloaterReg::add("lgg_beamshape", "floater_beamshape.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<lggBeamMapFloater>);
LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>);
LLFloaterReg::add("media_browser", "floater_media_browser.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaBrowser>);
LLFloaterReg::add("media_lists", "floater_media_lists.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FloaterMediaLists>);

View File

@ -67,6 +67,7 @@
//-TT Client LSL Bridge
#include "fslslbridge.h"
//-TT
#include "lggbeammaps.h"
#if LL_MSVC
// disable boost::lexical_cast warning
@ -1015,10 +1016,13 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
//virtual
void LLVOAvatarSelf::idleUpdateTractorBeam()
{
LLColor4U rgb = gLggBeamMaps.getCurrentColor(LLColor4U(gAgent.getEffectColor()));
// This is only done for yourself (maybe it should be in the agent?)
if (!needsRenderBeam() || !mIsBuilt)
{
mBeam = NULL;
gLggBeamMaps.stopBeamChat();
}
else if (!mBeam || mBeam->isDead())
{
@ -1037,6 +1041,7 @@ void LLVOAvatarSelf::idleUpdateTractorBeam()
{
// get point from pointat effect
mBeam->setPositionGlobal(gAgentCamera.mPointAt->getPointAtPosGlobal());
gLggBeamMaps.updateBeamChat(gAgentCamera.mPointAt->getPointAtPosGlobal());
mBeam->triggerLocal();
}
else if (selection->getFirstRootObject() &&
@ -1067,11 +1072,12 @@ void LLVOAvatarSelf::idleUpdateTractorBeam()
}
}
if (mBeamTimer.getElapsedTimeF32() > 0.25f)
if (mBeamTimer.getElapsedTimeF32() > gLggBeamMaps.setUpAndGetDuration())
{
mBeam->setColor(LLColor4U(gAgent.getEffectColor()));
mBeam->setNeedsSendToSim(TRUE);
mBeamTimer.reset();
gLggBeamMaps.fireCurrentBeams(mBeam,rgb );
}
}
}

View File

@ -1,7 +1,12 @@
/*${License blank}*/
#include "llviewerprecompiledheaders.h"
#include "panel_prefs_firestorm.h"
#include "llcombobox.h"
#include "llviewercontrol.h"
#include "llfloaterreg.h"
#include "lggbeammaps.h"
#include "lggbeammapfloater.h"
#include "lggbeamcolormapfloater.h"
static LLRegisterPanelClassWrapper<PanelPreferenceFirestorm> t_pref_fs("panel_preference_firestorm");
@ -9,9 +14,22 @@ PanelPreferenceFirestorm::PanelPreferenceFirestorm() : LLPanelPreference(), m_ca
{
}
BOOL PanelPreferenceFirestorm::postBuild()
{
// LGG's Color Beams
refreshBeamLists();
// Beam Colors
getChild<LLUICtrl>("BeamColor_new")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::onBeamColor_new, this));
getChild<LLUICtrl>("BeamColor_refresh")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::refreshBeamLists, this));
getChild<LLUICtrl>("BeamColor_delete")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::onBeamColorDelete, this));
// Beam Shapes
getChild<LLUICtrl>("custom_beam_btn")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::onBeam_new, this));
getChild<LLUICtrl>("refresh_beams")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::refreshBeamLists, this));
getChild<LLUICtrl>("delete_beam")->setCommitCallback(boost::bind(&PanelPreferenceFirestorm::onBeamDelete, this));
// m_calcLineEditor = getChild<LLLineEditor>("PhoenixCmdLineCalc");
m_acLineEditor = getChild<LLLineEditor>("PhoenixCmdLineAutocorrect");
m_tp2LineEditor = getChild<LLLineEditor>("PhoenixCmdLineTP2");
@ -53,3 +71,93 @@ void PanelPreferenceFirestorm::apply()
void PanelPreferenceFirestorm::cancel()
{
}
void PanelPreferenceFirestorm::refreshBeamLists()
{
LLComboBox* comboBox = getChild<LLComboBox>("PhoenixBeamShape_combo");
if(comboBox != NULL)
{
comboBox->removeall();
comboBox->add("===OFF===");
std::vector<std::string> names = gLggBeamMaps.getFileNames();
for(int i=0; i<(int)names.size(); i++)
{
comboBox->add(names[i]);
}
comboBox->setSimple(gSavedSettings.getString("PhoenixBeamShape"));
}
comboBox = getChild<LLComboBox>("BeamColor_combo");
if(comboBox != NULL)
{
comboBox->removeall();
comboBox->add("===OFF===");
std::vector<std::string> names = gLggBeamMaps.getColorsFileNames();
for(int i=0; i<(int)names.size(); i++)
{
comboBox->add(names[i]);
}
comboBox->setSimple(gSavedSettings.getString("PhoenixBeamColorFile"));
}
}
void PanelPreferenceFirestorm::onBeamColor_new()
{
lggBeamColorMapFloater* colorMapFloater = (lggBeamColorMapFloater*)LLFloaterReg::showInstance("lgg_beamcolormap");
colorMapFloater->setData(this);
}
void PanelPreferenceFirestorm::onBeam_new()
{
lggBeamMapFloater* beamMapFloater = (lggBeamMapFloater*)LLFloaterReg::showInstance("lgg_beamshape");
beamMapFloater->setData(this);
}
void PanelPreferenceFirestorm::onBeamColorDelete()
{
LLComboBox* comboBox = getChild<LLComboBox>("BeamColor_combo");
if(comboBox != NULL)
{
std::string filename = comboBox->getValue().asString()+".xml";
std::string path_name1(gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS , "beamsColors", filename));
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "beamsColors", filename));
if(gDirUtilp->fileExists(path_name1))
{
LLFile::remove(path_name1);
gSavedSettings.setString("PhoenixBeamColorFile","===OFF===");
}
if(gDirUtilp->fileExists(path_name2))
{
LLFile::remove(path_name2);
gSavedSettings.setString("PhoenixBeamColorFile","===OFF===");
}
}
refreshBeamLists();
}
void PanelPreferenceFirestorm::onBeamDelete()
{
LLComboBox* comboBox = getChild<LLComboBox>("PhoenixBeamShape_combo");
if(comboBox != NULL)
{
std::string filename = comboBox->getValue().asString()+".xml";
std::string path_name1(gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS , "beams", filename));
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "beams", filename));
if(gDirUtilp->fileExists(path_name1))
{
LLFile::remove(path_name1);
gSavedSettings.setString("PhoenixBeamShape","===OFF===");
}
if(gDirUtilp->fileExists(path_name2))
{
LLFile::remove(path_name2);
gSavedSettings.setString("PhoenixBeamShape","===OFF===");
}
}
refreshBeamLists();
}

View File

@ -13,6 +13,12 @@ public:
/*virtual*/ void apply();
/*virtual*/ void cancel();
void refreshBeamLists();
void onBeamColor_new();
void onBeam_new();
void onBeamColorDelete();
void onBeamDelete();
protected:
LLLineEditor* m_calcLineEditor;
LLLineEditor* m_acLineEditor;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater border="false" can_close="true" can_minimize="true" bottom="400" left="300" can_resize="false" height="250" name="BeamColor" title="Beam Color Rotate" width="410">
<panel name="BeamColor_Picker" left="5" width="400" height="80" bottom_delta="90" border="true" mouse_opaque="true" bevel_style="in" background_visible="false" background_opaque="true" follows="left|top" bg_opaque_color="1,1,1,0" bg_alpha_color="white" can_resize="false">
</panel>
<text font="SansSerifSmall" name="beamcolor_text" follows="left|top" left="15" bottom_delta="50" height="40">
Please use the mouse to select the colors for which
you wish your beam color to start and stop on.
Left Click Changes Start Position.
Right Click Changes End Position.</text>
<color_swatch border_color="0.45098, 0.517647, 0.607843, 1" bottom="-50" can_apply_immediately="true" color="1, 1, 1, 1" follows="left|top" height="100" label="" left="300" mouse_opaque="true" name="BeamColor_Preview" tool_tip="Click to open Color Picker" width="100" />
<text font="SansSerifSmall" name="beamcolor_text2" follows="left|top" left_delta="30" bottom_delta="0">Preview</text>
<slider bottom="-50" left="15" name="BeamColor_Speed" control_name="BeamColor_Speed" decimal_digits="0" enabled="true" follows="left|top" height="18"
increment="1" initial_val="100" label="Rotation Speed:" label_width="85" max_val="300" min_val="0" mouse_opaque="true"
show_text="true" width="280" auto_resize="false" tool_tip="Controls the speed of the color cycle"/>
<button bottom_delta="30" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Save" left="70"
mouse_opaque="true" name="BeamColor_Save" scale_image="true" width="85" />
<button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Load" left_delta="90"
mouse_opaque="true" name="BeamColor_Load" scale_image="true" width="85" />
<button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Cancel" left_delta="100"
mouse_opaque="true" name="BeamColor_Cancel" scale_image="true" width="85" />
</floater>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater border="false" can_close="true" can_minimize="true" bottom="400" left="300"
can_resize="false" height="407" name="BeamCreator" title="Beam Shape Creator" width="410">
<text font="SansSerifSmall" name="beamcreator_text" follows="left|top" left="10" bottom="-350" height="50" width="300">
To create a new beam, left click the panel below to
define a beam ray of the selected color, or right click to
remove a ray. Press the Save button when done.
</text>
<color_swatch border_color="0.45098, 0.517647, 0.607843, 1" bottom_delta="10"
can_apply_immediately="true" color="1, 1, 1, 1" follows="left|top"
height="60" label="Beam Color" left_delta="325" mouse_opaque="true"
name="beam_color_swatch" tool_tip="Click to open Color Picker to change dot color" width="65" />
<panel
name="beamshape_draw"
left="5"
width="400"
height="300"
bottom_delta="300"
border="true"
mouse_opaque="true"
bevel_style="in"
background_visible="false"
background_opaque="true"
follows="left|top"
bg_opaque_color="1,1,1,0"
bg_alpha_color="white"
can_resize="false">
</panel>
<button bottom_delta="30" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Save" left_delta="10"
mouse_opaque="true" name="beamshape_save" scale_image="true" width="85" />
<button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Load" left_delta="90"
mouse_opaque="true" name="beamshape_load" scale_image="true" width="85" />
<button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
halign="center" height="22" label="Clear" left_delta="100"
mouse_opaque="true" name="beamshape_clear" scale_image="true" width="85" />
<!--
-->
</floater>

View File

@ -483,6 +483,208 @@
top_pad="0"
height="20"
width="350" />
<!-- LGG Color Beams -->
<text font="SansSerifSmall" name="BeamPrefs" follows="left|top" left="15" bottom_delta="25">
Selection beam particle effects
</text>
<view_border bevel_style="none" border_thickness="1" top_delta="15" follows="top|left" height="0" left="15" name="EmDivisor" width="490"/>
<button
name="BeamColor_delete"
label="Delete"
halign="center"
tool_tip="Remove this preset"
left="15"
top_delta="10"
width="55"
height="20"
font="SansSerifSmall"
follows="left|top" />
<combo_box
allow_text_entry="false"
top_delta="0"
left_delta="60"
follows="left|top"
height="20"
max_chars="20"
mouse_opaque="true"
name="BeamColor_combo"
width="170"
control_name="PhoenixBeamColorFile"
tool_tip="Select the color preset for the selection beam"/>
<button
name="BeamColor_new"
label="Create New"
tool_tip="Create a new color preset"
left="15"
bottom_delta="25"
width="75"
height="20"
font="SansSerifSmall"
follows="left|top"/>
<button
name="BeamColor_refresh"
label="Refresh List"
tool_tip="Refresh the preset list"
left="15"
bottom_delta="25"
width="75"
height="20"
font="SansSerifSmall"
follows="left|top" />
<button
left="100"
top_delta="-25"
follows="left|top"
width="130"
height="80"
name="PhoenixBeamPrev_rainbow"
label=""
scale_image="true"
image_selected="beam_rainbow.png"
image_unselected="beam_rainbow.png"
image_hover_selected="beam_rainbow.png"
image_hover_unselected="beam_rainbow.png" />
<slider
bottom_delta="25"
left="15"
name="PhoenixMaxBeamsPerSecond"
control_name="PhoenixMaxBeamsPerSecond"
decimal_digits="0"
enabled="true"
follows="left|top"
height="18"
increment="1"
initial_val="4"
label="Beam updates/sec:"
label_width="100"
max_val="200"
min_val="4"
mouse_opaque="true"
show_text="true"
width="250"
auto_resize="false"
tool_tip="How many beam updates to send in a second. Default 40" />
<check_box
bottom_delta="18"
enabled="true"
follows="left|top"
font="SansSerifSmall"
height="16"
initial_value="true"
label="Enable selection beam"
left="15"
mouse_opaque="true"
name="SLPartBeam"
radio_style="false"
width="250"
control_name="ShowSelectionBeam" />
<check_box
bottom_delta="18"
enabled="true"
follows="left|top"
font="SansSerifSmall"
height="16"
initial_value="true"
label="SL Particle Chat"
left="15"
mouse_opaque="true"
name="PhoenixParticleChat"
radio_style="false"
width="250"
control_name="PhoenixParticleChat" />
<view_border bevel_style="none" border_thickness="1" top_delta="-160" follows="top|left" height="180" left="260" name="EmDivisor2" width="0"/>
<combo_box
allow_text_entry="false"
bottom_delta="-150"
left="275"
follows="left|top"
height="20"
max_chars="20"
mouse_opaque="true"
name="PhoenixBeamShape_combo"
width="170"
control_name="PhoenixBeamShape"
tool_tip="Select the shape for the particle beam" />
<button
name="delete_beam"
label="Delete"
halign="center"
tool_tip="Remove this beam"
left_delta="175"
bottom_delta="0"
width="55"
height="20"
font="SansSerifSmall"
follows="left|top" />
<button
name="custom_beam_btn"
label="Create New"
tool_tip="Customize the beam shape"
left_delta="-20"
bottom_delta="25"
width="75"
height="20"
font="SansSerifSmall"
follows="left|top"/>
<button
name="refresh_beams"
label="Refresh List"
tool_tip="Refresh the beam list"
left_delta="0"
bottom_delta="25"
width="75"
height="20"
font="SansSerifSmall"
follows="left|top" />
<button
left="290"
top_delta="-25"
follows="left|top"
width="130"
height="80"
name="PhoenixBeamPrev_Phoenix"
label=""
scale_image="true"
image_selected="beam_phoenix.png"
image_unselected="beam_phoenix.png"
image_hover_selected="beam_phoenix.png"
image_hover_unselected="beam_phoenix.png" />
<slider
bottom_delta="25"
left_delta="-15"
name="PhoenixBeamShapeScale"
control_name="PhoenixBeamShapeScale"
decimal_digits="1"
enabled="true"
follows="left|top"
height="18"
increment="0.1"
initial_val="1"
label="Scale:"
label_width="35"
max_val="4"
min_val="0.1"
mouse_opaque="true"
show_text="true"
width="150"
auto_resize="false"
tool_tip="Change the scale of the shape used for the Phoenix Shaped Beam" />
</panel>