LIBOMV-906: [PATCH] Support for avatar physics

Patch by Tim Hart
(Modified slightly not to send physics params if no physical wearable is worn)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3542 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
Latif Khalifa
2011-05-24 00:58:42 +00:00
parent 9cd91f59b8
commit d471ecbbb6
6 changed files with 996 additions and 12 deletions

View File

@@ -115,7 +115,7 @@ namespace OpenMetaverse
const int REBAKE_DELAY = 1000 * 20;
/// <summary>Total number of wearables for each avatar</summary>
public const int WEARABLE_COUNT = 15;
public const int WEARABLE_COUNT = 16;
/// <summary>Total number of baked textures on each avatar</summary>
public const int BAKED_TEXTURE_COUNT = 6;
/// <summary>Total number of wearables per bake layer</summary>
@@ -1671,7 +1671,28 @@ namespace OpenMetaverse
#region VisualParam
int vpIndex = 0;
set.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[218];
int nrParams;
bool wearingPhysics = false;
foreach (WearableData wearable in Wearables.Values)
{
if (wearable.WearableType == WearableType.Physics)
{
wearingPhysics = true;
break;
}
}
if (wearingPhysics)
{
nrParams = 251;
}
else
{
nrParams = 218;
}
set.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[nrParams];
foreach (KeyValuePair<int, VisualParam> kvp in VisualParams.Params)
{
@@ -1726,6 +1747,8 @@ namespace OpenMetaverse
agentSizeVPHipLength = paramValue;
break;
}
if (vpIndex == nrParams) break;
}
#endregion VisualParam
@@ -2068,6 +2091,7 @@ namespace OpenMetaverse
case WearableType.Skirt:
case WearableType.Tattoo:
case WearableType.Alpha:
case WearableType.Physics:
return AssetType.Clothing;
default:
return AssetType.Unknown;

View File

@@ -471,6 +471,7 @@ namespace OpenMetaverse
Params[850] = new VisualParam(850, "skirt_saddlebags", 1, "skirt", String.Empty, String.Empty, String.Empty, -0.5f, -0.5f, 3f, false, null, null, null);
Params[851] = new VisualParam(851, "skirt_chubby", 1, "skirt", String.Empty, "less", "more", 0f, 0f, 1f, false, null, null, null);
Params[852] = new VisualParam(852, "skirt_bigbutt", 1, "skirt", "bigbutt skirt", "less", "more", 0f, 0f, 1f, false, null, null, null);
Params[854] = new VisualParam(854, "Saddlebags", 1, "shape", String.Empty, String.Empty, String.Empty, -0.5f, -0.5f, 3f, false, null, null, null);
Params[855] = new VisualParam(855, "Love_Handles", 1, "shape", String.Empty, String.Empty, String.Empty, 0f, -1f, 2f, false, null, null, null);
Params[856] = new VisualParam(856, "skirt_lovehandles", 1, "skirt", String.Empty, "less", "more", 0f, -1f, 2f, false, null, null, null);
Params[857] = new VisualParam(857, "skirt_male", 1, "skirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f, false, null, null, null);
@@ -566,6 +567,59 @@ namespace OpenMetaverse
Params[1059] = new VisualParam(1059, "Glove Length bump", 1, "gloves", String.Empty, String.Empty, String.Empty, 0.8f, 0.01f, 1f, true, null, new VisualAlphaParam(0.01f, "glove_length_alpha.tga", false, false), null);
Params[1060] = new VisualParam(1060, "Glove Fingers", 1, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0.01f, 1f, false, null, new VisualAlphaParam(0.01f, "gloves_fingers_alpha.tga", false, true), null);
Params[1061] = new VisualParam(1061, "Glove Fingers bump", 1, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0.01f, 1f, true, null, new VisualAlphaParam(0.01f, "gloves_fingers_alpha.tga", false, true), null);
Params[1062] = new VisualParam(1062, "tattoo_head_red", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(255, 0, 0, 255) }));
Params[1063] = new VisualParam(1063, "tattoo_head_green", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 255, 0, 255) }));
Params[1064] = new VisualParam(1064, "tattoo_head_blue", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 0, 255, 255) }));
Params[1065] = new VisualParam(1065, "tattoo_upper_red", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(255, 0, 0, 255) }));
Params[1066] = new VisualParam(1066, "tattoo_upper_green", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 255, 0, 255) }));
Params[1067] = new VisualParam(1067, "tattoo_upper_blue", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 0, 255, 255) }));
Params[1068] = new VisualParam(1068, "tattoo_lower_red", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(255, 0, 0, 255) }));
Params[1069] = new VisualParam(1069, "tattoo_lower_green", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 255, 0, 255) }));
Params[1070] = new VisualParam(1070, "tattoo_lower_blue", 1, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, null, null, new VisualColorParam(VisualColorOperation.Add, new Color4[] { new Color4(0, 0, 0, 255), new Color4(0, 0, 255, 255) }));
Params[1071] = new VisualParam(1071, "tattoo_red", 2, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, new int[] { 1062, 1065, 1068 }, null, null);
Params[1072] = new VisualParam(1072, "tattoo_green", 2, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, new int[] { 1063, 1066, 1069 }, null, null);
Params[1073] = new VisualParam(1073, "tattoo_blue", 2, "tattoo", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f, false, new int[] { 1064, 1067, 1070 }, null, null);
Params[1200] = new VisualParam(1200, "Breast_Physics_UpDown_Driven", 1, "shape", String.Empty, String.Empty, String.Empty, 0f, -3f, 3f, false, null, null, null);
Params[1201] = new VisualParam(1201, "Breast_Physics_InOut_Driven", 1, "shape", String.Empty, String.Empty, String.Empty, 0f, -1.25f, 1.25f, false, null, null, null);
Params[1202] = new VisualParam(1202, "Belly_Physics_Legs_UpDown_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, -1f, -1f, 1f, false, null, null, null);
Params[1203] = new VisualParam(1203, "Belly_Physics_Skirt_UpDown_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, 0f, -1f, 1f, false, null, null, null);
Params[1204] = new VisualParam(1204, "Belly_Physics_Torso_UpDown_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, 0f, -1f, 1f, false, null, null, null);
Params[1205] = new VisualParam(1205, "Butt_Physics_UpDown_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, 0f, -1f, 1f, false, null, null, null);
Params[1206] = new VisualParam(1206, "Butt_Physics_LeftRight_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, 0f, -1f, 1f, false, null, null, null);
Params[1207] = new VisualParam(1207, "Breast_Physics_LeftRight_Driven", 1, "physics", String.Empty, String.Empty, String.Empty, 0f, -2f, 2f, false, null, null, null);
Params[10000] = new VisualParam(10000, "Breast_Physics_Mass", 0, "physics", "Breast Physics Mass", String.Empty, String.Empty, 0.1f, 0.1f, 1f, false, null, null, null);
Params[10001] = new VisualParam(10001, "Breast_Physics_Gravity", 0, "physics", "Breast Physics Gravity", String.Empty, String.Empty, 0f, 0f, 30f, false, null, null, null);
Params[10002] = new VisualParam(10002, "Breast_Physics_Drag", 0, "physics", "Breast Physics Drag", String.Empty, String.Empty, 1f, 0f, 10f, false, null, null, null);
Params[10003] = new VisualParam(10003, "Breast_Physics_UpDown_Max_Effect", 0, "physics", "Breast Physics UpDown Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10004] = new VisualParam(10004, "Breast_Physics_UpDown_Spring", 0, "physics", "Breast Physics UpDown Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10005] = new VisualParam(10005, "Breast_Physics_UpDown_Gain", 0, "physics", "Breast Physics UpDown Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10006] = new VisualParam(10006, "Breast_Physics_UpDown_Damping", 0, "physics", "Breast Physics UpDown Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
Params[10007] = new VisualParam(10007, "Breast_Physics_InOut_Max_Effect", 0, "physics", "Breast Physics InOut Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10008] = new VisualParam(10008, "Breast_Physics_InOut_Spring", 0, "physics", "Breast Physics InOut Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10009] = new VisualParam(10009, "Breast_Physics_InOut_Gain", 0, "physics", "Breast Physics InOut Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10010] = new VisualParam(10010, "Breast_Physics_InOut_Damping", 0, "physics", "Breast Physics InOut Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
Params[10011] = new VisualParam(10011, "Belly_Physics_Mass", 0, "physics", "Belly Physics Mass", String.Empty, String.Empty, 0.1f, 0.1f, 1f, false, null, null, null);
Params[10012] = new VisualParam(10012, "Belly_Physics_Gravity", 0, "physics", "Belly Physics Gravity", String.Empty, String.Empty, 0f, 0f, 30f, false, null, null, null);
Params[10013] = new VisualParam(10013, "Belly_Physics_Drag", 0, "physics", "Belly Physics Drag", String.Empty, String.Empty, 1f, 0f, 10f, false, null, null, null);
Params[10014] = new VisualParam(10014, "Belly_Physics_UpDown_Max_Effect", 0, "physics", "Belly Physics UpDown Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10015] = new VisualParam(10015, "Belly_Physics_UpDown_Spring", 0, "physics", "Belly Physics UpDown Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10016] = new VisualParam(10016, "Belly_Physics_UpDown_Gain", 0, "physics", "Belly Physics UpDown Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10017] = new VisualParam(10017, "Belly_Physics_UpDown_Damping", 0, "physics", "Belly Physics UpDown Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
Params[10018] = new VisualParam(10018, "Butt_Physics_Mass", 0, "physics", "Butt Physics Mass", String.Empty, String.Empty, 0.1f, 0.1f, 1f, false, null, null, null);
Params[10019] = new VisualParam(10019, "Butt_Physics_Gravity", 0, "physics", "Butt Physics Gravity", String.Empty, String.Empty, 0f, 0f, 30f, false, null, null, null);
Params[10020] = new VisualParam(10020, "Butt_Physics_Drag", 0, "physics", "Butt Physics Drag", String.Empty, String.Empty, 1f, 0f, 10f, false, null, null, null);
Params[10021] = new VisualParam(10021, "Butt_Physics_UpDown_Max_Effect", 0, "physics", "Butt Physics UpDown Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10022] = new VisualParam(10022, "Butt_Physics_UpDown_Spring", 0, "physics", "Butt Physics UpDown Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10023] = new VisualParam(10023, "Butt_Physics_UpDown_Gain", 0, "physics", "Butt Physics UpDown Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10024] = new VisualParam(10024, "Butt_Physics_UpDown_Damping", 0, "physics", "Butt Physics UpDown Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
Params[10025] = new VisualParam(10025, "Butt_Physics_LeftRight_Max_Effect", 0, "physics", "Butt Physics LeftRight Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10026] = new VisualParam(10026, "Butt_Physics_LeftRight_Spring", 0, "physics", "Butt Physics LeftRight Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10027] = new VisualParam(10027, "Butt_Physics_LeftRight_Gain", 0, "physics", "Butt Physics LeftRight Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10028] = new VisualParam(10028, "Butt_Physics_LeftRight_Damping", 0, "physics", "Butt Physics LeftRight Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
Params[10029] = new VisualParam(10029, "Breast_Physics_LeftRight_Max_Effect", 0, "physics", "Breast Physics LeftRight Max Effect", String.Empty, String.Empty, 0f, 0f, 3f, false, null, null, null);
Params[10030] = new VisualParam(10030, "Breast_Physics_LeftRight_Spring", 0, "physics", "Breast Physics LeftRight Spring", String.Empty, String.Empty, 10f, 0f, 100f, false, null, null, null);
Params[10031] = new VisualParam(10031, "Breast_Physics_LeftRight_Gain", 0, "physics", "Breast Physics LeftRight Gain", String.Empty, String.Empty, 10f, 1f, 100f, false, null, null, null);
Params[10032] = new VisualParam(10032, "Breast_Physics_LeftRight_Damping", 0, "physics", "Breast Physics LeftRight Damping", String.Empty, String.Empty, 0.2f, 0f, 1f, false, null, null, null);
}
}
}

View File

@@ -240,6 +240,8 @@ namespace OpenMetaverse
Alpha,
/// <summary>Tattoo</summary>
Tattoo,
/// <summary>Physics</summary>
Physics,
/// <summary>Invalid wearable asset</summary>
Invalid = 255
};

View File

@@ -81,7 +81,7 @@ namespace VisualParamGenerator
StringWriter output = new StringWriter();
// Make sure we end up with 218 Group-0 VisualParams as a sanity check
// Make sure we end up with 251 Group-0 VisualParams as a sanity check
int count = 0;
foreach (XmlNode node in list)
@@ -287,7 +287,7 @@ namespace VisualParamGenerator
}
}
if (count != 218)
if (count != 251)
{
Console.WriteLine("Ended up with the wrong number of Group-0 VisualParams! Exiting...");
return;

View File

@@ -415,9 +415,9 @@ namespace GridAccountant
// AgentSetAppearance
AgentSetAppearancePacket appearance = new AgentSetAppearancePacket();
appearance.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[218];
appearance.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[251];
// Setup some random appearance values
for (int i = 0; i < 218; i++)
for (int i = 0; i < 251; i++)
{
appearance.VisualParam[i] = new AgentSetAppearancePacket.VisualParamBlock();
appearance.VisualParam[i].ParamValue = (byte)rand.Next(255);

File diff suppressed because it is too large Load Diff