aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llcharacter/llanimationstates.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llcharacter/llanimationstates.cpp')
-rw-r--r--linden/indra/llcharacter/llanimationstates.cpp338
1 files changed, 338 insertions, 0 deletions
diff --git a/linden/indra/llcharacter/llanimationstates.cpp b/linden/indra/llcharacter/llanimationstates.cpp
new file mode 100644
index 0000000..8687dfb
--- /dev/null
+++ b/linden/indra/llcharacter/llanimationstates.cpp
@@ -0,0 +1,338 @@
1/**
2 * @file llanimationstates.cpp
3 * @brief Implementation of animation state related functions.
4 *
5 * Copyright (c) 2001-2007, Linden Research, Inc.
6 *
7 * The source code in this file ("Source Code") is provided by Linden Lab
8 * to you under the terms of the GNU General Public License, version 2.0
9 * ("GPL"), unless you have obtained a separate licensing agreement
10 * ("Other License"), formally executed by you and Linden Lab. Terms of
11 * the GPL can be found in doc/GPL-license.txt in this distribution, or
12 * online at http://secondlife.com/developers/opensource/gplv2
13 *
14 * There are special exceptions to the terms and conditions of the GPL as
15 * it is applied to this Source Code. View the full text of the exception
16 * in the file doc/FLOSS-exception.txt in this software distribution, or
17 * online at http://secondlife.com/developers/opensource/flossexception
18 *
19 * By copying, modifying or distributing this software, you acknowledge
20 * that you have read and understood your obligations described above,
21 * and agree to abide by those obligations.
22 *
23 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
24 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
25 * COMPLETENESS OR PERFORMANCE.
26 */
27
28//-----------------------------------------------------------------------------
29// Agent Animation State
30//-----------------------------------------------------------------------------
31
32#include "linden_common.h"
33
34#include <string.h>
35
36#include "llanimationstates.h"
37#include "llstring.h"
38
39LLUUID AGENT_WALK_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_CROUCHWALK, ANIM_AGENT_TURNLEFT, ANIM_AGENT_TURNRIGHT};
40S32 NUM_AGENT_WALK_ANIMS = sizeof(AGENT_WALK_ANIMS) / sizeof(LLUUID);
41
42LLUUID AGENT_GUN_HOLD_ANIMS[] = {ANIM_AGENT_HOLD_RIFLE_R, ANIM_AGENT_HOLD_HANDGUN_R, ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_AGENT_HOLD_BOW_L};
43S32 NUM_AGENT_GUN_HOLD_ANIMS = sizeof(AGENT_GUN_HOLD_ANIMS) / sizeof(LLUUID);
44
45LLUUID AGENT_GUN_AIM_ANIMS[] = {ANIM_AGENT_AIM_RIFLE_R, ANIM_AGENT_AIM_HANDGUN_R, ANIM_AGENT_AIM_BAZOOKA_R, ANIM_AGENT_AIM_BOW_L};
46S32 NUM_AGENT_GUN_AIM_ANIMS = sizeof(AGENT_GUN_AIM_ANIMS) / sizeof(LLUUID);
47
48LLUUID AGENT_NO_ROTATE_ANIMS[] = {ANIM_AGENT_SIT_GROUND, ANIM_AGENT_SIT_GROUND_CONSTRAINED, ANIM_AGENT_STANDUP};
49S32 NUM_AGENT_NO_ROTATE_ANIMS = sizeof(AGENT_NO_ROTATE_ANIMS) / sizeof(LLUUID);
50
51LLUUID AGENT_STAND_ANIMS[] = {ANIM_AGENT_STAND, ANIM_AGENT_STAND_1, ANIM_AGENT_STAND_2, ANIM_AGENT_STAND_3, ANIM_AGENT_STAND_4};
52S32 NUM_AGENT_STAND_ANIMS = sizeof(AGENT_STAND_ANIMS) / sizeof(LLUUID);
53
54
55LLAnimationLibrary gAnimLibrary;
56
57//-----------------------------------------------------------------------------
58// LLAnimationLibrary()
59//-----------------------------------------------------------------------------
60LLAnimationLibrary::LLAnimationLibrary() :
61 mAnimStringTable(16384)
62{
63 //add animation names to animmap
64 mAnimMap[ANIM_AGENT_AFRAID]= mAnimStringTable.addString("express_afraid");
65 mAnimMap[ANIM_AGENT_AIM_BAZOOKA_R]= mAnimStringTable.addString("aim_r_bazooka");
66 mAnimMap[ANIM_AGENT_AIM_BOW_L]= mAnimStringTable.addString("aim_l_bow");
67 mAnimMap[ANIM_AGENT_AIM_HANDGUN_R]= mAnimStringTable.addString("aim_r_handgun");
68 mAnimMap[ANIM_AGENT_AIM_RIFLE_R]= mAnimStringTable.addString("aim_r_rifle");
69 mAnimMap[ANIM_AGENT_ANGRY]= mAnimStringTable.addString("express_anger");
70 mAnimMap[ANIM_AGENT_AWAY]= mAnimStringTable.addString("away");
71 mAnimMap[ANIM_AGENT_BACKFLIP]= mAnimStringTable.addString("backflip");
72 mAnimMap[ANIM_AGENT_BELLY_LAUGH]= mAnimStringTable.addString("express_laugh");
73 mAnimMap[ANIM_AGENT_BLOW_KISS]= mAnimStringTable.addString("blowkiss");
74 mAnimMap[ANIM_AGENT_BORED]= mAnimStringTable.addString("express_bored");
75 mAnimMap[ANIM_AGENT_BOW]= mAnimStringTable.addString("bow");
76 mAnimMap[ANIM_AGENT_BRUSH]= mAnimStringTable.addString("brush");
77 mAnimMap[ANIM_AGENT_BUSY]= mAnimStringTable.addString("busy");
78 mAnimMap[ANIM_AGENT_CLAP]= mAnimStringTable.addString("clap");
79 mAnimMap[ANIM_AGENT_COURTBOW]= mAnimStringTable.addString("courtbow");
80 mAnimMap[ANIM_AGENT_CROUCH]= mAnimStringTable.addString("crouch");
81 mAnimMap[ANIM_AGENT_CROUCHWALK]= mAnimStringTable.addString("crouchwalk");
82 mAnimMap[ANIM_AGENT_CRY]= mAnimStringTable.addString("express_cry");
83 mAnimMap[ANIM_AGENT_CUSTOMIZE]= mAnimStringTable.addString("turn_180");
84 mAnimMap[ANIM_AGENT_CUSTOMIZE_DONE]= mAnimStringTable.addString("turnback_180");
85 mAnimMap[ANIM_AGENT_DANCE1]= mAnimStringTable.addString("dance1");
86 mAnimMap[ANIM_AGENT_DANCE2]= mAnimStringTable.addString("dance2");
87 mAnimMap[ANIM_AGENT_DANCE3]= mAnimStringTable.addString("dance3");
88 mAnimMap[ANIM_AGENT_DANCE4]= mAnimStringTable.addString("dance4");
89 mAnimMap[ANIM_AGENT_DANCE5]= mAnimStringTable.addString("dance5");
90 mAnimMap[ANIM_AGENT_DANCE6]= mAnimStringTable.addString("dance6");
91 mAnimMap[ANIM_AGENT_DANCE7]= mAnimStringTable.addString("dance7");
92 mAnimMap[ANIM_AGENT_DANCE8]= mAnimStringTable.addString("dance8");
93 mAnimMap[ANIM_AGENT_DEAD]= mAnimStringTable.addString("dead");
94 mAnimMap[ANIM_AGENT_DRINK]= mAnimStringTable.addString("drink");
95 mAnimMap[ANIM_AGENT_EMBARRASSED]= mAnimStringTable.addString("express_embarrased");
96 mAnimMap[ANIM_AGENT_EXPRESS_AFRAID]= mAnimStringTable.addString("express_afraid_emote");
97 mAnimMap[ANIM_AGENT_EXPRESS_ANGER]= mAnimStringTable.addString("express_anger_emote");
98 mAnimMap[ANIM_AGENT_EXPRESS_BORED]= mAnimStringTable.addString("express_bored_emote");
99 mAnimMap[ANIM_AGENT_EXPRESS_CRY]= mAnimStringTable.addString("express_cry_emote");
100 mAnimMap[ANIM_AGENT_EXPRESS_DISDAIN]= mAnimStringTable.addString("express_disdain");
101 mAnimMap[ANIM_AGENT_EXPRESS_EMBARRASSED]= mAnimStringTable.addString("express_embarrassed_emote");
102 mAnimMap[ANIM_AGENT_EXPRESS_FROWN]= mAnimStringTable.addString("express_frown");
103 mAnimMap[ANIM_AGENT_EXPRESS_KISS]= mAnimStringTable.addString("express_kiss");
104 mAnimMap[ANIM_AGENT_EXPRESS_LAUGH]= mAnimStringTable.addString("express_laugh_emote");
105 mAnimMap[ANIM_AGENT_EXPRESS_OPEN_MOUTH]= mAnimStringTable.addString("express_open_mouth");
106 mAnimMap[ANIM_AGENT_EXPRESS_REPULSED]= mAnimStringTable.addString("express_repulsed_emote");
107 mAnimMap[ANIM_AGENT_EXPRESS_SAD]= mAnimStringTable.addString("express_sad_emote");
108 mAnimMap[ANIM_AGENT_EXPRESS_SHRUG]= mAnimStringTable.addString("express_shrug_emote");
109 mAnimMap[ANIM_AGENT_EXPRESS_SMILE]= mAnimStringTable.addString("express_smile");
110 mAnimMap[ANIM_AGENT_EXPRESS_SURPRISE]= mAnimStringTable.addString("express_surprise_emote");
111 mAnimMap[ANIM_AGENT_EXPRESS_TONGUE_OUT]= mAnimStringTable.addString("express_tongue_out");
112 mAnimMap[ANIM_AGENT_EXPRESS_TOOTHSMILE]= mAnimStringTable.addString("express_toothsmile");
113 mAnimMap[ANIM_AGENT_EXPRESS_WINK]= mAnimStringTable.addString("express_wink_emote");
114 mAnimMap[ANIM_AGENT_EXPRESS_WORRY]= mAnimStringTable.addString("express_worry_emote");
115 mAnimMap[ANIM_AGENT_FALLDOWN]= mAnimStringTable.addString("falldown");
116 mAnimMap[ANIM_AGENT_FEMALE_WALK]= mAnimStringTable.addString("female_walk");
117 mAnimMap[ANIM_AGENT_FINGER_WAG]= mAnimStringTable.addString("angry_fingerwag");
118 mAnimMap[ANIM_AGENT_FIST_PUMP]= mAnimStringTable.addString("fist_pump");
119 mAnimMap[ANIM_AGENT_FLY]= mAnimStringTable.addString("fly");
120 mAnimMap[ANIM_AGENT_FLYSLOW]= mAnimStringTable.addString("flyslow");
121 mAnimMap[ANIM_AGENT_HELLO]= mAnimStringTable.addString("hello");
122 mAnimMap[ANIM_AGENT_HOLD_BAZOOKA_R]= mAnimStringTable.addString("hold_r_bazooka");
123 mAnimMap[ANIM_AGENT_HOLD_BOW_L]= mAnimStringTable.addString("hold_l_bow");
124 mAnimMap[ANIM_AGENT_HOLD_HANDGUN_R]= mAnimStringTable.addString("hold_r_handgun");
125 mAnimMap[ANIM_AGENT_HOLD_RIFLE_R]= mAnimStringTable.addString("hold_r_rifle");
126 mAnimMap[ANIM_AGENT_HOLD_THROW_R]= mAnimStringTable.addString("hold_throw_r");
127 mAnimMap[ANIM_AGENT_HOVER]= mAnimStringTable.addString("hover");
128 mAnimMap[ANIM_AGENT_HOVER_DOWN]= mAnimStringTable.addString("hover_down");
129 mAnimMap[ANIM_AGENT_HOVER_UP]= mAnimStringTable.addString("hover_up");
130 mAnimMap[ANIM_AGENT_IMPATIENT]= mAnimStringTable.addString("impatient");
131 mAnimMap[ANIM_AGENT_JUMP]= mAnimStringTable.addString("jump");
132 mAnimMap[ANIM_AGENT_JUMP_FOR_JOY]= mAnimStringTable.addString("jumpforjoy");
133 mAnimMap[ANIM_AGENT_KISS_MY_BUTT]= mAnimStringTable.addString("kissmybutt");
134 mAnimMap[ANIM_AGENT_LAND]= mAnimStringTable.addString("land");
135 mAnimMap[ANIM_AGENT_LAUGH_SHORT]= mAnimStringTable.addString("laugh_short");
136 mAnimMap[ANIM_AGENT_MEDIUM_LAND]= mAnimStringTable.addString("soft_land");
137 mAnimMap[ANIM_AGENT_MOTORCYCLE_SIT]= mAnimStringTable.addString("motorcycle_sit");
138 mAnimMap[ANIM_AGENT_MUSCLE_BEACH]= mAnimStringTable.addString("musclebeach");
139 mAnimMap[ANIM_AGENT_NO]= mAnimStringTable.addString("no_head");
140 mAnimMap[ANIM_AGENT_NO_UNHAPPY]= mAnimStringTable.addString("no_unhappy");
141 mAnimMap[ANIM_AGENT_NYAH_NYAH]= mAnimStringTable.addString("nyanya");
142 mAnimMap[ANIM_AGENT_ONETWO_PUNCH]= mAnimStringTable.addString("punch_onetwo");
143 mAnimMap[ANIM_AGENT_PEACE]= mAnimStringTable.addString("peace");
144 mAnimMap[ANIM_AGENT_POINT_ME]= mAnimStringTable.addString("point_me");
145 mAnimMap[ANIM_AGENT_POINT_YOU]= mAnimStringTable.addString("point_you");
146 mAnimMap[ANIM_AGENT_PRE_JUMP]= mAnimStringTable.addString("prejump");
147 mAnimMap[ANIM_AGENT_PUNCH_LEFT]= mAnimStringTable.addString("punch_l");
148 mAnimMap[ANIM_AGENT_PUNCH_RIGHT]= mAnimStringTable.addString("punch_r");
149 mAnimMap[ANIM_AGENT_REPULSED]= mAnimStringTable.addString("express_repulsed");
150 mAnimMap[ANIM_AGENT_ROUNDHOUSE_KICK]= mAnimStringTable.addString("kick_roundhouse_r");
151 mAnimMap[ANIM_AGENT_RPS_COUNTDOWN]= mAnimStringTable.addString("rps_countdown");
152 mAnimMap[ANIM_AGENT_RPS_PAPER]= mAnimStringTable.addString("rps_paper");
153 mAnimMap[ANIM_AGENT_RPS_ROCK]= mAnimStringTable.addString("rps_rock");
154 mAnimMap[ANIM_AGENT_RPS_SCISSORS]= mAnimStringTable.addString("rps_scissors");
155 mAnimMap[ANIM_AGENT_RUN]= mAnimStringTable.addString("run");
156 mAnimMap[ANIM_AGENT_SAD]= mAnimStringTable.addString("express_sad");
157 mAnimMap[ANIM_AGENT_SALUTE]= mAnimStringTable.addString("salute");
158 mAnimMap[ANIM_AGENT_SHOOT_BOW_L]= mAnimStringTable.addString("shoot_l_bow");
159 mAnimMap[ANIM_AGENT_SHOUT]= mAnimStringTable.addString("shout");
160 mAnimMap[ANIM_AGENT_SHRUG]= mAnimStringTable.addString("express_shrug");
161 mAnimMap[ANIM_AGENT_SIT]= mAnimStringTable.addString("sit");
162 mAnimMap[ANIM_AGENT_SIT_FEMALE]= mAnimStringTable.addString("sit_female");
163 mAnimMap[ANIM_AGENT_SIT_GROUND]= mAnimStringTable.addString("sit_ground");
164 mAnimMap[ANIM_AGENT_SIT_GROUND_CONSTRAINED]= mAnimStringTable.addString("sit_ground_constrained");
165 mAnimMap[ANIM_AGENT_SIT_GENERIC]= mAnimStringTable.addString("sit_generic");
166 mAnimMap[ANIM_AGENT_SIT_TO_STAND]= mAnimStringTable.addString("sit_to_stand");
167 mAnimMap[ANIM_AGENT_SLEEP]= mAnimStringTable.addString("sleep");
168 mAnimMap[ANIM_AGENT_SMOKE_IDLE]= mAnimStringTable.addString("smoke_idle");
169 mAnimMap[ANIM_AGENT_SMOKE_INHALE]= mAnimStringTable.addString("smoke_inhale");
170 mAnimMap[ANIM_AGENT_SMOKE_THROW_DOWN]= mAnimStringTable.addString("smoke_throw_down");
171 mAnimMap[ANIM_AGENT_SNAPSHOT]= mAnimStringTable.addString("snapshot");
172 mAnimMap[ANIM_AGENT_STAND]= mAnimStringTable.addString("stand");
173 mAnimMap[ANIM_AGENT_STANDUP]= mAnimStringTable.addString("standup");
174 mAnimMap[ANIM_AGENT_STAND_1]= mAnimStringTable.addString("stand_1");
175 mAnimMap[ANIM_AGENT_STAND_2]= mAnimStringTable.addString("stand_2");
176 mAnimMap[ANIM_AGENT_STAND_3]= mAnimStringTable.addString("stand_3");
177 mAnimMap[ANIM_AGENT_STAND_4]= mAnimStringTable.addString("stand_4");
178 mAnimMap[ANIM_AGENT_STRETCH]= mAnimStringTable.addString("stretch");
179 mAnimMap[ANIM_AGENT_STRIDE]= mAnimStringTable.addString("stride");
180 mAnimMap[ANIM_AGENT_SURF]= mAnimStringTable.addString("surf");
181 mAnimMap[ANIM_AGENT_SURPRISE]= mAnimStringTable.addString("express_surprise");
182 mAnimMap[ANIM_AGENT_SWORD_STRIKE]= mAnimStringTable.addString("sword_strike_r");
183 mAnimMap[ANIM_AGENT_TALK]= mAnimStringTable.addString("talk");
184 mAnimMap[ANIM_AGENT_TANTRUM]= mAnimStringTable.addString("angry_tantrum");
185 mAnimMap[ANIM_AGENT_THROW_R]= mAnimStringTable.addString("throw_r");
186 mAnimMap[ANIM_AGENT_TRYON_SHIRT]= mAnimStringTable.addString("tryon_shirt");
187 mAnimMap[ANIM_AGENT_TURNLEFT]= mAnimStringTable.addString("turnleft");
188 mAnimMap[ANIM_AGENT_TURNRIGHT]= mAnimStringTable.addString("turnright");
189 mAnimMap[ANIM_AGENT_TYPE]= mAnimStringTable.addString("type");
190 mAnimMap[ANIM_AGENT_WALK]= mAnimStringTable.addString("walk");
191 mAnimMap[ANIM_AGENT_WHISPER]= mAnimStringTable.addString("whisper");
192 mAnimMap[ANIM_AGENT_WHISTLE]= mAnimStringTable.addString("whistle");
193 mAnimMap[ANIM_AGENT_WINK]= mAnimStringTable.addString("express_wink");
194 mAnimMap[ANIM_AGENT_WINK_HOLLYWOOD]= mAnimStringTable.addString("wink_hollywood");
195 mAnimMap[ANIM_AGENT_WORRY]= mAnimStringTable.addString("express_worry");
196 mAnimMap[ANIM_AGENT_YES]= mAnimStringTable.addString("yes_head");
197 mAnimMap[ANIM_AGENT_YES_HAPPY]= mAnimStringTable.addString("yes_happy");
198 mAnimMap[ANIM_AGENT_YOGA_FLOAT]= mAnimStringTable.addString("yoga_float");
199}
200
201//-----------------------------------------------------------------------------
202// ~LLAnimationLibrary()
203//-----------------------------------------------------------------------------
204LLAnimationLibrary::~LLAnimationLibrary()
205{
206}
207
208//-----------------------------------------------------------------------------
209// Return the text name of an animation state
210//-----------------------------------------------------------------------------
211const char *LLAnimationLibrary::animStateToString( const LLUUID& state )
212{
213 if (state.isNull())
214 {
215 return NULL;
216 }
217 if (mAnimMap.count(state))
218 {
219 return mAnimMap[state];
220 }
221
222 return NULL;
223}
224
225
226//-----------------------------------------------------------------------------
227// Return the animation state for a given name
228//-----------------------------------------------------------------------------
229LLUUID LLAnimationLibrary::stringToAnimState( const char *name, BOOL allow_ids )
230{
231 LLString lower_case_name(name);
232 LLString::toLower(lower_case_name);
233
234 char *true_name = mAnimStringTable.checkString(lower_case_name.c_str());
235
236 LLUUID id;
237 id.setNull();
238
239 if (true_name)
240 {
241 for (anim_map_t::iterator iter = mAnimMap.begin();
242 iter != mAnimMap.end(); iter++)
243 {
244 if (iter->second == true_name)
245 {
246 id = iter->first;
247 break;
248 }
249 }
250 }
251 else if (allow_ids)
252 {
253 // try to convert string to LLUUID
254 id.set(name, FALSE);
255 }
256
257 return id;
258}
259
260// Animation states that the user can trigger as part of a gesture
261const LLAnimStateEntry gUserAnimStates[] = {
262 LLAnimStateEntry("Afraid", "express_afraid", ANIM_AGENT_AFRAID),
263 LLAnimStateEntry("Angry", "express_anger", ANIM_AGENT_ANGRY),
264 LLAnimStateEntry("Away", "away", ANIM_AGENT_AWAY),
265 LLAnimStateEntry("Backflip", "backflip", ANIM_AGENT_BACKFLIP),
266 LLAnimStateEntry("Belly Laugh", "express_laugh", ANIM_AGENT_BELLY_LAUGH),
267 LLAnimStateEntry("BigSmile", "express_toothsmile", ANIM_AGENT_EXPRESS_TOOTHSMILE),
268 LLAnimStateEntry("Blow Kiss", "blowkiss", ANIM_AGENT_BLOW_KISS),
269 LLAnimStateEntry("Bored", "express_bored", ANIM_AGENT_BORED),
270 LLAnimStateEntry("Bow", "bow", ANIM_AGENT_BOW),
271 LLAnimStateEntry("Clap", "clap", ANIM_AGENT_CLAP),
272 LLAnimStateEntry("Court Bow", "courtbow", ANIM_AGENT_COURTBOW),
273 LLAnimStateEntry("Cry", "express_cry", ANIM_AGENT_CRY),
274 LLAnimStateEntry("Dance 1", "dance1", ANIM_AGENT_DANCE1),
275 LLAnimStateEntry("Dance 2", "dance2", ANIM_AGENT_DANCE2),
276 LLAnimStateEntry("Dance 3", "dance3", ANIM_AGENT_DANCE3),
277 LLAnimStateEntry("Dance 4", "dance4", ANIM_AGENT_DANCE4),
278 LLAnimStateEntry("Dance 5", "dance5", ANIM_AGENT_DANCE5),
279 LLAnimStateEntry("Dance 6", "dance6", ANIM_AGENT_DANCE6),
280 LLAnimStateEntry("Dance 7", "dance7", ANIM_AGENT_DANCE7),
281 LLAnimStateEntry("Dance 8", "dance8", ANIM_AGENT_DANCE8),
282 LLAnimStateEntry("Disdain", "express_disdain", ANIM_AGENT_EXPRESS_DISDAIN),
283 LLAnimStateEntry("Drink", "drink", ANIM_AGENT_DRINK),
284 LLAnimStateEntry("Embarrassed", "express_embarrased", ANIM_AGENT_EMBARRASSED),
285 LLAnimStateEntry("Finger Wag", "angry_fingerwag", ANIM_AGENT_FINGER_WAG),
286 LLAnimStateEntry("Fist Pump", "fist_pump", ANIM_AGENT_FIST_PUMP),
287 LLAnimStateEntry("Floating Yoga", "yoga_float", ANIM_AGENT_YOGA_FLOAT),
288 LLAnimStateEntry("Frown", "express_frown", ANIM_AGENT_EXPRESS_FROWN),
289 LLAnimStateEntry("Impatient", "impatient", ANIM_AGENT_IMPATIENT),
290 LLAnimStateEntry("Jump For Joy", "jumpforjoy", ANIM_AGENT_JUMP_FOR_JOY),
291 LLAnimStateEntry("Kiss My Butt", "kissmybutt", ANIM_AGENT_KISS_MY_BUTT),
292 LLAnimStateEntry("Kiss", "express_kiss", ANIM_AGENT_EXPRESS_KISS),
293 LLAnimStateEntry("Laugh", "laugh_short", ANIM_AGENT_LAUGH_SHORT),
294 LLAnimStateEntry("Muscle Beach", "musclebeach", ANIM_AGENT_MUSCLE_BEACH),
295 LLAnimStateEntry("No (Unhappy)", "no_unhappy", ANIM_AGENT_NO_UNHAPPY),
296 LLAnimStateEntry("No", "no_head", ANIM_AGENT_NO),
297 LLAnimStateEntry("Nya-nya-nya", "nyanya", ANIM_AGENT_NYAH_NYAH),
298 LLAnimStateEntry("One-Two Punch", "punch_onetwo", ANIM_AGENT_ONETWO_PUNCH),
299 LLAnimStateEntry("Open Mouth", "express_open_mouth", ANIM_AGENT_EXPRESS_OPEN_MOUTH),
300 LLAnimStateEntry("Peace", "peace", ANIM_AGENT_PEACE),
301 LLAnimStateEntry("Point at Other", "point_you", ANIM_AGENT_POINT_YOU),
302 LLAnimStateEntry("Point at Self", "point_me", ANIM_AGENT_POINT_ME),
303 LLAnimStateEntry("Punch Left", "punch_l", ANIM_AGENT_PUNCH_LEFT),
304 LLAnimStateEntry("Punch Right", "punch_r", ANIM_AGENT_PUNCH_RIGHT),
305 LLAnimStateEntry("RPS count", "rps_countdown", ANIM_AGENT_RPS_COUNTDOWN),
306 LLAnimStateEntry("RPS paper", "rps_paper", ANIM_AGENT_RPS_PAPER),
307 LLAnimStateEntry("RPS rock", "rps_rock", ANIM_AGENT_RPS_ROCK),
308 LLAnimStateEntry("RPS scissors", "rps_scissors", ANIM_AGENT_RPS_SCISSORS),
309 LLAnimStateEntry("Repulsed", "express_repulsed", ANIM_AGENT_EXPRESS_REPULSED),
310 LLAnimStateEntry("Roundhouse Kick", "kick_roundhouse_r", ANIM_AGENT_ROUNDHOUSE_KICK),
311 LLAnimStateEntry("Sad", "express_sad", ANIM_AGENT_SAD),
312 LLAnimStateEntry("Salute", "salute", ANIM_AGENT_SALUTE),
313 LLAnimStateEntry("Shout", "shout", ANIM_AGENT_SHOUT),
314 LLAnimStateEntry("Shrug", "express_shrug", ANIM_AGENT_SHRUG),
315 LLAnimStateEntry("Smile", "express_smile", ANIM_AGENT_EXPRESS_SMILE),
316 LLAnimStateEntry("Smoke Idle", "smoke_idle", ANIM_AGENT_SMOKE_IDLE),
317 LLAnimStateEntry("Smoke Inhale", "smoke_inhale", ANIM_AGENT_SMOKE_INHALE),
318 LLAnimStateEntry("Smoke Throw Down","smoke_throw_down", ANIM_AGENT_SMOKE_THROW_DOWN),
319 LLAnimStateEntry("Surprise", "express_surprise", ANIM_AGENT_SURPRISE),
320 LLAnimStateEntry("Sword Strike", "sword_strike_r", ANIM_AGENT_SWORD_STRIKE),
321 LLAnimStateEntry("Tantrum", "angry_tantrum", ANIM_AGENT_TANTRUM),
322 LLAnimStateEntry("TongueOut", "express_tongue_out", ANIM_AGENT_EXPRESS_TONGUE_OUT),
323 LLAnimStateEntry("Wave", "hello", ANIM_AGENT_HELLO),
324 LLAnimStateEntry("Whisper", "whisper", ANIM_AGENT_WHISPER),
325 LLAnimStateEntry("Whistle", "whistle", ANIM_AGENT_WHISTLE),
326 LLAnimStateEntry("Wink", "express_wink", ANIM_AGENT_WINK),
327 LLAnimStateEntry("Wink (Hollywood)","wink_hollywood", ANIM_AGENT_WINK_HOLLYWOOD),
328 LLAnimStateEntry("Worry", "express_worry", ANIM_AGENT_EXPRESS_WORRY),
329 LLAnimStateEntry("Yes (Happy)", "yes_happy", ANIM_AGENT_YES_HAPPY),
330 LLAnimStateEntry("Yes", "yes_head", ANIM_AGENT_YES),
331};
332
333const S32 gUserAnimStatesCount = sizeof(gUserAnimStates) / sizeof(gUserAnimStates[0]);
334
335
336
337// End
338