diff options
-rw-r--r-- | linden/indra/newview/floaterao.cpp | 841 | ||||
-rw-r--r-- | linden/indra/newview/floaterao.h | 73 | ||||
-rw-r--r-- | linden/indra/newview/llstartup.cpp | 12 | ||||
-rw-r--r-- | linden/indra/newview/llviewermenu.cpp | 2 |
4 files changed, 599 insertions, 329 deletions
diff --git a/linden/indra/newview/floaterao.cpp b/linden/indra/newview/floaterao.cpp index 444e395..843cb3a 100644 --- a/linden/indra/newview/floaterao.cpp +++ b/linden/indra/newview/floaterao.cpp | |||
@@ -34,6 +34,8 @@ | |||
34 | #include "llboost.h" | 34 | #include "llboost.h" |
35 | #include <boost/regex.hpp> | 35 | #include <boost/regex.hpp> |
36 | 36 | ||
37 | static LLFrameTimer sInitTimer; | ||
38 | |||
37 | void cmdline_printchat(std::string message); | 39 | void cmdline_printchat(std::string message); |
38 | 40 | ||
39 | AOInvTimer* gAOInvTimer = NULL; | 41 | AOInvTimer* gAOInvTimer = NULL; |
@@ -118,37 +120,71 @@ BOOL AOStandTimer::tick() | |||
118 | 120 | ||
119 | // ------------------------------------------------------- | 121 | // ------------------------------------------------------- |
120 | 122 | ||
123 | BOOL AOInvTimer::sInitialized = FALSE; | ||
124 | |||
121 | AOInvTimer::AOInvTimer() : LLEventTimer( (F32)1.0 ) | 125 | AOInvTimer::AOInvTimer() : LLEventTimer( (F32)1.0 ) |
122 | { | 126 | { |
127 | // if we can't find the item we need, start the init timer | ||
128 | // background inventory fetching has already begun in llstartup -- MC | ||
129 | if (LLStartUp::getStartupState() == STATE_STARTED) | ||
130 | { | ||
131 | LLUUID ao_notecard = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); | ||
132 | if (ao_notecard.notNull()) | ||
133 | { | ||
134 | const LLInventoryItem* item = gInventory.getItem(ao_notecard); | ||
135 | if (!item) | ||
136 | { | ||
137 | sInitTimer.start(); | ||
138 | sInitTimer.setTimerExpirySec(10.0f); | ||
139 | } | ||
140 | else | ||
141 | { | ||
142 | sInitialized = LLFloaterAO::init(); | ||
143 | if (!sInitialized) // should never happen, but just in case -- MC | ||
144 | { | ||
145 | sInitTimer.start(); | ||
146 | sInitTimer.setTimerExpirySec(10.0f); | ||
147 | } | ||
148 | } | ||
149 | } | ||
150 | } | ||
123 | } | 151 | } |
152 | |||
124 | AOInvTimer::~AOInvTimer() | 153 | AOInvTimer::~AOInvTimer() |
125 | { | 154 | { |
126 | } | 155 | } |
127 | 156 | ||
128 | BOOL AOInvTimer::fullfetch = FALSE; | ||
129 | |||
130 | BOOL AOInvTimer::tick() | 157 | BOOL AOInvTimer::tick() |
131 | { | 158 | { |
132 | if (!(gSavedSettings.getBOOL("AOEnabled"))) return TRUE; | 159 | /*if (!(gSavedSettings.getBOOL("AOEnabled"))) |
133 | if(LLStartUp::getStartupState() >= STATE_INVENTORY_SEND) | 160 | { |
161 | return TRUE; | ||
162 | }*/ | ||
163 | |||
164 | if (gInventory.isEverythingFetched()) | ||
134 | { | 165 | { |
135 | if(gInventory.isEverythingFetched()) | 166 | if (!sInitialized) |
136 | { | 167 | { |
137 | // cmdline_printchat("Inventory fetched, loading AO."); | ||
138 | LLFloaterAO::init(); | 168 | LLFloaterAO::init(); |
139 | return TRUE; | 169 | sInitialized = TRUE; // this can happen even if we can't initialize the AO -- MC |
140 | }else | 170 | } |
171 | |||
172 | if (sInitTimer.getStarted()) | ||
141 | { | 173 | { |
142 | //static BOOL startedfetch = FALSE; | 174 | sInitTimer.stop(); |
143 | if(fullfetch == FALSE) | ||
144 | { | ||
145 | fullfetch = TRUE; | ||
146 | //no choice, can't move the AO till we find it, should only have to happen once | ||
147 | gInventory.startBackgroundFetch(); | ||
148 | } | ||
149 | } | 175 | } |
150 | } | 176 | } |
151 | return FALSE; | 177 | |
178 | if (!sInitialized && LLStartUp::getStartupState() == STATE_STARTED) | ||
179 | { | ||
180 | if (sInitTimer.hasExpired()) | ||
181 | { | ||
182 | sInitTimer.start(); | ||
183 | sInitTimer.setTimerExpirySec(10.0f); | ||
184 | sInitialized = LLFloaterAO::init(); | ||
185 | } | ||
186 | } | ||
187 | return sInitialized; | ||
152 | } | 188 | } |
153 | // NC DROP ------------------------------------------------------- | 189 | // NC DROP ------------------------------------------------------- |
154 | 190 | ||
@@ -215,40 +251,40 @@ BOOL AONoteCardDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, | |||
215 | return handled; | 251 | return handled; |
216 | } | 252 | } |
217 | 253 | ||
218 | AONoteCardDropTarget * LLFloaterAO::mAOItemDropTarget; | 254 | AONoteCardDropTarget * LLFloaterAO::sAOItemDropTarget; |
219 | 255 | ||
220 | 256 | ||
221 | // STUFF ------------------------------------------------------- | 257 | // STUFF ------------------------------------------------------- |
222 | 258 | ||
223 | int LLFloaterAO::mAnimationState = 0; | 259 | S32 LLFloaterAO::sAnimationState = 0; |
224 | int LLFloaterAO::stand_iterator = 0; | 260 | S32 LLFloaterAO::stand_iterator = 0; |
225 | 261 | ||
226 | LLUUID LLFloaterAO::invfolderid = LLUUID::null; | 262 | LLUUID LLFloaterAO::invfolderid = LLUUID::null; |
227 | LLUUID LLFloaterAO::mCurrentStandId = LLUUID::null; | 263 | LLUUID LLFloaterAO::sCurrentStandId = LLUUID::null; |
228 | 264 | ||
229 | LLComboBox* mcomboBox_stands; | 265 | LLComboBox* mComboBox_stands; |
230 | LLComboBox* mcomboBox_walks; | 266 | LLComboBox* mComboBox_walks; |
231 | LLComboBox* mcomboBox_runs; | 267 | LLComboBox* mComboBox_runs; |
232 | LLComboBox* mcomboBox_jumps; | 268 | LLComboBox* mComboBox_jumps; |
233 | LLComboBox* mcomboBox_sits; | 269 | LLComboBox* mComboBox_sits; |
234 | LLComboBox* mcomboBox_gsits; | 270 | LLComboBox* mComboBox_gsits; |
235 | LLComboBox* mcomboBox_crouchs; | 271 | LLComboBox* mComboBox_crouchs; |
236 | LLComboBox* mcomboBox_cwalks; | 272 | LLComboBox* mComboBox_cwalks; |
237 | LLComboBox* mcomboBox_falls; | 273 | LLComboBox* mComboBox_falls; |
238 | LLComboBox* mcomboBox_hovers; | 274 | LLComboBox* mComboBox_hovers; |
239 | LLComboBox* mcomboBox_flys; | 275 | LLComboBox* mComboBox_flys; |
240 | LLComboBox* mcomboBox_flyslows; | 276 | LLComboBox* mComboBox_flyslows; |
241 | LLComboBox* mcomboBox_flyups; | 277 | LLComboBox* mComboBox_flyups; |
242 | LLComboBox* mcomboBox_flydowns; | 278 | LLComboBox* mComboBox_flydowns; |
243 | LLComboBox* mcomboBox_lands; | 279 | LLComboBox* mComboBox_lands; |
244 | LLComboBox* mcomboBox_standups; | 280 | LLComboBox* mComboBox_standups; |
245 | LLComboBox* mcomboBox_prejumps; | 281 | LLComboBox* mComboBox_prejumps; |
246 | 282 | ||
247 | struct struct_overrides | 283 | struct struct_overrides |
248 | { | 284 | { |
249 | LLUUID orig_id; | 285 | LLUUID orig_id; |
250 | LLUUID ao_id; | 286 | LLUUID ao_id; |
251 | int state; | 287 | S32 state; |
252 | }; | 288 | }; |
253 | std::vector<struct_overrides> mAOOverrides; | 289 | std::vector<struct_overrides> mAOOverrides; |
254 | 290 | ||
@@ -262,14 +298,16 @@ std::vector<struct_stands> mAOStands; | |||
262 | struct struct_tokens | 298 | struct struct_tokens |
263 | { | 299 | { |
264 | std::string token; | 300 | std::string token; |
265 | int state; | 301 | S32 state; |
266 | }; | 302 | }; |
267 | std::vector<struct_tokens> mAOTokens; | 303 | std::vector<struct_tokens> mAOTokens; |
268 | 304 | ||
269 | LLFloaterAO* LLFloaterAO::sInstance = NULL; | 305 | LLFloaterAO* LLFloaterAO::sInstance = NULL; |
270 | 306 | ||
271 | LLFloaterAO::LLFloaterAO() | 307 | LLFloaterAO::LLFloaterAO() |
272 | :LLFloater(std::string("floater_ao")) | 308 | : |
309 | LLFloater(std::string("floater_ao")), | ||
310 | mDirty(FALSE) | ||
273 | { | 311 | { |
274 | // init(); | 312 | // init(); |
275 | llassert_always(sInstance == NULL); | 313 | llassert_always(sInstance == NULL); |
@@ -280,80 +318,55 @@ LLFloaterAO::LLFloaterAO() | |||
280 | LLFloaterAO::~LLFloaterAO() | 318 | LLFloaterAO::~LLFloaterAO() |
281 | { | 319 | { |
282 | sInstance=NULL; | 320 | sInstance=NULL; |
283 | mcomboBox_stands = 0; | 321 | mComboBox_stands = 0; |
284 | mcomboBox_walks = 0; | 322 | mComboBox_walks = 0; |
285 | mcomboBox_runs = 0; | 323 | mComboBox_runs = 0; |
286 | mcomboBox_jumps = 0; | 324 | mComboBox_jumps = 0; |
287 | mcomboBox_sits = 0; | 325 | mComboBox_sits = 0; |
288 | mcomboBox_gsits = 0; | 326 | mComboBox_gsits = 0; |
289 | mcomboBox_crouchs = 0; | 327 | mComboBox_crouchs = 0; |
290 | mcomboBox_cwalks = 0; | 328 | mComboBox_cwalks = 0; |
291 | mcomboBox_falls = 0; | 329 | mComboBox_falls = 0; |
292 | mcomboBox_hovers = 0; | 330 | mComboBox_hovers = 0; |
293 | mcomboBox_flys = 0; | 331 | mComboBox_flys = 0; |
294 | mcomboBox_flyslows = 0; | 332 | mComboBox_flyslows = 0; |
295 | mcomboBox_flyups = 0; | 333 | mComboBox_flyups = 0; |
296 | mcomboBox_flydowns = 0; | 334 | mComboBox_flydowns = 0; |
297 | mcomboBox_lands = 0; | 335 | mComboBox_lands = 0; |
298 | mcomboBox_standups = 0; | 336 | mComboBox_standups = 0; |
299 | mcomboBox_prejumps = 0; | 337 | mComboBox_prejumps = 0; |
300 | delete mAOItemDropTarget; | 338 | delete sAOItemDropTarget; |
301 | mAOItemDropTarget = NULL; | 339 | sAOItemDropTarget = NULL; |
302 | // llinfos << "floater destroyed" << llendl; | 340 | // llinfos << "floater destroyed" << llendl; |
303 | } | 341 | } |
304 | 342 | ||
305 | void LLFloaterAO::show(void*) | ||
306 | { | ||
307 | if (!sInstance) | ||
308 | { | ||
309 | sInstance = new LLFloaterAO(); | ||
310 | updateLayout(sInstance); | ||
311 | init(); | ||
312 | |||
313 | sInstance->open(); | ||
314 | } | ||
315 | else | ||
316 | { | ||
317 | sInstance->close(); | ||
318 | } | ||
319 | LLFirstUse::useAO(); | ||
320 | } | ||
321 | |||
322 | bool LLFloaterAO::getInstance() | ||
323 | { | ||
324 | if (sInstance) | ||
325 | return true; | ||
326 | else | ||
327 | return false; | ||
328 | } | ||
329 | |||
330 | BOOL LLFloaterAO::postBuild() | 343 | BOOL LLFloaterAO::postBuild() |
331 | { | 344 | { |
332 | LLView *target_view = getChild<LLView>("ao_notecard"); | 345 | LLView *target_view = getChild<LLView>("ao_notecard"); |
333 | if(target_view) | 346 | if (target_view) |
334 | { | 347 | { |
335 | if (mAOItemDropTarget) | 348 | if (sAOItemDropTarget) |
336 | { | 349 | { |
337 | delete mAOItemDropTarget; | 350 | delete sAOItemDropTarget; |
338 | } | 351 | } |
339 | mAOItemDropTarget = new AONoteCardDropTarget("drop target", target_view->getRect(), AOItemDrop);//, mAvatarID); | 352 | sAOItemDropTarget = new AONoteCardDropTarget("drop target", target_view->getRect(), AOItemDrop);//, mAvatarID); |
340 | addChild(mAOItemDropTarget); | 353 | addChild(sAOItemDropTarget); |
341 | } | 354 | } |
342 | if(LLStartUp::getStartupState() == STATE_STARTED) | 355 | if (LLStartUp::getStartupState() == STATE_STARTED) |
343 | { | 356 | { |
344 | LLUUID itemidimport = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); | 357 | LLUUID itemidimport = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); |
345 | LLViewerInventoryItem* itemimport = gInventory.getItem(itemidimport); | 358 | LLViewerInventoryItem* itemimport = gInventory.getItem(itemidimport); |
346 | if(itemimport) | 359 | if (itemimport) |
347 | { | 360 | { |
348 | childSetValue("ao_nc_text","Currently set to: "+itemimport->getName()); | 361 | childSetValue("ao_nc_text","Currently set to: "+itemimport->getName()); |
349 | } | 362 | } |
350 | else if(itemidimport.isNull()) | 363 | else if (itemidimport.isNull()) |
351 | { | 364 | { |
352 | childSetValue("ao_nc_text","Currently not set"); | 365 | childSetValue("ao_nc_text","Currently not set"); |
353 | } | 366 | } |
354 | else | 367 | else |
355 | { | 368 | { |
356 | childSetValue("ao_nc_text","Currently set to a item not on this account"); | 369 | childSetValue("ao_nc_text","Currently not loaded"); |
357 | } | 370 | } |
358 | } | 371 | } |
359 | else | 372 | else |
@@ -371,23 +384,23 @@ BOOL LLFloaterAO::postBuild() | |||
371 | childSetCommitCallback("AOEnabled",onClickToggleAO); | 384 | childSetCommitCallback("AOEnabled",onClickToggleAO); |
372 | childSetCommitCallback("AOSitsEnabled",onClickToggleSits); | 385 | childSetCommitCallback("AOSitsEnabled",onClickToggleSits); |
373 | childSetCommitCallback("standtime",onSpinnerCommit); | 386 | childSetCommitCallback("standtime",onSpinnerCommit); |
374 | mcomboBox_stands = getChild<LLComboBox>("stands"); | 387 | mComboBox_stands = getChild<LLComboBox>("stands"); |
375 | mcomboBox_walks = getChild<LLComboBox>("walks"); | 388 | mComboBox_walks = getChild<LLComboBox>("walks"); |
376 | mcomboBox_runs = getChild<LLComboBox>("runs"); | 389 | mComboBox_runs = getChild<LLComboBox>("runs"); |
377 | mcomboBox_jumps = getChild<LLComboBox>("jumps"); | 390 | mComboBox_jumps = getChild<LLComboBox>("jumps"); |
378 | mcomboBox_sits = getChild<LLComboBox>("sits"); | 391 | mComboBox_sits = getChild<LLComboBox>("sits"); |
379 | mcomboBox_gsits = getChild<LLComboBox>("gsits"); | 392 | mComboBox_gsits = getChild<LLComboBox>("gsits"); |
380 | mcomboBox_crouchs = getChild<LLComboBox>("crouchs"); | 393 | mComboBox_crouchs = getChild<LLComboBox>("crouchs"); |
381 | mcomboBox_cwalks = getChild<LLComboBox>("cwalks"); | 394 | mComboBox_cwalks = getChild<LLComboBox>("cwalks"); |
382 | mcomboBox_falls = getChild<LLComboBox>("falls"); | 395 | mComboBox_falls = getChild<LLComboBox>("falls"); |
383 | mcomboBox_hovers = getChild<LLComboBox>("hovers"); | 396 | mComboBox_hovers = getChild<LLComboBox>("hovers"); |
384 | mcomboBox_flys = getChild<LLComboBox>("flys"); | 397 | mComboBox_flys = getChild<LLComboBox>("flys"); |
385 | mcomboBox_flyslows = getChild<LLComboBox>("flyslows"); | 398 | mComboBox_flyslows = getChild<LLComboBox>("flyslows"); |
386 | mcomboBox_flyups = getChild<LLComboBox>("flyups"); | 399 | mComboBox_flyups = getChild<LLComboBox>("flyups"); |
387 | mcomboBox_flydowns = getChild<LLComboBox>("flydowns"); | 400 | mComboBox_flydowns = getChild<LLComboBox>("flydowns"); |
388 | mcomboBox_lands = getChild<LLComboBox>("lands"); | 401 | mComboBox_lands = getChild<LLComboBox>("lands"); |
389 | mcomboBox_standups = getChild<LLComboBox>("standups"); | 402 | mComboBox_standups = getChild<LLComboBox>("standups"); |
390 | mcomboBox_prejumps = getChild<LLComboBox>("prejumps"); | 403 | mComboBox_prejumps = getChild<LLComboBox>("prejumps"); |
391 | getChild<LLComboBox>("stands")->setCommitCallback(onComboBoxCommit); | 404 | getChild<LLComboBox>("stands")->setCommitCallback(onComboBoxCommit); |
392 | getChild<LLComboBox>("walks")->setCommitCallback(onComboBoxCommit); | 405 | getChild<LLComboBox>("walks")->setCommitCallback(onComboBoxCommit); |
393 | getChild<LLComboBox>("runs")->setCommitCallback(onComboBoxCommit); | 406 | getChild<LLComboBox>("runs")->setCommitCallback(onComboBoxCommit); |
@@ -409,10 +422,49 @@ BOOL LLFloaterAO::postBuild() | |||
409 | return TRUE; | 422 | return TRUE; |
410 | } | 423 | } |
411 | 424 | ||
425 | // static | ||
426 | void LLFloaterAO::show(void*) | ||
427 | { | ||
428 | if (!sInstance) | ||
429 | { | ||
430 | sInstance = new LLFloaterAO(); | ||
431 | updateLayout(sInstance); | ||
432 | init(); | ||
433 | |||
434 | sInstance->open(); | ||
435 | } | ||
436 | else | ||
437 | { | ||
438 | sInstance->close(); | ||
439 | } | ||
440 | LLFirstUse::useAO(); | ||
441 | } | ||
442 | |||
443 | // static | ||
444 | LLFloaterAO* LLFloaterAO::getInstance() | ||
445 | { | ||
446 | if (!sInstance) | ||
447 | { | ||
448 | sInstance = new LLFloaterAO(); | ||
449 | } | ||
450 | return sInstance; | ||
451 | } | ||
452 | |||
453 | // static | ||
454 | bool LLFloaterAO::getVisible() | ||
455 | { | ||
456 | if (sInstance) | ||
457 | { | ||
458 | return true; | ||
459 | } | ||
460 | return false; | ||
461 | } | ||
462 | |||
463 | // static | ||
412 | void LLFloaterAO::onSpinnerCommit(LLUICtrl* ctrl, void* userdata) | 464 | void LLFloaterAO::onSpinnerCommit(LLUICtrl* ctrl, void* userdata) |
413 | { | 465 | { |
414 | LLSpinCtrl* spin = (LLSpinCtrl*) ctrl; | 466 | LLSpinCtrl* spin = (LLSpinCtrl*)ctrl; |
415 | if(spin) | 467 | if (spin) |
416 | { | 468 | { |
417 | if (spin->getName() == "standtime") | 469 | if (spin->getName() == "standtime") |
418 | { | 470 | { |
@@ -421,10 +473,11 @@ void LLFloaterAO::onSpinnerCommit(LLUICtrl* ctrl, void* userdata) | |||
421 | } | 473 | } |
422 | } | 474 | } |
423 | 475 | ||
476 | // static | ||
424 | void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata) | 477 | void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata) |
425 | { | 478 | { |
426 | LLComboBox* box = (LLComboBox*)ctrl; | 479 | LLComboBox* box = (LLComboBox*)ctrl; |
427 | if(box) | 480 | if (box) |
428 | { | 481 | { |
429 | if (box->getName() == "stands") | 482 | if (box->getName() == "stands") |
430 | { | 483 | { |
@@ -434,7 +487,7 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata) | |||
434 | } | 487 | } |
435 | else | 488 | else |
436 | { | 489 | { |
437 | int state = STATE_AGENT_IDLE; | 490 | S32 state = STATE_AGENT_IDLE; |
438 | std::string stranim = box->getValue().asString(); | 491 | std::string stranim = box->getValue().asString(); |
439 | // llinfos << "state " << (gAgent.getAvatarObject()->mIsSitting) << " - " << getAnimationState() << llendl; | 492 | // llinfos << "state " << (gAgent.getAvatarObject()->mIsSitting) << " - " << getAnimationState() << llendl; |
440 | if (box->getName() == "walks") | 493 | if (box->getName() == "walks") |
@@ -561,6 +614,7 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata) | |||
561 | } | 614 | } |
562 | } | 615 | } |
563 | 616 | ||
617 | // static | ||
564 | void LLFloaterAO::updateLayout(LLFloaterAO* floater) | 618 | void LLFloaterAO::updateLayout(LLFloaterAO* floater) |
565 | { | 619 | { |
566 | if (floater) | 620 | if (floater) |
@@ -618,8 +672,10 @@ void LLFloaterAO::updateLayout(LLFloaterAO* floater) | |||
618 | } | 672 | } |
619 | } | 673 | } |
620 | 674 | ||
621 | void LLFloaterAO::init() | 675 | // static |
676 | bool LLFloaterAO::init() | ||
622 | { | 677 | { |
678 | //cmdline_printchat("init() called"); | ||
623 | mAOStands.clear(); | 679 | mAOStands.clear(); |
624 | mAOTokens.clear(); | 680 | mAOTokens.clear(); |
625 | mAOOverrides.clear(); | 681 | mAOOverrides.clear(); |
@@ -678,82 +734,87 @@ void LLFloaterAO::init() | |||
678 | overrideloader.orig_id = ANIM_AGENT_FLY; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLY; mAOOverrides.push_back(overrideloader); | 734 | overrideloader.orig_id = ANIM_AGENT_FLY; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLY; mAOOverrides.push_back(overrideloader); |
679 | overrideloader.orig_id = ANIM_AGENT_FLYSLOW; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLYSLOW; mAOOverrides.push_back(overrideloader); | 735 | overrideloader.orig_id = ANIM_AGENT_FLYSLOW; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLYSLOW; mAOOverrides.push_back(overrideloader); |
680 | 736 | ||
681 | BOOL success = TRUE; | 737 | BOOL success = FALSE; |
682 | 738 | ||
683 | if(LLStartUp::getStartupState() >= STATE_INVENTORY_SEND) | 739 | if (LLStartUp::getStartupState() >= STATE_INVENTORY_SEND) |
684 | { | 740 | { |
685 | if(gInventory.isEverythingFetched()) | 741 | LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); |
742 | if (configncitem.notNull()) | ||
686 | { | 743 | { |
687 | LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); | 744 | const LLInventoryItem* item = gInventory.getItem(configncitem); |
688 | if (configncitem.notNull()) | 745 | if (item) |
689 | { | 746 | { |
690 | success = FALSE; | 747 | if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike()) |
691 | const LLInventoryItem* item = gInventory.getItem(configncitem); | ||
692 | if(item) | ||
693 | { | 748 | { |
694 | if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike()) | 749 | if (!item->getAssetUUID().isNull()) |
695 | { | 750 | { |
696 | if(!item->getAssetUUID().isNull()) | 751 | LLUUID* new_uuid = new LLUUID(configncitem); |
697 | { | 752 | LLHost source_sim = LLHost::invalid; |
698 | LLUUID* new_uuid = new LLUUID(configncitem); | 753 | invfolderid = item->getParentUUID(); |
699 | LLHost source_sim = LLHost::invalid; | 754 | gAssetStorage->getInvItemAsset(source_sim, |
700 | invfolderid = item->getParentUUID(); | 755 | gAgent.getID(), |
701 | gAssetStorage->getInvItemAsset(source_sim, | 756 | gAgent.getSessionID(), |
702 | gAgent.getID(), | 757 | item->getPermissions().getOwner(), |
703 | gAgent.getSessionID(), | 758 | LLUUID::null, |
704 | item->getPermissions().getOwner(), | 759 | item->getUUID(), |
705 | LLUUID::null, | 760 | item->getAssetUUID(), |
706 | item->getUUID(), | 761 | item->getType(), |
707 | item->getAssetUUID(), | 762 | &onNotecardLoadComplete, |
708 | item->getType(), | 763 | (void*)new_uuid, |
709 | &onNotecardLoadComplete, | 764 | TRUE); |
710 | (void*)new_uuid, | 765 | success = TRUE; |
711 | TRUE); | ||
712 | success = TRUE; | ||
713 | } | ||
714 | } | 766 | } |
715 | } | 767 | } |
716 | } | 768 | } |
769 | else // item | ||
770 | { | ||
771 | //cmdline_printchat("no item (notecard)"); | ||
772 | } | ||
717 | } | 773 | } |
718 | } | 774 | } |
719 | 775 | else // notecard null | |
720 | if (!success) | ||
721 | { | 776 | { |
722 | cmdline_printchat("Could not read the specified Config Notecard"); | 777 | //cmdline_printchat("Config Notecard set to a null UUID!"); |
723 | } | 778 | } |
724 | 779 | ||
725 | // mAnimationState = 0; | 780 | // sAnimationState = 0; |
726 | // mCurrentStandId = LLUUID::null; | 781 | // sCurrentStandId = LLUUID::null; |
727 | // setAnimationState(STATE_AGENT_IDLE); | 782 | // setAnimationState(STATE_AGENT_IDLE); |
728 | 783 | ||
784 | return success; | ||
729 | } | 785 | } |
730 | 786 | ||
787 | // static | ||
731 | void LLFloaterAO::onClickMore(void* data) | 788 | void LLFloaterAO::onClickMore(void* data) |
732 | { | 789 | { |
733 | gSavedSettings.setBOOL( "AOAdvanced", TRUE ); | 790 | gSavedSettings.setBOOL( "AOAdvanced", TRUE ); |
734 | updateLayout(sInstance); | 791 | updateLayout(sInstance); |
735 | } | 792 | } |
793 | |||
794 | // static | ||
736 | void LLFloaterAO::onClickLess(void* data) | 795 | void LLFloaterAO::onClickLess(void* data) |
737 | { | 796 | { |
738 | gSavedSettings.setBOOL( "AOAdvanced", FALSE ); | 797 | gSavedSettings.setBOOL( "AOAdvanced", FALSE ); |
739 | updateLayout(sInstance); | 798 | updateLayout(sInstance); |
740 | } | 799 | } |
741 | 800 | ||
801 | // static | ||
742 | void LLFloaterAO::onClickToggleAO(LLUICtrl *, void*) | 802 | void LLFloaterAO::onClickToggleAO(LLUICtrl *, void*) |
743 | { | 803 | { |
744 | run(); | 804 | run(); |
745 | } | 805 | } |
746 | 806 | ||
807 | // static | ||
747 | void LLFloaterAO::onClickToggleSits(LLUICtrl *, void*) | 808 | void LLFloaterAO::onClickToggleSits(LLUICtrl *, void*) |
748 | { | 809 | { |
749 | run(); | 810 | run(); |
750 | } | 811 | } |
751 | 812 | ||
752 | 813 | // static | |
753 | void LLFloaterAO::run() | 814 | void LLFloaterAO::run() |
754 | { | 815 | { |
755 | setAnimationState(STATE_AGENT_IDLE); // reset state | 816 | setAnimationState(STATE_AGENT_IDLE); // reset state |
756 | int state = getAnimationState(); // check if sitting or hovering | 817 | S32 state = getAnimationState(); // check if sitting or hovering |
757 | if ((state == STATE_AGENT_IDLE) || (state == STATE_AGENT_STAND)) | 818 | if ((state == STATE_AGENT_IDLE) || (state == STATE_AGENT_STAND)) |
758 | { | 819 | { |
759 | if (gSavedSettings.getBOOL("AOEnabled")) | 820 | if (gSavedSettings.getBOOL("AOEnabled")) |
@@ -776,98 +837,158 @@ void LLFloaterAO::run() | |||
776 | } | 837 | } |
777 | else | 838 | else |
778 | { | 839 | { |
779 | if (state == STATE_AGENT_SIT) gAgent.sendAnimationRequest(GetAnimIDFromState(state), (gSavedSettings.getBOOL("AOEnabled") && gSavedSettings.getBOOL("AOSitsEnabled")) ? ANIM_REQUEST_START : ANIM_REQUEST_STOP); | 840 | if (state == STATE_AGENT_SIT) |
780 | else gAgent.sendAnimationRequest(GetAnimIDFromState(state), gSavedSettings.getBOOL("AOEnabled") ? ANIM_REQUEST_START : ANIM_REQUEST_STOP); | 841 | { |
842 | gAgent.sendAnimationRequest(GetAnimIDFromState(state), (gSavedSettings.getBOOL("AOEnabled") && gSavedSettings.getBOOL("AOSitsEnabled")) ? ANIM_REQUEST_START : ANIM_REQUEST_STOP); | ||
843 | } | ||
844 | else | ||
845 | { | ||
846 | gAgent.sendAnimationRequest(GetAnimIDFromState(state), gSavedSettings.getBOOL("AOEnabled") ? ANIM_REQUEST_START : ANIM_REQUEST_STOP); | ||
847 | } | ||
781 | } | 848 | } |
782 | } | 849 | } |
783 | 850 | ||
784 | int LLFloaterAO::getAnimationState() | 851 | // static |
852 | S32 LLFloaterAO::getAnimationState() | ||
785 | { | 853 | { |
786 | if (gAgent.getAvatarObject()) | 854 | if (gAgent.getAvatarObject()) |
787 | { | 855 | { |
788 | if (gAgent.getAvatarObject()->mIsSitting) setAnimationState(STATE_AGENT_SIT); | 856 | if (gAgent.getAvatarObject()->mIsSitting) |
789 | else if (gAgent.getFlying()) setAnimationState(STATE_AGENT_HOVER); | 857 | { |
858 | setAnimationState(STATE_AGENT_SIT); | ||
859 | } | ||
860 | else if (gAgent.getFlying()) | ||
861 | { | ||
862 | setAnimationState(STATE_AGENT_HOVER); | ||
863 | } | ||
790 | } | 864 | } |
791 | return mAnimationState; | 865 | return sAnimationState; |
792 | } | 866 | } |
793 | 867 | ||
794 | void LLFloaterAO::setAnimationState(const int state) | 868 | // static |
869 | void LLFloaterAO::setAnimationState(const S32 state) | ||
795 | { | 870 | { |
796 | mAnimationState = state; | 871 | sAnimationState = state; |
797 | } | 872 | } |
798 | 873 | ||
874 | // static | ||
799 | LLUUID LLFloaterAO::getCurrentStandId() | 875 | LLUUID LLFloaterAO::getCurrentStandId() |
800 | { | 876 | { |
801 | return mCurrentStandId; | 877 | return sCurrentStandId; |
802 | } | 878 | } |
803 | 879 | ||
880 | // static | ||
804 | void LLFloaterAO::setCurrentStandId(const LLUUID& id) | 881 | void LLFloaterAO::setCurrentStandId(const LLUUID& id) |
805 | { | 882 | { |
806 | mCurrentStandId = id; | 883 | sCurrentStandId = id; |
807 | } | 884 | } |
808 | 885 | ||
886 | // static | ||
809 | void LLFloaterAO::AOItemDrop(LLViewerInventoryItem* item) | 887 | void LLFloaterAO::AOItemDrop(LLViewerInventoryItem* item) |
810 | { | 888 | { |
811 | gSavedPerAccountSettings.setString("AOConfigNotecardID", item->getUUID().asString()); | 889 | gSavedPerAccountSettings.setString("AOConfigNotecardID", item->getUUID().asString()); |
812 | sInstance->childSetValue("ao_nc_text","Currently set to: "+item->getName()); | 890 | sInstance->childSetValue("ao_nc_text","Currently set to: "+item->getName()); |
813 | } | 891 | } |
814 | 892 | ||
893 | // static | ||
815 | LLUUID LLFloaterAO::GetAnimID(const LLUUID& id) | 894 | LLUUID LLFloaterAO::GetAnimID(const LLUUID& id) |
816 | { | 895 | { |
817 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) | 896 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) |
818 | { | 897 | { |
819 | if (iter->orig_id == id) return iter->ao_id; | 898 | if (iter->orig_id == id) |
899 | { | ||
900 | return iter->ao_id; | ||
901 | } | ||
820 | } | 902 | } |
821 | return LLUUID::null; | 903 | return LLUUID::null; |
822 | } | 904 | } |
823 | 905 | ||
824 | int LLFloaterAO::GetStateFromAnimID(const LLUUID& id) | 906 | // static |
907 | S32 LLFloaterAO::GetStateFromAnimID(const LLUUID& id) | ||
825 | { | 908 | { |
826 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) | 909 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) |
827 | { | 910 | { |
828 | if (iter->orig_id == id) return iter->state; | 911 | if (iter->orig_id == id) |
912 | { | ||
913 | return iter->state; | ||
914 | } | ||
829 | } | 915 | } |
830 | return STATE_AGENT_IDLE; | 916 | return STATE_AGENT_IDLE; |
831 | } | 917 | } |
832 | 918 | ||
833 | LLUUID LLFloaterAO::GetAnimIDFromState(const int state) | 919 | // static |
920 | LLUUID LLFloaterAO::GetAnimIDFromState(const S32 state) | ||
834 | { | 921 | { |
835 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) | 922 | for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter) |
836 | { | 923 | { |
837 | if (iter->state == state) return iter->ao_id; | 924 | if (iter->state == state) |
925 | { | ||
926 | return iter->ao_id; | ||
927 | } | ||
838 | } | 928 | } |
839 | return LLUUID::null; | 929 | return LLUUID::null; |
840 | } | 930 | } |
841 | 931 | ||
842 | int LLFloaterAO::GetStateFromToken(std::string strtoken) | 932 | // static |
933 | S32 LLFloaterAO::GetStateFromToken(std::string strtoken) | ||
843 | { | 934 | { |
844 | for (std::vector<struct_tokens>::iterator iter = mAOTokens.begin(); iter != mAOTokens.end(); ++iter) | 935 | for (std::vector<struct_tokens>::iterator iter = mAOTokens.begin(); iter != mAOTokens.end(); ++iter) |
845 | { | 936 | { |
846 | if (iter->token == strtoken) return iter->state; | 937 | if (iter->token == strtoken) |
938 | { | ||
939 | return iter->state; | ||
940 | } | ||
847 | } | 941 | } |
848 | return STATE_AGENT_IDLE; | 942 | return STATE_AGENT_IDLE; |
849 | } | 943 | } |
850 | 944 | ||
945 | // static | ||
851 | void LLFloaterAO::onClickPrevStand(void* user_data) | 946 | void LLFloaterAO::onClickPrevStand(void* user_data) |
852 | { | 947 | { |
853 | if (!(mAOStands.size() > 0)) return; | 948 | if (!(mAOStands.size() > 0)) |
854 | stand_iterator=stand_iterator-1; | 949 | { |
855 | if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator); | 950 | return; |
856 | if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0; | 951 | } |
952 | |||
953 | stand_iterator = stand_iterator-1; | ||
954 | |||
955 | if (stand_iterator < 0) | ||
956 | { | ||
957 | stand_iterator = S32( mAOStands.size()-stand_iterator); | ||
958 | } | ||
959 | if (stand_iterator > S32( mAOStands.size()-1)) | ||
960 | { | ||
961 | stand_iterator = 0; | ||
962 | } | ||
963 | |||
857 | cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str())); | 964 | cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str())); |
858 | ChangeStand(); | 965 | ChangeStand(); |
859 | } | 966 | } |
860 | 967 | ||
968 | // static | ||
861 | void LLFloaterAO::onClickNextStand(void* user_data) | 969 | void LLFloaterAO::onClickNextStand(void* user_data) |
862 | { | 970 | { |
863 | if (!(mAOStands.size() > 0)) return; | 971 | if (!(mAOStands.size() > 0)) |
864 | stand_iterator=stand_iterator+1; | 972 | { |
865 | if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator); | 973 | return; |
866 | if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0; | 974 | } |
975 | |||
976 | stand_iterator = stand_iterator+1; | ||
977 | |||
978 | if (stand_iterator < 0) | ||
979 | { | ||
980 | stand_iterator = S32( mAOStands.size()-stand_iterator); | ||
981 | } | ||
982 | if (stand_iterator > S32( mAOStands.size()-1)) | ||
983 | { | ||
984 | stand_iterator = 0; | ||
985 | } | ||
986 | |||
867 | cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str())); | 987 | cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str())); |
868 | ChangeStand(); | 988 | ChangeStand(); |
869 | } | 989 | } |
870 | 990 | ||
991 | // static | ||
871 | BOOL LLFloaterAO::ChangeStand() | 992 | BOOL LLFloaterAO::ChangeStand() |
872 | { | 993 | { |
873 | if (gSavedSettings.getBOOL("AOEnabled")) | 994 | if (gSavedSettings.getBOOL("AOEnabled")) |
@@ -886,17 +1007,32 @@ BOOL LLFloaterAO::ChangeStand() | |||
886 | } | 1007 | } |
887 | if ((getAnimationState() == STATE_AGENT_IDLE) || (getAnimationState() == STATE_AGENT_STAND))// stands have lowest priority | 1008 | if ((getAnimationState() == STATE_AGENT_IDLE) || (getAnimationState() == STATE_AGENT_STAND))// stands have lowest priority |
888 | { | 1009 | { |
889 | if (!(mAOStands.size() > 0)) return TRUE; | 1010 | if (!(mAOStands.size() > 0)) |
1011 | { | ||
1012 | return TRUE; | ||
1013 | } | ||
1014 | |||
890 | if (gSavedSettings.getBOOL("AOStandRandomize")) | 1015 | if (gSavedSettings.getBOOL("AOStandRandomize")) |
891 | { | 1016 | { |
892 | stand_iterator = ll_rand(mAOStands.size()-1); | 1017 | stand_iterator = ll_rand(mAOStands.size()-1); |
893 | } | 1018 | } |
894 | if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator); | ||
895 | if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0; | ||
896 | 1019 | ||
897 | int stand_iterator_previous = stand_iterator -1; | 1020 | if (stand_iterator < 0) |
1021 | { | ||
1022 | stand_iterator = S32( mAOStands.size()-stand_iterator); | ||
1023 | } | ||
1024 | |||
1025 | if (stand_iterator > S32( mAOStands.size()-1)) | ||
1026 | { | ||
1027 | stand_iterator = 0; | ||
1028 | } | ||
1029 | |||
1030 | S32 stand_iterator_previous = stand_iterator -1; | ||
898 | 1031 | ||
899 | if (stand_iterator_previous < 0) stand_iterator_previous = int( mAOStands.size()-1); | 1032 | if (stand_iterator_previous < 0) |
1033 | { | ||
1034 | stand_iterator_previous = S32( mAOStands.size()-1); | ||
1035 | } | ||
900 | 1036 | ||
901 | if (mAOStands[stand_iterator].ao_id.notNull()) | 1037 | if (mAOStands[stand_iterator].ao_id.notNull()) |
902 | { | 1038 | { |
@@ -905,7 +1041,10 @@ BOOL LLFloaterAO::ChangeStand() | |||
905 | 1041 | ||
906 | setAnimationState(STATE_AGENT_STAND); | 1042 | setAnimationState(STATE_AGENT_STAND); |
907 | setCurrentStandId(mAOStands[stand_iterator].ao_id); | 1043 | setCurrentStandId(mAOStands[stand_iterator].ao_id); |
908 | if ((sInstance)&&(mcomboBox_stands)) mcomboBox_stands->selectNthItem(stand_iterator); | 1044 | if (sInstance && mComboBox_stands) |
1045 | { | ||
1046 | mComboBox_stands->selectNthItem(stand_iterator); | ||
1047 | } | ||
909 | // llinfos << "changing stand to " << mAOStands[stand_iterator].anim_name << llendl; | 1048 | // llinfos << "changing stand to " << mAOStands[stand_iterator].anim_name << llendl; |
910 | return FALSE; | 1049 | return FALSE; |
911 | } | 1050 | } |
@@ -931,7 +1070,10 @@ BOOL LLFloaterAO::startMotion(const LLUUID& id, F32 time_offset, BOOL stand) | |||
931 | { | 1070 | { |
932 | sitting = gAgent.getAvatarObject()->mIsSitting; | 1071 | sitting = gAgent.getAvatarObject()->mIsSitting; |
933 | } | 1072 | } |
934 | if (sitting) return FALSE; | 1073 | if (sitting) |
1074 | { | ||
1075 | return FALSE; | ||
1076 | } | ||
935 | gAgent.sendAnimationRequest(id, ANIM_REQUEST_START); | 1077 | gAgent.sendAnimationRequest(id, ANIM_REQUEST_START); |
936 | return TRUE; | 1078 | return TRUE; |
937 | } | 1079 | } |
@@ -944,7 +1086,10 @@ BOOL LLFloaterAO::startMotion(const LLUUID& id, F32 time_offset, BOOL stand) | |||
944 | setAnimationState(GetStateFromAnimID(id)); | 1086 | setAnimationState(GetStateFromAnimID(id)); |
945 | 1087 | ||
946 | // llinfos << " state " << getAnimationState() << " start anim " << id << " overriding with " << GetAnimID(id) << llendl; | 1088 | // llinfos << " state " << getAnimationState() << " start anim " << id << " overriding with " << GetAnimID(id) << llendl; |
947 | if ((GetStateFromAnimID(id) == STATE_AGENT_SIT) && !(gSavedSettings.getBOOL("AOSitsEnabled"))) return TRUE; | 1089 | if ((GetStateFromAnimID(id) == STATE_AGENT_SIT) && !(gSavedSettings.getBOOL("AOSitsEnabled"))) |
1090 | { | ||
1091 | return TRUE; | ||
1092 | } | ||
948 | gAgent.sendAnimationRequest(GetAnimID(id), ANIM_REQUEST_START); | 1093 | gAgent.sendAnimationRequest(GetAnimID(id), ANIM_REQUEST_START); |
949 | return TRUE; | 1094 | return TRUE; |
950 | } | 1095 | } |
@@ -977,35 +1122,36 @@ BOOL LLFloaterAO::stopMotion(const LLUUID& id, BOOL stop_immediate, BOOL stand) | |||
977 | return FALSE; | 1122 | return FALSE; |
978 | } | 1123 | } |
979 | 1124 | ||
1125 | // static | ||
980 | void LLFloaterAO::onClickReloadCard(void* user_data) | 1126 | void LLFloaterAO::onClickReloadCard(void* user_data) |
981 | { | 1127 | { |
982 | if(gInventory.isEverythingFetched()) | 1128 | LLFloaterAO::init(); |
983 | { | ||
984 | LLFloaterAO::init(); | ||
985 | } | ||
986 | } | 1129 | } |
987 | 1130 | ||
1131 | // static | ||
988 | void LLFloaterAO::onClickOpenCard(void* user_data) | 1132 | void LLFloaterAO::onClickOpenCard(void* user_data) |
989 | { | 1133 | { |
990 | if(gInventory.isEverythingFetched()) | 1134 | LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); |
1135 | if (configncitem.notNull()) | ||
991 | { | 1136 | { |
992 | LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID"); | 1137 | const LLInventoryItem* item = gInventory.getItem(configncitem); |
993 | if (configncitem.notNull()) | 1138 | if (item) |
994 | { | 1139 | { |
995 | const LLInventoryItem* item = gInventory.getItem(configncitem); | 1140 | if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike()) |
996 | if(item) | ||
997 | { | 1141 | { |
998 | if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike()) | 1142 | if(!item->getAssetUUID().isNull()) |
999 | { | 1143 | open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE); |
1000 | if(!item->getAssetUUID().isNull()) | 1144 | // open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE, LLUUID::null, FALSE); |
1001 | open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE); | ||
1002 | // open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE, LLUUID::null, FALSE); | ||
1003 | } | ||
1004 | } | 1145 | } |
1005 | } | 1146 | } |
1147 | else | ||
1148 | { | ||
1149 | cmdline_printchat("Could not find notecard UUID " + configncitem.asString() + " in your inventory. Make sure your inventory is fully loaded and try again."); | ||
1150 | } | ||
1006 | } | 1151 | } |
1007 | } | 1152 | } |
1008 | 1153 | ||
1154 | // static | ||
1009 | void LLFloaterAO::onClickNewCard(void* user_data) | 1155 | void LLFloaterAO::onClickNewCard(void* user_data) |
1010 | { | 1156 | { |
1011 | // load the template file from app_settings/ao_template.ini then | 1157 | // load the template file from app_settings/ao_template.ini then |
@@ -1031,15 +1177,16 @@ struct AOAssetInfo | |||
1031 | std::string name; | 1177 | std::string name; |
1032 | }; | 1178 | }; |
1033 | 1179 | ||
1180 | // static | ||
1034 | void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLAssetType::EType type,void* user_data, S32 status, LLExtStat ext_status) | 1181 | void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLAssetType::EType type,void* user_data, S32 status, LLExtStat ext_status) |
1035 | { | 1182 | { |
1036 | if(status == LL_ERR_NOERR) | 1183 | if (status == LL_ERR_NOERR) |
1037 | { | 1184 | { |
1038 | S32 size = vfs->getSize(asset_uuid, type); | 1185 | S32 size = vfs->getSize(asset_uuid, type); |
1039 | U8* buffer = new U8[size]; | 1186 | U8* buffer = new U8[size]; |
1040 | vfs->getData(asset_uuid, type, buffer, 0, size); | 1187 | vfs->getData(asset_uuid, type, buffer, 0, size); |
1041 | 1188 | ||
1042 | if(type == LLAssetType::AT_NOTECARD) | 1189 | if (type == LLAssetType::AT_NOTECARD) |
1043 | { | 1190 | { |
1044 | LLViewerTextEditor* edit = new LLViewerTextEditor("",LLRect(0,0,0,0),S32_MAX,""); | 1191 | LLViewerTextEditor* edit = new LLViewerTextEditor("",LLRect(0,0,0,0),S32_MAX,""); |
1045 | if(edit->importBuffer((char*)buffer, (S32)size)) | 1192 | if(edit->importBuffer((char*)buffer, (S32)size)) |
@@ -1048,27 +1195,43 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA | |||
1048 | std::string card = edit->getText(); | 1195 | std::string card = edit->getText(); |
1049 | edit->die(); | 1196 | edit->die(); |
1050 | 1197 | ||
1051 | if (mcomboBox_stands) | 1198 | if (sInstance && mComboBox_stands) |
1052 | { | 1199 | { |
1053 | mcomboBox_stands->clear(); | 1200 | mComboBox_stands->clear(); |
1054 | mcomboBox_stands->removeall(); | 1201 | mComboBox_stands->removeall(); |
1055 | } | 1202 | } |
1056 | if (mcomboBox_walks) mcomboBox_walks->clear(); | 1203 | if (sInstance && mComboBox_walks) |
1057 | if (mcomboBox_runs) mcomboBox_runs->clear(); | 1204 | mComboBox_walks->clear(); |
1058 | if (mcomboBox_jumps) mcomboBox_jumps->clear(); | 1205 | if (sInstance && mComboBox_runs) |
1059 | if (mcomboBox_sits) mcomboBox_sits->clear(); | 1206 | mComboBox_runs->clear(); |
1060 | if (mcomboBox_gsits) mcomboBox_gsits->clear(); | 1207 | if (sInstance && mComboBox_jumps) |
1061 | if (mcomboBox_crouchs) mcomboBox_cwalks->clear(); | 1208 | mComboBox_jumps->clear(); |
1062 | if (mcomboBox_cwalks) mcomboBox_cwalks->clear(); | 1209 | if (sInstance && mComboBox_sits) |
1063 | if (mcomboBox_falls) mcomboBox_falls->clear(); | 1210 | mComboBox_sits->clear(); |
1064 | if (mcomboBox_hovers) mcomboBox_hovers->clear(); | 1211 | if (sInstance && mComboBox_gsits) |
1065 | if (mcomboBox_flys) mcomboBox_flys->clear(); | 1212 | mComboBox_gsits->clear(); |
1066 | if (mcomboBox_flyslows) mcomboBox_flyslows->clear(); | 1213 | if (sInstance && mComboBox_crouchs) |
1067 | if (mcomboBox_flyups) mcomboBox_flyups->clear(); | 1214 | mComboBox_cwalks->clear(); |
1068 | if (mcomboBox_flydowns) mcomboBox_flydowns->clear(); | 1215 | if (sInstance && mComboBox_cwalks) |
1069 | if (mcomboBox_lands) mcomboBox_lands->clear(); | 1216 | mComboBox_cwalks->clear(); |
1070 | if (mcomboBox_standups) mcomboBox_standups->clear(); | 1217 | if (sInstance && mComboBox_falls) |
1071 | if (mcomboBox_prejumps) mcomboBox_prejumps->clear(); | 1218 | mComboBox_falls->clear(); |
1219 | if (sInstance && mComboBox_hovers) | ||
1220 | mComboBox_hovers->clear(); | ||
1221 | if (sInstance && mComboBox_flys) | ||
1222 | mComboBox_flys->clear(); | ||
1223 | if (sInstance && mComboBox_flyslows) | ||
1224 | mComboBox_flyslows->clear(); | ||
1225 | if (sInstance && mComboBox_flyups) | ||
1226 | mComboBox_flyups->clear(); | ||
1227 | if (sInstance && mComboBox_flydowns) | ||
1228 | mComboBox_flydowns->clear(); | ||
1229 | if (sInstance && mComboBox_lands) | ||
1230 | mComboBox_lands->clear(); | ||
1231 | if (sInstance && mComboBox_standups) | ||
1232 | mComboBox_standups->clear(); | ||
1233 | if (sInstance && mComboBox_prejumps) | ||
1234 | mComboBox_prejumps->clear(); | ||
1072 | 1235 | ||
1073 | 1236 | ||
1074 | struct_stands loader; | 1237 | struct_stands loader; |
@@ -1111,134 +1274,185 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA | |||
1111 | { | 1274 | { |
1112 | case STATE_AGENT_STAND: | 1275 | case STATE_AGENT_STAND: |
1113 | loader.ao_id = animid; loader.anim_name = stranim.c_str(); mAOStands.push_back(loader); | 1276 | loader.ao_id = animid; loader.anim_name = stranim.c_str(); mAOStands.push_back(loader); |
1114 | if(mcomboBox_stands != NULL) mcomboBox_stands->add(stranim.c_str(), ADD_BOTTOM, TRUE); | 1277 | if (sInstance && mComboBox_stands != NULL) |
1278 | { | ||
1279 | mComboBox_stands->add(stranim.c_str(), ADD_BOTTOM, TRUE); | ||
1280 | } | ||
1115 | break; | 1281 | break; |
1116 | case STATE_AGENT_WALK: | 1282 | case STATE_AGENT_WALK: |
1117 | { | 1283 | { |
1118 | if (sInstance && (mcomboBox_walks != NULL)) | 1284 | if (sInstance && mComboBox_walks != NULL) |
1119 | { | 1285 | { |
1120 | //llinfos << "1 anim: " << stranim.c_str() << " assetid: " << animid << llendl; | 1286 | //llinfos << "1 anim: " << stranim.c_str() << " assetid: " << animid << llendl; |
1121 | if (!(mcomboBox_walks->selectByValue(stranim.c_str()))) mcomboBox_walks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1287 | if (!(mComboBox_walks->selectByValue(stranim.c_str()))) |
1288 | { | ||
1289 | mComboBox_walks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1290 | } | ||
1122 | } | 1291 | } |
1123 | } | 1292 | } |
1124 | break; | 1293 | break; |
1125 | case STATE_AGENT_RUN: | 1294 | case STATE_AGENT_RUN: |
1126 | { | 1295 | { |
1127 | if (sInstance && (mcomboBox_runs != NULL)) | 1296 | if (sInstance && mComboBox_runs != NULL) |
1128 | { | 1297 | { |
1129 | if (!(mcomboBox_runs->selectByValue(stranim.c_str()))) mcomboBox_runs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1298 | if (!(mComboBox_runs->selectByValue(stranim.c_str()))) |
1299 | { | ||
1300 | mComboBox_runs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1301 | } | ||
1130 | } | 1302 | } |
1131 | } | 1303 | } |
1132 | break; | 1304 | break; |
1133 | case STATE_AGENT_JUMP: | 1305 | case STATE_AGENT_JUMP: |
1134 | { | 1306 | { |
1135 | if (sInstance && (mcomboBox_jumps != NULL)) | 1307 | if (sInstance && mComboBox_jumps != NULL) |
1136 | { | 1308 | { |
1137 | if (!(mcomboBox_jumps->selectByValue(stranim.c_str()))) mcomboBox_jumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1309 | if (!(mComboBox_jumps->selectByValue(stranim.c_str()))) |
1310 | { | ||
1311 | mComboBox_jumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1312 | } | ||
1138 | } | 1313 | } |
1139 | } | 1314 | } |
1140 | break; | 1315 | break; |
1141 | case STATE_AGENT_SIT: | 1316 | case STATE_AGENT_SIT: |
1142 | { | 1317 | { |
1143 | if (sInstance && (mcomboBox_sits != NULL)) | 1318 | if (sInstance && mComboBox_sits != NULL) |
1144 | { | 1319 | { |
1145 | if (!(mcomboBox_sits->selectByValue(stranim.c_str()))) mcomboBox_sits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1320 | if (!(mComboBox_sits->selectByValue(stranim.c_str()))) |
1321 | { | ||
1322 | mComboBox_sits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1323 | } | ||
1146 | } | 1324 | } |
1147 | } | 1325 | } |
1148 | break; | 1326 | break; |
1149 | case STATE_AGENT_GROUNDSIT: | 1327 | case STATE_AGENT_GROUNDSIT: |
1150 | { | 1328 | { |
1151 | if (sInstance && (mcomboBox_gsits != NULL)) | 1329 | if (sInstance && mComboBox_gsits != NULL) |
1152 | { | 1330 | { |
1153 | if (!(mcomboBox_gsits->selectByValue(stranim.c_str()))) mcomboBox_gsits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1331 | if (!(mComboBox_gsits->selectByValue(stranim.c_str()))) |
1332 | { | ||
1333 | mComboBox_gsits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1334 | } | ||
1154 | } | 1335 | } |
1155 | } | 1336 | } |
1156 | break; | 1337 | break; |
1157 | case STATE_AGENT_CROUCH: | 1338 | case STATE_AGENT_CROUCH: |
1158 | { | 1339 | { |
1159 | if (sInstance && (mcomboBox_crouchs != NULL)) | 1340 | if (sInstance && mComboBox_crouchs != NULL) |
1160 | { | 1341 | { |
1161 | if (!(mcomboBox_crouchs->selectByValue(stranim.c_str()))) mcomboBox_crouchs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1342 | if (!(mComboBox_crouchs->selectByValue(stranim.c_str()))) |
1343 | { | ||
1344 | mComboBox_crouchs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1345 | } | ||
1162 | } | 1346 | } |
1163 | } | 1347 | } |
1164 | break; | 1348 | break; |
1165 | case STATE_AGENT_CROUCHWALK: | 1349 | case STATE_AGENT_CROUCHWALK: |
1166 | { | 1350 | { |
1167 | if (sInstance && (mcomboBox_cwalks != NULL)) | 1351 | if (sInstance && mComboBox_cwalks != NULL) |
1168 | { | 1352 | { |
1169 | if (!(mcomboBox_cwalks->selectByValue(stranim.c_str()))) mcomboBox_cwalks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1353 | if (!(mComboBox_cwalks->selectByValue(stranim.c_str()))) |
1354 | { | ||
1355 | mComboBox_cwalks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1356 | } | ||
1170 | } | 1357 | } |
1171 | } | 1358 | } |
1172 | break; | 1359 | break; |
1173 | case STATE_AGENT_FALLDOWN: | 1360 | case STATE_AGENT_FALLDOWN: |
1174 | { | 1361 | { |
1175 | if (sInstance && (mcomboBox_falls != NULL)) | 1362 | if (sInstance && mComboBox_falls != NULL) |
1176 | { | 1363 | { |
1177 | if (!(mcomboBox_falls->selectByValue(stranim.c_str()))) mcomboBox_falls->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1364 | if (!(mComboBox_falls->selectByValue(stranim.c_str()))) |
1365 | { | ||
1366 | mComboBox_falls->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1367 | } | ||
1178 | } | 1368 | } |
1179 | } | 1369 | } |
1180 | break; | 1370 | break; |
1181 | case STATE_AGENT_HOVER: | 1371 | case STATE_AGENT_HOVER: |
1182 | { | 1372 | { |
1183 | if (sInstance && (mcomboBox_hovers != NULL)) | 1373 | if (sInstance && mComboBox_hovers != NULL) |
1184 | { | 1374 | { |
1185 | if (!(mcomboBox_hovers->selectByValue(stranim.c_str()))) mcomboBox_hovers->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1375 | if (!(mComboBox_hovers->selectByValue(stranim.c_str()))) |
1376 | { | ||
1377 | mComboBox_hovers->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1378 | } | ||
1186 | } | 1379 | } |
1187 | } | 1380 | } |
1188 | break; | 1381 | break; |
1189 | case STATE_AGENT_FLY: | 1382 | case STATE_AGENT_FLY: |
1190 | { | 1383 | { |
1191 | if (sInstance && (mcomboBox_flys != NULL)) | 1384 | if (sInstance && mComboBox_flys != NULL) |
1192 | { | 1385 | { |
1193 | if (!(mcomboBox_flys->selectByValue(stranim.c_str()))) mcomboBox_flys->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1386 | if (!(mComboBox_flys->selectByValue(stranim.c_str()))) |
1387 | { | ||
1388 | mComboBox_flys->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1389 | } | ||
1194 | } | 1390 | } |
1195 | } | 1391 | } |
1196 | break; | 1392 | break; |
1197 | case STATE_AGENT_FLYSLOW: | 1393 | case STATE_AGENT_FLYSLOW: |
1198 | { | 1394 | { |
1199 | if (sInstance && (mcomboBox_flyslows != NULL)) | 1395 | if (sInstance && mComboBox_flyslows != NULL) |
1200 | { | 1396 | { |
1201 | if (!(mcomboBox_flyslows->selectByValue(stranim.c_str()))) mcomboBox_flyslows->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1397 | if (!(mComboBox_flyslows->selectByValue(stranim.c_str()))) |
1398 | { | ||
1399 | mComboBox_flyslows->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1400 | } | ||
1202 | } | 1401 | } |
1203 | } | 1402 | } |
1204 | break; | 1403 | break; |
1205 | case STATE_AGENT_HOVER_UP: | 1404 | case STATE_AGENT_HOVER_UP: |
1206 | { | 1405 | { |
1207 | if (sInstance && (mcomboBox_flyups != NULL)) | 1406 | if (sInstance && mComboBox_flyups != NULL) |
1208 | { | 1407 | { |
1209 | if (!(mcomboBox_flyups->selectByValue(stranim.c_str()))) mcomboBox_flyups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1408 | if (!(mComboBox_flyups->selectByValue(stranim.c_str()))) |
1409 | { | ||
1410 | mComboBox_flyups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1411 | } | ||
1210 | } | 1412 | } |
1211 | } | 1413 | } |
1212 | break; | 1414 | break; |
1213 | case STATE_AGENT_HOVER_DOWN: | 1415 | case STATE_AGENT_HOVER_DOWN: |
1214 | { | 1416 | { |
1215 | if (sInstance && (mcomboBox_flydowns != NULL)) | 1417 | if (sInstance && mComboBox_flydowns != NULL) |
1216 | { | 1418 | { |
1217 | if (!(mcomboBox_flydowns->selectByValue(stranim.c_str()))) mcomboBox_flydowns->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1419 | if (!(mComboBox_flydowns->selectByValue(stranim.c_str()))) |
1420 | { | ||
1421 | mComboBox_flydowns->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1422 | } | ||
1218 | } | 1423 | } |
1219 | } | 1424 | } |
1220 | break; | 1425 | break; |
1221 | case STATE_AGENT_LAND: | 1426 | case STATE_AGENT_LAND: |
1222 | { | 1427 | { |
1223 | if (sInstance && (mcomboBox_lands != NULL)) | 1428 | if (sInstance && mComboBox_lands != NULL) |
1224 | { | 1429 | { |
1225 | if (!(mcomboBox_lands->selectByValue(stranim.c_str()))) mcomboBox_lands->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1430 | if (!(mComboBox_lands->selectByValue(stranim.c_str()))) |
1431 | { | ||
1432 | mComboBox_lands->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1433 | } | ||
1226 | } | 1434 | } |
1227 | } | 1435 | } |
1228 | break; | 1436 | break; |
1229 | case STATE_AGENT_STANDUP: | 1437 | case STATE_AGENT_STANDUP: |
1230 | { | 1438 | { |
1231 | if (sInstance && (mcomboBox_standups != NULL)) | 1439 | if (sInstance && mComboBox_standups != NULL) |
1232 | { | 1440 | { |
1233 | if (!(mcomboBox_standups->selectByValue(stranim.c_str()))) mcomboBox_standups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1441 | if (!(mComboBox_standups->selectByValue(stranim.c_str()))) |
1442 | { | ||
1443 | mComboBox_standups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1444 | } | ||
1234 | } | 1445 | } |
1235 | } | 1446 | } |
1236 | break; | 1447 | break; |
1237 | case STATE_AGENT_PRE_JUMP: | 1448 | case STATE_AGENT_PRE_JUMP: |
1238 | { | 1449 | { |
1239 | if (sInstance && (mcomboBox_prejumps != NULL)) | 1450 | if (sInstance && mComboBox_prejumps != NULL) |
1240 | { | 1451 | { |
1241 | if (!(mcomboBox_prejumps->selectByValue(stranim.c_str()))) mcomboBox_prejumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | 1452 | if (!(mComboBox_prejumps->selectByValue(stranim.c_str()))) |
1453 | { | ||
1454 | mComboBox_prejumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist | ||
1455 | } | ||
1242 | } | 1456 | } |
1243 | } | 1457 | } |
1244 | break; | 1458 | break; |
@@ -1264,113 +1478,161 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA | |||
1264 | case STATE_AGENT_WALK: | 1478 | case STATE_AGENT_WALK: |
1265 | { | 1479 | { |
1266 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultWalk"); | 1480 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultWalk"); |
1267 | SetDefault(mcomboBox_walks,iter->ao_id,defaultanim); | 1481 | setDefault(mComboBox_walks, iter->ao_id,defaultanim); |
1268 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1482 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1483 | { | ||
1484 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1485 | } | ||
1269 | } | 1486 | } |
1270 | break; | 1487 | break; |
1271 | case STATE_AGENT_RUN: | 1488 | case STATE_AGENT_RUN: |
1272 | { | 1489 | { |
1273 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultRun"); | 1490 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultRun"); |
1274 | SetDefault(mcomboBox_runs,iter->ao_id,defaultanim); | 1491 | setDefault(mComboBox_runs, iter->ao_id,defaultanim); |
1275 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1492 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1493 | { | ||
1494 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1495 | } | ||
1276 | } | 1496 | } |
1277 | break; | 1497 | break; |
1278 | case STATE_AGENT_JUMP: | 1498 | case STATE_AGENT_JUMP: |
1279 | { | 1499 | { |
1280 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultJump"); | 1500 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultJump"); |
1281 | SetDefault(mcomboBox_jumps,iter->ao_id,defaultanim); | 1501 | setDefault(mComboBox_jumps, iter->ao_id,defaultanim); |
1282 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1502 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1503 | { | ||
1504 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1505 | } | ||
1283 | } | 1506 | } |
1284 | break; | 1507 | break; |
1285 | case STATE_AGENT_SIT: | 1508 | case STATE_AGENT_SIT: |
1286 | { | 1509 | { |
1287 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultSit"); | 1510 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultSit"); |
1288 | SetDefault(mcomboBox_sits,iter->ao_id,defaultanim); | 1511 | setDefault(mComboBox_sits, iter->ao_id,defaultanim); |
1289 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1512 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1513 | { | ||
1514 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1515 | } | ||
1290 | } | 1516 | } |
1291 | break; | 1517 | break; |
1292 | case STATE_AGENT_CROUCH: | 1518 | case STATE_AGENT_CROUCH: |
1293 | { | 1519 | { |
1294 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouch"); | 1520 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouch"); |
1295 | SetDefault(mcomboBox_crouchs,iter->ao_id,defaultanim); | 1521 | setDefault(mComboBox_crouchs,iter->ao_id,defaultanim); |
1296 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1522 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1523 | { | ||
1524 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1525 | } | ||
1297 | } | 1526 | } |
1298 | break; | 1527 | break; |
1299 | case STATE_AGENT_GROUNDSIT: | 1528 | case STATE_AGENT_GROUNDSIT: |
1300 | { | 1529 | { |
1301 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultGroundSit"); | 1530 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultGroundSit"); |
1302 | SetDefault(mcomboBox_gsits,iter->ao_id,defaultanim); | 1531 | setDefault(mComboBox_gsits,iter->ao_id,defaultanim); |
1303 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1532 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1533 | { | ||
1534 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1535 | } | ||
1304 | } | 1536 | } |
1305 | break; | 1537 | break; |
1306 | case STATE_AGENT_CROUCHWALK: | 1538 | case STATE_AGENT_CROUCHWALK: |
1307 | { | 1539 | { |
1308 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouchWalk"); | 1540 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouchWalk"); |
1309 | SetDefault(mcomboBox_cwalks,iter->ao_id,defaultanim); | 1541 | setDefault(mComboBox_cwalks,iter->ao_id,defaultanim); |
1310 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1542 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1543 | { | ||
1544 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1545 | } | ||
1311 | } | 1546 | } |
1312 | break; | 1547 | break; |
1313 | case STATE_AGENT_FALLDOWN: | 1548 | case STATE_AGENT_FALLDOWN: |
1314 | { | 1549 | { |
1315 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFall"); | 1550 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFall"); |
1316 | SetDefault(mcomboBox_falls,iter->ao_id,defaultanim); | 1551 | setDefault(mComboBox_falls,iter->ao_id,defaultanim); |
1317 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1552 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1553 | { | ||
1554 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1555 | } | ||
1318 | } | 1556 | } |
1319 | break; | 1557 | break; |
1320 | case STATE_AGENT_HOVER: | 1558 | case STATE_AGENT_HOVER: |
1321 | { | 1559 | { |
1322 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultHover"); | 1560 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultHover"); |
1323 | SetDefault(mcomboBox_hovers,iter->ao_id,defaultanim); | 1561 | setDefault(mComboBox_hovers,iter->ao_id,defaultanim); |
1324 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1562 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1563 | { | ||
1564 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1565 | } | ||
1325 | } | 1566 | } |
1326 | break; | 1567 | break; |
1327 | case STATE_AGENT_FLY: | 1568 | case STATE_AGENT_FLY: |
1328 | { | 1569 | { |
1329 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFly"); | 1570 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFly"); |
1330 | SetDefault(mcomboBox_flys,iter->ao_id,defaultanim); | 1571 | setDefault(mComboBox_flys,iter->ao_id,defaultanim); |
1331 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1572 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1573 | { | ||
1574 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1575 | } | ||
1332 | } | 1576 | } |
1333 | break; | 1577 | break; |
1334 | case STATE_AGENT_HOVER_UP: | 1578 | case STATE_AGENT_HOVER_UP: |
1335 | { | 1579 | { |
1336 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyUp"); | 1580 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyUp"); |
1337 | SetDefault(mcomboBox_flyups,iter->ao_id,defaultanim); | 1581 | setDefault(mComboBox_flyups,iter->ao_id,defaultanim); |
1338 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1582 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1583 | { | ||
1584 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1585 | } | ||
1339 | } | 1586 | } |
1340 | break; | 1587 | break; |
1341 | case STATE_AGENT_FLYSLOW: | 1588 | case STATE_AGENT_FLYSLOW: |
1342 | { | 1589 | { |
1343 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlySlow"); | 1590 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlySlow"); |
1344 | SetDefault(mcomboBox_flyslows,iter->ao_id,defaultanim); | 1591 | setDefault(mComboBox_flyslows,iter->ao_id,defaultanim); |
1345 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1592 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1593 | { | ||
1594 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1595 | } | ||
1346 | } | 1596 | } |
1347 | break; | 1597 | break; |
1348 | case STATE_AGENT_HOVER_DOWN: | 1598 | case STATE_AGENT_HOVER_DOWN: |
1349 | { | 1599 | { |
1350 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyDown"); | 1600 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyDown"); |
1351 | SetDefault(mcomboBox_flydowns,iter->ao_id,defaultanim); | 1601 | setDefault(mComboBox_flydowns,iter->ao_id,defaultanim); |
1352 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1602 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1603 | { | ||
1604 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1605 | } | ||
1353 | } | 1606 | } |
1354 | break; | 1607 | break; |
1355 | case STATE_AGENT_LAND: | 1608 | case STATE_AGENT_LAND: |
1356 | { | 1609 | { |
1357 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultLand"); | 1610 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultLand"); |
1358 | SetDefault(mcomboBox_lands,iter->ao_id,defaultanim); | 1611 | setDefault(mComboBox_lands,iter->ao_id,defaultanim); |
1359 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1612 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1613 | { | ||
1614 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1615 | } | ||
1360 | } | 1616 | } |
1361 | break; | 1617 | break; |
1362 | case STATE_AGENT_STANDUP: | 1618 | case STATE_AGENT_STANDUP: |
1363 | { | 1619 | { |
1364 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultStandUp"); | 1620 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultStandUp"); |
1365 | SetDefault(mcomboBox_standups,iter->ao_id,defaultanim); | 1621 | setDefault(mComboBox_standups,iter->ao_id,defaultanim); |
1366 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1622 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1623 | { | ||
1624 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1625 | } | ||
1367 | } | 1626 | } |
1368 | break; | 1627 | break; |
1369 | case STATE_AGENT_PRE_JUMP: | 1628 | case STATE_AGENT_PRE_JUMP: |
1370 | { | 1629 | { |
1371 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultPreJump"); | 1630 | std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultPreJump"); |
1372 | SetDefault(mcomboBox_prejumps,iter->ao_id,defaultanim); | 1631 | setDefault(mComboBox_prejumps,iter->ao_id,defaultanim); |
1373 | if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); | 1632 | if (getAssetIDByName(defaultanim) != LLUUID::null) |
1633 | { | ||
1634 | iter->ao_id = getAssetIDByName(defaultanim); | ||
1635 | } | ||
1374 | } | 1636 | } |
1375 | break; | 1637 | break; |
1376 | } | 1638 | } |
@@ -1389,7 +1651,8 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA | |||
1389 | } | 1651 | } |
1390 | } | 1652 | } |
1391 | 1653 | ||
1392 | BOOL LLFloaterAO::SetDefault(void* userdata, LLUUID ao_id, std::string defaultanim) | 1654 | // static |
1655 | bool LLFloaterAO::setDefault(void* userdata, LLUUID ao_id, std::string defaultanim) | ||
1393 | { | 1656 | { |
1394 | if (sInstance && (userdata)) | 1657 | if (sInstance && (userdata)) |
1395 | { | 1658 | { |
@@ -1432,14 +1695,18 @@ private: | |||
1432 | std::string sName; | 1695 | std::string sName; |
1433 | }; | 1696 | }; |
1434 | 1697 | ||
1698 | // static | ||
1435 | const LLUUID& LLFloaterAO::getAssetIDByName(const std::string& name) | 1699 | const LLUUID& LLFloaterAO::getAssetIDByName(const std::string& name) |
1436 | { | 1700 | { |
1437 | if (name.empty() || !(gInventory.isEverythingFetched())) return LLUUID::null; | 1701 | if (name.empty()) |
1702 | { | ||
1703 | return LLUUID::null; | ||
1704 | } | ||
1438 | 1705 | ||
1439 | LLViewerInventoryCategory::cat_array_t cats; | 1706 | LLViewerInventoryCategory::cat_array_t cats; |
1440 | LLViewerInventoryItem::item_array_t items; | 1707 | LLViewerInventoryItem::item_array_t items; |
1441 | ObjectNameMatches objectnamematches(name); | 1708 | ObjectNameMatches objectnamematches(name); |
1442 | gInventory.collectDescendentsIf(LLUUID::null,cats,items,FALSE,objectnamematches); | 1709 | gInventory.collectDescendentsIf(LLUUID::null, cats, items, FALSE, objectnamematches); |
1443 | 1710 | ||
1444 | if (items.count()) | 1711 | if (items.count()) |
1445 | { | 1712 | { |
diff --git a/linden/indra/newview/floaterao.h b/linden/indra/newview/floaterao.h index 465f32e..45fd7af 100644 --- a/linden/indra/newview/floaterao.h +++ b/linden/indra/newview/floaterao.h | |||
@@ -9,35 +9,35 @@ | |||
9 | 9 | ||
10 | class AONoteCardDropTarget; | 10 | class AONoteCardDropTarget; |
11 | 11 | ||
12 | const int STATE_AGENT_IDLE = 0; | 12 | const S32 STATE_AGENT_IDLE = 0; |
13 | const int STATE_AGENT_WALK = 1; | 13 | const S32 STATE_AGENT_WALK = 1; |
14 | const int STATE_AGENT_RUN = 2; | 14 | const S32 STATE_AGENT_RUN = 2; |
15 | const int STATE_AGENT_STAND = 3; | 15 | const S32 STATE_AGENT_STAND = 3; |
16 | 16 | ||
17 | const int STATE_AGENT_PRE_JUMP = 4; | 17 | const S32 STATE_AGENT_PRE_JUMP = 4; |
18 | const int STATE_AGENT_JUMP = 5; | 18 | const S32 STATE_AGENT_JUMP = 5; |
19 | const int STATE_AGENT_TURNLEFT = 6; | 19 | const S32 STATE_AGENT_TURNLEFT = 6; |
20 | const int STATE_AGENT_TURNRIGHT = 7; | 20 | const S32 STATE_AGENT_TURNRIGHT = 7; |
21 | 21 | ||
22 | const int STATE_AGENT_SIT = 8; | 22 | const S32 STATE_AGENT_SIT = 8; |
23 | const int STATE_AGENT_GROUNDSIT = 9; | 23 | const S32 STATE_AGENT_GROUNDSIT = 9; |
24 | 24 | ||
25 | const int STATE_AGENT_HOVER = 10; | 25 | const S32 STATE_AGENT_HOVER = 10; |
26 | const int STATE_AGENT_HOVER_DOWN = 11; | 26 | const S32 STATE_AGENT_HOVER_DOWN = 11; |
27 | const int STATE_AGENT_HOVER_UP = 12; | 27 | const S32 STATE_AGENT_HOVER_UP = 12; |
28 | |||
29 | const int STATE_AGENT_CROUCH = 13; | ||
30 | const int STATE_AGENT_CROUCHWALK = 14; | ||
31 | const int STATE_AGENT_FALLDOWN = 15; | ||
32 | const int STATE_AGENT_STANDUP = 16; | ||
33 | const int STATE_AGENT_LAND = 17; | ||
34 | |||
35 | const int STATE_AGENT_FLY = 18; | ||
36 | const int STATE_AGENT_FLYSLOW = 19; | ||
37 | 28 | ||
29 | const S32 STATE_AGENT_CROUCH = 13; | ||
30 | const S32 STATE_AGENT_CROUCHWALK = 14; | ||
31 | const S32 STATE_AGENT_FALLDOWN = 15; | ||
32 | const S32 STATE_AGENT_STANDUP = 16; | ||
33 | const S32 STATE_AGENT_LAND = 17; | ||
38 | 34 | ||
35 | const S32 STATE_AGENT_FLY = 18; | ||
36 | const S32 STATE_AGENT_FLYSLOW = 19; | ||
39 | 37 | ||
40 | 38 | ||
39 | class LLFrameTimer; | ||
40 | class LLComboBox; | ||
41 | 41 | ||
42 | class AOStandTimer : public LLEventTimer | 42 | class AOStandTimer : public LLEventTimer |
43 | { | 43 | { |
@@ -51,10 +51,12 @@ public: | |||
51 | class AOInvTimer : public LLEventTimer | 51 | class AOInvTimer : public LLEventTimer |
52 | { | 52 | { |
53 | public: | 53 | public: |
54 | static BOOL fullfetch; | ||
55 | AOInvTimer(); | 54 | AOInvTimer(); |
56 | ~AOInvTimer(); | 55 | ~AOInvTimer(); |
57 | BOOL tick(); | 56 | BOOL tick(); |
57 | |||
58 | private: | ||
59 | static BOOL sInitialized; | ||
58 | }; | 60 | }; |
59 | 61 | ||
60 | class LLFloaterAO : public LLFloater | 62 | class LLFloaterAO : public LLFloater |
@@ -66,7 +68,7 @@ public: | |||
66 | virtual ~LLFloaterAO(); | 68 | virtual ~LLFloaterAO(); |
67 | 69 | ||
68 | static void show(void*); | 70 | static void show(void*); |
69 | static void init(); | 71 | static bool init(); |
70 | 72 | ||
71 | static void onClickToggleAO(LLUICtrl *, void*); | 73 | static void onClickToggleAO(LLUICtrl *, void*); |
72 | static void onClickToggleSits(LLUICtrl *, void*); | 74 | static void onClickToggleSits(LLUICtrl *, void*); |
@@ -75,13 +77,13 @@ public: | |||
75 | 77 | ||
76 | static BOOL loadAnims(); | 78 | static BOOL loadAnims(); |
77 | 79 | ||
78 | static int getAnimationState(); | 80 | static S32 getAnimationState(); |
79 | static void setAnimationState(int state); | 81 | static void setAnimationState(S32 state); |
80 | static void setStates(const LLUUID& id, BOOL start); | 82 | static void setStates(const LLUUID& id, BOOL start); |
81 | 83 | ||
82 | static LLUUID getCurrentStandId(); | 84 | static LLUUID getCurrentStandId(); |
83 | static void setCurrentStandId(const LLUUID& id); | 85 | static void setCurrentStandId(const LLUUID& id); |
84 | static int stand_iterator; | 86 | static S32 stand_iterator; |
85 | static BOOL ChangeStand(); | 87 | static BOOL ChangeStand(); |
86 | 88 | ||
87 | static BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f, BOOL stand = FALSE); | 89 | static BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f, BOOL stand = FALSE); |
@@ -89,9 +91,9 @@ public: | |||
89 | 91 | ||
90 | static LLUUID GetAnimID(const LLUUID& id); | 92 | static LLUUID GetAnimID(const LLUUID& id); |
91 | 93 | ||
92 | static int GetStateFromAnimID(const LLUUID& id); | 94 | static S32 GetStateFromAnimID(const LLUUID& id); |
93 | static LLUUID GetAnimIDFromState(const int state); | 95 | static LLUUID GetAnimIDFromState(const S32 state); |
94 | static int GetStateFromToken(std::string strtoken); | 96 | static S32 GetStateFromToken(std::string strtoken); |
95 | 97 | ||
96 | static void onClickLess(void* data) ; | 98 | static void onClickLess(void* data) ; |
97 | static void onClickMore(void* data) ; | 99 | static void onClickMore(void* data) ; |
@@ -105,19 +107,20 @@ public: | |||
105 | static LLUUID invfolderid; | 107 | static LLUUID invfolderid; |
106 | static const LLUUID& getAssetIDByName(const std::string& name); | 108 | static const LLUUID& getAssetIDByName(const std::string& name); |
107 | 109 | ||
108 | static bool getInstance(); | 110 | static LLFloaterAO* getInstance(); |
111 | static bool getVisible(); | ||
109 | 112 | ||
110 | private: | 113 | private: |
111 | 114 | ||
112 | static LLFloaterAO* sInstance; | 115 | static LLFloaterAO* sInstance; |
113 | static int mAnimationState; | 116 | static S32 sAnimationState; |
114 | static LLUUID mCurrentStandId; | 117 | static LLUUID sCurrentStandId; |
115 | 118 | ||
116 | static AONoteCardDropTarget* mAOItemDropTarget; | 119 | static AONoteCardDropTarget* sAOItemDropTarget; |
117 | static void AOItemDrop(LLViewerInventoryItem* item); | 120 | static void AOItemDrop(LLViewerInventoryItem* item); |
118 | static void onSpinnerCommit(LLUICtrl* ctrl, void* userdata); | 121 | static void onSpinnerCommit(LLUICtrl* ctrl, void* userdata); |
119 | static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata); | 122 | static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata); |
120 | static BOOL SetDefault(void *userdata, LLUUID ao_id, std::string defaultanim); | 123 | static bool setDefault(void *userdata, LLUUID ao_id, std::string defaultanim); |
121 | 124 | ||
122 | BOOL mDirty; | 125 | BOOL mDirty; |
123 | 126 | ||
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 3b8215b..08e12ce 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -2913,12 +2913,6 @@ bool idle_startup() | |||
2913 | gStatusBar->updateElements(); | 2913 | gStatusBar->updateElements(); |
2914 | } | 2914 | } |
2915 | 2915 | ||
2916 | // Start the AO now that settings have loaded and login successful -- MC | ||
2917 | if (!gAOInvTimer) | ||
2918 | { | ||
2919 | gAOInvTimer = new AOInvTimer(); | ||
2920 | } | ||
2921 | |||
2922 | LLFirstUse::ClientTags(); | 2916 | LLFirstUse::ClientTags(); |
2923 | 2917 | ||
2924 | // Add login location to teleport history 'teleported-into' | 2918 | // Add login location to teleport history 'teleported-into' |
@@ -2987,6 +2981,12 @@ bool idle_startup() | |||
2987 | //LLInventoryView::toggleVisibility(NULL); | 2981 | //LLInventoryView::toggleVisibility(NULL); |
2988 | } | 2982 | } |
2989 | 2983 | ||
2984 | // Init the AO now that settings have loaded and login successful -- MC | ||
2985 | if (!gAOInvTimer) | ||
2986 | { | ||
2987 | gAOInvTimer = new AOInvTimer(); | ||
2988 | } | ||
2989 | |||
2990 | LLStartUp::setStartupState( STATE_STARTED ); | 2990 | LLStartUp::setStartupState( STATE_STARTED ); |
2991 | LLStartUp::setStartedOnce(true); | 2991 | LLStartUp::setStartedOnce(true); |
2992 | LLStartUp::setLoginFailed(false); | 2992 | LLStartUp::setLoginFailed(false); |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index ac16dbc..8aed3e0 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -8329,7 +8329,7 @@ class LLViewCheckAO: public view_listener_t | |||
8329 | { | 8329 | { |
8330 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 8330 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
8331 | { | 8331 | { |
8332 | gMenuHolder->findControl(userdata["control"].asString())->setValue(LLFloaterAO::getInstance()); | 8332 | gMenuHolder->findControl(userdata["control"].asString())->setValue(LLFloaterAO::getVisible()); |
8333 | return true; | 8333 | return true; |
8334 | } | 8334 | } |
8335 | }; | 8335 | }; |