diff options
author | Jacek Antonelli | 2008-08-15 23:45:34 -0500 |
---|---|---|
committer | Jacek Antonelli | 2008-08-15 23:45:34 -0500 |
commit | cd17687f01420952712a500107e0f93e7ab8d5f8 (patch) | |
tree | ce48c2b706f2c1176290e39fb555fbdf6648ce01 /linden/indra/llcharacter | |
parent | Second Life viewer sources 1.19.0.5 (diff) | |
download | meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.zip meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.gz meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.bz2 meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.xz |
Second Life viewer sources 1.19.1.0
Diffstat (limited to 'linden/indra/llcharacter')
-rw-r--r-- | linden/indra/llcharacter/llcharacter.cpp | 26 | ||||
-rw-r--r-- | linden/indra/llcharacter/llcharacter.h | 5 | ||||
-rw-r--r-- | linden/indra/llcharacter/llcharacter_vc8.vcproj | 838 | ||||
-rw-r--r-- | linden/indra/llcharacter/llcharacter_vc9.vcproj | 840 | ||||
-rw-r--r-- | linden/indra/llcharacter/llkeyframemotion.cpp | 295 | ||||
-rw-r--r-- | linden/indra/llcharacter/llkeyframemotion.h | 11 | ||||
-rw-r--r-- | linden/indra/llcharacter/llkeyframemotionparam.cpp | 149 | ||||
-rw-r--r-- | linden/indra/llcharacter/llkeyframemotionparam.h | 16 | ||||
-rw-r--r-- | linden/indra/llcharacter/llmotioncontroller.cpp | 9 | ||||
-rw-r--r-- | linden/indra/llcharacter/llmotioncontroller.h | 2 | ||||
-rw-r--r-- | linden/indra/llcharacter/llpose.cpp | 23 | ||||
-rw-r--r-- | linden/indra/llcharacter/llpose.h | 2 | ||||
-rw-r--r-- | linden/indra/llcharacter/llstatemachine.h | 1 |
13 files changed, 1073 insertions, 1144 deletions
diff --git a/linden/indra/llcharacter/llcharacter.cpp b/linden/indra/llcharacter/llcharacter.cpp index af4c5aa..0339cf0 100644 --- a/linden/indra/llcharacter/llcharacter.cpp +++ b/linden/indra/llcharacter/llcharacter.cpp | |||
@@ -241,33 +241,15 @@ void LLCharacter::dumpCharacter( LLJoint* joint ) | |||
241 | //----------------------------------------------------------------------------- | 241 | //----------------------------------------------------------------------------- |
242 | void LLCharacter::setAnimationData(std::string name, void *data) | 242 | void LLCharacter::setAnimationData(std::string name, void *data) |
243 | { | 243 | { |
244 | if(mAnimationData.getValue(name)) | 244 | mAnimationData[name] = data; |
245 | { | ||
246 | *mAnimationData[name] = data; | ||
247 | } | ||
248 | else | ||
249 | { | ||
250 | mAnimationData.addToHead(name, data); | ||
251 | } | ||
252 | } | 245 | } |
253 | 246 | ||
254 | //----------------------------------------------------------------------------- | 247 | //----------------------------------------------------------------------------- |
255 | // getAnimationData() | 248 | // getAnimationData() |
256 | //----------------------------------------------------------------------------- | 249 | //----------------------------------------------------------------------------- |
257 | void * LLCharacter::getAnimationData(std::string name) | 250 | void* LLCharacter::getAnimationData(std::string name) |
258 | { | 251 | { |
259 | void **result = mAnimationData.getValue(name); | 252 | return get_if_there(mAnimationData, name, (void*)NULL); |
260 | void *return_value; // Necessary to suppress VC6 warning. JC | ||
261 | if (!result) | ||
262 | { | ||
263 | return_value = NULL; | ||
264 | } | ||
265 | else | ||
266 | { | ||
267 | return_value = *result; | ||
268 | } | ||
269 | |||
270 | return return_value; | ||
271 | } | 253 | } |
272 | 254 | ||
273 | //----------------------------------------------------------------------------- | 255 | //----------------------------------------------------------------------------- |
@@ -275,7 +257,7 @@ void * LLCharacter::getAnimationData(std::string name) | |||
275 | //----------------------------------------------------------------------------- | 257 | //----------------------------------------------------------------------------- |
276 | void LLCharacter::removeAnimationData(std::string name) | 258 | void LLCharacter::removeAnimationData(std::string name) |
277 | { | 259 | { |
278 | mAnimationData.remove(name); | 260 | mAnimationData.erase(name); |
279 | } | 261 | } |
280 | 262 | ||
281 | //----------------------------------------------------------------------------- | 263 | //----------------------------------------------------------------------------- |
diff --git a/linden/indra/llcharacter/llcharacter.h b/linden/indra/llcharacter/llcharacter.h index 6699796..46faab1 100644 --- a/linden/indra/llcharacter/llcharacter.h +++ b/linden/indra/llcharacter/llcharacter.h | |||
@@ -39,9 +39,7 @@ | |||
39 | 39 | ||
40 | #include "lljoint.h" | 40 | #include "lljoint.h" |
41 | #include "llmotioncontroller.h" | 41 | #include "llmotioncontroller.h" |
42 | #include "llassoclist.h" | ||
43 | #include "llvisualparam.h" | 42 | #include "llvisualparam.h" |
44 | #include "linked_lists.h" | ||
45 | #include "string_table.h" | 43 | #include "string_table.h" |
46 | #include "llmemory.h" | 44 | #include "llmemory.h" |
47 | #include "llthread.h" | 45 | #include "llthread.h" |
@@ -255,7 +253,8 @@ public: | |||
255 | protected: | 253 | protected: |
256 | LLMotionController mMotionController; | 254 | LLMotionController mMotionController; |
257 | 255 | ||
258 | LLAssocList<std::string, void *> mAnimationData; | 256 | typedef std::map<std::string, void *> animation_data_map_t; |
257 | animation_data_map_t mAnimationData; | ||
259 | 258 | ||
260 | F32 mPreferredPelvisHeight; | 259 | F32 mPreferredPelvisHeight; |
261 | ESex mSex; | 260 | ESex mSex; |
diff --git a/linden/indra/llcharacter/llcharacter_vc8.vcproj b/linden/indra/llcharacter/llcharacter_vc8.vcproj index 00ceb88..fdad9c2 100644 --- a/linden/indra/llcharacter/llcharacter_vc8.vcproj +++ b/linden/indra/llcharacter/llcharacter_vc8.vcproj | |||
@@ -1,419 +1,419 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | 1 | <?xml version="1.0" encoding="Windows-1252"?> |
2 | <VisualStudioProject | 2 | <VisualStudioProject |
3 | ProjectType="Visual C++" | 3 | ProjectType="Visual C++" |
4 | Version="8.00" | 4 | Version="8.00" |
5 | Name="llcharacter" | 5 | Name="llcharacter" |
6 | ProjectGUID="{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}" | 6 | ProjectGUID="{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}" |
7 | RootNamespace="llcharacter" | 7 | RootNamespace="llcharacter" |
8 | Keyword="Win32Proj" | 8 | Keyword="Win32Proj" |
9 | > | 9 | > |
10 | <Platforms> | 10 | <Platforms> |
11 | <Platform | 11 | <Platform |
12 | Name="Win32" | 12 | Name="Win32" |
13 | /> | 13 | /> |
14 | </Platforms> | 14 | </Platforms> |
15 | <ToolFiles> | 15 | <ToolFiles> |
16 | </ToolFiles> | 16 | </ToolFiles> |
17 | <Configurations> | 17 | <Configurations> |
18 | <Configuration | 18 | <Configuration |
19 | Name="Debug|Win32" | 19 | Name="Debug|Win32" |
20 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 20 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
21 | IntermediateDirectory="Debug" | 21 | IntermediateDirectory="Debug" |
22 | ConfigurationType="4" | 22 | ConfigurationType="4" |
23 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 23 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
24 | CharacterSet="1" | 24 | CharacterSet="1" |
25 | > | 25 | > |
26 | <Tool | 26 | <Tool |
27 | Name="VCPreBuildEventTool" | 27 | Name="VCPreBuildEventTool" |
28 | /> | 28 | /> |
29 | <Tool | 29 | <Tool |
30 | Name="VCCustomBuildTool" | 30 | Name="VCCustomBuildTool" |
31 | /> | 31 | /> |
32 | <Tool | 32 | <Tool |
33 | Name="VCXMLDataGeneratorTool" | 33 | Name="VCXMLDataGeneratorTool" |
34 | /> | 34 | /> |
35 | <Tool | 35 | <Tool |
36 | Name="VCWebServiceProxyGeneratorTool" | 36 | Name="VCWebServiceProxyGeneratorTool" |
37 | /> | 37 | /> |
38 | <Tool | 38 | <Tool |
39 | Name="VCMIDLTool" | 39 | Name="VCMIDLTool" |
40 | /> | 40 | /> |
41 | <Tool | 41 | <Tool |
42 | Name="VCCLCompilerTool" | 42 | Name="VCCLCompilerTool" |
43 | Optimization="0" | 43 | Optimization="0" |
44 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 44 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
45 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" | 45 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" |
46 | MinimalRebuild="true" | 46 | MinimalRebuild="true" |
47 | BasicRuntimeChecks="3" | 47 | BasicRuntimeChecks="3" |
48 | RuntimeLibrary="1" | 48 | RuntimeLibrary="1" |
49 | StructMemberAlignment="4" | 49 | StructMemberAlignment="4" |
50 | TreatWChar_tAsBuiltInType="false" | 50 | TreatWChar_tAsBuiltInType="false" |
51 | ForceConformanceInForLoopScope="true" | 51 | ForceConformanceInForLoopScope="true" |
52 | UsePrecompiledHeader="0" | 52 | UsePrecompiledHeader="0" |
53 | WarningLevel="3" | 53 | WarningLevel="3" |
54 | WarnAsError="true" | 54 | WarnAsError="true" |
55 | Detect64BitPortabilityProblems="false" | 55 | Detect64BitPortabilityProblems="false" |
56 | DebugInformationFormat="4" | 56 | DebugInformationFormat="4" |
57 | /> | 57 | /> |
58 | <Tool | 58 | <Tool |
59 | Name="VCManagedResourceCompilerTool" | 59 | Name="VCManagedResourceCompilerTool" |
60 | /> | 60 | /> |
61 | <Tool | 61 | <Tool |
62 | Name="VCResourceCompilerTool" | 62 | Name="VCResourceCompilerTool" |
63 | /> | 63 | /> |
64 | <Tool | 64 | <Tool |
65 | Name="VCPreLinkEventTool" | 65 | Name="VCPreLinkEventTool" |
66 | /> | 66 | /> |
67 | <Tool | 67 | <Tool |
68 | Name="VCLibrarianTool" | 68 | Name="VCLibrarianTool" |
69 | OutputFile="$(OutDir)/llcharacter.lib" | 69 | OutputFile="$(OutDir)/llcharacter.lib" |
70 | /> | 70 | /> |
71 | <Tool | 71 | <Tool |
72 | Name="VCALinkTool" | 72 | Name="VCALinkTool" |
73 | /> | 73 | /> |
74 | <Tool | 74 | <Tool |
75 | Name="VCXDCMakeTool" | 75 | Name="VCXDCMakeTool" |
76 | /> | 76 | /> |
77 | <Tool | 77 | <Tool |
78 | Name="VCBscMakeTool" | 78 | Name="VCBscMakeTool" |
79 | /> | 79 | /> |
80 | <Tool | 80 | <Tool |
81 | Name="VCFxCopTool" | 81 | Name="VCFxCopTool" |
82 | /> | 82 | /> |
83 | <Tool | 83 | <Tool |
84 | Name="VCPostBuildEventTool" | 84 | Name="VCPostBuildEventTool" |
85 | /> | 85 | /> |
86 | </Configuration> | 86 | </Configuration> |
87 | <Configuration | 87 | <Configuration |
88 | Name="Release|Win32" | 88 | Name="Release|Win32" |
89 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 89 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
90 | IntermediateDirectory="Release" | 90 | IntermediateDirectory="Release" |
91 | ConfigurationType="4" | 91 | ConfigurationType="4" |
92 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 92 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
93 | CharacterSet="1" | 93 | CharacterSet="1" |
94 | > | 94 | > |
95 | <Tool | 95 | <Tool |
96 | Name="VCPreBuildEventTool" | 96 | Name="VCPreBuildEventTool" |
97 | /> | 97 | /> |
98 | <Tool | 98 | <Tool |
99 | Name="VCCustomBuildTool" | 99 | Name="VCCustomBuildTool" |
100 | /> | 100 | /> |
101 | <Tool | 101 | <Tool |
102 | Name="VCXMLDataGeneratorTool" | 102 | Name="VCXMLDataGeneratorTool" |
103 | /> | 103 | /> |
104 | <Tool | 104 | <Tool |
105 | Name="VCWebServiceProxyGeneratorTool" | 105 | Name="VCWebServiceProxyGeneratorTool" |
106 | /> | 106 | /> |
107 | <Tool | 107 | <Tool |
108 | Name="VCMIDLTool" | 108 | Name="VCMIDLTool" |
109 | /> | 109 | /> |
110 | <Tool | 110 | <Tool |
111 | Name="VCCLCompilerTool" | 111 | Name="VCCLCompilerTool" |
112 | AdditionalOptions="/Oy-" | 112 | AdditionalOptions="/Oy-" |
113 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 113 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
114 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | 114 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" |
115 | RuntimeLibrary="0" | 115 | RuntimeLibrary="0" |
116 | StructMemberAlignment="0" | 116 | StructMemberAlignment="0" |
117 | TreatWChar_tAsBuiltInType="false" | 117 | TreatWChar_tAsBuiltInType="false" |
118 | ForceConformanceInForLoopScope="true" | 118 | ForceConformanceInForLoopScope="true" |
119 | UsePrecompiledHeader="0" | 119 | UsePrecompiledHeader="0" |
120 | WarningLevel="3" | 120 | WarningLevel="3" |
121 | WarnAsError="true" | 121 | WarnAsError="true" |
122 | Detect64BitPortabilityProblems="false" | 122 | Detect64BitPortabilityProblems="false" |
123 | DebugInformationFormat="3" | 123 | DebugInformationFormat="3" |
124 | /> | 124 | /> |
125 | <Tool | 125 | <Tool |
126 | Name="VCManagedResourceCompilerTool" | 126 | Name="VCManagedResourceCompilerTool" |
127 | /> | 127 | /> |
128 | <Tool | 128 | <Tool |
129 | Name="VCResourceCompilerTool" | 129 | Name="VCResourceCompilerTool" |
130 | /> | 130 | /> |
131 | <Tool | 131 | <Tool |
132 | Name="VCPreLinkEventTool" | 132 | Name="VCPreLinkEventTool" |
133 | /> | 133 | /> |
134 | <Tool | 134 | <Tool |
135 | Name="VCLibrarianTool" | 135 | Name="VCLibrarianTool" |
136 | OutputFile="$(OutDir)/llcharacter.lib" | 136 | OutputFile="$(OutDir)/llcharacter.lib" |
137 | /> | 137 | /> |
138 | <Tool | 138 | <Tool |
139 | Name="VCALinkTool" | 139 | Name="VCALinkTool" |
140 | /> | 140 | /> |
141 | <Tool | 141 | <Tool |
142 | Name="VCXDCMakeTool" | 142 | Name="VCXDCMakeTool" |
143 | /> | 143 | /> |
144 | <Tool | 144 | <Tool |
145 | Name="VCBscMakeTool" | 145 | Name="VCBscMakeTool" |
146 | /> | 146 | /> |
147 | <Tool | 147 | <Tool |
148 | Name="VCFxCopTool" | 148 | Name="VCFxCopTool" |
149 | /> | 149 | /> |
150 | <Tool | 150 | <Tool |
151 | Name="VCPostBuildEventTool" | 151 | Name="VCPostBuildEventTool" |
152 | /> | 152 | /> |
153 | </Configuration> | 153 | </Configuration> |
154 | <Configuration | 154 | <Configuration |
155 | Name="ReleaseNoOpt|Win32" | 155 | Name="ReleaseNoOpt|Win32" |
156 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 156 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
157 | IntermediateDirectory="$(ConfigurationName)" | 157 | IntermediateDirectory="$(ConfigurationName)" |
158 | ConfigurationType="4" | 158 | ConfigurationType="4" |
159 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 159 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
160 | CharacterSet="1" | 160 | CharacterSet="1" |
161 | > | 161 | > |
162 | <Tool | 162 | <Tool |
163 | Name="VCPreBuildEventTool" | 163 | Name="VCPreBuildEventTool" |
164 | /> | 164 | /> |
165 | <Tool | 165 | <Tool |
166 | Name="VCCustomBuildTool" | 166 | Name="VCCustomBuildTool" |
167 | /> | 167 | /> |
168 | <Tool | 168 | <Tool |
169 | Name="VCXMLDataGeneratorTool" | 169 | Name="VCXMLDataGeneratorTool" |
170 | /> | 170 | /> |
171 | <Tool | 171 | <Tool |
172 | Name="VCWebServiceProxyGeneratorTool" | 172 | Name="VCWebServiceProxyGeneratorTool" |
173 | /> | 173 | /> |
174 | <Tool | 174 | <Tool |
175 | Name="VCMIDLTool" | 175 | Name="VCMIDLTool" |
176 | /> | 176 | /> |
177 | <Tool | 177 | <Tool |
178 | Name="VCCLCompilerTool" | 178 | Name="VCCLCompilerTool" |
179 | AdditionalOptions="/Oy-" | 179 | AdditionalOptions="/Oy-" |
180 | Optimization="0" | 180 | Optimization="0" |
181 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 181 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
182 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | 182 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" |
183 | RuntimeLibrary="0" | 183 | RuntimeLibrary="0" |
184 | StructMemberAlignment="0" | 184 | StructMemberAlignment="0" |
185 | TreatWChar_tAsBuiltInType="false" | 185 | TreatWChar_tAsBuiltInType="false" |
186 | ForceConformanceInForLoopScope="true" | 186 | ForceConformanceInForLoopScope="true" |
187 | UsePrecompiledHeader="0" | 187 | UsePrecompiledHeader="0" |
188 | WarningLevel="3" | 188 | WarningLevel="3" |
189 | WarnAsError="true" | 189 | WarnAsError="true" |
190 | Detect64BitPortabilityProblems="false" | 190 | Detect64BitPortabilityProblems="false" |
191 | DebugInformationFormat="3" | 191 | DebugInformationFormat="3" |
192 | /> | 192 | /> |
193 | <Tool | 193 | <Tool |
194 | Name="VCManagedResourceCompilerTool" | 194 | Name="VCManagedResourceCompilerTool" |
195 | /> | 195 | /> |
196 | <Tool | 196 | <Tool |
197 | Name="VCResourceCompilerTool" | 197 | Name="VCResourceCompilerTool" |
198 | /> | 198 | /> |
199 | <Tool | 199 | <Tool |
200 | Name="VCPreLinkEventTool" | 200 | Name="VCPreLinkEventTool" |
201 | /> | 201 | /> |
202 | <Tool | 202 | <Tool |
203 | Name="VCLibrarianTool" | 203 | Name="VCLibrarianTool" |
204 | OutputFile="$(OutDir)/llcharacter.lib" | 204 | OutputFile="$(OutDir)/llcharacter.lib" |
205 | /> | 205 | /> |
206 | <Tool | 206 | <Tool |
207 | Name="VCALinkTool" | 207 | Name="VCALinkTool" |
208 | /> | 208 | /> |
209 | <Tool | 209 | <Tool |
210 | Name="VCXDCMakeTool" | 210 | Name="VCXDCMakeTool" |
211 | /> | 211 | /> |
212 | <Tool | 212 | <Tool |
213 | Name="VCBscMakeTool" | 213 | Name="VCBscMakeTool" |
214 | /> | 214 | /> |
215 | <Tool | 215 | <Tool |
216 | Name="VCFxCopTool" | 216 | Name="VCFxCopTool" |
217 | /> | 217 | /> |
218 | <Tool | 218 | <Tool |
219 | Name="VCPostBuildEventTool" | 219 | Name="VCPostBuildEventTool" |
220 | /> | 220 | /> |
221 | </Configuration> | 221 | </Configuration> |
222 | </Configurations> | 222 | </Configurations> |
223 | <References> | 223 | <References> |
224 | </References> | 224 | </References> |
225 | <Files> | 225 | <Files> |
226 | <Filter | 226 | <Filter |
227 | Name="Source Files" | 227 | Name="Source Files" |
228 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" | 228 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" |
229 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" | 229 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" |
230 | > | 230 | > |
231 | <File | 231 | <File |
232 | RelativePath=".\llanimationstates.cpp" | 232 | RelativePath=".\llanimationstates.cpp" |
233 | > | 233 | > |
234 | </File> | 234 | </File> |
235 | <File | 235 | <File |
236 | RelativePath=".\llbvhloader.cpp" | 236 | RelativePath=".\llbvhloader.cpp" |
237 | > | 237 | > |
238 | </File> | 238 | </File> |
239 | <File | 239 | <File |
240 | RelativePath=".\llcharacter.cpp" | 240 | RelativePath=".\llcharacter.cpp" |
241 | > | 241 | > |
242 | </File> | 242 | </File> |
243 | <File | 243 | <File |
244 | RelativePath=".\lleditingmotion.cpp" | 244 | RelativePath=".\lleditingmotion.cpp" |
245 | > | 245 | > |
246 | </File> | 246 | </File> |
247 | <File | 247 | <File |
248 | RelativePath=".\llgesture.cpp" | 248 | RelativePath=".\llgesture.cpp" |
249 | > | 249 | > |
250 | </File> | 250 | </File> |
251 | <File | 251 | <File |
252 | RelativePath=".\llhandmotion.cpp" | 252 | RelativePath=".\llhandmotion.cpp" |
253 | > | 253 | > |
254 | </File> | 254 | </File> |
255 | <File | 255 | <File |
256 | RelativePath=".\llheadrotmotion.cpp" | 256 | RelativePath=".\llheadrotmotion.cpp" |
257 | > | 257 | > |
258 | </File> | 258 | </File> |
259 | <File | 259 | <File |
260 | RelativePath=".\lljoint.cpp" | 260 | RelativePath=".\lljoint.cpp" |
261 | > | 261 | > |
262 | </File> | 262 | </File> |
263 | <File | 263 | <File |
264 | RelativePath=".\lljointsolverrp3.cpp" | 264 | RelativePath=".\lljointsolverrp3.cpp" |
265 | > | 265 | > |
266 | </File> | 266 | </File> |
267 | <File | 267 | <File |
268 | RelativePath=".\llkeyframefallmotion.cpp" | 268 | RelativePath=".\llkeyframefallmotion.cpp" |
269 | > | 269 | > |
270 | </File> | 270 | </File> |
271 | <File | 271 | <File |
272 | RelativePath=".\llkeyframemotion.cpp" | 272 | RelativePath=".\llkeyframemotion.cpp" |
273 | > | 273 | > |
274 | </File> | 274 | </File> |
275 | <File | 275 | <File |
276 | RelativePath=".\llkeyframemotionparam.cpp" | 276 | RelativePath=".\llkeyframemotionparam.cpp" |
277 | > | 277 | > |
278 | </File> | 278 | </File> |
279 | <File | 279 | <File |
280 | RelativePath=".\llkeyframestandmotion.cpp" | 280 | RelativePath=".\llkeyframestandmotion.cpp" |
281 | > | 281 | > |
282 | </File> | 282 | </File> |
283 | <File | 283 | <File |
284 | RelativePath=".\llkeyframewalkmotion.cpp" | 284 | RelativePath=".\llkeyframewalkmotion.cpp" |
285 | > | 285 | > |
286 | </File> | 286 | </File> |
287 | <File | 287 | <File |
288 | RelativePath=".\llmotion.cpp" | 288 | RelativePath=".\llmotion.cpp" |
289 | > | 289 | > |
290 | </File> | 290 | </File> |
291 | <File | 291 | <File |
292 | RelativePath=".\llmotioncontroller.cpp" | 292 | RelativePath=".\llmotioncontroller.cpp" |
293 | > | 293 | > |
294 | </File> | 294 | </File> |
295 | <File | 295 | <File |
296 | RelativePath=".\llmultigesture.cpp" | 296 | RelativePath=".\llmultigesture.cpp" |
297 | > | 297 | > |
298 | </File> | 298 | </File> |
299 | <File | 299 | <File |
300 | RelativePath=".\llpose.cpp" | 300 | RelativePath=".\llpose.cpp" |
301 | > | 301 | > |
302 | </File> | 302 | </File> |
303 | <File | 303 | <File |
304 | RelativePath=".\llstatemachine.cpp" | 304 | RelativePath=".\llstatemachine.cpp" |
305 | > | 305 | > |
306 | </File> | 306 | </File> |
307 | <File | 307 | <File |
308 | RelativePath=".\lltargetingmotion.cpp" | 308 | RelativePath=".\lltargetingmotion.cpp" |
309 | > | 309 | > |
310 | </File> | 310 | </File> |
311 | <File | 311 | <File |
312 | RelativePath=".\llvisualparam.cpp" | 312 | RelativePath=".\llvisualparam.cpp" |
313 | > | 313 | > |
314 | </File> | 314 | </File> |
315 | </Filter> | 315 | </Filter> |
316 | <Filter | 316 | <Filter |
317 | Name="Header Files" | 317 | Name="Header Files" |
318 | Filter="h;hpp;hxx;hm;inl;inc;xsd" | 318 | Filter="h;hpp;hxx;hm;inl;inc;xsd" |
319 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" | 319 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" |
320 | > | 320 | > |
321 | <File | 321 | <File |
322 | RelativePath=".\llanimationstates.h" | 322 | RelativePath=".\llanimationstates.h" |
323 | > | 323 | > |
324 | </File> | 324 | </File> |
325 | <File | 325 | <File |
326 | RelativePath=".\llbvhloader.h" | 326 | RelativePath=".\llbvhloader.h" |
327 | > | 327 | > |
328 | </File> | 328 | </File> |
329 | <File | 329 | <File |
330 | RelativePath=".\llcharacter.h" | 330 | RelativePath=".\llcharacter.h" |
331 | > | 331 | > |
332 | </File> | 332 | </File> |
333 | <File | 333 | <File |
334 | RelativePath=".\lleditingmotion.h" | 334 | RelativePath=".\lleditingmotion.h" |
335 | > | 335 | > |
336 | </File> | 336 | </File> |
337 | <File | 337 | <File |
338 | RelativePath=".\llgesture.h" | 338 | RelativePath=".\llgesture.h" |
339 | > | 339 | > |
340 | </File> | 340 | </File> |
341 | <File | 341 | <File |
342 | RelativePath=".\llhandmotion.h" | 342 | RelativePath=".\llhandmotion.h" |
343 | > | 343 | > |
344 | </File> | 344 | </File> |
345 | <File | 345 | <File |
346 | RelativePath=".\llheadrotmotion.h" | 346 | RelativePath=".\llheadrotmotion.h" |
347 | > | 347 | > |
348 | </File> | 348 | </File> |
349 | <File | 349 | <File |
350 | RelativePath=".\lljoint.h" | 350 | RelativePath=".\lljoint.h" |
351 | > | 351 | > |
352 | </File> | 352 | </File> |
353 | <File | 353 | <File |
354 | RelativePath=".\lljointsolverrp3.h" | 354 | RelativePath=".\lljointsolverrp3.h" |
355 | > | 355 | > |
356 | </File> | 356 | </File> |
357 | <File | 357 | <File |
358 | RelativePath=".\lljointstate.h" | 358 | RelativePath=".\lljointstate.h" |
359 | > | 359 | > |
360 | </File> | 360 | </File> |
361 | <File | 361 | <File |
362 | RelativePath=".\llkeyframefallmotion.h" | 362 | RelativePath=".\llkeyframefallmotion.h" |
363 | > | 363 | > |
364 | </File> | 364 | </File> |
365 | <File | 365 | <File |
366 | RelativePath=".\llkeyframemotion.h" | 366 | RelativePath=".\llkeyframemotion.h" |
367 | > | 367 | > |
368 | </File> | 368 | </File> |
369 | <File | 369 | <File |
370 | RelativePath=".\llkeyframemotionparam.h" | 370 | RelativePath=".\llkeyframemotionparam.h" |
371 | > | 371 | > |
372 | </File> | 372 | </File> |
373 | <File | 373 | <File |
374 | RelativePath=".\llkeyframestandmotion.h" | 374 | RelativePath=".\llkeyframestandmotion.h" |
375 | > | 375 | > |
376 | </File> | 376 | </File> |
377 | <File | 377 | <File |
378 | RelativePath=".\llkeyframewalkmotion.h" | 378 | RelativePath=".\llkeyframewalkmotion.h" |
379 | > | 379 | > |
380 | </File> | 380 | </File> |
381 | <File | 381 | <File |
382 | RelativePath=".\llmotion.h" | 382 | RelativePath=".\llmotion.h" |
383 | > | 383 | > |
384 | </File> | 384 | </File> |
385 | <File | 385 | <File |
386 | RelativePath=".\llmotioncontroller.h" | 386 | RelativePath=".\llmotioncontroller.h" |
387 | > | 387 | > |
388 | </File> | 388 | </File> |
389 | <File | 389 | <File |
390 | RelativePath=".\llmultigesture.h" | 390 | RelativePath=".\llmultigesture.h" |
391 | > | 391 | > |
392 | </File> | 392 | </File> |
393 | <File | 393 | <File |
394 | RelativePath=".\llpose.h" | 394 | RelativePath=".\llpose.h" |
395 | > | 395 | > |
396 | </File> | 396 | </File> |
397 | <File | 397 | <File |
398 | RelativePath=".\llstatemachine.h" | 398 | RelativePath=".\llstatemachine.h" |
399 | > | 399 | > |
400 | </File> | 400 | </File> |
401 | <File | 401 | <File |
402 | RelativePath=".\lltargetingmotion.h" | 402 | RelativePath=".\lltargetingmotion.h" |
403 | > | 403 | > |
404 | </File> | 404 | </File> |
405 | <File | 405 | <File |
406 | RelativePath=".\llvisualparam.h" | 406 | RelativePath=".\llvisualparam.h" |
407 | > | 407 | > |
408 | </File> | 408 | </File> |
409 | </Filter> | 409 | </Filter> |
410 | <Filter | 410 | <Filter |
411 | Name="Resource Files" | 411 | Name="Resource Files" |
412 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" | 412 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" |
413 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" | 413 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" |
414 | > | 414 | > |
415 | </Filter> | 415 | </Filter> |
416 | </Files> | 416 | </Files> |
417 | <Globals> | 417 | <Globals> |
418 | </Globals> | 418 | </Globals> |
419 | </VisualStudioProject> | 419 | </VisualStudioProject> |
diff --git a/linden/indra/llcharacter/llcharacter_vc9.vcproj b/linden/indra/llcharacter/llcharacter_vc9.vcproj index 13e3b14..837ec04 100644 --- a/linden/indra/llcharacter/llcharacter_vc9.vcproj +++ b/linden/indra/llcharacter/llcharacter_vc9.vcproj | |||
@@ -1,420 +1,420 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | 1 | <?xml version="1.0" encoding="Windows-1252"?> |
2 | <VisualStudioProject | 2 | <VisualStudioProject |
3 | ProjectType="Visual C++" | 3 | ProjectType="Visual C++" |
4 | Version="9.00" | 4 | Version="9.00" |
5 | Name="llcharacter" | 5 | Name="llcharacter" |
6 | ProjectGUID="{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}" | 6 | ProjectGUID="{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}" |
7 | RootNamespace="llcharacter" | 7 | RootNamespace="llcharacter" |
8 | Keyword="Win32Proj" | 8 | Keyword="Win32Proj" |
9 | TargetFrameworkVersion="131072" | 9 | TargetFrameworkVersion="131072" |
10 | > | 10 | > |
11 | <Platforms> | 11 | <Platforms> |
12 | <Platform | 12 | <Platform |
13 | Name="Win32" | 13 | Name="Win32" |
14 | /> | 14 | /> |
15 | </Platforms> | 15 | </Platforms> |
16 | <ToolFiles> | 16 | <ToolFiles> |
17 | </ToolFiles> | 17 | </ToolFiles> |
18 | <Configurations> | 18 | <Configurations> |
19 | <Configuration | 19 | <Configuration |
20 | Name="Debug|Win32" | 20 | Name="Debug|Win32" |
21 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 21 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
22 | IntermediateDirectory="Debug" | 22 | IntermediateDirectory="Debug" |
23 | ConfigurationType="4" | 23 | ConfigurationType="4" |
24 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 24 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
25 | CharacterSet="1" | 25 | CharacterSet="1" |
26 | > | 26 | > |
27 | <Tool | 27 | <Tool |
28 | Name="VCPreBuildEventTool" | 28 | Name="VCPreBuildEventTool" |
29 | /> | 29 | /> |
30 | <Tool | 30 | <Tool |
31 | Name="VCCustomBuildTool" | 31 | Name="VCCustomBuildTool" |
32 | /> | 32 | /> |
33 | <Tool | 33 | <Tool |
34 | Name="VCXMLDataGeneratorTool" | 34 | Name="VCXMLDataGeneratorTool" |
35 | /> | 35 | /> |
36 | <Tool | 36 | <Tool |
37 | Name="VCWebServiceProxyGeneratorTool" | 37 | Name="VCWebServiceProxyGeneratorTool" |
38 | /> | 38 | /> |
39 | <Tool | 39 | <Tool |
40 | Name="VCMIDLTool" | 40 | Name="VCMIDLTool" |
41 | /> | 41 | /> |
42 | <Tool | 42 | <Tool |
43 | Name="VCCLCompilerTool" | 43 | Name="VCCLCompilerTool" |
44 | Optimization="0" | 44 | Optimization="0" |
45 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 45 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
46 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" | 46 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" |
47 | MinimalRebuild="true" | 47 | MinimalRebuild="true" |
48 | BasicRuntimeChecks="3" | 48 | BasicRuntimeChecks="3" |
49 | RuntimeLibrary="1" | 49 | RuntimeLibrary="1" |
50 | StructMemberAlignment="4" | 50 | StructMemberAlignment="4" |
51 | TreatWChar_tAsBuiltInType="false" | 51 | TreatWChar_tAsBuiltInType="false" |
52 | ForceConformanceInForLoopScope="true" | 52 | ForceConformanceInForLoopScope="true" |
53 | UsePrecompiledHeader="0" | 53 | UsePrecompiledHeader="0" |
54 | WarningLevel="3" | 54 | WarningLevel="3" |
55 | WarnAsError="true" | 55 | WarnAsError="true" |
56 | Detect64BitPortabilityProblems="false" | 56 | Detect64BitPortabilityProblems="false" |
57 | DebugInformationFormat="4" | 57 | DebugInformationFormat="4" |
58 | /> | 58 | /> |
59 | <Tool | 59 | <Tool |
60 | Name="VCManagedResourceCompilerTool" | 60 | Name="VCManagedResourceCompilerTool" |
61 | /> | 61 | /> |
62 | <Tool | 62 | <Tool |
63 | Name="VCResourceCompilerTool" | 63 | Name="VCResourceCompilerTool" |
64 | /> | 64 | /> |
65 | <Tool | 65 | <Tool |
66 | Name="VCPreLinkEventTool" | 66 | Name="VCPreLinkEventTool" |
67 | /> | 67 | /> |
68 | <Tool | 68 | <Tool |
69 | Name="VCLibrarianTool" | 69 | Name="VCLibrarianTool" |
70 | OutputFile="$(OutDir)/llcharacter.lib" | 70 | OutputFile="$(OutDir)/llcharacter.lib" |
71 | /> | 71 | /> |
72 | <Tool | 72 | <Tool |
73 | Name="VCALinkTool" | 73 | Name="VCALinkTool" |
74 | /> | 74 | /> |
75 | <Tool | 75 | <Tool |
76 | Name="VCXDCMakeTool" | 76 | Name="VCXDCMakeTool" |
77 | /> | 77 | /> |
78 | <Tool | 78 | <Tool |
79 | Name="VCBscMakeTool" | 79 | Name="VCBscMakeTool" |
80 | /> | 80 | /> |
81 | <Tool | 81 | <Tool |
82 | Name="VCFxCopTool" | 82 | Name="VCFxCopTool" |
83 | /> | 83 | /> |
84 | <Tool | 84 | <Tool |
85 | Name="VCPostBuildEventTool" | 85 | Name="VCPostBuildEventTool" |
86 | /> | 86 | /> |
87 | </Configuration> | 87 | </Configuration> |
88 | <Configuration | 88 | <Configuration |
89 | Name="Release|Win32" | 89 | Name="Release|Win32" |
90 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 90 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
91 | IntermediateDirectory="Release" | 91 | IntermediateDirectory="Release" |
92 | ConfigurationType="4" | 92 | ConfigurationType="4" |
93 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 93 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
94 | CharacterSet="1" | 94 | CharacterSet="1" |
95 | > | 95 | > |
96 | <Tool | 96 | <Tool |
97 | Name="VCPreBuildEventTool" | 97 | Name="VCPreBuildEventTool" |
98 | /> | 98 | /> |
99 | <Tool | 99 | <Tool |
100 | Name="VCCustomBuildTool" | 100 | Name="VCCustomBuildTool" |
101 | /> | 101 | /> |
102 | <Tool | 102 | <Tool |
103 | Name="VCXMLDataGeneratorTool" | 103 | Name="VCXMLDataGeneratorTool" |
104 | /> | 104 | /> |
105 | <Tool | 105 | <Tool |
106 | Name="VCWebServiceProxyGeneratorTool" | 106 | Name="VCWebServiceProxyGeneratorTool" |
107 | /> | 107 | /> |
108 | <Tool | 108 | <Tool |
109 | Name="VCMIDLTool" | 109 | Name="VCMIDLTool" |
110 | /> | 110 | /> |
111 | <Tool | 111 | <Tool |
112 | Name="VCCLCompilerTool" | 112 | Name="VCCLCompilerTool" |
113 | AdditionalOptions="/Oy-" | 113 | AdditionalOptions="/Oy-" |
114 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 114 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
115 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | 115 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" |
116 | RuntimeLibrary="0" | 116 | RuntimeLibrary="0" |
117 | StructMemberAlignment="0" | 117 | StructMemberAlignment="0" |
118 | TreatWChar_tAsBuiltInType="false" | 118 | TreatWChar_tAsBuiltInType="false" |
119 | ForceConformanceInForLoopScope="true" | 119 | ForceConformanceInForLoopScope="true" |
120 | UsePrecompiledHeader="0" | 120 | UsePrecompiledHeader="0" |
121 | WarningLevel="3" | 121 | WarningLevel="3" |
122 | WarnAsError="true" | 122 | WarnAsError="true" |
123 | Detect64BitPortabilityProblems="false" | 123 | Detect64BitPortabilityProblems="false" |
124 | DebugInformationFormat="3" | 124 | DebugInformationFormat="3" |
125 | /> | 125 | /> |
126 | <Tool | 126 | <Tool |
127 | Name="VCManagedResourceCompilerTool" | 127 | Name="VCManagedResourceCompilerTool" |
128 | /> | 128 | /> |
129 | <Tool | 129 | <Tool |
130 | Name="VCResourceCompilerTool" | 130 | Name="VCResourceCompilerTool" |
131 | /> | 131 | /> |
132 | <Tool | 132 | <Tool |
133 | Name="VCPreLinkEventTool" | 133 | Name="VCPreLinkEventTool" |
134 | /> | 134 | /> |
135 | <Tool | 135 | <Tool |
136 | Name="VCLibrarianTool" | 136 | Name="VCLibrarianTool" |
137 | OutputFile="$(OutDir)/llcharacter.lib" | 137 | OutputFile="$(OutDir)/llcharacter.lib" |
138 | /> | 138 | /> |
139 | <Tool | 139 | <Tool |
140 | Name="VCALinkTool" | 140 | Name="VCALinkTool" |
141 | /> | 141 | /> |
142 | <Tool | 142 | <Tool |
143 | Name="VCXDCMakeTool" | 143 | Name="VCXDCMakeTool" |
144 | /> | 144 | /> |
145 | <Tool | 145 | <Tool |
146 | Name="VCBscMakeTool" | 146 | Name="VCBscMakeTool" |
147 | /> | 147 | /> |
148 | <Tool | 148 | <Tool |
149 | Name="VCFxCopTool" | 149 | Name="VCFxCopTool" |
150 | /> | 150 | /> |
151 | <Tool | 151 | <Tool |
152 | Name="VCPostBuildEventTool" | 152 | Name="VCPostBuildEventTool" |
153 | /> | 153 | /> |
154 | </Configuration> | 154 | </Configuration> |
155 | <Configuration | 155 | <Configuration |
156 | Name="ReleaseNoOpt|Win32" | 156 | Name="ReleaseNoOpt|Win32" |
157 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | 157 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" |
158 | IntermediateDirectory="$(ConfigurationName)" | 158 | IntermediateDirectory="$(ConfigurationName)" |
159 | ConfigurationType="4" | 159 | ConfigurationType="4" |
160 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | 160 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" |
161 | CharacterSet="1" | 161 | CharacterSet="1" |
162 | > | 162 | > |
163 | <Tool | 163 | <Tool |
164 | Name="VCPreBuildEventTool" | 164 | Name="VCPreBuildEventTool" |
165 | /> | 165 | /> |
166 | <Tool | 166 | <Tool |
167 | Name="VCCustomBuildTool" | 167 | Name="VCCustomBuildTool" |
168 | /> | 168 | /> |
169 | <Tool | 169 | <Tool |
170 | Name="VCXMLDataGeneratorTool" | 170 | Name="VCXMLDataGeneratorTool" |
171 | /> | 171 | /> |
172 | <Tool | 172 | <Tool |
173 | Name="VCWebServiceProxyGeneratorTool" | 173 | Name="VCWebServiceProxyGeneratorTool" |
174 | /> | 174 | /> |
175 | <Tool | 175 | <Tool |
176 | Name="VCMIDLTool" | 176 | Name="VCMIDLTool" |
177 | /> | 177 | /> |
178 | <Tool | 178 | <Tool |
179 | Name="VCCLCompilerTool" | 179 | Name="VCCLCompilerTool" |
180 | AdditionalOptions="/Oy-" | 180 | AdditionalOptions="/Oy-" |
181 | Optimization="0" | 181 | Optimization="0" |
182 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" | 182 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llmessage;..\llxml;..\..\libraries\i686-win32\include;..\..\libraries\include\" |
183 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | 183 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" |
184 | RuntimeLibrary="0" | 184 | RuntimeLibrary="0" |
185 | StructMemberAlignment="0" | 185 | StructMemberAlignment="0" |
186 | TreatWChar_tAsBuiltInType="false" | 186 | TreatWChar_tAsBuiltInType="false" |
187 | ForceConformanceInForLoopScope="true" | 187 | ForceConformanceInForLoopScope="true" |
188 | UsePrecompiledHeader="0" | 188 | UsePrecompiledHeader="0" |
189 | WarningLevel="3" | 189 | WarningLevel="3" |
190 | WarnAsError="true" | 190 | WarnAsError="true" |
191 | Detect64BitPortabilityProblems="false" | 191 | Detect64BitPortabilityProblems="false" |
192 | DebugInformationFormat="3" | 192 | DebugInformationFormat="3" |
193 | /> | 193 | /> |
194 | <Tool | 194 | <Tool |
195 | Name="VCManagedResourceCompilerTool" | 195 | Name="VCManagedResourceCompilerTool" |
196 | /> | 196 | /> |
197 | <Tool | 197 | <Tool |
198 | Name="VCResourceCompilerTool" | 198 | Name="VCResourceCompilerTool" |
199 | /> | 199 | /> |
200 | <Tool | 200 | <Tool |
201 | Name="VCPreLinkEventTool" | 201 | Name="VCPreLinkEventTool" |
202 | /> | 202 | /> |
203 | <Tool | 203 | <Tool |
204 | Name="VCLibrarianTool" | 204 | Name="VCLibrarianTool" |
205 | OutputFile="$(OutDir)/llcharacter.lib" | 205 | OutputFile="$(OutDir)/llcharacter.lib" |
206 | /> | 206 | /> |
207 | <Tool | 207 | <Tool |
208 | Name="VCALinkTool" | 208 | Name="VCALinkTool" |
209 | /> | 209 | /> |
210 | <Tool | 210 | <Tool |
211 | Name="VCXDCMakeTool" | 211 | Name="VCXDCMakeTool" |
212 | /> | 212 | /> |
213 | <Tool | 213 | <Tool |
214 | Name="VCBscMakeTool" | 214 | Name="VCBscMakeTool" |
215 | /> | 215 | /> |
216 | <Tool | 216 | <Tool |
217 | Name="VCFxCopTool" | 217 | Name="VCFxCopTool" |
218 | /> | 218 | /> |
219 | <Tool | 219 | <Tool |
220 | Name="VCPostBuildEventTool" | 220 | Name="VCPostBuildEventTool" |
221 | /> | 221 | /> |
222 | </Configuration> | 222 | </Configuration> |
223 | </Configurations> | 223 | </Configurations> |
224 | <References> | 224 | <References> |
225 | </References> | 225 | </References> |
226 | <Files> | 226 | <Files> |
227 | <Filter | 227 | <Filter |
228 | Name="Source Files" | 228 | Name="Source Files" |
229 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" | 229 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" |
230 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" | 230 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" |
231 | > | 231 | > |
232 | <File | 232 | <File |
233 | RelativePath=".\llanimationstates.cpp" | 233 | RelativePath=".\llanimationstates.cpp" |
234 | > | 234 | > |
235 | </File> | 235 | </File> |
236 | <File | 236 | <File |
237 | RelativePath=".\llbvhloader.cpp" | 237 | RelativePath=".\llbvhloader.cpp" |
238 | > | 238 | > |
239 | </File> | 239 | </File> |
240 | <File | 240 | <File |
241 | RelativePath=".\llcharacter.cpp" | 241 | RelativePath=".\llcharacter.cpp" |
242 | > | 242 | > |
243 | </File> | 243 | </File> |
244 | <File | 244 | <File |
245 | RelativePath=".\lleditingmotion.cpp" | 245 | RelativePath=".\lleditingmotion.cpp" |
246 | > | 246 | > |
247 | </File> | 247 | </File> |
248 | <File | 248 | <File |
249 | RelativePath=".\llgesture.cpp" | 249 | RelativePath=".\llgesture.cpp" |
250 | > | 250 | > |
251 | </File> | 251 | </File> |
252 | <File | 252 | <File |
253 | RelativePath=".\llhandmotion.cpp" | 253 | RelativePath=".\llhandmotion.cpp" |
254 | > | 254 | > |
255 | </File> | 255 | </File> |
256 | <File | 256 | <File |
257 | RelativePath=".\llheadrotmotion.cpp" | 257 | RelativePath=".\llheadrotmotion.cpp" |
258 | > | 258 | > |
259 | </File> | 259 | </File> |
260 | <File | 260 | <File |
261 | RelativePath=".\lljoint.cpp" | 261 | RelativePath=".\lljoint.cpp" |
262 | > | 262 | > |
263 | </File> | 263 | </File> |
264 | <File | 264 | <File |
265 | RelativePath=".\lljointsolverrp3.cpp" | 265 | RelativePath=".\lljointsolverrp3.cpp" |
266 | > | 266 | > |
267 | </File> | 267 | </File> |
268 | <File | 268 | <File |
269 | RelativePath=".\llkeyframefallmotion.cpp" | 269 | RelativePath=".\llkeyframefallmotion.cpp" |
270 | > | 270 | > |
271 | </File> | 271 | </File> |
272 | <File | 272 | <File |
273 | RelativePath=".\llkeyframemotion.cpp" | 273 | RelativePath=".\llkeyframemotion.cpp" |
274 | > | 274 | > |
275 | </File> | 275 | </File> |
276 | <File | 276 | <File |
277 | RelativePath=".\llkeyframemotionparam.cpp" | 277 | RelativePath=".\llkeyframemotionparam.cpp" |
278 | > | 278 | > |
279 | </File> | 279 | </File> |
280 | <File | 280 | <File |
281 | RelativePath=".\llkeyframestandmotion.cpp" | 281 | RelativePath=".\llkeyframestandmotion.cpp" |
282 | > | 282 | > |
283 | </File> | 283 | </File> |
284 | <File | 284 | <File |
285 | RelativePath=".\llkeyframewalkmotion.cpp" | 285 | RelativePath=".\llkeyframewalkmotion.cpp" |
286 | > | 286 | > |
287 | </File> | 287 | </File> |
288 | <File | 288 | <File |
289 | RelativePath=".\llmotion.cpp" | 289 | RelativePath=".\llmotion.cpp" |
290 | > | 290 | > |
291 | </File> | 291 | </File> |
292 | <File | 292 | <File |
293 | RelativePath=".\llmotioncontroller.cpp" | 293 | RelativePath=".\llmotioncontroller.cpp" |
294 | > | 294 | > |
295 | </File> | 295 | </File> |
296 | <File | 296 | <File |
297 | RelativePath=".\llmultigesture.cpp" | 297 | RelativePath=".\llmultigesture.cpp" |
298 | > | 298 | > |
299 | </File> | 299 | </File> |
300 | <File | 300 | <File |
301 | RelativePath=".\llpose.cpp" | 301 | RelativePath=".\llpose.cpp" |
302 | > | 302 | > |
303 | </File> | 303 | </File> |
304 | <File | 304 | <File |
305 | RelativePath=".\llstatemachine.cpp" | 305 | RelativePath=".\llstatemachine.cpp" |
306 | > | 306 | > |
307 | </File> | 307 | </File> |
308 | <File | 308 | <File |
309 | RelativePath=".\lltargetingmotion.cpp" | 309 | RelativePath=".\lltargetingmotion.cpp" |
310 | > | 310 | > |
311 | </File> | 311 | </File> |
312 | <File | 312 | <File |
313 | RelativePath=".\llvisualparam.cpp" | 313 | RelativePath=".\llvisualparam.cpp" |
314 | > | 314 | > |
315 | </File> | 315 | </File> |
316 | </Filter> | 316 | </Filter> |
317 | <Filter | 317 | <Filter |
318 | Name="Header Files" | 318 | Name="Header Files" |
319 | Filter="h;hpp;hxx;hm;inl;inc;xsd" | 319 | Filter="h;hpp;hxx;hm;inl;inc;xsd" |
320 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" | 320 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" |
321 | > | 321 | > |
322 | <File | 322 | <File |
323 | RelativePath=".\llanimationstates.h" | 323 | RelativePath=".\llanimationstates.h" |
324 | > | 324 | > |
325 | </File> | 325 | </File> |
326 | <File | 326 | <File |
327 | RelativePath=".\llbvhloader.h" | 327 | RelativePath=".\llbvhloader.h" |
328 | > | 328 | > |
329 | </File> | 329 | </File> |
330 | <File | 330 | <File |
331 | RelativePath=".\llcharacter.h" | 331 | RelativePath=".\llcharacter.h" |
332 | > | 332 | > |
333 | </File> | 333 | </File> |
334 | <File | 334 | <File |
335 | RelativePath=".\lleditingmotion.h" | 335 | RelativePath=".\lleditingmotion.h" |
336 | > | 336 | > |
337 | </File> | 337 | </File> |
338 | <File | 338 | <File |
339 | RelativePath=".\llgesture.h" | 339 | RelativePath=".\llgesture.h" |
340 | > | 340 | > |
341 | </File> | 341 | </File> |
342 | <File | 342 | <File |
343 | RelativePath=".\llhandmotion.h" | 343 | RelativePath=".\llhandmotion.h" |
344 | > | 344 | > |
345 | </File> | 345 | </File> |
346 | <File | 346 | <File |
347 | RelativePath=".\llheadrotmotion.h" | 347 | RelativePath=".\llheadrotmotion.h" |
348 | > | 348 | > |
349 | </File> | 349 | </File> |
350 | <File | 350 | <File |
351 | RelativePath=".\lljoint.h" | 351 | RelativePath=".\lljoint.h" |
352 | > | 352 | > |
353 | </File> | 353 | </File> |
354 | <File | 354 | <File |
355 | RelativePath=".\lljointsolverrp3.h" | 355 | RelativePath=".\lljointsolverrp3.h" |
356 | > | 356 | > |
357 | </File> | 357 | </File> |
358 | <File | 358 | <File |
359 | RelativePath=".\lljointstate.h" | 359 | RelativePath=".\lljointstate.h" |
360 | > | 360 | > |
361 | </File> | 361 | </File> |
362 | <File | 362 | <File |
363 | RelativePath=".\llkeyframefallmotion.h" | 363 | RelativePath=".\llkeyframefallmotion.h" |
364 | > | 364 | > |
365 | </File> | 365 | </File> |
366 | <File | 366 | <File |
367 | RelativePath=".\llkeyframemotion.h" | 367 | RelativePath=".\llkeyframemotion.h" |
368 | > | 368 | > |
369 | </File> | 369 | </File> |
370 | <File | 370 | <File |
371 | RelativePath=".\llkeyframemotionparam.h" | 371 | RelativePath=".\llkeyframemotionparam.h" |
372 | > | 372 | > |
373 | </File> | 373 | </File> |
374 | <File | 374 | <File |
375 | RelativePath=".\llkeyframestandmotion.h" | 375 | RelativePath=".\llkeyframestandmotion.h" |
376 | > | 376 | > |
377 | </File> | 377 | </File> |
378 | <File | 378 | <File |
379 | RelativePath=".\llkeyframewalkmotion.h" | 379 | RelativePath=".\llkeyframewalkmotion.h" |
380 | > | 380 | > |
381 | </File> | 381 | </File> |
382 | <File | 382 | <File |
383 | RelativePath=".\llmotion.h" | 383 | RelativePath=".\llmotion.h" |
384 | > | 384 | > |
385 | </File> | 385 | </File> |
386 | <File | 386 | <File |
387 | RelativePath=".\llmotioncontroller.h" | 387 | RelativePath=".\llmotioncontroller.h" |
388 | > | 388 | > |
389 | </File> | 389 | </File> |
390 | <File | 390 | <File |
391 | RelativePath=".\llmultigesture.h" | 391 | RelativePath=".\llmultigesture.h" |
392 | > | 392 | > |
393 | </File> | 393 | </File> |
394 | <File | 394 | <File |
395 | RelativePath=".\llpose.h" | 395 | RelativePath=".\llpose.h" |
396 | > | 396 | > |
397 | </File> | 397 | </File> |
398 | <File | 398 | <File |
399 | RelativePath=".\llstatemachine.h" | 399 | RelativePath=".\llstatemachine.h" |
400 | > | 400 | > |
401 | </File> | 401 | </File> |
402 | <File | 402 | <File |
403 | RelativePath=".\lltargetingmotion.h" | 403 | RelativePath=".\lltargetingmotion.h" |
404 | > | 404 | > |
405 | </File> | 405 | </File> |
406 | <File | 406 | <File |
407 | RelativePath=".\llvisualparam.h" | 407 | RelativePath=".\llvisualparam.h" |
408 | > | 408 | > |
409 | </File> | 409 | </File> |
410 | </Filter> | 410 | </Filter> |
411 | <Filter | 411 | <Filter |
412 | Name="Resource Files" | 412 | Name="Resource Files" |
413 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" | 413 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" |
414 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" | 414 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" |
415 | > | 415 | > |
416 | </Filter> | 416 | </Filter> |
417 | </Files> | 417 | </Files> |
418 | <Globals> | 418 | <Globals> |
419 | </Globals> | 419 | </Globals> |
420 | </VisualStudioProject> | 420 | </VisualStudioProject> |
diff --git a/linden/indra/llcharacter/llkeyframemotion.cpp b/linden/indra/llcharacter/llkeyframemotion.cpp index 4288b8d..0138860 100644 --- a/linden/indra/llcharacter/llkeyframemotion.cpp +++ b/linden/indra/llcharacter/llkeyframemotion.cpp | |||
@@ -122,6 +122,7 @@ U32 LLKeyframeMotion::JointMotionList::dumpDiagInfo() | |||
122 | //----------------------------------------------------------------------------- | 122 | //----------------------------------------------------------------------------- |
123 | //----------------------------------------------------------------------------- | 123 | //----------------------------------------------------------------------------- |
124 | 124 | ||
125 | |||
125 | //----------------------------------------------------------------------------- | 126 | //----------------------------------------------------------------------------- |
126 | // ScaleCurve::ScaleCurve() | 127 | // ScaleCurve::ScaleCurve() |
127 | //----------------------------------------------------------------------------- | 128 | //----------------------------------------------------------------------------- |
@@ -136,7 +137,7 @@ LLKeyframeMotion::ScaleCurve::ScaleCurve() | |||
136 | //----------------------------------------------------------------------------- | 137 | //----------------------------------------------------------------------------- |
137 | LLKeyframeMotion::ScaleCurve::~ScaleCurve() | 138 | LLKeyframeMotion::ScaleCurve::~ScaleCurve() |
138 | { | 139 | { |
139 | mKeys.deleteAllData(); | 140 | mKeys.clear(); |
140 | mNumKeys = 0; | 141 | mNumKeys = 0; |
141 | } | 142 | } |
142 | 143 | ||
@@ -146,43 +147,42 @@ LLKeyframeMotion::ScaleCurve::~ScaleCurve() | |||
146 | LLVector3 LLKeyframeMotion::ScaleCurve::getValue(F32 time, F32 duration) | 147 | LLVector3 LLKeyframeMotion::ScaleCurve::getValue(F32 time, F32 duration) |
147 | { | 148 | { |
148 | LLVector3 value; | 149 | LLVector3 value; |
149 | F32 index_before, index_after; | ||
150 | ScaleKey* scale_before; | ||
151 | ScaleKey* scale_after; | ||
152 | 150 | ||
153 | mKeys.getInterval(time, index_before, index_after, scale_before, scale_after); | 151 | if (mKeys.empty()) |
154 | if (scale_before) | ||
155 | { | 152 | { |
156 | if (!scale_after) | 153 | value.clearVec(); |
157 | { | 154 | return value; |
158 | scale_after = &mLoopInKey; | 155 | } |
159 | index_after = duration; | 156 | |
160 | } | 157 | key_map_t::iterator right = mKeys.lower_bound(time); |
161 | 158 | if (right == mKeys.end()) | |
162 | if (index_after == index_before) | 159 | { |
163 | { | 160 | // Past last key |
164 | value = scale_after->mScale; | 161 | --right; |
165 | } | 162 | value = right->second.mScale; |
166 | else | 163 | } |
167 | { | 164 | else if (right == mKeys.begin() || right->first == time) |
168 | F32 u = (time - index_before) / (index_after - index_before); | 165 | { |
169 | value = interp(u, *scale_before, *scale_after); | 166 | // Before first key or exactly on a key |
170 | } | 167 | value = right->second.mScale; |
171 | } | 168 | } |
172 | else | 169 | else |
173 | { | 170 | { |
174 | // before first key | 171 | // Between two keys |
175 | if (scale_after) | 172 | key_map_t::iterator left = right; --left; |
176 | { | 173 | F32 index_before = left->first; |
177 | value = scale_after->mScale; | 174 | F32 index_after = right->first; |
178 | } | 175 | ScaleKey& scale_before = left->second; |
179 | // no keys? | 176 | ScaleKey& scale_after = right->second; |
180 | else | 177 | if (right == mKeys.end()) |
181 | { | 178 | { |
182 | value.clearVec(); | 179 | scale_after = mLoopInKey; |
180 | index_after = duration; | ||
183 | } | 181 | } |
184 | } | ||
185 | 182 | ||
183 | F32 u = (time - index_before) / (index_after - index_before); | ||
184 | value = interp(u, scale_before, scale_after); | ||
185 | } | ||
186 | return value; | 186 | return value; |
187 | } | 187 | } |
188 | 188 | ||
@@ -217,7 +217,7 @@ LLKeyframeMotion::RotationCurve::RotationCurve() | |||
217 | //----------------------------------------------------------------------------- | 217 | //----------------------------------------------------------------------------- |
218 | LLKeyframeMotion::RotationCurve::~RotationCurve() | 218 | LLKeyframeMotion::RotationCurve::~RotationCurve() |
219 | { | 219 | { |
220 | mKeys.deleteAllData(); | 220 | mKeys.clear(); |
221 | mNumKeys = 0; | 221 | mNumKeys = 0; |
222 | } | 222 | } |
223 | 223 | ||
@@ -227,44 +227,42 @@ LLKeyframeMotion::RotationCurve::~RotationCurve() | |||
227 | LLQuaternion LLKeyframeMotion::RotationCurve::getValue(F32 time, F32 duration) | 227 | LLQuaternion LLKeyframeMotion::RotationCurve::getValue(F32 time, F32 duration) |
228 | { | 228 | { |
229 | LLQuaternion value; | 229 | LLQuaternion value; |
230 | F32 index_before, index_after; | ||
231 | RotationKey* rot_before; | ||
232 | RotationKey* rot_after; | ||
233 | 230 | ||
234 | mKeys.getInterval(time, index_before, index_after, rot_before, rot_after); | 231 | if (mKeys.empty()) |
235 | |||
236 | if (rot_before) | ||
237 | { | 232 | { |
238 | if (!rot_after) | 233 | value = LLQuaternion::DEFAULT; |
239 | { | 234 | return value; |
240 | rot_after = &mLoopInKey; | 235 | } |
241 | index_after = duration; | 236 | |
242 | } | 237 | key_map_t::iterator right = mKeys.lower_bound(time); |
243 | 238 | if (right == mKeys.end()) | |
244 | if (index_after == index_before) | 239 | { |
245 | { | 240 | // Past last key |
246 | value = rot_after->mRotation; | 241 | --right; |
247 | } | 242 | value = right->second.mRotation; |
248 | else | 243 | } |
249 | { | 244 | else if (right == mKeys.begin() || right->first == time) |
250 | F32 u = (time - index_before) / (index_after - index_before); | 245 | { |
251 | value = interp(u, *rot_before, *rot_after); | 246 | // Before first key or exactly on a key |
252 | } | 247 | value = right->second.mRotation; |
253 | } | 248 | } |
254 | else | 249 | else |
255 | { | 250 | { |
256 | // before first key | 251 | // Between two keys |
257 | if (rot_after) | 252 | key_map_t::iterator left = right; --left; |
253 | F32 index_before = left->first; | ||
254 | F32 index_after = right->first; | ||
255 | RotationKey& rot_before = left->second; | ||
256 | RotationKey& rot_after = right->second; | ||
257 | if (right == mKeys.end()) | ||
258 | { | 258 | { |
259 | value = rot_after->mRotation; | 259 | rot_after = mLoopInKey; |
260 | } | 260 | index_after = duration; |
261 | // no keys? | ||
262 | else | ||
263 | { | ||
264 | value = LLQuaternion::DEFAULT; | ||
265 | } | 261 | } |
266 | } | ||
267 | 262 | ||
263 | F32 u = (time - index_before) / (index_after - index_before); | ||
264 | value = interp(u, rot_before, rot_after); | ||
265 | } | ||
268 | return value; | 266 | return value; |
269 | } | 267 | } |
270 | 268 | ||
@@ -300,7 +298,7 @@ LLKeyframeMotion::PositionCurve::PositionCurve() | |||
300 | //----------------------------------------------------------------------------- | 298 | //----------------------------------------------------------------------------- |
301 | LLKeyframeMotion::PositionCurve::~PositionCurve() | 299 | LLKeyframeMotion::PositionCurve::~PositionCurve() |
302 | { | 300 | { |
303 | mKeys.deleteAllData(); | 301 | mKeys.clear(); |
304 | mNumKeys = 0; | 302 | mNumKeys = 0; |
305 | } | 303 | } |
306 | 304 | ||
@@ -310,46 +308,45 @@ LLKeyframeMotion::PositionCurve::~PositionCurve() | |||
310 | LLVector3 LLKeyframeMotion::PositionCurve::getValue(F32 time, F32 duration) | 308 | LLVector3 LLKeyframeMotion::PositionCurve::getValue(F32 time, F32 duration) |
311 | { | 309 | { |
312 | LLVector3 value; | 310 | LLVector3 value; |
313 | F32 index_before, index_after; | ||
314 | PositionKey* pos_before; | ||
315 | PositionKey* pos_after; | ||
316 | |||
317 | mKeys.getInterval(time, index_before, index_after, pos_before, pos_after); | ||
318 | 311 | ||
319 | if (pos_before) | 312 | if (mKeys.empty()) |
320 | { | 313 | { |
321 | if (!pos_after) | 314 | value.clearVec(); |
322 | { | 315 | return value; |
323 | pos_after = &mLoopInKey; | 316 | } |
324 | index_after = duration; | 317 | |
325 | } | 318 | key_map_t::iterator right = mKeys.lower_bound(time); |
326 | 319 | if (right == mKeys.end()) | |
327 | if (index_after == index_before) | 320 | { |
328 | { | 321 | // Past last key |
329 | value = pos_after->mPosition; | 322 | --right; |
330 | } | 323 | value = right->second.mPosition; |
331 | else | 324 | } |
332 | { | 325 | else if (right == mKeys.begin() || right->first == time) |
333 | F32 u = (time - index_before) / (index_after - index_before); | 326 | { |
334 | value = interp(u, *pos_before, *pos_after); | 327 | // Before first key or exactly on a key |
335 | } | 328 | value = right->second.mPosition; |
336 | } | 329 | } |
337 | else | 330 | else |
338 | { | 331 | { |
339 | // before first key | 332 | // Between two keys |
340 | if (pos_after) | 333 | key_map_t::iterator left = right; --left; |
334 | F32 index_before = left->first; | ||
335 | F32 index_after = right->first; | ||
336 | PositionKey& pos_before = left->second; | ||
337 | PositionKey& pos_after = right->second; | ||
338 | if (right == mKeys.end()) | ||
341 | { | 339 | { |
342 | value = pos_after->mPosition; | 340 | pos_after = mLoopInKey; |
343 | } | 341 | index_after = duration; |
344 | // no keys? | ||
345 | else | ||
346 | { | ||
347 | value.clearVec(); | ||
348 | } | 342 | } |
343 | |||
344 | F32 u = (time - index_before) / (index_after - index_before); | ||
345 | value = interp(u, pos_before, pos_after); | ||
349 | } | 346 | } |
350 | 347 | ||
351 | llassert(value.isFinite()); | 348 | llassert(value.isFinite()); |
352 | 349 | ||
353 | return value; | 350 | return value; |
354 | } | 351 | } |
355 | 352 | ||
@@ -1404,8 +1401,8 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1404 | time = U16_to_F32(time_short, 0.f, mJointMotionList->mDuration); | 1401 | time = U16_to_F32(time_short, 0.f, mJointMotionList->mDuration); |
1405 | } | 1402 | } |
1406 | 1403 | ||
1407 | RotationKey *rot_key = new RotationKey; | 1404 | RotationKey rot_key; |
1408 | rot_key->mTime = time; | 1405 | rot_key.mTime = time; |
1409 | LLVector3 rot_angles; | 1406 | LLVector3 rot_angles; |
1410 | U16 x, y, z; | 1407 | U16 x, y, z; |
1411 | 1408 | ||
@@ -1416,7 +1413,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1416 | success = dp.unpackVector3(rot_angles, "rot_angles"); | 1413 | success = dp.unpackVector3(rot_angles, "rot_angles"); |
1417 | 1414 | ||
1418 | LLQuaternion::Order ro = StringToOrder("ZYX"); | 1415 | LLQuaternion::Order ro = StringToOrder("ZYX"); |
1419 | rot_key->mRotation = mayaQ(rot_angles.mV[VX], rot_angles.mV[VY], rot_angles.mV[VZ], ro); | 1416 | rot_key.mRotation = mayaQ(rot_angles.mV[VX], rot_angles.mV[VY], rot_angles.mV[VZ], ro); |
1420 | } | 1417 | } |
1421 | else | 1418 | else |
1422 | { | 1419 | { |
@@ -1428,13 +1425,12 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1428 | rot_vec.mV[VX] = U16_to_F32(x, -1.f, 1.f); | 1425 | rot_vec.mV[VX] = U16_to_F32(x, -1.f, 1.f); |
1429 | rot_vec.mV[VY] = U16_to_F32(y, -1.f, 1.f); | 1426 | rot_vec.mV[VY] = U16_to_F32(y, -1.f, 1.f); |
1430 | rot_vec.mV[VZ] = U16_to_F32(z, -1.f, 1.f); | 1427 | rot_vec.mV[VZ] = U16_to_F32(z, -1.f, 1.f); |
1431 | rot_key->mRotation.unpackFromVector3(rot_vec); | 1428 | rot_key.mRotation.unpackFromVector3(rot_vec); |
1432 | } | 1429 | } |
1433 | 1430 | ||
1434 | if (!success) | 1431 | if (!success) |
1435 | { | 1432 | { |
1436 | llwarns << "can't read rotation key (" << k << ")" << llendl; | 1433 | llwarns << "can't read rotation key (" << k << ")" << llendl; |
1437 | delete rot_key; | ||
1438 | return FALSE; | 1434 | return FALSE; |
1439 | } | 1435 | } |
1440 | 1436 | ||
@@ -1464,14 +1460,13 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1464 | for (S32 k = 0; k < joint_motion->mPositionCurve.mNumKeys; k++) | 1460 | for (S32 k = 0; k < joint_motion->mPositionCurve.mNumKeys; k++) |
1465 | { | 1461 | { |
1466 | U16 time_short; | 1462 | U16 time_short; |
1467 | PositionKey* pos_key = new PositionKey; | 1463 | PositionKey pos_key; |
1468 | 1464 | ||
1469 | if (old_version) | 1465 | if (old_version) |
1470 | { | 1466 | { |
1471 | if (!dp.unpackF32(pos_key->mTime, "time")) | 1467 | if (!dp.unpackF32(pos_key.mTime, "time")) |
1472 | { | 1468 | { |
1473 | llwarns << "can't read position key (" << k << ")" << llendl; | 1469 | llwarns << "can't read position key (" << k << ")" << llendl; |
1474 | delete pos_key; | ||
1475 | return FALSE; | 1470 | return FALSE; |
1476 | } | 1471 | } |
1477 | } | 1472 | } |
@@ -1480,18 +1475,17 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1480 | if (!dp.unpackU16(time_short, "time")) | 1475 | if (!dp.unpackU16(time_short, "time")) |
1481 | { | 1476 | { |
1482 | llwarns << "can't read position key (" << k << ")" << llendl; | 1477 | llwarns << "can't read position key (" << k << ")" << llendl; |
1483 | delete pos_key; | ||
1484 | return FALSE; | 1478 | return FALSE; |
1485 | } | 1479 | } |
1486 | 1480 | ||
1487 | pos_key->mTime = U16_to_F32(time_short, 0.f, mJointMotionList->mDuration); | 1481 | pos_key.mTime = U16_to_F32(time_short, 0.f, mJointMotionList->mDuration); |
1488 | } | 1482 | } |
1489 | 1483 | ||
1490 | BOOL success = TRUE; | 1484 | BOOL success = TRUE; |
1491 | 1485 | ||
1492 | if (old_version) | 1486 | if (old_version) |
1493 | { | 1487 | { |
1494 | success = dp.unpackVector3(pos_key->mPosition, "pos"); | 1488 | success = dp.unpackVector3(pos_key.mPosition, "pos"); |
1495 | } | 1489 | } |
1496 | else | 1490 | else |
1497 | { | 1491 | { |
@@ -1501,23 +1495,22 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) | |||
1501 | success &= dp.unpackU16(y, "pos_y"); | 1495 | success &= dp.unpackU16(y, "pos_y"); |
1502 | success &= dp.unpackU16(z, "pos_z"); | 1496 | success &= dp.unpackU16(z, "pos_z"); |
1503 | 1497 | ||
1504 | pos_key->mPosition.mV[VX] = U16_to_F32(x, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1498 | pos_key.mPosition.mV[VX] = U16_to_F32(x, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1505 | pos_key->mPosition.mV[VY] = U16_to_F32(y, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1499 | pos_key.mPosition.mV[VY] = U16_to_F32(y, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1506 | pos_key->mPosition.mV[VZ] = U16_to_F32(z, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1500 | pos_key.mPosition.mV[VZ] = U16_to_F32(z, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1507 | } | 1501 | } |
1508 | 1502 | ||
1509 | if (!success) | 1503 | if (!success) |
1510 | { | 1504 | { |
1511 | llwarns << "can't read position key (" << k << ")" << llendl; | 1505 | llwarns << "can't read position key (" << k << ")" << llendl; |
1512 | delete pos_key; | ||
1513 | return FALSE; | 1506 | return FALSE; |
1514 | } | 1507 | } |
1515 | 1508 | ||
1516 | pCurve->mKeys[pos_key->mTime] = pos_key; | 1509 | pCurve->mKeys[pos_key.mTime] = pos_key; |
1517 | 1510 | ||
1518 | if (is_pelvis) | 1511 | if (is_pelvis) |
1519 | { | 1512 | { |
1520 | mJointMotionList->mPelvisBBox.addPoint(pos_key->mPosition); | 1513 | mJointMotionList->mPelvisBBox.addPoint(pos_key.mPosition); |
1521 | } | 1514 | } |
1522 | } | 1515 | } |
1523 | 1516 | ||
@@ -1724,14 +1717,14 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const | |||
1724 | success &= dp.packS32(joint_motionp->mPriority, "joint_priority"); | 1717 | success &= dp.packS32(joint_motionp->mPriority, "joint_priority"); |
1725 | success &= dp.packS32(joint_motionp->mRotationCurve.mNumKeys, "num_rot_keys"); | 1718 | success &= dp.packS32(joint_motionp->mRotationCurve.mNumKeys, "num_rot_keys"); |
1726 | 1719 | ||
1727 | for (RotationKey* rot_keyp = joint_motionp->mRotationCurve.mKeys.getFirstData(); | 1720 | for (RotationCurve::key_map_t::iterator iter = joint_motionp->mRotationCurve.mKeys.begin(); |
1728 | rot_keyp; | 1721 | iter != joint_motionp->mRotationCurve.mKeys.end(); ++iter) |
1729 | rot_keyp = joint_motionp->mRotationCurve.mKeys.getNextData()) | ||
1730 | { | 1722 | { |
1731 | U16 time_short = F32_to_U16(rot_keyp->mTime, 0.f, mJointMotionList->mDuration); | 1723 | RotationKey& rot_key = iter->second; |
1724 | U16 time_short = F32_to_U16(rot_key.mTime, 0.f, mJointMotionList->mDuration); | ||
1732 | success &= dp.packU16(time_short, "time"); | 1725 | success &= dp.packU16(time_short, "time"); |
1733 | 1726 | ||
1734 | LLVector3 rot_angles = rot_keyp->mRotation.packToVector3(); | 1727 | LLVector3 rot_angles = rot_key.mRotation.packToVector3(); |
1735 | 1728 | ||
1736 | U16 x, y, z; | 1729 | U16 x, y, z; |
1737 | rot_angles.quantize16(-1.f, 1.f, -1.f, 1.f); | 1730 | rot_angles.quantize16(-1.f, 1.f, -1.f, 1.f); |
@@ -1744,18 +1737,18 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const | |||
1744 | } | 1737 | } |
1745 | 1738 | ||
1746 | success &= dp.packS32(joint_motionp->mPositionCurve.mNumKeys, "num_pos_keys"); | 1739 | success &= dp.packS32(joint_motionp->mPositionCurve.mNumKeys, "num_pos_keys"); |
1747 | for (PositionKey* pos_keyp = joint_motionp->mPositionCurve.mKeys.getFirstData(); | 1740 | for (PositionCurve::key_map_t::iterator iter = joint_motionp->mPositionCurve.mKeys.begin(); |
1748 | pos_keyp; | 1741 | iter != joint_motionp->mPositionCurve.mKeys.end(); ++iter) |
1749 | pos_keyp = joint_motionp->mPositionCurve.mKeys.getNextData()) | ||
1750 | { | 1742 | { |
1751 | U16 time_short = F32_to_U16(pos_keyp->mTime, 0.f, mJointMotionList->mDuration); | 1743 | PositionKey& pos_key = iter->second; |
1744 | U16 time_short = F32_to_U16(pos_key.mTime, 0.f, mJointMotionList->mDuration); | ||
1752 | success &= dp.packU16(time_short, "time"); | 1745 | success &= dp.packU16(time_short, "time"); |
1753 | 1746 | ||
1754 | U16 x, y, z; | 1747 | U16 x, y, z; |
1755 | pos_keyp->mPosition.quantize16(-LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1748 | pos_key.mPosition.quantize16(-LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET, -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1756 | x = F32_to_U16(pos_keyp->mPosition.mV[VX], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1749 | x = F32_to_U16(pos_key.mPosition.mV[VX], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1757 | y = F32_to_U16(pos_keyp->mPosition.mV[VY], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1750 | y = F32_to_U16(pos_key.mPosition.mV[VY], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1758 | z = F32_to_U16(pos_keyp->mPosition.mV[VZ], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); | 1751 | z = F32_to_U16(pos_key.mPosition.mV[VZ], -LL_MAX_PELVIS_OFFSET, LL_MAX_PELVIS_OFFSET); |
1759 | success &= dp.packU16(x, "pos_x"); | 1752 | success &= dp.packU16(x, "pos_x"); |
1760 | success &= dp.packU16(y, "pos_y"); | 1753 | success &= dp.packU16(y, "pos_y"); |
1761 | success &= dp.packU16(z, "pos_z"); | 1754 | success &= dp.packU16(z, "pos_z"); |
@@ -2030,64 +2023,6 @@ void LLKeyframeMotion::onLoadComplete(LLVFS *vfs, | |||
2030 | } | 2023 | } |
2031 | } | 2024 | } |
2032 | 2025 | ||
2033 | |||
2034 | //----------------------------------------------------------------------------- | ||
2035 | // writeCAL3D() | ||
2036 | //----------------------------------------------------------------------------- | ||
2037 | void LLKeyframeMotion::writeCAL3D(apr_file_t* fp) | ||
2038 | { | ||
2039 | // <ANIMATION VERSION="1000" DURATION="1.03333" NUMTRACKS="58"> | ||
2040 | // <TRACK BONEID="0" NUMKEYFRAMES="31"> | ||
2041 | // <KEYFRAME TIME="0"> | ||
2042 | // <TRANSLATION>0 0 48.8332</TRANSLATION> | ||
2043 | // <ROTATION>0.0512905 0.05657 0.66973 0.738668</ROTATION> | ||
2044 | // </KEYFRAME> | ||
2045 | // </TRACK> | ||
2046 | // </ANIMATION> | ||
2047 | |||
2048 | apr_file_printf(fp, "<ANIMATION VERSION=\"1000\" DURATION=\"%.5f\" NUMTRACKS=\"%d\">\n", getDuration(), mJointMotionList->getNumJointMotions()); | ||
2049 | for (U32 joint_index = 0; joint_index < mJointMotionList->getNumJointMotions(); joint_index++) | ||
2050 | { | ||
2051 | JointMotion* joint_motionp = mJointMotionList->getJointMotion(joint_index); | ||
2052 | LLJoint* animated_joint = mCharacter->getJoint(joint_motionp->mJointName); | ||
2053 | S32 joint_num = animated_joint->mJointNum + 1; | ||
2054 | |||
2055 | apr_file_printf(fp, " <TRACK BONEID=\"%d\" NUMKEYFRAMES=\"%d\">\n", joint_num, joint_motionp->mRotationCurve.mNumKeys ); | ||
2056 | PositionKey* pos_keyp = joint_motionp->mPositionCurve.mKeys.getFirstData(); | ||
2057 | for (RotationKey* rot_keyp = joint_motionp->mRotationCurve.mKeys.getFirstData(); | ||
2058 | rot_keyp; | ||
2059 | rot_keyp = joint_motionp->mRotationCurve.mKeys.getNextData()) | ||
2060 | { | ||
2061 | apr_file_printf(fp, " <KEYFRAME TIME=\"%0.3f\">\n", rot_keyp->mTime); | ||
2062 | LLVector3 nominal_pos = animated_joint->getPosition(); | ||
2063 | if (animated_joint->getParent()) | ||
2064 | { | ||
2065 | nominal_pos.scaleVec(animated_joint->getParent()->getScale()); | ||
2066 | } | ||
2067 | nominal_pos = nominal_pos * 100.f; | ||
2068 | |||
2069 | if (joint_motionp->mUsage & LLJointState::POS && pos_keyp) | ||
2070 | { | ||
2071 | LLVector3 pos_val = pos_keyp->mPosition; | ||
2072 | pos_val = pos_val * 100.f; | ||
2073 | pos_val += nominal_pos; | ||
2074 | apr_file_printf(fp, " <TRANSLATION>%0.4f %0.4f %0.4f</TRANSLATION>\n", pos_val.mV[VX], pos_val.mV[VY], pos_val.mV[VZ]); | ||
2075 | pos_keyp = joint_motionp->mPositionCurve.mKeys.getNextData(); | ||
2076 | } | ||
2077 | else | ||
2078 | { | ||
2079 | apr_file_printf(fp, " <TRANSLATION>%0.4f %0.4f %0.4f</TRANSLATION>\n", nominal_pos.mV[VX], nominal_pos.mV[VY], nominal_pos.mV[VZ]); | ||
2080 | } | ||
2081 | |||
2082 | LLQuaternion rot_val = ~rot_keyp->mRotation; | ||
2083 | apr_file_printf(fp, " <ROTATION>%0.4f %0.4f %0.4f %0.4f</ROTATION>\n", rot_val.mQ[VX], rot_val.mQ[VY], rot_val.mQ[VZ], rot_val.mQ[VW]); | ||
2084 | apr_file_printf(fp, " </KEYFRAME>\n"); | ||
2085 | } | ||
2086 | apr_file_printf(fp, " </TRACK>\n"); | ||
2087 | } | ||
2088 | apr_file_printf(fp, "</ANIMATION>\n"); | ||
2089 | } | ||
2090 | |||
2091 | //-------------------------------------------------------------------- | 2026 | //-------------------------------------------------------------------- |
2092 | // LLKeyframeDataCache::dumpDiagInfo() | 2027 | // LLKeyframeDataCache::dumpDiagInfo() |
2093 | //-------------------------------------------------------------------- | 2028 | //-------------------------------------------------------------------- |
diff --git a/linden/indra/llcharacter/llkeyframemotion.h b/linden/indra/llcharacter/llkeyframemotion.h index 0ad0181..5f897cf 100644 --- a/linden/indra/llcharacter/llkeyframemotion.h +++ b/linden/indra/llcharacter/llkeyframemotion.h | |||
@@ -43,7 +43,6 @@ | |||
43 | #include "llhandmotion.h" | 43 | #include "llhandmotion.h" |
44 | #include "lljointstate.h" | 44 | #include "lljointstate.h" |
45 | #include "llmotion.h" | 45 | #include "llmotion.h" |
46 | #include "llptrskipmap.h" | ||
47 | #include "llquaternion.h" | 46 | #include "llquaternion.h" |
48 | #include "v3dmath.h" | 47 | #include "v3dmath.h" |
49 | #include "v3math.h" | 48 | #include "v3math.h" |
@@ -158,7 +157,6 @@ public: | |||
158 | U32 getFileSize(); | 157 | U32 getFileSize(); |
159 | BOOL serialize(LLDataPacker& dp) const; | 158 | BOOL serialize(LLDataPacker& dp) const; |
160 | BOOL deserialize(LLDataPacker& dp); | 159 | BOOL deserialize(LLDataPacker& dp); |
161 | void writeCAL3D(apr_file_t* fp); | ||
162 | BOOL isLoaded() { return mJointMotionList != NULL; } | 160 | BOOL isLoaded() { return mJointMotionList != NULL; } |
163 | 161 | ||
164 | 162 | ||
@@ -339,7 +337,8 @@ public: | |||
339 | 337 | ||
340 | InterpolationType mInterpolationType; | 338 | InterpolationType mInterpolationType; |
341 | S32 mNumKeys; | 339 | S32 mNumKeys; |
342 | LLPtrSkipMap<F32, ScaleKey*> mKeys; | 340 | typedef std::map<F32, ScaleKey> key_map_t; |
341 | key_map_t mKeys; | ||
343 | ScaleKey mLoopInKey; | 342 | ScaleKey mLoopInKey; |
344 | ScaleKey mLoopOutKey; | 343 | ScaleKey mLoopOutKey; |
345 | }; | 344 | }; |
@@ -357,7 +356,8 @@ public: | |||
357 | 356 | ||
358 | InterpolationType mInterpolationType; | 357 | InterpolationType mInterpolationType; |
359 | S32 mNumKeys; | 358 | S32 mNumKeys; |
360 | LLPtrSkipMap<F32, RotationKey*> mKeys; | 359 | typedef std::map<F32, RotationKey> key_map_t; |
360 | key_map_t mKeys; | ||
361 | RotationKey mLoopInKey; | 361 | RotationKey mLoopInKey; |
362 | RotationKey mLoopOutKey; | 362 | RotationKey mLoopOutKey; |
363 | }; | 363 | }; |
@@ -375,7 +375,8 @@ public: | |||
375 | 375 | ||
376 | InterpolationType mInterpolationType; | 376 | InterpolationType mInterpolationType; |
377 | S32 mNumKeys; | 377 | S32 mNumKeys; |
378 | LLPtrSkipMap<F32, PositionKey*> mKeys; | 378 | typedef std::map<F32, PositionKey> key_map_t; |
379 | key_map_t mKeys; | ||
379 | PositionKey mLoopInKey; | 380 | PositionKey mLoopInKey; |
380 | PositionKey mLoopOutKey; | 381 | PositionKey mLoopOutKey; |
381 | }; | 382 | }; |
diff --git a/linden/indra/llcharacter/llkeyframemotionparam.cpp b/linden/indra/llcharacter/llkeyframemotionparam.cpp index 2dd935c..106c02c 100644 --- a/linden/indra/llcharacter/llkeyframemotionparam.cpp +++ b/linden/indra/llcharacter/llkeyframemotionparam.cpp | |||
@@ -48,14 +48,6 @@ | |||
48 | //----------------------------------------------------------------------------- | 48 | //----------------------------------------------------------------------------- |
49 | 49 | ||
50 | //----------------------------------------------------------------------------- | 50 | //----------------------------------------------------------------------------- |
51 | // sortFunc() | ||
52 | //----------------------------------------------------------------------------- | ||
53 | BOOL LLKeyframeMotionParam::sortFunc(ParameterizedMotion *new_motion, ParameterizedMotion *tested_motion) | ||
54 | { | ||
55 | return (new_motion->second < tested_motion->second); | ||
56 | } | ||
57 | |||
58 | //----------------------------------------------------------------------------- | ||
59 | // LLKeyframeMotionParam() | 51 | // LLKeyframeMotionParam() |
60 | // Class Constructor | 52 | // Class Constructor |
61 | //----------------------------------------------------------------------------- | 53 | //----------------------------------------------------------------------------- |
@@ -77,17 +69,18 @@ LLKeyframeMotionParam::LLKeyframeMotionParam( const LLUUID &id) : LLMotion(id) | |||
77 | //----------------------------------------------------------------------------- | 69 | //----------------------------------------------------------------------------- |
78 | LLKeyframeMotionParam::~LLKeyframeMotionParam() | 70 | LLKeyframeMotionParam::~LLKeyframeMotionParam() |
79 | { | 71 | { |
80 | for (U32 i = 0; i < mParameterizedMotions.length(); i++) | 72 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
73 | iter != mParameterizedMotions.end(); ++iter) | ||
81 | { | 74 | { |
82 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 75 | motion_list_t& motionList = iter->second; |
83 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 76 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) |
84 | { | 77 | { |
85 | delete paramMotion->first; | 78 | const ParameterizedMotion& paramMotion = *iter2; |
79 | delete paramMotion.first; // note - deletes the structure; ParameterizedMotion pair remains intact | ||
86 | } | 80 | } |
87 | delete motionList; | 81 | motionList.clear(); |
88 | } | 82 | } |
89 | 83 | mParameterizedMotions.clear(); | |
90 | mParameterizedMotions.removeAll(); | ||
91 | } | 84 | } |
92 | 85 | ||
93 | //----------------------------------------------------------------------------- | 86 | //----------------------------------------------------------------------------- |
@@ -102,36 +95,39 @@ LLMotion::LLMotionInitStatus LLKeyframeMotionParam::onInitialize(LLCharacter *ch | |||
102 | return STATUS_FAILURE; | 95 | return STATUS_FAILURE; |
103 | } | 96 | } |
104 | 97 | ||
105 | for (U32 i = 0; i < mParameterizedMotions.length(); i++) | 98 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
99 | iter != mParameterizedMotions.end(); ++iter) | ||
106 | { | 100 | { |
107 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 101 | motion_list_t& motionList = iter->second; |
108 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 102 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) |
109 | { | 103 | { |
110 | paramMotion->first->onInitialize(character); | 104 | const ParameterizedMotion& paramMotion = *iter2; |
111 | 105 | ||
112 | if (paramMotion->first->getDuration() > mEaseInDuration) | 106 | paramMotion.first->onInitialize(character); |
107 | |||
108 | if (paramMotion.first->getDuration() > mEaseInDuration) | ||
113 | { | 109 | { |
114 | mEaseInDuration = paramMotion->first->getEaseInDuration(); | 110 | mEaseInDuration = paramMotion.first->getEaseInDuration(); |
115 | } | 111 | } |
116 | 112 | ||
117 | if (paramMotion->first->getEaseOutDuration() > mEaseOutDuration) | 113 | if (paramMotion.first->getEaseOutDuration() > mEaseOutDuration) |
118 | { | 114 | { |
119 | mEaseOutDuration = paramMotion->first->getEaseOutDuration(); | 115 | mEaseOutDuration = paramMotion.first->getEaseOutDuration(); |
120 | } | 116 | } |
121 | 117 | ||
122 | if (paramMotion->first->getDuration() > mDuration) | 118 | if (paramMotion.first->getDuration() > mDuration) |
123 | { | 119 | { |
124 | mDuration = paramMotion->first->getDuration(); | 120 | mDuration = paramMotion.first->getDuration(); |
125 | } | 121 | } |
126 | 122 | ||
127 | if (paramMotion->first->getPriority() > mPriority) | 123 | if (paramMotion.first->getPriority() > mPriority) |
128 | { | 124 | { |
129 | mPriority = paramMotion->first->getPriority(); | 125 | mPriority = paramMotion.first->getPriority(); |
130 | } | 126 | } |
131 | 127 | ||
132 | LLPose *pose = paramMotion->first->getPose(); | 128 | LLPose *pose = paramMotion.first->getPose(); |
133 | 129 | ||
134 | mPoseBlender.addMotion(paramMotion->first); | 130 | mPoseBlender.addMotion(paramMotion.first); |
135 | for (LLJointState *jsp = pose->getFirstJointState(); jsp; jsp = pose->getNextJointState()) | 131 | for (LLJointState *jsp = pose->getFirstJointState(); jsp; jsp = pose->getNextJointState()) |
136 | { | 132 | { |
137 | LLPose *blendedPose = mPoseBlender.getBlendedPose(); | 133 | LLPose *blendedPose = mPoseBlender.getBlendedPose(); |
@@ -148,12 +144,14 @@ LLMotion::LLMotionInitStatus LLKeyframeMotionParam::onInitialize(LLCharacter *ch | |||
148 | //----------------------------------------------------------------------------- | 144 | //----------------------------------------------------------------------------- |
149 | BOOL LLKeyframeMotionParam::onActivate() | 145 | BOOL LLKeyframeMotionParam::onActivate() |
150 | { | 146 | { |
151 | for (U32 i = 0; i < mParameterizedMotions.length(); i++) | 147 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
148 | iter != mParameterizedMotions.end(); ++iter) | ||
152 | { | 149 | { |
153 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 150 | motion_list_t& motionList = iter->second; |
154 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 151 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) |
155 | { | 152 | { |
156 | paramMotion->first->activate(); | 153 | const ParameterizedMotion& paramMotion = *iter2; |
154 | paramMotion.first->activate(); | ||
157 | } | 155 | } |
158 | } | 156 | } |
159 | return TRUE; | 157 | return TRUE; |
@@ -165,46 +163,48 @@ BOOL LLKeyframeMotionParam::onActivate() | |||
165 | //----------------------------------------------------------------------------- | 163 | //----------------------------------------------------------------------------- |
166 | BOOL LLKeyframeMotionParam::onUpdate(F32 time, U8* joint_mask) | 164 | BOOL LLKeyframeMotionParam::onUpdate(F32 time, U8* joint_mask) |
167 | { | 165 | { |
168 | F32 weightFactor = 1.f / (F32)mParameterizedMotions.length(); | 166 | F32 weightFactor = 1.f / (F32)mParameterizedMotions.size(); |
169 | U32 i; | ||
170 | 167 | ||
171 | // zero out all pose weights | 168 | // zero out all pose weights |
172 | for (i = 0; i < mParameterizedMotions.length(); i++) | 169 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
170 | iter != mParameterizedMotions.end(); ++iter) | ||
173 | { | 171 | { |
174 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 172 | motion_list_t& motionList = iter->second; |
175 | 173 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) | |
176 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | ||
177 | { | 174 | { |
178 | // llinfos << "Weight for pose " << paramMotion->first->getName() << " is " << paramMotion->first->getPose()->getWeight() << llendl; | 175 | const ParameterizedMotion& paramMotion = *iter2; |
179 | paramMotion->first->getPose()->setWeight(0.f); | 176 | // llinfos << "Weight for pose " << paramMotion.first->getName() << " is " << paramMotion.first->getPose()->getWeight() << llendl; |
177 | paramMotion.first->getPose()->setWeight(0.f); | ||
180 | } | 178 | } |
181 | } | 179 | } |
182 | 180 | ||
183 | 181 | ||
184 | for (i = 0; i < mParameterizedMotions.length(); i++) | 182 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
183 | iter != mParameterizedMotions.end(); ++iter) | ||
185 | { | 184 | { |
186 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 185 | const std::string& paramName = iter->first; |
187 | std::string *paramName = mParameterizedMotions.getIndexAt(i); | 186 | F32* paramValue = (F32 *)mCharacter->getAnimationData(paramName); |
188 | F32* paramValue = (F32 *)mCharacter->getAnimationData(*paramName); | ||
189 | ParameterizedMotion* firstMotion = NULL; | ||
190 | ParameterizedMotion* secondMotion = NULL; | ||
191 | |||
192 | if (NULL == paramValue) // unexpected, but... | 187 | if (NULL == paramValue) // unexpected, but... |
193 | { | 188 | { |
194 | llwarns << "paramValue == NULL" << llendl; | 189 | llwarns << "paramValue == NULL" << llendl; |
195 | continue; | 190 | continue; |
196 | } | 191 | } |
197 | 192 | ||
198 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 193 | const ParameterizedMotion* firstMotion = NULL; |
194 | const ParameterizedMotion* secondMotion = NULL; | ||
195 | |||
196 | motion_list_t& motionList = iter->second; | ||
197 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) | ||
199 | { | 198 | { |
200 | paramMotion->first->onUpdate(time, joint_mask); | 199 | const ParameterizedMotion& paramMotion = *iter2; |
200 | paramMotion.first->onUpdate(time, joint_mask); | ||
201 | 201 | ||
202 | F32 distToParam = paramMotion->second - *paramValue; | 202 | F32 distToParam = paramMotion.second - *paramValue; |
203 | 203 | ||
204 | if ( distToParam <= 0.f) | 204 | if ( distToParam <= 0.f) |
205 | { | 205 | { |
206 | // keep track of the motion closest to the parameter value | 206 | // keep track of the motion closest to the parameter value |
207 | firstMotion = paramMotion; | 207 | firstMotion = ¶mMotion; |
208 | } | 208 | } |
209 | else | 209 | else |
210 | { | 210 | { |
@@ -212,13 +212,13 @@ BOOL LLKeyframeMotionParam::onUpdate(F32 time, U8* joint_mask) | |||
212 | // so store the first motion we find as the second one we want to blend... | 212 | // so store the first motion we find as the second one we want to blend... |
213 | if (firstMotion && !secondMotion ) | 213 | if (firstMotion && !secondMotion ) |
214 | { | 214 | { |
215 | secondMotion = paramMotion; | 215 | secondMotion = ¶mMotion; |
216 | } | 216 | } |
217 | //...or, if we've seen no other motion so far, make sure we blend to this only | 217 | //...or, if we've seen no other motion so far, make sure we blend to this only |
218 | else if (!firstMotion) | 218 | else if (!firstMotion) |
219 | { | 219 | { |
220 | firstMotion = paramMotion; | 220 | firstMotion = ¶mMotion; |
221 | secondMotion = paramMotion; | 221 | secondMotion = ¶mMotion; |
222 | } | 222 | } |
223 | } | 223 | } |
224 | } | 224 | } |
@@ -283,12 +283,14 @@ BOOL LLKeyframeMotionParam::onUpdate(F32 time, U8* joint_mask) | |||
283 | //----------------------------------------------------------------------------- | 283 | //----------------------------------------------------------------------------- |
284 | void LLKeyframeMotionParam::onDeactivate() | 284 | void LLKeyframeMotionParam::onDeactivate() |
285 | { | 285 | { |
286 | for (U32 i = 0; i < mParameterizedMotions.length(); i++) | 286 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
287 | iter != mParameterizedMotions.end(); ++iter) | ||
287 | { | 288 | { |
288 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 289 | motion_list_t& motionList = iter->second; |
289 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 290 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) |
290 | { | 291 | { |
291 | paramMotion->first->onDeactivate(); | 292 | const ParameterizedMotion& paramMotion = *iter2; |
293 | paramMotion.first->onDeactivate(); | ||
292 | } | 294 | } |
293 | } | 295 | } |
294 | } | 296 | } |
@@ -307,23 +309,8 @@ BOOL LLKeyframeMotionParam::addKeyframeMotion(char *name, const LLUUID &id, char | |||
307 | 309 | ||
308 | newMotion->setName(name); | 310 | newMotion->setName(name); |
309 | 311 | ||
310 | // make sure a list of motions exists for this parameter | ||
311 | LLLinkedList< ParameterizedMotion > *motionList; | ||
312 | if (mParameterizedMotions.getValue(param)) | ||
313 | { | ||
314 | motionList = *mParameterizedMotions.getValue(param); | ||
315 | } | ||
316 | else | ||
317 | { | ||
318 | motionList = new LLLinkedList< ParameterizedMotion >; | ||
319 | motionList->setInsertBefore(sortFunc); | ||
320 | mParameterizedMotions.addToHead(param, motionList); | ||
321 | } | ||
322 | |||
323 | // now add motion to this list | 312 | // now add motion to this list |
324 | ParameterizedMotion *parameterizedMotion = new ParameterizedMotion(newMotion, value); | 313 | mParameterizedMotions[param].insert(ParameterizedMotion(newMotion, value)); |
325 | |||
326 | motionList->addDataSorted(parameterizedMotion); | ||
327 | 314 | ||
328 | return TRUE; | 315 | return TRUE; |
329 | } | 316 | } |
@@ -334,14 +321,16 @@ BOOL LLKeyframeMotionParam::addKeyframeMotion(char *name, const LLUUID &id, char | |||
334 | //----------------------------------------------------------------------------- | 321 | //----------------------------------------------------------------------------- |
335 | void LLKeyframeMotionParam::setDefaultKeyframeMotion(char *name) | 322 | void LLKeyframeMotionParam::setDefaultKeyframeMotion(char *name) |
336 | { | 323 | { |
337 | for (U32 i = 0; i < mParameterizedMotions.length(); i++) | 324 | for (motion_map_t::iterator iter = mParameterizedMotions.begin(); |
325 | iter != mParameterizedMotions.end(); ++iter) | ||
338 | { | 326 | { |
339 | LLLinkedList< ParameterizedMotion > *motionList = *mParameterizedMotions.getValueAt(i); | 327 | motion_list_t& motionList = iter->second; |
340 | for (ParameterizedMotion* paramMotion = motionList->getFirstData(); paramMotion; paramMotion = motionList->getNextData()) | 328 | for (motion_list_t::iterator iter2 = motionList.begin(); iter2 != motionList.end(); ++iter2) |
341 | { | 329 | { |
342 | if (paramMotion->first->getName() == name) | 330 | const ParameterizedMotion& paramMotion = *iter2; |
331 | if (paramMotion.first->getName() == name) | ||
343 | { | 332 | { |
344 | mDefaultKeyframeMotion = paramMotion->first; | 333 | mDefaultKeyframeMotion = paramMotion.first; |
345 | } | 334 | } |
346 | } | 335 | } |
347 | } | 336 | } |
diff --git a/linden/indra/llcharacter/llkeyframemotionparam.h b/linden/indra/llcharacter/llkeyframemotionparam.h index a5bc2cb..f509e6a 100644 --- a/linden/indra/llcharacter/llkeyframemotionparam.h +++ b/linden/indra/llcharacter/llkeyframemotionparam.h | |||
@@ -143,8 +143,20 @@ protected: | |||
143 | // Member Data | 143 | // Member Data |
144 | //------------------------------------------------------------------------- | 144 | //------------------------------------------------------------------------- |
145 | 145 | ||
146 | typedef LLLinkedList < ParameterizedMotion > motion_list_t; | 146 | struct compare_motions |
147 | LLAssocList <std::string, motion_list_t* > mParameterizedMotions; | 147 | { |
148 | bool operator() (const ParameterizedMotion& a, const ParameterizedMotion& b) const | ||
149 | { | ||
150 | if (a.second != b.second) | ||
151 | return (a.second < b.second); | ||
152 | else | ||
153 | return a.first < b.first; | ||
154 | } | ||
155 | }; | ||
156 | |||
157 | typedef std::set < ParameterizedMotion, compare_motions > motion_list_t; | ||
158 | typedef std::map <std::string, motion_list_t > motion_map_t; | ||
159 | motion_map_t mParameterizedMotions; | ||
148 | LLMotion* mDefaultKeyframeMotion; | 160 | LLMotion* mDefaultKeyframeMotion; |
149 | LLCharacter* mCharacter; | 161 | LLCharacter* mCharacter; |
150 | LLPoseBlender mPoseBlender; | 162 | LLPoseBlender mPoseBlender; |
diff --git a/linden/indra/llcharacter/llmotioncontroller.cpp b/linden/indra/llcharacter/llmotioncontroller.cpp index d1a2a53..028cf22 100644 --- a/linden/indra/llcharacter/llmotioncontroller.cpp +++ b/linden/indra/llcharacter/llmotioncontroller.cpp | |||
@@ -746,7 +746,7 @@ void LLMotionController::updateMotion() | |||
746 | 746 | ||
747 | // is calculating a new keyframe pose, make sure the last one gets applied | 747 | // is calculating a new keyframe pose, make sure the last one gets applied |
748 | mPoseBlender.interpolate(1.f); | 748 | mPoseBlender.interpolate(1.f); |
749 | mPoseBlender.clearBlenders(); | 749 | clearBlenders(); |
750 | 750 | ||
751 | mTimeStepCount = quantum_count; | 751 | mTimeStepCount = quantum_count; |
752 | mLastTime = mTime; | 752 | mLastTime = mTime; |
@@ -824,6 +824,13 @@ void LLMotionController::updateMotion() | |||
824 | //----------------------------------------------------------------------------- | 824 | //----------------------------------------------------------------------------- |
825 | BOOL LLMotionController::activateMotionInstance(LLMotion *motion, F32 time) | 825 | BOOL LLMotionController::activateMotionInstance(LLMotion *motion, F32 time) |
826 | { | 826 | { |
827 | // It's not clear why the getWeight() line seems to be crashing this, but | ||
828 | // hopefully this fixes it. | ||
829 | if (motion == NULL || motion->getPose() == NULL) | ||
830 | { | ||
831 | return FALSE; | ||
832 | } | ||
833 | |||
827 | if (mLoadingMotions.find(motion) != mLoadingMotions.end()) | 834 | if (mLoadingMotions.find(motion) != mLoadingMotions.end()) |
828 | { | 835 | { |
829 | // we want to start this motion, but we can't yet, so flag it as started | 836 | // we want to start this motion, but we can't yet, so flag it as started |
diff --git a/linden/indra/llcharacter/llmotioncontroller.h b/linden/indra/llcharacter/llmotioncontroller.h index e66edcb..48e184d 100644 --- a/linden/indra/llcharacter/llmotioncontroller.h +++ b/linden/indra/llcharacter/llmotioncontroller.h | |||
@@ -157,6 +157,8 @@ public: | |||
157 | // deactivates terminated motions` | 157 | // deactivates terminated motions` |
158 | void updateMotion(); | 158 | void updateMotion(); |
159 | 159 | ||
160 | void clearBlenders() { mPoseBlender.clearBlenders(); } | ||
161 | |||
160 | // flush motions | 162 | // flush motions |
161 | // releases all motion instances | 163 | // releases all motion instances |
162 | void flushAllMotions(); | 164 | void flushAllMotions(); |
diff --git a/linden/indra/llcharacter/llpose.cpp b/linden/indra/llcharacter/llpose.cpp index 3a6a221..f496b7b 100644 --- a/linden/indra/llcharacter/llpose.cpp +++ b/linden/indra/llcharacter/llpose.cpp | |||
@@ -379,15 +379,20 @@ void LLJointStateBlender::blendJointStates(BOOL apply_now) | |||
379 | } | 379 | } |
380 | } | 380 | } |
381 | 381 | ||
382 | // apply blended transforms | 382 | if (!added_scale.isFinite()) |
383 | target_joint->setPosition(blended_pos); | 383 | { |
384 | target_joint->setScale(blended_scale); | 384 | added_scale.clearVec(); |
385 | target_joint->setRotation(blended_rot); | 385 | } |
386 | 386 | ||
387 | // apply additive transforms | 387 | if (!blended_scale.isFinite()) |
388 | target_joint->setPosition(target_joint->getPosition() + added_pos); | 388 | { |
389 | target_joint->setScale(target_joint->getScale() + added_scale); | 389 | blended_scale.setVec(1,1,1); |
390 | target_joint->setRotation(added_rot * target_joint->getRotation()); | 390 | } |
391 | |||
392 | // apply transforms | ||
393 | target_joint->setPosition(blended_pos + added_pos); | ||
394 | target_joint->setScale(blended_scale + added_scale); | ||
395 | target_joint->setRotation(added_rot * blended_rot); | ||
391 | 396 | ||
392 | if (apply_now) | 397 | if (apply_now) |
393 | { | 398 | { |
diff --git a/linden/indra/llcharacter/llpose.h b/linden/indra/llcharacter/llpose.h index f67a26b..075a456 100644 --- a/linden/indra/llcharacter/llpose.h +++ b/linden/indra/llcharacter/llpose.h | |||
@@ -37,10 +37,8 @@ | |||
37 | //----------------------------------------------------------------------------- | 37 | //----------------------------------------------------------------------------- |
38 | #include <string> | 38 | #include <string> |
39 | 39 | ||
40 | #include "linked_lists.h" | ||
41 | #include "llmap.h" | 40 | #include "llmap.h" |
42 | #include "lljointstate.h" | 41 | #include "lljointstate.h" |
43 | #include "llassoclist.h" | ||
44 | #include "lljoint.h" | 42 | #include "lljoint.h" |
45 | #include <map> | 43 | #include <map> |
46 | 44 | ||
diff --git a/linden/indra/llcharacter/llstatemachine.h b/linden/indra/llcharacter/llstatemachine.h index f46e4bf..12a71b7 100644 --- a/linden/indra/llcharacter/llstatemachine.h +++ b/linden/indra/llcharacter/llstatemachine.h | |||
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include <string> | 35 | #include <string> |
36 | 36 | ||
37 | #include "llassoclist.h" | ||
38 | #include "llerror.h" | 37 | #include "llerror.h" |
39 | #include <map> | 38 | #include <map> |
40 | 39 | ||