diff options
37 files changed, 900 insertions, 348 deletions
| diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp index 365fb673f3..4c24218fc3 100644 --- a/indra/llcharacter/llanimationstates.cpp +++ b/indra/llcharacter/llanimationstates.cpp @@ -39,6 +39,146 @@  #include "llanimationstates.h"  #include "llstring.h" +const LLUUID ANIM_AGENT_AFRAID				= LLUUID("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); +const LLUUID ANIM_AGENT_AIM_BAZOOKA_R		= LLUUID("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); +const LLUUID ANIM_AGENT_AIM_BOW_L			= LLUUID("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); +const LLUUID ANIM_AGENT_AIM_HANDGUN_R		= LLUUID("3147d815-6338-b932-f011-16b56d9ac18b"); +const LLUUID ANIM_AGENT_AIM_RIFLE_R			= LLUUID("ea633413-8006-180a-c3ba-96dd1d756720"); +const LLUUID ANIM_AGENT_ANGRY				= LLUUID("5747a48e-073e-c331-f6f3-7c2149613d3e"); +const LLUUID ANIM_AGENT_AWAY				= LLUUID("fd037134-85d4-f241-72c6-4f42164fedee"); +const LLUUID ANIM_AGENT_BACKFLIP			= LLUUID("c4ca6188-9127-4f31-0158-23c4e2f93304"); +const LLUUID ANIM_AGENT_BELLY_LAUGH			= LLUUID("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); +const LLUUID ANIM_AGENT_BLOW_KISS			= LLUUID("db84829b-462c-ee83-1e27-9bbee66bd624"); +const LLUUID ANIM_AGENT_BORED				= LLUUID("b906c4ba-703b-1940-32a3-0c7f7d791510"); +const LLUUID ANIM_AGENT_BOW					= LLUUID("82e99230-c906-1403-4d9c-3889dd98daba"); +const LLUUID ANIM_AGENT_BRUSH				= LLUUID("349a3801-54f9-bf2c-3bd0-1ac89772af01"); +const LLUUID ANIM_AGENT_BUSY				= LLUUID("efcf670c-2d18-8128-973a-034ebc806b67"); +const LLUUID ANIM_AGENT_CLAP				= LLUUID("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); +const LLUUID ANIM_AGENT_COURTBOW			= LLUUID("9ba1c942-08be-e43a-fb29-16ad440efc50"); +const LLUUID ANIM_AGENT_CROUCH				= LLUUID("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); +const LLUUID ANIM_AGENT_CROUCHWALK			= LLUUID("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); +const LLUUID ANIM_AGENT_CRY					= LLUUID("92624d3e-1068-f1aa-a5ec-8244585193ed"); +const LLUUID ANIM_AGENT_CUSTOMIZE	 		= LLUUID("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); +const LLUUID ANIM_AGENT_CUSTOMIZE_DONE		= LLUUID("6883a61a-b27b-5914-a61e-dda118a9ee2c"); +const LLUUID ANIM_AGENT_DANCE1				= LLUUID("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); +const LLUUID ANIM_AGENT_DANCE2				= LLUUID("928cae18-e31d-76fd-9cc9-2f55160ff818"); +const LLUUID ANIM_AGENT_DANCE3				= LLUUID("30047778-10ea-1af7-6881-4db7a3a5a114"); +const LLUUID ANIM_AGENT_DANCE4				= LLUUID("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); +const LLUUID ANIM_AGENT_DANCE5				= LLUUID("4bd69a1d-1114-a0b4-625f-84e0a5237155"); +const LLUUID ANIM_AGENT_DANCE6				= LLUUID("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); +const LLUUID ANIM_AGENT_DANCE7				= LLUUID("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); +const LLUUID ANIM_AGENT_DANCE8				= LLUUID("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); +const LLUUID ANIM_AGENT_DEAD				= LLUUID("57abaae6-1d17-7b1b-5f98-6d11a6411276"); +const LLUUID ANIM_AGENT_DRINK				= LLUUID("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); +const LLUUID ANIM_AGENT_EMBARRASSED			= LLUUID("514af488-9051-044a-b3fc-d4dbf76377c6"); +const LLUUID ANIM_AGENT_EXPRESS_AFRAID		= LLUUID("aa2df84d-cf8f-7218-527b-424a52de766e"); +const LLUUID ANIM_AGENT_EXPRESS_ANGER		= LLUUID("1a03b575-9634-b62a-5767-3a679e81f4de"); +const LLUUID ANIM_AGENT_EXPRESS_BORED		= LLUUID("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); +const LLUUID ANIM_AGENT_EXPRESS_CRY			= LLUUID("d535471b-85bf-3b4d-a542-93bea4f59d33"); +const LLUUID ANIM_AGENT_EXPRESS_DISDAIN		= LLUUID("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); +const LLUUID ANIM_AGENT_EXPRESS_EMBARRASSED = LLUUID("0b8c8211-d78c-33e8-fa28-c51a9594e424"); +const LLUUID ANIM_AGENT_EXPRESS_FROWN		= LLUUID("fee3df48-fa3d-1015-1e26-a205810e3001"); +const LLUUID ANIM_AGENT_EXPRESS_KISS		= LLUUID("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); +const LLUUID ANIM_AGENT_EXPRESS_LAUGH		= LLUUID("62570842-0950-96f8-341c-809e65110823"); +const LLUUID ANIM_AGENT_EXPRESS_OPEN_MOUTH	= LLUUID("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); +const LLUUID ANIM_AGENT_EXPRESS_REPULSED	= LLUUID("f76cda94-41d4-a229-2872-e0296e58afe1"); +const LLUUID ANIM_AGENT_EXPRESS_SAD			= LLUUID("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); +const LLUUID ANIM_AGENT_EXPRESS_SHRUG		= LLUUID("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); +const LLUUID ANIM_AGENT_EXPRESS_SMILE		= LLUUID("b7c7c833-e3d3-c4e3-9fc0-131237446312"); +const LLUUID ANIM_AGENT_EXPRESS_SURPRISE	= LLUUID("728646d9-cc79-08b2-32d6-937f0a835c24"); +const LLUUID ANIM_AGENT_EXPRESS_TONGUE_OUT	= LLUUID("835965c6-7f2f-bda2-5deb-2478737f91bf"); +const LLUUID ANIM_AGENT_EXPRESS_TOOTHSMILE	= LLUUID("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); +const LLUUID ANIM_AGENT_EXPRESS_WINK		= LLUUID("da020525-4d94-59d6-23d7-81fdebf33148"); +const LLUUID ANIM_AGENT_EXPRESS_WORRY		= LLUUID("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); +const LLUUID ANIM_AGENT_FALLDOWN			= LLUUID("666307d9-a860-572d-6fd4-c3ab8865c094"); +const LLUUID ANIM_AGENT_FEMALE_RUN_NEW		= LLUUID("85995026-eade-5d78-d364-94a64512cb66"); +const LLUUID ANIM_AGENT_FEMALE_WALK			= LLUUID("f5fc7433-043d-e819-8298-f519a119b688"); +const LLUUID ANIM_AGENT_FEMALE_WALK_NEW		= LLUUID("d60c41d2-7c24-7074-d3fa-6101cea22a51"); +const LLUUID ANIM_AGENT_FINGER_WAG			= LLUUID("c1bc7f36-3ba0-d844-f93c-93be945d644f"); +const LLUUID ANIM_AGENT_FIST_PUMP			= LLUUID("7db00ccd-f380-f3ee-439d-61968ec69c8a"); +const LLUUID ANIM_AGENT_FLY					= LLUUID("aec4610c-757f-bc4e-c092-c6e9caf18daf"); +const LLUUID ANIM_AGENT_FLYSLOW				= LLUUID("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); +const LLUUID ANIM_AGENT_HELLO				= LLUUID("9b29cd61-c45b-5689-ded2-91756b8d76a9"); +const LLUUID ANIM_AGENT_HOLD_BAZOOKA_R		= LLUUID("ef62d355-c815-4816-2474-b1acc21094a6"); +const LLUUID ANIM_AGENT_HOLD_BOW_L			= LLUUID("8b102617-bcba-037b-86c1-b76219f90c88"); +const LLUUID ANIM_AGENT_HOLD_HANDGUN_R		= LLUUID("efdc1727-8b8a-c800-4077-975fc27ee2f2"); +const LLUUID ANIM_AGENT_HOLD_RIFLE_R		= LLUUID("3d94bad0-c55b-7dcc-8763-033c59405d33"); +const LLUUID ANIM_AGENT_HOLD_THROW_R		= LLUUID("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); +const LLUUID ANIM_AGENT_HOVER				= LLUUID("4ae8016b-31b9-03bb-c401-b1ea941db41d"); +const LLUUID ANIM_AGENT_HOVER_DOWN			= LLUUID("20f063ea-8306-2562-0b07-5c853b37b31e"); +const LLUUID ANIM_AGENT_HOVER_UP			= LLUUID("62c5de58-cb33-5743-3d07-9e4cd4352864"); +const LLUUID ANIM_AGENT_IMPATIENT			= LLUUID("5ea3991f-c293-392e-6860-91dfa01278a3"); +const LLUUID ANIM_AGENT_JUMP				= LLUUID("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); +const LLUUID ANIM_AGENT_JUMP_FOR_JOY		= LLUUID("709ea28e-1573-c023-8bf8-520c8bc637fa"); +const LLUUID ANIM_AGENT_KISS_MY_BUTT		= LLUUID("19999406-3a3a-d58c-a2ac-d72e555dcf51"); +const LLUUID ANIM_AGENT_LAND				= LLUUID("7a17b059-12b2-41b1-570a-186368b6aa6f"); +const LLUUID ANIM_AGENT_LAUGH_SHORT			= LLUUID("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); +const LLUUID ANIM_AGENT_MEDIUM_LAND			= LLUUID("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); +const LLUUID ANIM_AGENT_MOTORCYCLE_SIT		= LLUUID("08464f78-3a8e-2944-cba5-0c94aff3af29"); +const LLUUID ANIM_AGENT_MUSCLE_BEACH		= LLUUID("315c3a41-a5f3-0ba4-27da-f893f769e69b"); +const LLUUID ANIM_AGENT_NO					= LLUUID("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); +const LLUUID ANIM_AGENT_NO_UNHAPPY			= LLUUID("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); +const LLUUID ANIM_AGENT_NYAH_NYAH			= LLUUID("f061723d-0a18-754f-66ee-29a44795a32f"); +const LLUUID ANIM_AGENT_ONETWO_PUNCH		= LLUUID("eefc79be-daae-a239-8c04-890f5d23654a"); +const LLUUID ANIM_AGENT_PEACE				= LLUUID("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); +const LLUUID ANIM_AGENT_POINT_ME			= LLUUID("17c024cc-eef2-f6a0-3527-9869876d7752"); +const LLUUID ANIM_AGENT_POINT_YOU			= LLUUID("ec952cca-61ef-aa3b-2789-4d1344f016de"); +const LLUUID ANIM_AGENT_PRE_JUMP			= LLUUID("7a4e87fe-de39-6fcb-6223-024b00893244"); +const LLUUID ANIM_AGENT_PUNCH_LEFT			= LLUUID("f3300ad9-3462-1d07-2044-0fef80062da0"); +const LLUUID ANIM_AGENT_PUNCH_RIGHT			= LLUUID("c8e42d32-7310-6906-c903-cab5d4a34656"); +const LLUUID ANIM_AGENT_REPULSED			= LLUUID("36f81a92-f076-5893-dc4b-7c3795e487cf"); +const LLUUID ANIM_AGENT_ROUNDHOUSE_KICK		= LLUUID("49aea43b-5ac3-8a44-b595-96100af0beda"); +const LLUUID ANIM_AGENT_RPS_COUNTDOWN		= LLUUID("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); +const LLUUID ANIM_AGENT_RPS_PAPER			= LLUUID("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); +const LLUUID ANIM_AGENT_RPS_ROCK			= LLUUID("42dd95d5-0bc6-6392-f650-777304946c0f"); +const LLUUID ANIM_AGENT_RPS_SCISSORS		= LLUUID("16803a9f-5140-e042-4d7b-d28ba247c325"); +const LLUUID ANIM_AGENT_RUN					= LLUUID("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); +const LLUUID ANIM_AGENT_RUN_NEW				= LLUUID("1ab1b236-cd08-21e6-0cbc-0d923fc6eca2"); +const LLUUID ANIM_AGENT_SAD					= LLUUID("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); +const LLUUID ANIM_AGENT_SALUTE				= LLUUID("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); +const LLUUID ANIM_AGENT_SHOOT_BOW_L			= LLUUID("e04d450d-fdb5-0432-fd68-818aaf5935f8"); +const LLUUID ANIM_AGENT_SHOUT				= LLUUID("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); +const LLUUID ANIM_AGENT_SHRUG				= LLUUID("70ea714f-3a97-d742-1b01-590a8fcd1db5"); +const LLUUID ANIM_AGENT_SIT					= LLUUID("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); +const LLUUID ANIM_AGENT_SIT_FEMALE			= LLUUID("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); +const LLUUID ANIM_AGENT_SIT_GENERIC			= LLUUID("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); +const LLUUID ANIM_AGENT_SIT_GROUND 			= LLUUID("1c7600d6-661f-b87b-efe2-d7421eb93c86"); +const LLUUID ANIM_AGENT_SIT_GROUND_CONSTRAINED	= LLUUID("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); +const LLUUID ANIM_AGENT_SIT_TO_STAND		= LLUUID("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); +const LLUUID ANIM_AGENT_SLEEP				= LLUUID("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); +const LLUUID ANIM_AGENT_SMOKE_IDLE			= LLUUID("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); +const LLUUID ANIM_AGENT_SMOKE_INHALE		= LLUUID("6802d553-49da-0778-9f85-1599a2266526"); +const LLUUID ANIM_AGENT_SMOKE_THROW_DOWN	= LLUUID("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); +const LLUUID ANIM_AGENT_SNAPSHOT			= LLUUID("eae8905b-271a-99e2-4c0e-31106afd100c"); +const LLUUID ANIM_AGENT_STAND				= LLUUID("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); +const LLUUID ANIM_AGENT_STANDUP				= LLUUID("3da1d753-028a-5446-24f3-9c9b856d9422"); +const LLUUID ANIM_AGENT_STAND_1				= LLUUID("15468e00-3400-bb66-cecc-646d7c14458e"); +const LLUUID ANIM_AGENT_STAND_2				= LLUUID("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); +const LLUUID ANIM_AGENT_STAND_3				= LLUUID("42b46214-4b44-79ae-deb8-0df61424ff4b"); +const LLUUID ANIM_AGENT_STAND_4				= LLUUID("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); +const LLUUID ANIM_AGENT_STRETCH				= LLUUID("80700431-74ec-a008-14f8-77575e73693f"); +const LLUUID ANIM_AGENT_STRIDE				= LLUUID("1cb562b0-ba21-2202-efb3-30f82cdf9595"); +const LLUUID ANIM_AGENT_SURF				= LLUUID("41426836-7437-7e89-025d-0aa4d10f1d69"); +const LLUUID ANIM_AGENT_SURPRISE			= LLUUID("313b9881-4302-73c0-c7d0-0e7a36b6c224"); +const LLUUID ANIM_AGENT_SWORD_STRIKE		= LLUUID("85428680-6bf9-3e64-b489-6f81087c24bd"); +const LLUUID ANIM_AGENT_TALK				= LLUUID("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); +const LLUUID ANIM_AGENT_TANTRUM				= LLUUID("11000694-3f41-adc2-606b-eee1d66f3724"); +const LLUUID ANIM_AGENT_THROW_R				= LLUUID("aa134404-7dac-7aca-2cba-435f9db875ca"); +const LLUUID ANIM_AGENT_TRYON_SHIRT			= LLUUID("83ff59fe-2346-f236-9009-4e3608af64c1"); +const LLUUID ANIM_AGENT_TURNLEFT			= LLUUID("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); +const LLUUID ANIM_AGENT_TURNRIGHT			= LLUUID("2d6daa51-3192-6794-8e2e-a15f8338ec30"); +const LLUUID ANIM_AGENT_TYPE				= LLUUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); +const LLUUID ANIM_AGENT_WALK				= LLUUID("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); +const LLUUID ANIM_AGENT_WALK_NEW			= LLUUID("33339176-7ddc-9397-94a4-bf3403cbc8f5"); +const LLUUID ANIM_AGENT_WHISPER				= LLUUID("7693f268-06c7-ea71-fa21-2b30d6533f8f"); +const LLUUID ANIM_AGENT_WHISTLE				= LLUUID("b1ed7982-c68e-a982-7561-52a88a5298c0"); +const LLUUID ANIM_AGENT_WINK				= LLUUID("869ecdad-a44b-671e-3266-56aef2e3ac2e"); +const LLUUID ANIM_AGENT_WINK_HOLLYWOOD		= LLUUID("c0c4030f-c02b-49de-24ba-2331f43fe41c"); +const LLUUID ANIM_AGENT_WORRY				= LLUUID("9f496bd2-589a-709f-16cc-69bf7df1d36c"); +const LLUUID ANIM_AGENT_YES					= LLUUID("15dd911d-be82-2856-26db-27659b142875"); +const LLUUID ANIM_AGENT_YES_HAPPY			= LLUUID("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); +const LLUUID ANIM_AGENT_YOGA_FLOAT			= LLUUID("42ecd00b-9947-a97c-400a-bbc9174c7aeb"); +  LLUUID AGENT_WALK_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_CROUCHWALK, ANIM_AGENT_TURNLEFT, ANIM_AGENT_TURNRIGHT};  S32 NUM_AGENT_WALK_ANIMS = LL_ARRAY_SIZE(AGENT_WALK_ANIMS); @@ -116,7 +256,9 @@ LLAnimationLibrary::LLAnimationLibrary() :  	mAnimMap[ANIM_AGENT_EXPRESS_WINK]=			mAnimStringTable.addString("express_wink_emote");  	mAnimMap[ANIM_AGENT_EXPRESS_WORRY]=			mAnimStringTable.addString("express_worry_emote");  	mAnimMap[ANIM_AGENT_FALLDOWN]=				mAnimStringTable.addString("falldown"); +	mAnimMap[ANIM_AGENT_FEMALE_RUN_NEW]=		mAnimStringTable.addString("female_run_new");  	mAnimMap[ANIM_AGENT_FEMALE_WALK]=			mAnimStringTable.addString("female_walk"); +	mAnimMap[ANIM_AGENT_FEMALE_WALK_NEW]=		mAnimStringTable.addString("female_walk_new");  	mAnimMap[ANIM_AGENT_FINGER_WAG]=			mAnimStringTable.addString("angry_fingerwag");  	mAnimMap[ANIM_AGENT_FIST_PUMP]=				mAnimStringTable.addString("fist_pump");  	mAnimMap[ANIM_AGENT_FLY]=					mAnimStringTable.addString("fly"); @@ -156,6 +298,7 @@ LLAnimationLibrary::LLAnimationLibrary() :  	mAnimMap[ANIM_AGENT_RPS_ROCK]=				mAnimStringTable.addString("rps_rock");  	mAnimMap[ANIM_AGENT_RPS_SCISSORS]=			mAnimStringTable.addString("rps_scissors");  	mAnimMap[ANIM_AGENT_RUN]=					mAnimStringTable.addString("run"); +	mAnimMap[ANIM_AGENT_RUN_NEW]=				mAnimStringTable.addString("run_new");  	mAnimMap[ANIM_AGENT_SAD]=					mAnimStringTable.addString("express_sad");  	mAnimMap[ANIM_AGENT_SALUTE]=				mAnimStringTable.addString("salute");  	mAnimMap[ANIM_AGENT_SHOOT_BOW_L]=			mAnimStringTable.addString("shoot_l_bow"); @@ -191,6 +334,7 @@ LLAnimationLibrary::LLAnimationLibrary() :  	mAnimMap[ANIM_AGENT_TURNRIGHT]=				mAnimStringTable.addString("turnright");  	mAnimMap[ANIM_AGENT_TYPE]=					mAnimStringTable.addString("type");  	mAnimMap[ANIM_AGENT_WALK]=					mAnimStringTable.addString("walk"); +	mAnimMap[ANIM_AGENT_WALK_NEW]=				mAnimStringTable.addString("walk_new");  	mAnimMap[ANIM_AGENT_WHISPER]=				mAnimStringTable.addString("whisper");  	mAnimMap[ANIM_AGENT_WHISTLE]=				mAnimStringTable.addString("whistle");  	mAnimMap[ANIM_AGENT_WINK]=					mAnimStringTable.addString("express_wink"); @@ -260,6 +404,23 @@ LLUUID LLAnimationLibrary::stringToAnimState( const std::string& name, BOOL allo  	return id;  } +//----------------------------------------------------------------------------- +// Associate an anim state with a name +//----------------------------------------------------------------------------- +void LLAnimationLibrary::animStateSetString( const LLUUID& state, const std::string& name) +{ +	mAnimMap[state] = mAnimStringTable.addString(name); +} + +std::string LLAnimationLibrary::animationName( const LLUUID& id ) const +{ +	const char *cptr = gAnimLibrary.animStateToString(id);  +	if (cptr) +		return std::string(cptr); +	else +		return std::string("[") + id.asString() + std::string("]"); +} +  // Animation states that the user can trigger as part of a gesture  // See struct LLAnimStateEntry in header for label location information  const LLAnimStateEntry gUserAnimStates[] = { @@ -337,6 +498,5 @@ const LLAnimStateEntry gUserAnimStates[] = {  const S32 gUserAnimStatesCount = LL_ARRAY_SIZE(gUserAnimStates); -  // End diff --git a/indra/llcharacter/llanimationstates.h b/indra/llcharacter/llanimationstates.h index 56b24d5215..59d3a7d789 100644 --- a/indra/llcharacter/llanimationstates.h +++ b/indra/llcharacter/llanimationstates.h @@ -49,142 +49,145 @@  //-----------------------------------------------------------------------------  const S32 MAX_CONCURRENT_ANIMS = 16; - -const LLUUID ANIM_AGENT_AFRAID				= LLUUID("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); -const LLUUID ANIM_AGENT_AIM_BAZOOKA_R		= LLUUID("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); -const LLUUID ANIM_AGENT_AIM_BOW_L			= LLUUID("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); -const LLUUID ANIM_AGENT_AIM_HANDGUN_R		= LLUUID("3147d815-6338-b932-f011-16b56d9ac18b"); -const LLUUID ANIM_AGENT_AIM_RIFLE_R			= LLUUID("ea633413-8006-180a-c3ba-96dd1d756720"); -const LLUUID ANIM_AGENT_ANGRY				= LLUUID("5747a48e-073e-c331-f6f3-7c2149613d3e"); -const LLUUID ANIM_AGENT_AWAY				= LLUUID("fd037134-85d4-f241-72c6-4f42164fedee"); -const LLUUID ANIM_AGENT_BACKFLIP			= LLUUID("c4ca6188-9127-4f31-0158-23c4e2f93304"); -const LLUUID ANIM_AGENT_BELLY_LAUGH			= LLUUID("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); -const LLUUID ANIM_AGENT_BLOW_KISS			= LLUUID("db84829b-462c-ee83-1e27-9bbee66bd624"); -const LLUUID ANIM_AGENT_BORED				= LLUUID("b906c4ba-703b-1940-32a3-0c7f7d791510"); -const LLUUID ANIM_AGENT_BOW					= LLUUID("82e99230-c906-1403-4d9c-3889dd98daba"); -const LLUUID ANIM_AGENT_BRUSH				= LLUUID("349a3801-54f9-bf2c-3bd0-1ac89772af01"); -const LLUUID ANIM_AGENT_BUSY				= LLUUID("efcf670c-2d18-8128-973a-034ebc806b67"); -const LLUUID ANIM_AGENT_CLAP				= LLUUID("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); -const LLUUID ANIM_AGENT_COURTBOW			= LLUUID("9ba1c942-08be-e43a-fb29-16ad440efc50"); -const LLUUID ANIM_AGENT_CROUCH				= LLUUID("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); -const LLUUID ANIM_AGENT_CROUCHWALK			= LLUUID("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); -const LLUUID ANIM_AGENT_CRY					= LLUUID("92624d3e-1068-f1aa-a5ec-8244585193ed"); -const LLUUID ANIM_AGENT_CUSTOMIZE	 		= LLUUID("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); -const LLUUID ANIM_AGENT_CUSTOMIZE_DONE		= LLUUID("6883a61a-b27b-5914-a61e-dda118a9ee2c"); -const LLUUID ANIM_AGENT_DANCE1				= LLUUID("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); -const LLUUID ANIM_AGENT_DANCE2				= LLUUID("928cae18-e31d-76fd-9cc9-2f55160ff818"); -const LLUUID ANIM_AGENT_DANCE3				= LLUUID("30047778-10ea-1af7-6881-4db7a3a5a114"); -const LLUUID ANIM_AGENT_DANCE4				= LLUUID("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); -const LLUUID ANIM_AGENT_DANCE5				= LLUUID("4bd69a1d-1114-a0b4-625f-84e0a5237155"); -const LLUUID ANIM_AGENT_DANCE6				= LLUUID("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); -const LLUUID ANIM_AGENT_DANCE7				= LLUUID("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); -const LLUUID ANIM_AGENT_DANCE8				= LLUUID("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); -const LLUUID ANIM_AGENT_DEAD				= LLUUID("57abaae6-1d17-7b1b-5f98-6d11a6411276"); -const LLUUID ANIM_AGENT_DRINK				= LLUUID("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); -const LLUUID ANIM_AGENT_EMBARRASSED			= LLUUID("514af488-9051-044a-b3fc-d4dbf76377c6"); -const LLUUID ANIM_AGENT_EXPRESS_AFRAID		= LLUUID("aa2df84d-cf8f-7218-527b-424a52de766e"); -const LLUUID ANIM_AGENT_EXPRESS_ANGER		= LLUUID("1a03b575-9634-b62a-5767-3a679e81f4de"); -const LLUUID ANIM_AGENT_EXPRESS_BORED		= LLUUID("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); -const LLUUID ANIM_AGENT_EXPRESS_CRY			= LLUUID("d535471b-85bf-3b4d-a542-93bea4f59d33"); -const LLUUID ANIM_AGENT_EXPRESS_DISDAIN		= LLUUID("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); -const LLUUID ANIM_AGENT_EXPRESS_EMBARRASSED = LLUUID("0b8c8211-d78c-33e8-fa28-c51a9594e424"); -const LLUUID ANIM_AGENT_EXPRESS_FROWN		= LLUUID("fee3df48-fa3d-1015-1e26-a205810e3001"); -const LLUUID ANIM_AGENT_EXPRESS_KISS		= LLUUID("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); -const LLUUID ANIM_AGENT_EXPRESS_LAUGH		= LLUUID("62570842-0950-96f8-341c-809e65110823"); -const LLUUID ANIM_AGENT_EXPRESS_OPEN_MOUTH	= LLUUID("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); -const LLUUID ANIM_AGENT_EXPRESS_REPULSED	= LLUUID("f76cda94-41d4-a229-2872-e0296e58afe1"); -const LLUUID ANIM_AGENT_EXPRESS_SAD			= LLUUID("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); -const LLUUID ANIM_AGENT_EXPRESS_SHRUG		= LLUUID("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); -const LLUUID ANIM_AGENT_EXPRESS_SMILE		= LLUUID("b7c7c833-e3d3-c4e3-9fc0-131237446312"); -const LLUUID ANIM_AGENT_EXPRESS_SURPRISE	= LLUUID("728646d9-cc79-08b2-32d6-937f0a835c24"); -const LLUUID ANIM_AGENT_EXPRESS_TONGUE_OUT	= LLUUID("835965c6-7f2f-bda2-5deb-2478737f91bf"); -const LLUUID ANIM_AGENT_EXPRESS_TOOTHSMILE	= LLUUID("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); -const LLUUID ANIM_AGENT_EXPRESS_WINK		= LLUUID("da020525-4d94-59d6-23d7-81fdebf33148"); -const LLUUID ANIM_AGENT_EXPRESS_WORRY		= LLUUID("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); -const LLUUID ANIM_AGENT_FALLDOWN			= LLUUID("666307d9-a860-572d-6fd4-c3ab8865c094"); -const LLUUID ANIM_AGENT_FEMALE_WALK			= LLUUID("f5fc7433-043d-e819-8298-f519a119b688"); -const LLUUID ANIM_AGENT_FINGER_WAG			= LLUUID("c1bc7f36-3ba0-d844-f93c-93be945d644f"); -const LLUUID ANIM_AGENT_FIST_PUMP			= LLUUID("7db00ccd-f380-f3ee-439d-61968ec69c8a"); -const LLUUID ANIM_AGENT_FLY					= LLUUID("aec4610c-757f-bc4e-c092-c6e9caf18daf"); -const LLUUID ANIM_AGENT_FLYSLOW				= LLUUID("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); -const LLUUID ANIM_AGENT_HELLO				= LLUUID("9b29cd61-c45b-5689-ded2-91756b8d76a9"); -const LLUUID ANIM_AGENT_HOLD_BAZOOKA_R		= LLUUID("ef62d355-c815-4816-2474-b1acc21094a6"); -const LLUUID ANIM_AGENT_HOLD_BOW_L			= LLUUID("8b102617-bcba-037b-86c1-b76219f90c88"); -const LLUUID ANIM_AGENT_HOLD_HANDGUN_R		= LLUUID("efdc1727-8b8a-c800-4077-975fc27ee2f2"); -const LLUUID ANIM_AGENT_HOLD_RIFLE_R		= LLUUID("3d94bad0-c55b-7dcc-8763-033c59405d33"); -const LLUUID ANIM_AGENT_HOLD_THROW_R		= LLUUID("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); -const LLUUID ANIM_AGENT_HOVER				= LLUUID("4ae8016b-31b9-03bb-c401-b1ea941db41d"); -const LLUUID ANIM_AGENT_HOVER_DOWN			= LLUUID("20f063ea-8306-2562-0b07-5c853b37b31e"); -const LLUUID ANIM_AGENT_HOVER_UP			= LLUUID("62c5de58-cb33-5743-3d07-9e4cd4352864"); -const LLUUID ANIM_AGENT_IMPATIENT			= LLUUID("5ea3991f-c293-392e-6860-91dfa01278a3"); -const LLUUID ANIM_AGENT_JUMP				= LLUUID("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); -const LLUUID ANIM_AGENT_JUMP_FOR_JOY		= LLUUID("709ea28e-1573-c023-8bf8-520c8bc637fa"); -const LLUUID ANIM_AGENT_KISS_MY_BUTT		= LLUUID("19999406-3a3a-d58c-a2ac-d72e555dcf51"); -const LLUUID ANIM_AGENT_LAND				= LLUUID("7a17b059-12b2-41b1-570a-186368b6aa6f"); -const LLUUID ANIM_AGENT_LAUGH_SHORT			= LLUUID("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); -const LLUUID ANIM_AGENT_MEDIUM_LAND			= LLUUID("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); -const LLUUID ANIM_AGENT_MOTORCYCLE_SIT		= LLUUID("08464f78-3a8e-2944-cba5-0c94aff3af29"); -const LLUUID ANIM_AGENT_MUSCLE_BEACH		= LLUUID("315c3a41-a5f3-0ba4-27da-f893f769e69b"); -const LLUUID ANIM_AGENT_NO					= LLUUID("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); -const LLUUID ANIM_AGENT_NO_UNHAPPY			= LLUUID("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); -const LLUUID ANIM_AGENT_NYAH_NYAH			= LLUUID("f061723d-0a18-754f-66ee-29a44795a32f"); -const LLUUID ANIM_AGENT_ONETWO_PUNCH		= LLUUID("eefc79be-daae-a239-8c04-890f5d23654a"); -const LLUUID ANIM_AGENT_PEACE				= LLUUID("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); -const LLUUID ANIM_AGENT_POINT_ME			= LLUUID("17c024cc-eef2-f6a0-3527-9869876d7752"); -const LLUUID ANIM_AGENT_POINT_YOU			= LLUUID("ec952cca-61ef-aa3b-2789-4d1344f016de"); -const LLUUID ANIM_AGENT_PRE_JUMP			= LLUUID("7a4e87fe-de39-6fcb-6223-024b00893244"); -const LLUUID ANIM_AGENT_PUNCH_LEFT			= LLUUID("f3300ad9-3462-1d07-2044-0fef80062da0"); -const LLUUID ANIM_AGENT_PUNCH_RIGHT			= LLUUID("c8e42d32-7310-6906-c903-cab5d4a34656"); -const LLUUID ANIM_AGENT_REPULSED			= LLUUID("36f81a92-f076-5893-dc4b-7c3795e487cf"); -const LLUUID ANIM_AGENT_ROUNDHOUSE_KICK		= LLUUID("49aea43b-5ac3-8a44-b595-96100af0beda"); -const LLUUID ANIM_AGENT_RPS_COUNTDOWN		= LLUUID("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); -const LLUUID ANIM_AGENT_RPS_PAPER			= LLUUID("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); -const LLUUID ANIM_AGENT_RPS_ROCK			= LLUUID("42dd95d5-0bc6-6392-f650-777304946c0f"); -const LLUUID ANIM_AGENT_RPS_SCISSORS		= LLUUID("16803a9f-5140-e042-4d7b-d28ba247c325"); -const LLUUID ANIM_AGENT_RUN					= LLUUID("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); -const LLUUID ANIM_AGENT_SAD					= LLUUID("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); -const LLUUID ANIM_AGENT_SALUTE				= LLUUID("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); -const LLUUID ANIM_AGENT_SHOOT_BOW_L			= LLUUID("e04d450d-fdb5-0432-fd68-818aaf5935f8"); -const LLUUID ANIM_AGENT_SHOUT				= LLUUID("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); -const LLUUID ANIM_AGENT_SHRUG				= LLUUID("70ea714f-3a97-d742-1b01-590a8fcd1db5"); -const LLUUID ANIM_AGENT_SIT					= LLUUID("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); -const LLUUID ANIM_AGENT_SIT_FEMALE			= LLUUID("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); -const LLUUID ANIM_AGENT_SIT_GENERIC			= LLUUID("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); -const LLUUID ANIM_AGENT_SIT_GROUND 			= LLUUID("1c7600d6-661f-b87b-efe2-d7421eb93c86"); -const LLUUID ANIM_AGENT_SIT_GROUND_CONSTRAINED	= LLUUID("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); -const LLUUID ANIM_AGENT_SIT_TO_STAND		= LLUUID("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); -const LLUUID ANIM_AGENT_SLEEP				= LLUUID("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); -const LLUUID ANIM_AGENT_SMOKE_IDLE			= LLUUID("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); -const LLUUID ANIM_AGENT_SMOKE_INHALE		= LLUUID("6802d553-49da-0778-9f85-1599a2266526"); -const LLUUID ANIM_AGENT_SMOKE_THROW_DOWN	= LLUUID("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); -const LLUUID ANIM_AGENT_SNAPSHOT			= LLUUID("eae8905b-271a-99e2-4c0e-31106afd100c"); -const LLUUID ANIM_AGENT_STAND				= LLUUID("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); -const LLUUID ANIM_AGENT_STANDUP				= LLUUID("3da1d753-028a-5446-24f3-9c9b856d9422"); -const LLUUID ANIM_AGENT_STAND_1				= LLUUID("15468e00-3400-bb66-cecc-646d7c14458e"); -const LLUUID ANIM_AGENT_STAND_2				= LLUUID("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); -const LLUUID ANIM_AGENT_STAND_3				= LLUUID("42b46214-4b44-79ae-deb8-0df61424ff4b"); -const LLUUID ANIM_AGENT_STAND_4				= LLUUID("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); -const LLUUID ANIM_AGENT_STRETCH				= LLUUID("80700431-74ec-a008-14f8-77575e73693f"); -const LLUUID ANIM_AGENT_STRIDE				= LLUUID("1cb562b0-ba21-2202-efb3-30f82cdf9595"); -const LLUUID ANIM_AGENT_SURF				= LLUUID("41426836-7437-7e89-025d-0aa4d10f1d69"); -const LLUUID ANIM_AGENT_SURPRISE			= LLUUID("313b9881-4302-73c0-c7d0-0e7a36b6c224"); -const LLUUID ANIM_AGENT_SWORD_STRIKE		= LLUUID("85428680-6bf9-3e64-b489-6f81087c24bd"); -const LLUUID ANIM_AGENT_TALK				= LLUUID("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); -const LLUUID ANIM_AGENT_TANTRUM				= LLUUID("11000694-3f41-adc2-606b-eee1d66f3724"); -const LLUUID ANIM_AGENT_THROW_R				= LLUUID("aa134404-7dac-7aca-2cba-435f9db875ca"); -const LLUUID ANIM_AGENT_TRYON_SHIRT			= LLUUID("83ff59fe-2346-f236-9009-4e3608af64c1"); -const LLUUID ANIM_AGENT_TURNLEFT			= LLUUID("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); -const LLUUID ANIM_AGENT_TURNRIGHT			= LLUUID("2d6daa51-3192-6794-8e2e-a15f8338ec30"); -const LLUUID ANIM_AGENT_TYPE				= LLUUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); -const LLUUID ANIM_AGENT_WALK				= LLUUID("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); -const LLUUID ANIM_AGENT_WHISPER				= LLUUID("7693f268-06c7-ea71-fa21-2b30d6533f8f"); -const LLUUID ANIM_AGENT_WHISTLE				= LLUUID("b1ed7982-c68e-a982-7561-52a88a5298c0"); -const LLUUID ANIM_AGENT_WINK				= LLUUID("869ecdad-a44b-671e-3266-56aef2e3ac2e"); -const LLUUID ANIM_AGENT_WINK_HOLLYWOOD		= LLUUID("c0c4030f-c02b-49de-24ba-2331f43fe41c"); -const LLUUID ANIM_AGENT_WORRY				= LLUUID("9f496bd2-589a-709f-16cc-69bf7df1d36c"); -const LLUUID ANIM_AGENT_YES					= LLUUID("15dd911d-be82-2856-26db-27659b142875"); -const LLUUID ANIM_AGENT_YES_HAPPY			= LLUUID("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); -const LLUUID ANIM_AGENT_YOGA_FLOAT			= LLUUID("42ecd00b-9947-a97c-400a-bbc9174c7aeb"); +extern const LLUUID ANIM_AGENT_AFRAID; +extern const LLUUID ANIM_AGENT_AIM_BAZOOKA_R; +extern const LLUUID ANIM_AGENT_AIM_BOW_L; +extern const LLUUID ANIM_AGENT_AIM_HANDGUN_R; +extern const LLUUID ANIM_AGENT_AIM_RIFLE_R; +extern const LLUUID ANIM_AGENT_ANGRY; +extern const LLUUID ANIM_AGENT_AWAY; +extern const LLUUID ANIM_AGENT_BACKFLIP; +extern const LLUUID ANIM_AGENT_BELLY_LAUGH; +extern const LLUUID ANIM_AGENT_BLOW_KISS; +extern const LLUUID ANIM_AGENT_BORED; +extern const LLUUID ANIM_AGENT_BOW; +extern const LLUUID ANIM_AGENT_BRUSH; +extern const LLUUID ANIM_AGENT_BUSY; +extern const LLUUID ANIM_AGENT_CLAP; +extern const LLUUID ANIM_AGENT_COURTBOW; +extern const LLUUID ANIM_AGENT_CROUCH; +extern const LLUUID ANIM_AGENT_CROUCHWALK; +extern const LLUUID ANIM_AGENT_CRY; +extern const LLUUID ANIM_AGENT_CUSTOMIZE; +extern const LLUUID ANIM_AGENT_CUSTOMIZE_DONE; +extern const LLUUID ANIM_AGENT_DANCE1; +extern const LLUUID ANIM_AGENT_DANCE2; +extern const LLUUID ANIM_AGENT_DANCE3; +extern const LLUUID ANIM_AGENT_DANCE4; +extern const LLUUID ANIM_AGENT_DANCE5; +extern const LLUUID ANIM_AGENT_DANCE6; +extern const LLUUID ANIM_AGENT_DANCE7; +extern const LLUUID ANIM_AGENT_DANCE8; +extern const LLUUID ANIM_AGENT_DEAD; +extern const LLUUID ANIM_AGENT_DRINK; +extern const LLUUID ANIM_AGENT_EMBARRASSED; +extern const LLUUID ANIM_AGENT_EXPRESS_AFRAID; +extern const LLUUID ANIM_AGENT_EXPRESS_ANGER; +extern const LLUUID ANIM_AGENT_EXPRESS_BORED; +extern const LLUUID ANIM_AGENT_EXPRESS_CRY; +extern const LLUUID ANIM_AGENT_EXPRESS_DISDAIN; +extern const LLUUID ANIM_AGENT_EXPRESS_EMBARRASSED; +extern const LLUUID ANIM_AGENT_EXPRESS_FROWN; +extern const LLUUID ANIM_AGENT_EXPRESS_KISS; +extern const LLUUID ANIM_AGENT_EXPRESS_LAUGH; +extern const LLUUID ANIM_AGENT_EXPRESS_OPEN_MOUTH; +extern const LLUUID ANIM_AGENT_EXPRESS_REPULSED; +extern const LLUUID ANIM_AGENT_EXPRESS_SAD; +extern const LLUUID ANIM_AGENT_EXPRESS_SHRUG; +extern const LLUUID ANIM_AGENT_EXPRESS_SMILE; +extern const LLUUID ANIM_AGENT_EXPRESS_SURPRISE; +extern const LLUUID ANIM_AGENT_EXPRESS_TONGUE_OUT; +extern const LLUUID ANIM_AGENT_EXPRESS_TOOTHSMILE; +extern const LLUUID ANIM_AGENT_EXPRESS_WINK; +extern const LLUUID ANIM_AGENT_EXPRESS_WORRY; +extern const LLUUID ANIM_AGENT_FALLDOWN; +extern const LLUUID ANIM_AGENT_FEMALE_RUN_NEW; +extern const LLUUID ANIM_AGENT_FEMALE_WALK; +extern const LLUUID ANIM_AGENT_FEMALE_WALK_NEW; +extern const LLUUID ANIM_AGENT_FINGER_WAG; +extern const LLUUID ANIM_AGENT_FIST_PUMP; +extern const LLUUID ANIM_AGENT_FLY; +extern const LLUUID ANIM_AGENT_FLYSLOW; +extern const LLUUID ANIM_AGENT_HELLO; +extern const LLUUID ANIM_AGENT_HOLD_BAZOOKA_R; +extern const LLUUID ANIM_AGENT_HOLD_BOW_L; +extern const LLUUID ANIM_AGENT_HOLD_HANDGUN_R; +extern const LLUUID ANIM_AGENT_HOLD_RIFLE_R; +extern const LLUUID ANIM_AGENT_HOLD_THROW_R; +extern const LLUUID ANIM_AGENT_HOVER; +extern const LLUUID ANIM_AGENT_HOVER_DOWN; +extern const LLUUID ANIM_AGENT_HOVER_UP; +extern const LLUUID ANIM_AGENT_IMPATIENT; +extern const LLUUID ANIM_AGENT_JUMP; +extern const LLUUID ANIM_AGENT_JUMP_FOR_JOY; +extern const LLUUID ANIM_AGENT_KISS_MY_BUTT; +extern const LLUUID ANIM_AGENT_LAND; +extern const LLUUID ANIM_AGENT_LAUGH_SHORT; +extern const LLUUID ANIM_AGENT_MEDIUM_LAND; +extern const LLUUID ANIM_AGENT_MOTORCYCLE_SIT; +extern const LLUUID ANIM_AGENT_MUSCLE_BEACH; +extern const LLUUID ANIM_AGENT_NO; +extern const LLUUID ANIM_AGENT_NO_UNHAPPY; +extern const LLUUID ANIM_AGENT_NYAH_NYAH; +extern const LLUUID ANIM_AGENT_ONETWO_PUNCH; +extern const LLUUID ANIM_AGENT_PEACE; +extern const LLUUID ANIM_AGENT_POINT_ME; +extern const LLUUID ANIM_AGENT_POINT_YOU; +extern const LLUUID ANIM_AGENT_PRE_JUMP; +extern const LLUUID ANIM_AGENT_PUNCH_LEFT; +extern const LLUUID ANIM_AGENT_PUNCH_RIGHT; +extern const LLUUID ANIM_AGENT_REPULSED; +extern const LLUUID ANIM_AGENT_ROUNDHOUSE_KICK; +extern const LLUUID ANIM_AGENT_RPS_COUNTDOWN; +extern const LLUUID ANIM_AGENT_RPS_PAPER; +extern const LLUUID ANIM_AGENT_RPS_ROCK; +extern const LLUUID ANIM_AGENT_RPS_SCISSORS; +extern const LLUUID ANIM_AGENT_RUN; +extern const LLUUID ANIM_AGENT_RUN_NEW; +extern const LLUUID ANIM_AGENT_SAD; +extern const LLUUID ANIM_AGENT_SALUTE; +extern const LLUUID ANIM_AGENT_SHOOT_BOW_L; +extern const LLUUID ANIM_AGENT_SHOUT; +extern const LLUUID ANIM_AGENT_SHRUG; +extern const LLUUID ANIM_AGENT_SIT; +extern const LLUUID ANIM_AGENT_SIT_FEMALE; +extern const LLUUID ANIM_AGENT_SIT_GENERIC; +extern const LLUUID ANIM_AGENT_SIT_GROUND; +extern const LLUUID ANIM_AGENT_SIT_GROUND_CONSTRAINED; +extern const LLUUID ANIM_AGENT_SIT_TO_STAND; +extern const LLUUID ANIM_AGENT_SLEEP; +extern const LLUUID ANIM_AGENT_SMOKE_IDLE; +extern const LLUUID ANIM_AGENT_SMOKE_INHALE; +extern const LLUUID ANIM_AGENT_SMOKE_THROW_DOWN; +extern const LLUUID ANIM_AGENT_SNAPSHOT; +extern const LLUUID ANIM_AGENT_STAND; +extern const LLUUID ANIM_AGENT_STANDUP; +extern const LLUUID ANIM_AGENT_STAND_1; +extern const LLUUID ANIM_AGENT_STAND_2; +extern const LLUUID ANIM_AGENT_STAND_3; +extern const LLUUID ANIM_AGENT_STAND_4; +extern const LLUUID ANIM_AGENT_STRETCH; +extern const LLUUID ANIM_AGENT_STRIDE; +extern const LLUUID ANIM_AGENT_SURF; +extern const LLUUID ANIM_AGENT_SURPRISE; +extern const LLUUID ANIM_AGENT_SWORD_STRIKE; +extern const LLUUID ANIM_AGENT_TALK; +extern const LLUUID ANIM_AGENT_TANTRUM; +extern const LLUUID ANIM_AGENT_THROW_R; +extern const LLUUID ANIM_AGENT_TRYON_SHIRT; +extern const LLUUID ANIM_AGENT_TURNLEFT; +extern const LLUUID ANIM_AGENT_TURNRIGHT; +extern const LLUUID ANIM_AGENT_TYPE; +extern const LLUUID ANIM_AGENT_WALK; +extern const LLUUID ANIM_AGENT_WALK_NEW; +extern const LLUUID ANIM_AGENT_WHISPER; +extern const LLUUID ANIM_AGENT_WHISTLE; +extern const LLUUID ANIM_AGENT_WINK; +extern const LLUUID ANIM_AGENT_WINK_HOLLYWOOD; +extern const LLUUID ANIM_AGENT_WORRY; +extern const LLUUID ANIM_AGENT_YES; +extern const LLUUID ANIM_AGENT_YES_HAPPY; +extern const LLUUID ANIM_AGENT_YOGA_FLOAT;  extern LLUUID AGENT_WALK_ANIMS[];  extern S32 NUM_AGENT_WALK_ANIMS; @@ -224,6 +227,16 @@ public:  	// Retun NULL if the name is invalid.  	//-----------------------------------------------------------------------------  	LLUUID stringToAnimState( const std::string& name, BOOL allow_ids = TRUE ); + +	//----------------------------------------------------------------------------- +	// Associate an anim state with a name +	//----------------------------------------------------------------------------- +	void animStateSetString( const LLUUID& state, const std::string& name); + +	//----------------------------------------------------------------------------- +	// Find the name for a given animation, or UUID string if none defined. +	//----------------------------------------------------------------------------- +	std::string animationName( const LLUUID& id ) const;  };  struct LLAnimStateEntry @@ -249,7 +262,6 @@ extern const LLAnimStateEntry gUserAnimStates[];  extern const S32 gUserAnimStatesCount;  extern LLAnimationLibrary gAnimLibrary; -  #endif // LL_LLANIMATIONSTATES_H diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp index 461309bee9..f814618fc1 100644 --- a/indra/llcharacter/llkeyframewalkmotion.cpp +++ b/indra/llcharacter/llkeyframewalkmotion.cpp @@ -48,8 +48,10 @@ const F32 MAX_WALK_PLAYBACK_SPEED = 8.f;	// max m/s for which we adjust walk cyc  const F32 MIN_WALK_SPEED = 0.1f;	// minimum speed at which we use velocity for down foot detection  const F32 MAX_TIME_DELTA = 2.f;		//max two seconds a frame for calculating interpolation -const F32 SPEED_ADJUST_MAX = 2.5f; // maximum adjustment of walk animation playback speed -const F32 SPEED_ADJUST_MAX_SEC = 3.f;	// maximum adjustment to walk animation playback speed for a second +F32 SPEED_ADJUST_MAX = 2.5f; // maximum adjustment of walk animation playback speed +F32 SPEED_ADJUST_MAX_SEC = 3.f;	// maximum adjustment to walk animation playback speed for a second +F32 ANIM_SPEED_MAX = 10.0f; // absolute upper limit on animation speed +F32 ANIM_SPEED_MIN = 0.0f; // absolute lower limit on animation speed  const F32 DRIFT_COMP_MAX_TOTAL = 0.07f;//0.55f; // maximum drift compensation overall, in any direction   const F32 DRIFT_COMP_MAX_SPEED = 4.f; // speed at which drift compensation total maxes out  const F32 MAX_ROLL = 0.6f; @@ -300,6 +302,7 @@ BOOL LLWalkAdjustMotion::onUpdate(F32 time, U8* joint_mask)  	// and if we're moving backward, we walk backward  	F32 directional_factor = localVel.mV[VX] * mRelativeDir; +  	if (speed > 0.1f)  	{  		// calculate ratio of desired foot velocity to detected foot velocity @@ -318,16 +321,36 @@ BOOL LLWalkAdjustMotion::onUpdate(F32 time, U8* joint_mask)  	}  	mAnimSpeed = (mAvgSpeed + mSpeedAdjust) * mRelativeDir; -//	char debug_text[64]; -//	sprintf(debug_text, "Foot slip vel: %.2f", footSlipVelocity); -//	mCharacter->addDebugText(debug_text); -//	sprintf(debug_text, "Speed: %.2f", mAvgSpeed); -//	mCharacter->addDebugText(debug_text); -//	sprintf(debug_text, "Speed Adjust: %.2f", mSpeedAdjust); -//	mCharacter->addDebugText(debug_text); -//	sprintf(debug_text, "Animation Playback Speed: %.2f", mAnimSpeed); -//	mCharacter->addDebugText(debug_text); -	mCharacter->setAnimationData("Walk Speed", &mAnimSpeed); +	if (mAnimSpeed>0) +	{ +		mAnimSpeed = llclamp(mAnimSpeed, ANIM_SPEED_MIN, ANIM_SPEED_MAX); +	} +	else +	{ +		mAnimSpeed = llclamp(mAnimSpeed, -ANIM_SPEED_MAX, -ANIM_SPEED_MIN); +	} +// 	char debug_text[64]; +// 	sprintf(debug_text, "Foot slip vel: %.2f", footSlipVelocity); +// 	mCharacter->addDebugText(debug_text); +// 	sprintf(debug_text, "Speed: %.2f", mAvgSpeed); +// 	mCharacter->addDebugText(debug_text); +// 	sprintf(debug_text, "Speed Adjust: %.2f", mSpeedAdjust); +// 	mCharacter->addDebugText(debug_text); +// 	sprintf(debug_text, "Animation Playback Speed: %.2f", mAnimSpeed); +// 	mCharacter->addDebugText(debug_text); + 	mCharacter->setAnimationData("Walk Speed", &mAnimSpeed); +	if (mCharacter->getMotionController().mIsSelf) +	{ +//		F32 elapsed = mCharacter->getMotionController().getFrameTimer().getElapsedTimeF32(); +// 		llinfos << "PLOT elapsed: " << elapsed  +// 				<< " footSlipVelocity: " << footSlipVelocity +// 				<< " mAvgCorrection: " << mAvgCorrection +// 				<< " mAvgSpeed: " << mAvgSpeed +// 				<< " mAnimSpeed: " << mAnimSpeed +// 				<< " ANIM_SPEED_MAX: " << ANIM_SPEED_MAX +// 				<< " ANIM_SPEED_MIN: " << ANIM_SPEED_MIN +// 				<< llendl; +	}  	// clamp pelvis offset to a 90 degree arc behind the nominal position  	F32 drift_comp_max = llclamp(speed, 0.f, DRIFT_COMP_MAX_SPEED) / DRIFT_COMP_MAX_SPEED; diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index bb9625b2bd..78d9398c1d 100644 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp @@ -143,7 +143,8 @@ LLMotionController::LLMotionController()  	  mPauseTime(0.f),  	  mTimeStep(0.f),  	  mTimeStepCount(0), -	  mLastInterp(0.f) +	  mLastInterp(0.f), +	  mIsSelf(FALSE)  {  } @@ -446,6 +447,7 @@ BOOL LLMotionController::stopMotionInstance(LLMotion* motion, BOOL stop_immediat  		return FALSE;  	} +	  	// If on active list, stop it  	if (isMotionActive(motion) && !motion->isStopped())  	{ @@ -1033,6 +1035,31 @@ LLMotion* LLMotionController::findMotion(const LLUUID& id) const  }  //----------------------------------------------------------------------------- +// dumpMotions() +//----------------------------------------------------------------------------- +void LLMotionController::dumpMotions() +{ +	llinfos << "=====================================" << llendl; +	for (motion_map_t::iterator iter = mAllMotions.begin(); +		 iter != mAllMotions.end(); iter++) +	{ +		LLUUID id = iter->first; +		std::string state_string; +		LLMotion *motion = iter->second; +		if (mLoadingMotions.find(motion) != mLoadingMotions.end()) +			state_string += std::string("l"); +		if (mLoadedMotions.find(motion) != mLoadedMotions.end()) +			state_string += std::string("L"); +		if (std::find(mActiveMotions.begin(), mActiveMotions.end(), motion)!=mActiveMotions.end()) +			state_string += std::string("A"); +		if (mDeprecatedMotions.find(motion) != mDeprecatedMotions.end()) +			state_string += std::string("D"); +		llinfos << gAnimLibrary.animationName(id) << " " << state_string << llendl; +		 +	} +} + +//-----------------------------------------------------------------------------  // deactivateAllMotions()  //-----------------------------------------------------------------------------  void LLMotionController::deactivateAllMotions() diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index 5c3ec223cb..f8bf5ac289 100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h @@ -92,6 +92,7 @@ class LLMotionController  public:  	typedef std::list<LLMotion*> motion_list_t;  	typedef std::set<LLMotion*> motion_set_t; +	BOOL mIsSelf;  public:  	// Constructor @@ -169,6 +170,10 @@ public:  	bool isMotionLoading( LLMotion *motion );  	LLMotion *findMotion( const LLUUID& id ) const; +	void dumpMotions(); + +	const LLFrameTimer& getFrameTimer() { return mTimer; } +  protected:  	// internal operations act on motion instances directly  	// as there can be duplicate motions per id during blending overlap diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index bf0ed97143..970b6747f7 100644 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -440,6 +440,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL  	if (mShutDown)  	{ +		llinfos << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl;  		return; // don't get the asset or do any callbacks, we are shutting down  	} @@ -456,6 +457,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL  	// Try static VFS first.  	if (findInStaticVFSAndInvokeCallback(uuid,type,callback,user_data))  	{ +		llinfos << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl;  		return;  	} @@ -472,6 +474,8 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL  		{  			callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);  		} + +		llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;  	}  	else  	{ @@ -512,7 +516,6 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL  		// This can be overridden by subclasses  		_queueDataRequest(uuid, type, callback, user_data, duplicate, is_priority);	  	} -		llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;  } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dad2c615e3..128d67d73d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -164,7 +164,6 @@ set(viewer_SOURCE_FILES      llfloaterbuyland.cpp      llfloatercamera.cpp      llfloatercolorpicker.cpp -    llfloatercustomize.cpp      llfloaterdaycycle.cpp      llfloaterenvsettings.cpp      llfloaterevent.cpp @@ -682,7 +681,6 @@ set(viewer_HEADER_FILES      llfloaterbuyland.h      llfloatercamera.h      llfloatercolorpicker.h -    llfloatercustomize.h      llfloaterdaycycle.h      llfloaterenvsettings.h      llfloaterevent.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 59b6115fab..7ed24236b1 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2676,6 +2676,17 @@        <key>Value</key>        <integer>4</integer>      </map> +    <key>DumpVFSCaches</key> +    <map> +      <key>Comment</key> +      <string>Dump VFS caches on startup.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>DynamicCameraStrength</key>      <map>        <key>Comment</key> @@ -4150,6 +4161,17 @@          <key>Value</key>              <integer>1</integer>          </map> +    <key>LastGPUClass</key> +    <map> +      <key>Comment</key> +      <string>[DO NOT MODIFY] previous GPU class for tracking hardware changes</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>S32</string> +      <key>Value</key> +      <integer>-1</integer> +    </map>      <key>LastFeatureVersion</key>      <map>        <key>Comment</key> @@ -10351,7 +10373,17 @@        <key>Value</key>        <real>10.0</real>      </map> - +    <key>UseNewWalkRun</key> +    <map> +      <key>Comment</key> +      <string>Replace standard walk/run animations with new ones.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>UseStartScreen</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7d84f8d071..0fa77ff7c2 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -45,7 +45,6 @@  #include "llchannelmanager.h"  #include "llconsole.h"  #include "llfloatercamera.h" -#include "llfloatercustomize.h"  #include "llfloaterreg.h"  #include "llfloatertools.h"  #include "llgroupactions.h" @@ -73,6 +72,7 @@  #include "llviewerdisplay.h"  #include "llviewerjoystick.h"  #include "llviewermediafocus.h" +#include "llviewermenu.h"  #include "llviewerobjectlist.h"  #include "llviewerparcelmgr.h"  #include "llviewerstats.h" diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 9638d0e94f..47f290ad3b 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -38,7 +38,6 @@  #include "llagent.h"  #include "llanimationstates.h"  #include "llfloatercamera.h" -#include "llfloatercustomize.h"  #include "llfloaterreg.h"  #include "llhudmanager.h"  #include "lljoystickbutton.h" @@ -48,6 +47,7 @@  #include "llviewercamera.h"  #include "llviewercontrol.h"  #include "llviewerjoystick.h" +#include "llviewermenu.h"  #include "llviewerobjectlist.h"  #include "llviewerregion.h"  #include "llviewerwindow.h" @@ -1538,26 +1538,6 @@ F32 LLAgentCamera::calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_glob  {  	F32 ui_offset = 0.f; -	if (gFloaterCustomize) -	{ -		const LLRect& rect = gFloaterCustomize->getRect(); - -		// Move the camera so that the avatar isn't covered up by this floater. -		F32 fraction_of_fov = 0.5f - (0.5f * (1.f - llmin(1.f, ((F32)rect.getWidth() / (F32)gViewerWindow->getWindowWidthScaled())))); -		F32 apparent_angle = fraction_of_fov * LLViewerCamera::getInstance()->getView() * LLViewerCamera::getInstance()->getAspect();  // radians -		F32 offset = tan(apparent_angle); - -		if( rect.mLeft < (gViewerWindow->getWindowWidthScaled() - rect.mRight) ) -		{ -			// Move the avatar to the right (camera to the left) -			ui_offset = offset; -		} -		else -		{ -			// Move the avatar to the left (camera to the right) -			ui_offset = -offset; -		} -	}  	F32 range = (F32)dist_vec(camera_pos_global, getFocusGlobal());  	mUIOffset = lerp(mUIOffset, ui_offset, LLCriticalDamp::getInterpolant(0.05f));  	return mUIOffset * range; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 68c4fa1ea0..cc9e68d593 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -39,7 +39,6 @@  #include "llagentwearablesfetch.h"  #include "llappearancemgr.h"  #include "llcallbacklist.h" -#include "llfloatercustomize.h"  #include "llfolderview.h"  #include "llgesturemgr.h"  #include "llinventorybridge.h" @@ -617,6 +616,23 @@ const LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)  	return NULL;  } +LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id) +{ +	const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); +	for (S32 i=0; i < LLWearableType::WT_COUNT; i++) +	{ +		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++) +		{ +			LLWearable * curr_wearable = getWearable((LLWearableType::EType)i, j); +			if (curr_wearable && (curr_wearable->getItemID() == base_item_id)) +			{ +				return curr_wearable; +			} +		} +	} +	return NULL; +} +  LLWearable*	LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_id)   {  	for (S32 i=0; i < LLWearableType::WT_COUNT; i++) @@ -1659,14 +1675,12 @@ void LLAgentWearables::userRemoveWearablesOfType(const LLWearableType::EType &ty  void LLAgentWearables::userRemoveAllClothes()  {  	// We have to do this up front to avoid having to deal with the case of multiple wearables being dirty. -	if (gFloaterCustomize) -	{ -		gFloaterCustomize->askToSaveIfDirty(userRemoveAllClothesStep2); -	} -	else +	if (gAgentCamera.cameraCustomizeAvatar())  	{ -		userRemoveAllClothesStep2(TRUE); +		// switching to outfit editor should automagically save any currently edited wearable +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));  	} +	userRemoveAllClothesStep2(TRUE);  }  // static diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 1f19d1045b..c53b1333fc 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -91,6 +91,7 @@ public:  	const LLUUID		getWearableItemID(LLWearableType::EType type, U32 index /*= 0*/) const;  	const LLUUID		getWearableAssetID(LLWearableType::EType type, U32 index /*= 0*/) const;  	const LLWearable*	getWearableFromItemID(const LLUUID& item_id) const; +	LLWearable*	getWearableFromItemID(const LLUUID& item_id);  	LLWearable*	getWearableFromAssetID(const LLUUID& asset_id);  	LLInventoryItem*	getWearableInventoryItem(LLWearableType::EType type, U32 index /*= 0*/);  	static BOOL			selfHasWearable(LLWearableType::EType type); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index e017fffa54..8cc4436188 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -34,10 +34,10 @@  #include "llaccordionctrltab.h"  #include "llagent.h" +#include "llagentcamera.h"  #include "llagentwearables.h"  #include "llappearancemgr.h"  #include "llcommandhandler.h" -#include "llfloatercustomize.h"  #include "llgesturemgr.h"  #include "llinventorybridge.h"  #include "llinventoryfunctions.h" @@ -1362,16 +1362,13 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego  	llinfos << "wearInventoryCategoryOnAvatar( " << category->getName()  			 << " )" << llendl; -	if( gFloaterCustomize ) +	if (gAgentCamera.cameraCustomizeAvatar())  	{ -		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceMgr::changeOutfit, -														&LLAppearanceMgr::instance(), -														_1, category->getUUID(), append)); -	} -	else -	{ -		LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append); +		// switching to outfit editor should automagically save any currently edited wearable +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));  	} + +	LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);  }  void LLAppearanceMgr::wearOutfitByName(const std::string& name) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f7f7cb599e..475a075d7e 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2979,6 +2979,44 @@ S32 LLAppViewer::getCacheVersion()  	return cache_version ;  } +void dumpVFSCaches() +{ +	llinfos << "======= Static VFS ========" << llendl; +	gStaticVFS->listFiles(); +#if LL_WINDOWS +	llinfos << "======= Dumping static VFS to StaticVFSDump ========" << llendl; +	WCHAR w_str[MAX_PATH]; +	GetCurrentDirectory(MAX_PATH, w_str); +	S32 res = LLFile::mkdir("StaticVFSDump"); +	if (res == -1) +	{ +		if (errno != EEXIST) +		{ +			llwarns << "Couldn't create dir StaticVFSDump" << llendl; +		} +	} +	SetCurrentDirectory(utf8str_to_utf16str("StaticVFSDump").c_str()); +	gStaticVFS->dumpFiles(); +	SetCurrentDirectory(w_str); +#endif +						 +	llinfos << "========= Dynamic VFS ====" << llendl; +	gVFS->listFiles(); +#if LL_WINDOWS +	llinfos << "========= Dumping dynamic VFS to VFSDump ====" << llendl; +	res = LLFile::mkdir("VFSDump"); +	if (res == -1) +	{ +		if (errno != EEXIST) +		{ +			llwarns << "Couldn't create dir VFSDump" << llendl; +		} +	} +	SetCurrentDirectory(utf8str_to_utf16str("VFSDump").c_str()); +	gVFS->dumpFiles(); +	SetCurrentDirectory(w_str); +#endif +}  bool LLAppViewer::initCache()  {  	mPurgeCache = false; @@ -3196,11 +3234,12 @@ bool LLAppViewer::initCache()  	{  		LLVFile::initClass(); -		//llinfos << "Static VFS listing" << llendl; -		//gStaticVFS->listFiles(); - -		//llinfos << "regular VFS listing" << llendl; -		//gVFS->listFiles(); +#ifndef LL_RELEASE_FOR_DOWNLOAD +		if (gSavedSettings.getBOOL("DumpVFSCaches")) +		{ +			dumpVFSCaches(); +		} +#endif  		return true;  	} diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 50b08f782a..4fdb010162 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -45,10 +45,13 @@  #include "llsecondlifeurls.h"  #include "llappviewer.h" +#include "llhttpclient.h" +#include "llnotificationsutil.h"  #include "llviewercontrol.h"  #include "llworld.h"  #include "lldrawpoolterrain.h"  #include "llviewertexturelist.h" +#include "llversioninfo.h"  #include "llwindow.h"  #include "llui.h"  #include "llcontrol.h" @@ -62,15 +65,20 @@  #if LL_DARWIN  const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_mac.%s.txt";  #elif LL_LINUX  const char FEATURE_TABLE_FILENAME[] = "featuretable_linux.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_linux.%s.txt";  #elif LL_SOLARIS  const char FEATURE_TABLE_FILENAME[] = "featuretable_solaris.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_solaris.%s.txt";  #else  const char FEATURE_TABLE_FILENAME[] = "featuretable.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable.%s.txt";  #endif  const char GPU_TABLE_FILENAME[] = "gpu_table.txt"; +const char GPU_TABLE_VER_FILENAME[] = "gpu_table.%s.txt";  LLFeatureInfo::LLFeatureInfo(const std::string& name, const BOOL available, const F32 level)  	: mValid(TRUE), mName(name), mAvailable(available), mRecommendedLevel(level) @@ -215,22 +223,44 @@ BOOL LLFeatureManager::loadFeatureTables()  	mSkippedFeatures.insert("RenderVBOEnable");  	mSkippedFeatures.insert("RenderFogRatio"); -	std::string data_path = gDirUtilp->getAppRODataDir(); +	// first table is install with app +	std::string app_path = gDirUtilp->getAppRODataDir(); +	app_path += gDirUtilp->getDirDelimiter(); +	app_path += FEATURE_TABLE_FILENAME; -	data_path += gDirUtilp->getDirDelimiter(); +	// second table is downloaded with HTTP +	std::string http_filename = llformat(FEATURE_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); +	std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); -	data_path += FEATURE_TABLE_FILENAME; -	lldebugs << "Looking for feature table in " << data_path << llendl; +	// use HTTP table if it exists +	std::string path; +	if (gDirUtilp->fileExists(http_path)) +	{ +		path = http_path; +	} +	else +	{ +		path = app_path; +	} + +	 +	return parseFeatureTable(path); +} + + +BOOL LLFeatureManager::parseFeatureTable(std::string filename) +{ +	llinfos << "Looking for feature table in " << filename << llendl;  	llifstream file;  	std::string name;  	U32		version; -	file.open(data_path); 	 /*Flawfinder: ignore*/ +	file.open(filename); 	 /*Flawfinder: ignore*/  	if (!file)  	{ -		LL_WARNS("RenderInit") << "Unable to open feature table!" << LL_ENDL; +		LL_WARNS("RenderInit") << "Unable to open feature table " << filename << LL_ENDL;  		return FALSE;  	} @@ -239,7 +269,7 @@ BOOL LLFeatureManager::loadFeatureTables()  	file >> version;  	if (name != "version")  	{ -		LL_WARNS("RenderInit") << data_path << " does not appear to be a valid feature table!" << LL_ENDL; +		LL_WARNS("RenderInit") << filename << " does not appear to be a valid feature table!" << LL_ENDL;  		return FALSE;  	} @@ -302,24 +332,44 @@ BOOL LLFeatureManager::loadFeatureTables()  void LLFeatureManager::loadGPUClass()  { -	std::string data_path = gDirUtilp->getAppRODataDir(); - -	data_path += gDirUtilp->getDirDelimiter(); - -	data_path += GPU_TABLE_FILENAME; -  	// defaults  	mGPUClass = GPU_CLASS_UNKNOWN;  	mGPUString = gGLManager.getRawGLString();  	mGPUSupported = FALSE; +	// first table is in the app dir +	std::string app_path = gDirUtilp->getAppRODataDir(); +	app_path += gDirUtilp->getDirDelimiter(); +	app_path += GPU_TABLE_FILENAME; +	 +	// second table is downloaded with HTTP +	std::string http_filename = llformat(GPU_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); +	std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); + +	// use HTTP table if it exists +	std::string path; +	if (gDirUtilp->fileExists(http_path)) +	{ +		path = http_path; +	} +	else +	{ +		path = app_path; +	} + +	parseGPUTable(path); +} + +	 +void LLFeatureManager::parseGPUTable(std::string filename) +{  	llifstream file; -	file.open(data_path); 		 /*Flawfinder: ignore*/ +	file.open(filename);  	if (!file)  	{ -		LL_WARNS("RenderInit") << "Unable to open GPU table: " << data_path << "!" << LL_ENDL; +		LL_WARNS("RenderInit") << "Unable to open GPU table: " << filename << "!" << LL_ENDL;  		return;  	} @@ -403,6 +453,70 @@ void LLFeatureManager::loadGPUClass()  	LL_WARNS("RenderInit") << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << LL_ENDL;  } +// responder saves table into file +class LLHTTPFeatureTableResponder : public LLHTTPClient::Responder +{ +public: + +	LLHTTPFeatureTableResponder(std::string filename) : +		mFilename(filename) +	{ +	} + +	 +	virtual void completedRaw(U32 status, const std::string& reason, +							  const LLChannelDescriptors& channels, +							  const LLIOPipe::buffer_ptr_t& buffer) +	{ +		if (isGoodStatus(status)) +		{ +			// write to file + +			llinfos << "writing feature table to " << mFilename << llendl; +			 +			S32 file_size = buffer->countAfter(channels.in(), NULL); +			if (file_size > 0) +			{ +				// read from buffer +				U8* copy_buffer = new U8[file_size]; +				buffer->readAfter(channels.in(), NULL, copy_buffer, file_size); + +				// write to file +				LLAPRFile out(mFilename, LL_APR_WB); +				out.write(copy_buffer, file_size); +				out.close(); +			} +		} +		 +	} +	 +private: +	std::string mFilename; +}; + +void fetch_table(std::string table) +{ +	const std::string base       = "http://viewer-settings.s3.amazonaws.com/"; + +	const std::string filename   = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); + +	const std::string url        = base + filename; + +	const std::string path       = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); + +	llinfos << "LLFeatureManager fetching " << url << " into " << path << llendl; +	 +	LLHTTPClient::get(url, new LLHTTPFeatureTableResponder(path)); +} + +// fetch table(s) from a website (S3) +void LLFeatureManager::fetchHTTPTables() +{ +	fetch_table(FEATURE_TABLE_VER_FILENAME); +	fetch_table(GPU_TABLE_VER_FILENAME); +} + +  void LLFeatureManager::cleanupFeatureTables()  {  	std::for_each(mMaskList.begin(), mMaskList.end(), DeletePairedPointer()); diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index dd218d428f..c2ecede2c5 100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h @@ -48,6 +48,7 @@ typedef enum EGPUClass  	GPU_CLASS_3 = 3  } EGPUClass;  +  class LLFeatureInfo  {  public: @@ -144,8 +145,13 @@ public:  	// in the skip list if true  	void applyFeatures(bool skipFeatures); +	// load the dynamic GPU/feature table from a website +	void fetchHTTPTables(); +	  protected:  	void loadGPUClass(); +	BOOL parseFeatureTable(std::string filename); +	void parseGPUTable(std::string filename);  	void initBaseMask(); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 29865e420a..577652fc79 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -41,7 +41,6 @@  #include "llagentwearables.h"  #include "llappearancemgr.h"  #include "llavataractions.h" -#include "llfloatercustomize.h"  #include "llfloateropenobject.h"  #include "llfloaterreg.h"  #include "llfloaterworldmap.h" @@ -62,9 +61,11 @@  #include "llpreviewgesture.h"  #include "llpreviewtexture.h"  #include "llselectmgr.h" +#include "llsidepanelappearance.h"  #include "llsidetray.h"  #include "lltrans.h"  #include "llviewerassettype.h" +#include "llviewermenu.h"  #include "llviewermessage.h"  #include "llviewerobjectlist.h"  #include "llviewerwindow.h" @@ -4446,15 +4447,13 @@ void remove_inventory_category_from_avatar( LLInventoryCategory* category )  			 << " )" << llendl; -	if( gFloaterCustomize ) +	if (gAgentCamera.cameraCustomizeAvatar())  	{ -		gFloaterCustomize->askToSaveIfDirty( -			boost::bind(remove_inventory_category_from_avatar_step2, _1, category->getUUID())); -	} -	else -	{ -		remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() ); +		// switching to outfit editor should automagically save any currently edited wearable +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));  	} + +	remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );  }  struct OnRemoveStruct @@ -4878,18 +4877,12 @@ void LLWearableBridge::onEditOnAvatar(void* user_data)  void LLWearableBridge::editOnAvatar()  { -	const LLWearable* wearable = gAgentWearables.getWearableFromItemID(mUUID); +	LLWearable* wearable = gAgentWearables.getWearableFromItemID(mUUID);  	if( wearable )  	{ -		// Set the tab to the right wearable. -		if (gFloaterCustomize) -			gFloaterCustomize->setCurrentWearableType( wearable->getType() ); +		LLPanel * panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance"); -		if( CAMERA_MODE_CUSTOMIZE_AVATAR != gAgentCamera.getCameraMode() ) -		{ -			// Start Avatar Customization -			gAgentCamera.changeCameraToCustomizeAvatar(); -		} +		LLSidepanelAppearance::editWearable(wearable, panel);  	}  } diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index c38d45f0f5..f67d91cfa5 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -52,7 +52,6 @@  #include "llappearancemgr.h"  #include "llappviewer.h"  //#include "llfirstuse.h" -#include "llfloatercustomize.h"  #include "llfocusmgr.h"  #include "llfolderview.h"  #include "llgesturemgr.h" diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index 27a27fb65a..4c28e98e62 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -42,7 +42,6 @@  #include "lldrawpoolavatar.h"  #include "llface.h"  //#include "llfirstuse.h" -#include "llfloatercustomize.h"  #include "llfloatertools.h"  #include "llresmgr.h"  #include "lltoolmgr.h" diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index b5b21584aa..9eccceca66 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -215,7 +215,10 @@ LLEditWearableDictionary::~LLEditWearableDictionary()  LLEditWearableDictionary::Wearables::Wearables()  { -	addEntry(LLWearableType::WT_SHAPE, 		new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text",0,0,9,	SUBPART_SHAPE_HEAD,	SUBPART_SHAPE_EYES,	SUBPART_SHAPE_EARS,	SUBPART_SHAPE_NOSE,	SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS, SUBPART_SHAPE_WHOLE)); +	// note the subpart that is listed first is treated as "default", regardless of what order is in enum. +	// Please match the order presented in XUI. -Nyx +	// this will affect what camera angle is shown when first editing a wearable +	addEntry(LLWearableType::WT_SHAPE, 		new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text",0,0,9,	SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,	SUBPART_SHAPE_EYES,	SUBPART_SHAPE_EARS,	SUBPART_SHAPE_NOSE,	SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS ));  	addEntry(LLWearableType::WT_SKIN, 		new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text",0,3,4, TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT, SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL));  	addEntry(LLWearableType::WT_HAIR, 		new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text",0,1,4, TEX_HAIR, SUBPART_HAIR_COLOR,	SUBPART_HAIR_STYLE,	SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL));  	addEntry(LLWearableType::WT_EYES, 		new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text",0,1,1, TEX_EYES_IRIS, SUBPART_EYES)); @@ -898,6 +901,70 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show)  	// Update picker controls state  	for_each_picker_ctrl_entry <LLColorSwatchCtrl> (targetPanel, type, boost::bind(set_enabled_color_swatch_ctrl, show, _1, _2));  	for_each_picker_ctrl_entry <LLTextureCtrl>     (targetPanel, type, boost::bind(set_enabled_texture_ctrl, show, _1, _2)); + +	showDefaultSubpart(); +} + +void LLPanelEditWearable::showDefaultSubpart() +{ +	changeCamera(0); +} + +void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index) +{ +	bool expanded = param.asBoolean(); + +	if (!mWearablePtr || !gAgentCamera.cameraCustomizeAvatar()) +	{ +		// we don't have a valid wearable we're editing, or we've left the wearable editor +		return; +	} + +	if (expanded) +	{ +		changeCamera(index); +	} + +} + +void LLPanelEditWearable::changeCamera(U8 subpart) +{ +	const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType()); +	if (!wearable_entry) +	{ +		llinfos << "could not get wearable dictionary entry for wearable type: " << mWearablePtr->getType() << llendl; +		return; +	} + +	if (subpart >= wearable_entry->mSubparts.size()) +	{ +		llinfos << "accordion tab expanded for invalid subpart. Wearable type: " << mWearablePtr->getType() << " subpart num: " << subpart << llendl; +		return; +	} + +	ESubpart subpart_e = wearable_entry->mSubparts[subpart]; +	const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); + +	if (!subpart_entry) +	{ +		llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; +		return; +	} + +	// Update the camera +	gMorphView->setCameraDistToDefault(); +	gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) ); +	gMorphView->setCameraTargetOffset( subpart_entry->mTargetOffset ); +	gMorphView->setCameraOffset( subpart_entry->mCameraOffset ); +	if (gSavedSettings.getBOOL("AppearanceCameraMovement")) +	{ +		gMorphView->updateCamera(); +	} +} + +void LLPanelEditWearable::updateScrollingPanelList() +{ +	updateScrollingPanelUI();  }  void LLPanelEditWearable::initializePanel() @@ -974,6 +1041,7 @@ void LLPanelEditWearable::initializePanel()  	for_each_picker_ctrl_entry <LLColorSwatchCtrl> (getPanel(type), type, boost::bind(init_color_swatch_ctrl, this, _1, _2));  	for_each_picker_ctrl_entry <LLTextureCtrl>     (getPanel(type), type, boost::bind(init_texture_ctrl, this, _1, _2)); +	showDefaultSubpart();  	updateVerbs();  	if (getWearable()) @@ -1013,52 +1081,6 @@ void LLPanelEditWearable::updateTypeSpecificControls(LLWearableType::EType type)  	}  } -void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index) -{ -	bool expanded = param.asBoolean(); - -	if (!mWearablePtr || !gAgentCamera.cameraCustomizeAvatar()) -	{ -		// we don't have a valid wearable we're editing, or we've left the wearable editor -		return; -	} - -	if (expanded) -	{ -		const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType()); -		if (!wearable_entry) -		{ -			llinfos << "could not get wearable dictionary entry for wearable type: " << mWearablePtr->getType() << llendl; -			return; -		} - -		if (index >= wearable_entry->mSubparts.size()) -		{ -			llinfos << "accordion tab expanded for invalid subpart. Wearable type: " << mWearablePtr->getType() << " subpart num: " << index << llendl; -			return; -		} - -		ESubpart subpart_e = wearable_entry->mSubparts[index]; -		const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); - -		if (!subpart_entry) -		{ -			llwarns << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << llendl; -			return; -		} - -		// Update the camera -		gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) ); -		gMorphView->setCameraTargetOffset( subpart_entry->mTargetOffset ); -		gMorphView->setCameraOffset( subpart_entry->mCameraOffset ); -		gMorphView->setCameraDistToDefault(); -		if (gSavedSettings.getBOOL("AppearanceCameraMovement")) -		{ -			gMorphView->updateCamera(); -		} -	} -} -  void LLPanelEditWearable::updateScrollingPanelUI()  {  	// do nothing if we don't have a valid wearable we're editing diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index 0953f09b6c..b6b8c0c781 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -1,6 +1,6 @@  /**  - * @file llfloatercustomize.h - * @brief The customize avatar floater, triggered by "Appearance..." + * @file llpaneleditwearable.h + * @brief A LLPanel dedicated to the editing of wearables.   *   * $LicenseInfo:firstyear=2009&license=viewergpl$   *  @@ -65,10 +65,14 @@ public:  	void				saveChanges();  	void				revertChanges(); +	void				showDefaultSubpart(); +	void				onTabExpandedCollapsed(const LLSD& param, U8 index); + +	void 				updateScrollingPanelList(); +  	static void			onRevertButtonClicked(void* userdata);  	void				onCommitSexChange(); -	void				onTabExpandedCollapsed(const LLSD& param, U8 index);  private:  	typedef std::map<F32, LLViewerVisualParam*> value_map_t; @@ -88,6 +92,9 @@ private:  	void				toggleTypeSpecificControls(LLWearableType::EType type);  	void				updateTypeSpecificControls(LLWearableType::EType type); +	// changes camera angle to default for selected subpart +	void				changeCamera(U8 subpart); +  	//alpha mask checkboxes  	void configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name);  	void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te); diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 707fc1555a..3719313c14 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -465,3 +465,19 @@ void LLSidepanelAppearance::setWearablesLoading(bool val)  	childSetVisible("wearables_loading_indicator", val);  	childSetVisible("edit_outfit_btn", !val);  } + +void LLSidepanelAppearance::showDefaultSubpart() +{ +	if (mEditWearable->getVisible()) +	{ +		mEditWearable->showDefaultSubpart(); +	} +} + +void LLSidepanelAppearance::updateScrollingPanelList() +{ +	if (mEditWearable->getVisible()) +	{ +		mEditWearable->updateScrollingPanelList(); +	} +} diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h index 12303b6e96..5bde962c8d 100644 --- a/indra/newview/llsidepanelappearance.h +++ b/indra/newview/llsidepanelappearance.h @@ -67,6 +67,8 @@ public:  	void showOutfitEditPanel();  	void showWearableEditPanel(LLWearable *wearable = NULL);  	void setWearablesLoading(bool val); +	void showDefaultSubpart(); +	void updateScrollingPanelList();  private:  	void onFilterEdit(const std::string& search_string); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 466c154f36..d8b5618d8f 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -385,13 +385,22 @@ bool idle_startup()  		{  			LLNotificationsUtil::add("DisplaySetToRecommended");  		} +		else if ((gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass()) && +				 (gSavedSettings.getS32("LastGPUClass") != -1)) +		{ +			LLNotificationsUtil::add("DisplaySetToRecommended"); +		}  		else if (!gViewerWindow->getInitAlert().empty())  		{  			LLNotificationsUtil::add(gViewerWindow->getInitAlert());  		}  		gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion()); +		gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass()); +		// load dynamic GPU/feature tables from website (S3) +		LLFeatureManager::getInstance()->fetchHTTPTables(); +		  		std::string xml_file = LLUI::locateSkin("xui_version.xml");  		LLXMLNodePtr root;  		bool xml_ok = false; diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 22e15dcff2..c1dc1de5e5 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -49,7 +49,6 @@  #include "lldrawable.h"  #include "lldrawpoolavatar.h"  #include "llface.h" -#include "llfloatercustomize.h"  #include "llmorphview.h"  #include "llresmgr.h"  #include "llselectmgr.h" diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index f0532d5a31..f8b6435614 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -61,9 +61,9 @@  #include "llviewerwindow.h"  #include "lltrans.h"  #include "llappearancemgr.h" -#include "llfloatercustomize.h"  #include "llcommandhandler.h"  #include "llviewermessage.h" +#include "llsidepanelappearance.h"  ///----------------------------------------------------------------------------  /// Helper class to store special inventory item names  @@ -880,12 +880,14 @@ void WearOnAvatarCallback::fire(const LLUUID& inv_item)  void ModifiedCOFCallback::fire(const LLUUID& inv_item)  {  	LLAppearanceMgr::instance().updateAppearanceFromCOF(); -	if( CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode() ) +	// TODO: camera mode may not be changed if a debug setting is tweaked +	if( gAgentCamera.cameraCustomizeAvatar() )  	{  		// If we're in appearance editing mode, the current tab may need to be refreshed -		if (gFloaterCustomize) +		LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance")); +		if (panel)  		{ -			gFloaterCustomize->switchToDefaultSubpart(); +			panel->showDefaultSubpart();  		}  	}  } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d0ac103f56..69352e6685 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -54,7 +54,6 @@  #include "llfloaterbuy.h"  #include "llfloaterbuycontents.h"  #include "llbuycurrencyhtml.h" -#include "llfloatercustomize.h"  #include "llfloatergodtools.h"  #include "llfloaterinventory.h"  #include "llfloaterland.h" @@ -3736,17 +3735,15 @@ void reset_view_final( BOOL proceed );  void handle_reset_view()  { -	if( (CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode()) && gFloaterCustomize ) +	if (gAgentCamera.cameraCustomizeAvatar())  	{ -		// Show dialog box if needed. -		gFloaterCustomize->askToSaveIfDirty( reset_view_final ); -	} -	else -	{ -		gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); -		reset_view_final( TRUE ); -		LLFloaterCamera::resetCameraMode(); +		// switching to outfit selector should automagically save any currently edited wearable +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));  	} + +	gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); +	reset_view_final( TRUE ); +	LLFloaterCamera::resetCameraMode();  }  class LLViewResetView : public view_listener_t diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 9773275ede..d91f232f0e 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -106,7 +106,6 @@  #include "llfloaterbuildoptions.h"  #include "llfloaterbuyland.h"  #include "llfloatercamera.h" -#include "llfloatercustomize.h"  #include "llfloaterland.h"  #include "llfloaterinspect.h"  #include "llfloatermap.h" @@ -1433,6 +1432,7 @@ LLViewerWindow::LLViewerWindow(  	if (LLFeatureManager::getInstance()->isSafe()  		|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion()) +		|| (gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass())  		|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))  	{  		LLFeatureManager::getInstance()->applyRecommendedSettings(); @@ -4551,7 +4551,7 @@ void LLViewerWindow::restoreGL(const std::string& progress_message)  		gResizeScreenTexture = TRUE; -		if (gFloaterCustomize && gFloaterCustomize->getVisible()) +		if (gAgentCamera.cameraCustomizeAvatar())  		{  			LLVisualParamHint::requestHintUpdates();  		} diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index a72d7f9227..5d3c64f590 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -95,6 +95,12 @@  #include "llvoiceclient.h"  #include "llvoicevisualizer.h" // Ventrella +#include "lldebugmessagebox.h" +extern F32 SPEED_ADJUST_MAX; +extern F32 SPEED_ADJUST_MAX_SEC; +extern F32 ANIM_SPEED_MAX; +extern F32 ANIM_SPEED_MIN; +  #if LL_MSVC  // disable boost::lexical_cast warning  #pragma warning (disable:4702) @@ -1138,6 +1144,17 @@ void LLVOAvatar::initClass()  	{  		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;  	} + +	gAnimLibrary.animStateSetString(ANIM_AGENT_BODY_NOISE,"body_noise"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_BREATHE_ROT,"breathe_rot"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_EDITING,"editing"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_EYE,"eye"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_FLY_ADJUST,"fly_adjust"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_HAND_MOTION,"hand_motion"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_HEAD_ROT,"head_rot"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_PELVIS_FIX,"pelvis_fix"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_TARGET,"target"); +	gAnimLibrary.animStateSetString(ANIM_AGENT_WALK_ADJUST,"walk_adjust");  } @@ -1249,7 +1266,11 @@ void LLVOAvatar::initInstance(void)  		registerMotion( ANIM_AGENT_EXPRESS_TOOTHSMILE,		LLEmote::create );  		registerMotion( ANIM_AGENT_EXPRESS_WINK,			LLEmote::create );  		registerMotion( ANIM_AGENT_EXPRESS_WORRY,			LLEmote::create ); +		registerMotion( ANIM_AGENT_FEMALE_RUN_NEW,			LLKeyframeWalkMotion::create ); +		registerMotion( ANIM_AGENT_FEMALE_WALK,				LLKeyframeWalkMotion::create ); +		registerMotion( ANIM_AGENT_FEMALE_WALK_NEW,			LLKeyframeWalkMotion::create );  		registerMotion( ANIM_AGENT_RUN,						LLKeyframeWalkMotion::create ); +		registerMotion( ANIM_AGENT_RUN_NEW,					LLKeyframeWalkMotion::create );  		registerMotion( ANIM_AGENT_STAND,					LLKeyframeStandMotion::create );  		registerMotion( ANIM_AGENT_STAND_1,					LLKeyframeStandMotion::create );  		registerMotion( ANIM_AGENT_STAND_2,					LLKeyframeStandMotion::create ); @@ -1259,6 +1280,7 @@ void LLVOAvatar::initInstance(void)  		registerMotion( ANIM_AGENT_TURNLEFT,				LLKeyframeWalkMotion::create );  		registerMotion( ANIM_AGENT_TURNRIGHT,				LLKeyframeWalkMotion::create );  		registerMotion( ANIM_AGENT_WALK,					LLKeyframeWalkMotion::create ); +		registerMotion( ANIM_AGENT_WALK_NEW,				LLKeyframeWalkMotion::create );  		// motions without a start/stop bit  		registerMotion( ANIM_AGENT_BODY_NOISE,				LLBodyNoiseMotion::create ); @@ -2156,6 +2178,33 @@ static LLFastTimer::DeclareTimer FTM_AVATAR_UPDATE("Update Avatar");  static LLFastTimer::DeclareTimer FTM_JOINT_UPDATE("Update Joints");  //------------------------------------------------------------------------ +// LLVOAvatar::dumpAnimationState() +//------------------------------------------------------------------------ +void LLVOAvatar::dumpAnimationState() +{ +	llinfos << "==============================================" << llendl; +	for (LLVOAvatar::AnimIterator it = mSignaledAnimations.begin(); it != mSignaledAnimations.end(); ++it) +	{ +		LLUUID id = it->first; +		std::string playtag = ""; +		if (mPlayingAnimations.find(id) != mPlayingAnimations.end()) +		{ +			playtag = "*"; +		} +		llinfos << gAnimLibrary.animationName(id) << playtag << llendl; +	} +	for (LLVOAvatar::AnimIterator it = mPlayingAnimations.begin(); it != mPlayingAnimations.end(); ++it) +	{ +		LLUUID id = it->first; +		bool is_signaled = mSignaledAnimations.find(id) != mSignaledAnimations.end(); +		if (!is_signaled) +		{ +			llinfos << gAnimLibrary.animationName(id) << "!S" << llendl; +		} +	} +} + +//------------------------------------------------------------------------  // idleUpdate()  //------------------------------------------------------------------------  BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) @@ -2258,6 +2307,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)  	idleUpdateNameTag( root_pos_last );  	idleUpdateRenderCost();  	idleUpdateTractorBeam(); +  	return TRUE;  } @@ -4434,34 +4484,79 @@ void LLVOAvatar::resetAnimations()  	flushAllMotions();  } -//----------------------------------------------------------------------------- -// startMotion() -// id is the asset if of the animation to start -// time_offset is the offset into the animation at which to start playing -//----------------------------------------------------------------------------- -BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset) +// Override selectively based on avatar sex and whether we're using new +// animations. +LLUUID LLVOAvatar::remapMotionID(const LLUUID& id)  { -	LLMemType mt(LLMemType::MTYPE_AVATAR); -	 +	BOOL use_new_walk_run = gSavedSettings.getBOOL("UseNewWalkRun"); +	LLUUID result = id; +  	// start special case female walk for female avatars  	if (getSex() == SEX_FEMALE)  	{  		if (id == ANIM_AGENT_WALK)  		{ -			return LLCharacter::startMotion(ANIM_AGENT_FEMALE_WALK, time_offset); +			if (use_new_walk_run) +				result = ANIM_AGENT_FEMALE_WALK_NEW; +			else +				result = ANIM_AGENT_FEMALE_WALK; +		} +		else if (id == ANIM_AGENT_RUN) +		{ +			// There is no old female run animation, so only override +			// in one case. +			if (use_new_walk_run) +				result = ANIM_AGENT_FEMALE_RUN_NEW;  		}  		else if (id == ANIM_AGENT_SIT)  		{ -			return LLCharacter::startMotion(ANIM_AGENT_SIT_FEMALE, time_offset); +			result = ANIM_AGENT_SIT_FEMALE; +		} +	} +	else +	{ +		// Male avatar. +		if (id == ANIM_AGENT_WALK) +		{ +			if (use_new_walk_run) +				result = ANIM_AGENT_WALK_NEW;  		} +		else if (id == ANIM_AGENT_RUN) +		{ +			if (use_new_walk_run) +				result = ANIM_AGENT_RUN_NEW; +		} +	  	} -	if (isSelf() && id == ANIM_AGENT_AWAY) +	return result; + +} + +//----------------------------------------------------------------------------- +// startMotion() +// id is the asset if of the animation to start +// time_offset is the offset into the animation at which to start playing +//----------------------------------------------------------------------------- +BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset) +{ +	LLMemType mt(LLMemType::MTYPE_AVATAR); + +	lldebugs << "motion requested " << id.asString() << " " << gAnimLibrary.animationName(id) << llendl; + +	LLUUID remap_id = remapMotionID(id); + +	if (remap_id != id) +	{ +		lldebugs << "motion resultant " << remap_id.asString() << " " << gAnimLibrary.animationName(remap_id) << llendl; +	} + +	if (isSelf() && remap_id == ANIM_AGENT_AWAY)  	{  		gAgent.setAFK();  	} -	return LLCharacter::startMotion(id, time_offset); +	return LLCharacter::startMotion(remap_id, time_offset);  }  //----------------------------------------------------------------------------- @@ -4469,21 +4564,21 @@ BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset)  //-----------------------------------------------------------------------------  BOOL LLVOAvatar::stopMotion(const LLUUID& id, BOOL stop_immediate)  { -	if (isSelf()) -	{ -		gAgent.onAnimStop(id); -	} +	lldebugs << "motion requested " << id.asString() << " " << gAnimLibrary.animationName(id) << llendl; -	if (id == ANIM_AGENT_WALK) +	LLUUID remap_id = remapMotionID(id); +	 +	if (remap_id != id)  	{ -		LLCharacter::stopMotion(ANIM_AGENT_FEMALE_WALK, stop_immediate); +		lldebugs << "motion resultant " << remap_id.asString() << " " << gAnimLibrary.animationName(remap_id) << llendl;  	} -	else if (id == ANIM_AGENT_SIT) + +	if (isSelf())  	{ -		LLCharacter::stopMotion(ANIM_AGENT_SIT_FEMALE, stop_immediate); +		gAgent.onAnimStop(remap_id);  	} -	return LLCharacter::stopMotion(id, stop_immediate); +	return LLCharacter::stopMotion(remap_id, stop_immediate);  }  //----------------------------------------------------------------------------- @@ -7899,7 +7994,7 @@ BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 ind  		// baked textures can use TE images directly  		return ((isTextureDefined(type) || isSelf())  				&& (getTEImage(type)->getID() != IMG_INVISIBLE  -					|| LLDrawPoolAlpha::sShowDebugAlpha)); +				|| LLDrawPoolAlpha::sShowDebugAlpha));  	}  } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index df47e9ba1d..34791cf823 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -158,12 +158,14 @@ public:  	virtual LLJoint*		getCharacterJoint(U32 num);  	virtual BOOL			allocateCharacterJoints(U32 num); +	virtual LLUUID			remapMotionID(const LLUUID& id);  	virtual BOOL			startMotion(const LLUUID& id, F32 time_offset = 0.f);  	virtual BOOL			stopMotion(const LLUUID& id, BOOL stop_immediate = FALSE);  	virtual void			stopMotionFromSource(const LLUUID& source_id);  	virtual void			requestStopMotion(LLMotion* motion);  	LLMotion*				findMotion(const LLUUID& id) const;  	void					startDefaultMotions(); +	void					dumpAnimationState();  	virtual LLJoint*		getJoint(const std::string &name);  	virtual LLJoint*     	getRootJoint() { return &mRoot; } diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index a8e2f446c2..203ab45cf4 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -137,7 +137,9 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,  	mRegionCrossingCount(0)  {  	gAgentWearables.setAvatarObject(this); -	 + +	mMotionController.mIsSelf = TRUE; +  	lldebugs << "Marking avatar as self " << id << llendl;  } @@ -1337,7 +1339,7 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32  {  	if (isIndexBakedTexture(type))  	{ -		return LLVOAvatar::isTextureVisible(type); +		return LLVOAvatar::isTextureVisible(type, (U32)0);  	}  	LLUUID tex_id = getLocalTextureID(type,index); diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 10b9a18fa8..9e9b46473e 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -33,23 +33,25 @@  #include "llviewerprecompiledheaders.h"  #include "llagent.h" +#include "llagentcamera.h"  #include "llagentwearables.h" -#include "llfloatercustomize.h" +#include "lldictionary.h"  #include "lllocaltextureobject.h"  #include "llnotificationsutil.h"  #include "llviewertexturelist.h"  #include "llinventorymodel.h"  #include "llinventoryobserver.h" +#include "llsidepanelappearance.h" +#include "llsidetray.h" +#include "lltexlayer.h" +#include "lltexglobalcolor.h" +#include "lltrans.h"  #include "llviewerregion.h" +#include "llvisualparam.h"  #include "llvoavatar.h"  #include "llvoavatarself.h"  #include "llvoavatardefines.h"  #include "llwearable.h" -#include "lldictionary.h" -#include "lltrans.h" -#include "lltexlayer.h" -#include "llvisualparam.h" -#include "lltexglobalcolor.h"  using namespace LLVOAvatarDefines; @@ -576,14 +578,6 @@ BOOL LLWearable::isDirty() const  		}  	} -	//if( gFloaterCustomize ) -	//{ -	//	if( mDescription != gFloaterCustomize->getWearableDescription( mType ) ) -	//	{ -	//		return TRUE; -	//	} -	//} -  	return FALSE;  } @@ -705,9 +699,9 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake  		}  	} -	if( gFloaterCustomize ) +	if( gAgentCamera.cameraCustomizeAvatar() )  	{ -		gFloaterCustomize->setWearable(type, NULL, PERM_ALL, TRUE); +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));  	}  	gAgentAvatarp->updateVisualParams(); @@ -976,9 +970,11 @@ void LLWearable::revertValues()  	syncImages(mSavedTEMap, mTEMap); -	if( gFloaterCustomize ) + +	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance")); +	if( panel )  	{ -		gFloaterCustomize->updateScrollingPanelList(TRUE); +		panel->updateScrollingPanelList();  	}  } @@ -1015,9 +1011,11 @@ void LLWearable::saveValues()  	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)  	syncImages(mTEMap, mSavedTEMap); -	if( gFloaterCustomize ) + +	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance")); +	if( panel )  	{ -		gFloaterCustomize->updateScrollingPanelList(TRUE); +		panel->updateScrollingPanelList();  	}  } diff --git a/indra/newview/macview_Prefix.h b/indra/newview/macview_Prefix.h index a71362a139..07f8093426 100644 --- a/indra/newview/macview_Prefix.h +++ b/indra/newview/macview_Prefix.h @@ -65,7 +65,6 @@  #include "llfloater.h"  #include "llfloaterbuildoptions.h"  #include "llfloaterchat.h" -#include "llfloatercustomize.h"  #include "llfloatergroups.h"  #include "llfloaterworldmap.h"  #include "llfloatermute.h" diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 1f79889bb7..f978b24d0d 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -59,7 +59,7 @@  	</text>  	<button label="Jetzt kaufen" name="buy_btn"/>  	<button label="Abbrechen" name="cancel_btn"/> -	<text height="40" left="160" name="info_cannot_buy" width="200"> +	<text name="info_cannot_buy">  		Kauf nicht möglich  	</text>  	<button label="Weiter zur Kontoseite" name="error_web"/> diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index 71f740590b..0455086ef3 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -107,7 +107,7 @@ left="0"  		Jacket:  	</string>  	<string -		name="skirt_skirt_desc_text"> +		name="skirt_desc_text">  		Skirt:  	</string>  	<string diff --git a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml index 71b345982b..54ef34264c 100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml @@ -6,7 +6,7 @@  	<scroll_container name="profile_scroll">  		<panel name="scroll_content_panel">  			<text name="label"> -				Texturas predeterminadas +				Texturas obtenidas mediante bake  			</text>  			<text name="composite_label">  				Texturas compuestas diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index c96bb1c16d..47dc31f5f4 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -2658,7 +2658,7 @@ El avatar '[NAME]' tardó [TIME] segundos en dejar de aparecer como nu  	</notification>  	<notification name="AvatarRezSelfNotification">  		( [EXISTENCE] segundos vivo) -Has terminado de predeterminar tu vestuario en [TIME] segundos. +Has terminado de texturizar tu vestuario en [TIME] segundos.  	</notification>  	<notification name="AvatarRezCloudNotification">  		( [EXISTENCE] segundos vivo) | 
