* Updated VisualParamGenerator to generate a lot more params (from Group-1), and the AppearanceManager code to ignore non-Group-0 params

* Can cancel and re-request single image downloads now (still need to add this to multi-image downloads)
* Added a hacky re-request timer to AssetManager for image downloads (we'll see how it goes)
* Couple of tweaks to make AppearanceManager.SetPreviousAppearance() slightly more reliable
* Updated VisualParamGenerator to match what we are currently using as the VisualParam class

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@1896 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
John Hurliman
2008-06-06 23:21:23 +00:00
parent ac312b9b78
commit c19a9ab6de
6 changed files with 489 additions and 245 deletions

View File

@@ -816,7 +816,7 @@ namespace libsecondlife
set.AgentData.AgentID = Client.Self.AgentID;
set.AgentData.SessionID = Client.Self.SessionID;
set.AgentData.SerialNum = SetAppearanceSerialNum++;
set.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[VisualParams.Params.Count];
set.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[218];
float AgentSizeVPHeight = 0.0f;
float AgentSizeVPHeelHeight = 0.0f;
@@ -834,50 +834,53 @@ namespace libsecondlife
// Build the visual param array
foreach (KeyValuePair<int, VisualParam> kvp in VisualParams.Params)
{
set.VisualParam[vpIndex] = new AgentSetAppearancePacket.VisualParamBlock();
VisualParam vp = kvp.Value;
// Try and find this value in our collection of downloaded wearables
foreach (WearableData data in Wearables.Dictionary.Values)
// Only Group-0 parameters are sent in AgentSetAppearance packets
if (vp.Group == 0)
{
if (data.Asset != null && data.Asset.Params.ContainsKey(vp.ParamID))
set.VisualParam[vpIndex] = new AgentSetAppearancePacket.VisualParamBlock();
// Try and find this value in our collection of downloaded wearables
foreach (WearableData data in Wearables.Dictionary.Values)
{
set.VisualParam[vpIndex].ParamValue = Helpers.FloatToByte(data.Asset.Params[vp.ParamID], vp.MinValue, vp.MaxValue);
count++;
switch (vp.ParamID)
if (data.Asset != null && data.Asset.Params.ContainsKey(vp.ParamID))
{
case 33:
AgentSizeVPHeight = data.Asset.Params[vp.ParamID];
break;
case 198:
AgentSizeVPHeelHeight = data.Asset.Params[vp.ParamID];
break;
case 503:
AgentSizeVPPlatformHeight = data.Asset.Params[vp.ParamID];
break;
case 682:
AgentSizeVPHeadSize = data.Asset.Params[vp.ParamID];
break;
case 692:
AgentSizeVPLegLength = data.Asset.Params[vp.ParamID];
break;
case 756:
AgentSizeVPNeckLength = data.Asset.Params[vp.ParamID];
break;
case 842:
AgentSizeVPHipLength = data.Asset.Params[vp.ParamID];
break;
set.VisualParam[vpIndex].ParamValue = Helpers.FloatToByte(data.Asset.Params[vp.ParamID], vp.MinValue, vp.MaxValue);
count++;
switch (vp.ParamID)
{
case 33:
AgentSizeVPHeight = data.Asset.Params[vp.ParamID];
break;
case 198:
AgentSizeVPHeelHeight = data.Asset.Params[vp.ParamID];
break;
case 503:
AgentSizeVPPlatformHeight = data.Asset.Params[vp.ParamID];
break;
case 682:
AgentSizeVPHeadSize = data.Asset.Params[vp.ParamID];
break;
case 692:
AgentSizeVPLegLength = data.Asset.Params[vp.ParamID];
break;
case 756:
AgentSizeVPNeckLength = data.Asset.Params[vp.ParamID];
break;
case 842:
AgentSizeVPHipLength = data.Asset.Params[vp.ParamID];
break;
}
break;
}
break;
}
++vpIndex;
}
vpIndex++;
}
Logger.DebugLog("AgentSetAppearance contains " + count + " VisualParams", Client);
// Build the texture entry for our agent
LLObject.TextureEntry te = new LLObject.TextureEntry(DEFAULT_AVATAR_TEXTURE);
@@ -903,7 +906,7 @@ namespace libsecondlife
LLObject.TextureEntryFace face = te.CreateFace((uint)texture.Key);
face.TextureID = texture.Value;
Logger.DebugLog("Setting texture " + ((TextureIndex)texture.Key).ToString() + " to " +
Logger.DebugLog("Setting agent texture " + ((TextureIndex)texture.Key).ToString() + " to " +
texture.Value.ToString(), Client);
}
}
@@ -1062,22 +1065,26 @@ namespace libsecondlife
// Build a dictionary of appearance parameter indices and values from the wearables
foreach (KeyValuePair<int,VisualParam> kvp in VisualParams.Params)
{
bool found = false;
VisualParam vp = kvp.Value;
// Try and find this value in our collection of downloaded wearables
foreach (WearableData data in Wearables.Dictionary.Values)
// Only Group-0 parameters are sent in AgentSetAppearance packets
if (kvp.Value.Group == 0)
{
if (data.Asset.Params.ContainsKey(vp.ParamID))
{
paramValues.Add(vp.ParamID,data.Asset.Params[vp.ParamID]);
found = true;
break;
}
}
bool found = false;
VisualParam vp = kvp.Value;
// Use a default value if we don't have one set for it
if (!found) paramValues.Add(vp.ParamID, vp.DefaultValue);
// Try and find this value in our collection of downloaded wearables
foreach (WearableData data in Wearables.Dictionary.Values)
{
if (data.Asset.Params.ContainsKey(vp.ParamID))
{
paramValues.Add(vp.ParamID, data.Asset.Params[vp.ParamID]);
found = true;
break;
}
}
// Use a default value if we don't have one set for it
if (!found) paramValues.Add(vp.ParamID, vp.DefaultValue);
}
}
lock (AgentTextures)
@@ -1269,15 +1276,16 @@ namespace libsecondlife
{
if (ImageDownloads.ContainsKey(image.ID))
{
// NOTE: this image may occupy more than one TextureIndex! We must finish this loop
ImageDownloads.Remove(image.ID);
// NOTE: This image may occupy more than one TextureIndex! We must finish this loop
for (int at = 0; at < AgentTextures.Length; at++)
{
if (AgentTextures[at] == image.ID)
{
TextureIndex index = (TextureIndex)at;
Logger.DebugLog("Finished downloading texture for " + index.ToString(), Client);
BakeType type = Baker.BakeTypeFor(index);
//BinaryWriter writer = new BinaryWriter(File.Create("wearable_" + index.ToString() + "_" + image.ID.ToString() + ".jp2"));
//writer.Write(image.AssetData);
//writer.Close();
@@ -1287,12 +1295,14 @@ namespace libsecondlife
if (PendingBakes.ContainsKey(type))
{
if (image.Success)
{
Logger.DebugLog("Finished downloading texture for " + index.ToString(), Client);
baked = PendingBakes[type].AddTexture(index, assetTexture);
}
else
{
Logger.Log("Texture for " + index.ToString() + " failed to download, " +
"bake will be incomplete", Helpers.LogLevel.Warning, Client);
baked = PendingBakes[type].MissingTexture(index);
}
}
@@ -1303,8 +1313,6 @@ namespace libsecondlife
PendingBakes.Remove(type);
}
ImageDownloads.Remove(image.ID);
if (ImageDownloads.Count == 0 && PendingUploads.Count == 0)
{
// This is a failsafe catch, as the upload completed callback should normally
@@ -1322,8 +1330,10 @@ namespace libsecondlife
}
}
else
{
Logger.Log("Received an image download callback for an image we did not request " + image.ID.ToString(),
Helpers.LogLevel.Warning, Client);
}
}
}

View File

@@ -307,6 +307,7 @@ namespace libsecondlife
private Dictionary<LLUUID, Transfer> Transfers = new Dictionary<LLUUID, Transfer>();
private AssetUpload PendingUpload;
private AutoResetEvent PendingUploadEvent = new AutoResetEvent(true);
private System.Timers.Timer RefreshDownloadsTimer = new System.Timers.Timer(500.0);
/// <summary>
/// Default constructor
@@ -333,6 +334,31 @@ namespace libsecondlife
// Xfer packet for downloading misc assets
Client.Network.RegisterCallback(PacketType.SendXferPacket, new NetworkManager.PacketCallback(SendXferPacketHandler));
// HACK: Re-request stale pending image downloads
RefreshDownloadsTimer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshDownloadsTimer_Elapsed);
RefreshDownloadsTimer.Start();
}
private void RefreshDownloadsTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
lock (Transfers)
{
foreach (Transfer transfer in Transfers.Values)
{
if (transfer is ImageDownload)
{
ImageDownload download = (ImageDownload)transfer;
if (download.TransferTime > 3000)
{
Logger.DebugLog("Image download refresh timer is re-requesting texture " + download.ID.ToString());
// FIXME: This will probably break on baked textures and doesn't preserve the originally requested discardlevel
RequestImage(download.ID, ImageType.Normal, 1013010.0f, 0);
}
}
}
}
}
/// <summary>
@@ -512,19 +538,51 @@ namespace libsecondlife
}
}
// allows aborting of download
if (Transfers.ContainsKey(imageID) && priority.Equals(0) && discardLevel.Equals(-1))
Transfers.Remove(imageID);
if (!Transfers.ContainsKey(imageID) && !priority.Equals(0) && !discardLevel.Equals(-1))
// Priority == 0 && DiscardLevel == -1 means cancel the transfer
if (priority.Equals(0) && discardLevel.Equals(-1))
{
ImageDownload transfer = new ImageDownload();
//transfer.AssetType = AssetType.Texture // Handled in ImageDataHandler.
transfer.ID = imageID;
transfer.Simulator = Client.Network.CurrentSim;
if (Transfers.ContainsKey(imageID))
Transfers.Remove(imageID);
// Add this transfer to the dictionary
lock (Transfers) Transfers[transfer.ID] = transfer;
RequestImagePacket cancel = new RequestImagePacket();
cancel.AgentData.AgentID = Client.Self.AgentID;
cancel.AgentData.SessionID = Client.Self.SessionID;
cancel.RequestImage = new RequestImagePacket.RequestImageBlock[1];
cancel.RequestImage[0] = new RequestImagePacket.RequestImageBlock();
cancel.RequestImage[0].DiscardLevel = -1;
cancel.RequestImage[0].DownloadPriority = 0;
cancel.RequestImage[0].Packet = 0;
cancel.RequestImage[0].Image = imageID;
cancel.RequestImage[0].Type = 0;
}
else
{
Simulator currentSim = Client.Network.CurrentSim;
if (!Transfers.ContainsKey(imageID))
{
// New download
ImageDownload transfer = new ImageDownload();
//transfer.AssetType = AssetType.Texture // Handled in ImageDataHandler.
transfer.ID = imageID;
transfer.Simulator = currentSim;
// Add this transfer to the dictionary
lock (Transfers) Transfers[transfer.ID] = transfer;
Logger.DebugLog("Adding image " + imageID.ToString() + " to the download queue");
}
else
{
// Already downloading, just updating the priority
Transfer transfer = Transfers[imageID];
float percentComplete = (float)transfer.Transferred / (float)transfer.Size;
if (Single.IsNaN(percentComplete))
percentComplete = 0f;
Logger.DebugLog(String.Format("Updating priority on image transfer {0}, ({1}% complete, running for {2}ms",
imageID, percentComplete, transfer.TransferTime));
}
// Build and send the request packet
RequestImagePacket request = new RequestImagePacket();
@@ -538,14 +596,10 @@ namespace libsecondlife
request.RequestImage[0].Image = imageID;
request.RequestImage[0].Type = (byte)type;
Client.Network.SendPacket(request, transfer.Simulator);
}
else
{
Logger.Log("RequestImage() called for an image we are already downloading, ignoring",
Helpers.LogLevel.Info, Client);
Client.Network.SendPacket(request, currentSim);
}
}
/// <summary>
/// Requests multiple Images
/// </summary>

View File

@@ -142,7 +142,7 @@ namespace libsecondlife.Baking
Logger.DebugLog(String.Format("Added texture {0} (ID: {1}) to bake {2}", index, texture.AssetID, _bakeType), _client);
}
if (_textures.Count == _textureCount)
if (_textures.Count >= _textureCount)
{
Bake();
return true;
@@ -158,7 +158,7 @@ namespace libsecondlife.Baking
Logger.DebugLog(String.Format("Missing texture {0} in bake {1}", index, _bakeType), _client);
_textureCount--;
if (_textures.Count == _textureCount)
if (_textures.Count >= _textureCount)
{
Bake();
return true;

View File

@@ -77,11 +77,15 @@ namespace VisualParamGenerator
SortedList<int, string> IDs = new SortedList<int, string>();
StringWriter output = new StringWriter();
// Make sure we end up with 218 Group-0 VisualParams as a sanity check
int count = 0;
foreach (XmlNode node in list)
{
if ((node.Attributes["group"] == null) || !(node.Attributes["group"].Value.Equals("0")))
if (node.Attributes["group"] == null)
{
// We're only interested in group 0 parameters
// Sanity check that a group is assigned
Console.WriteLine("Encountered a param with no group set!");
continue;
}
if ((node.Attributes["shared"] != null) && (node.Attributes["shared"].Value.Equals("1")))
@@ -89,7 +93,7 @@ namespace VisualParamGenerator
// This param will have been already been defined
continue;
}
if ((node.Attributes["edit_group"] != null) && (node.Attributes["edit_group"].Value.Equals("driven")))
if ((node.Attributes["edit_group"] == null))
{
// This param is calculated by the client based on other params
continue;
@@ -97,8 +101,7 @@ namespace VisualParamGenerator
// Confirm this is a valid VisualParam
if (node.Attributes["id"] != null &&
node.Attributes["name"] != null &&
node.Attributes["wearable"] != null)
node.Attributes["name"] != null)
{
try
{
@@ -110,7 +113,10 @@ namespace VisualParamGenerator
string name = node.Attributes["name"].Value;
int group = Int32.Parse(node.Attributes["group"].Value);
string wearable = node.Attributes["wearable"].Value;
string wearable = "null";
if (node.Attributes["wearable"] != null)
wearable = "\"" + node.Attributes["wearable"].Value + "\"";
string label = "String.Empty";
if (node.Attributes["label"] != null)
@@ -136,9 +142,12 @@ namespace VisualParamGenerator
else
def = min;
IDs.Add(id, " new VisualParam(" + id + ", \"" + name + "\", " + group +
", \"" + wearable + "\", " + label + ", " + label_min + ", " + label_max +
", " + def + "f, " + min + "f, " + max + "f)," + Environment.NewLine);
IDs.Add(id,
String.Format(" Params[{0}] = new VisualParam({0}, \"{1}\", {2}, {3}, {4}, {5}, {6}, {7}f, {8}f, {9}f);{10}",
id, name, group, wearable, label, label_min, label_max, def, min, max, Environment.NewLine));
if (group == 0)
++count;
}
catch (Exception e)
{
@@ -147,13 +156,19 @@ namespace VisualParamGenerator
}
}
if (count != 218)
{
Console.WriteLine("Ended up with the wrong number of Group-8 VisualParams! Exiting...");
return;
}
// Now that we've collected all the entries and sorted them, add them to our output buffer
foreach (string line in IDs.Values)
{
output.Write(line);
}
output.Write(" };" + Environment.NewLine);
output.Write(" }" + Environment.NewLine);
output.Write(" }" + Environment.NewLine);
output.Write("}" + Environment.NewLine);

View File

@@ -62,5 +62,16 @@ namespace libsecondlife
/// </summary>
public static class VisualParams
{
public static VisualParam[] Params = new VisualParam[]
public static VisualParam Find(string name, string wearable)
{
foreach (KeyValuePair<int, VisualParam> param in Params)
if (param.Value.Name == name && param.Value.Wearable == wearable)
return param.Value;
return new VisualParam();
}
public static SortedList<int, VisualParam> Params = new SortedList<int, VisualParam>();
static VisualParams()
{

View File

@@ -1,29 +1,3 @@
/*
* Copyright (c) 2007, the libsecondlife development team
* All rights reserved.
*
* - Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* - Neither the name of the Second Life Reverse Engineering Team nor the names
* of its contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
@@ -90,19 +64,17 @@ namespace libsecondlife
{
public static VisualParam Find(string name, string wearable)
{
foreach (KeyValuePair<int,VisualParam> param in Params)
if (param.Value.Name == name && param.Value.Wearable == wearable)
return param.Value;
foreach (KeyValuePair<int, VisualParam> param in Params)
if (param.Value.Name == name && param.Value.Wearable == wearable)
return param.Value;
return new VisualParam();
return new VisualParam();
}
public static SortedList<int, VisualParam> Params;
public static SortedList<int, VisualParam> Params = new SortedList<int, VisualParam>();
static VisualParams()
{
Params = new SortedList<int,VisualParam>();
Params[1] = new VisualParam(1, "Big_Brow", 0, "shape", "Brow Size", "Small", "Large", -0.3f, -0.3f, 2f);
Params[2] = new VisualParam(2, "Nose_Big_Out", 0, "shape", "Nose Size", "Small", "Large", -0.8f, -0.8f, 2.5f);
Params[4] = new VisualParam(4, "Broad_Nostrils", 0, "shape", "Nostril Width", "Narrow", "Broad", -0.5f, -0.5f, 1f);
@@ -112,7 +84,7 @@ namespace libsecondlife
Params[8] = new VisualParam(8, "Double_Chin", 0, "shape", "Chin-Neck", "Tight Chin", "Double Chin", -0.5f, -0.5f, 1.5f);
Params[10] = new VisualParam(10, "Sunken_Cheeks", 0, "shape", "Lower Cheeks", "Well-Fed", "Sunken", -1.5f, -1.5f, 3f);
Params[11] = new VisualParam(11, "Noble_Nose_Bridge", 0, "shape", "Upper Bridge", "Low", "High", -0.5f, -0.5f, 1.5f);
Params[12] = new VisualParam(12, "Jowls", 0, "shape", "", "Less", "More", -0.5f, -0.5f, 2.5f);
Params[12] = new VisualParam(12, "Jowls", 0, "shape", String.Empty, "Less", "More", -0.5f, -0.5f, 2.5f);
Params[13] = new VisualParam(13, "Cleft_Chin_Upper", 0, "shape", "Upper Chin Cleft", "Round", "Cleft", 0f, 0f, 1.5f);
Params[14] = new VisualParam(14, "High_Cheek_Bones", 0, "shape", "Cheek Bones", "Low", "High", -0.5f, -0.5f, 1f);
Params[15] = new VisualParam(15, "Ears_Out", 0, "shape", "Ear Angle", "In", "Out", -0.5f, -0.5f, 1.5f);
@@ -126,201 +98,383 @@ namespace libsecondlife
Params[23] = new VisualParam(23, "Baggy_Eyes", 0, "shape", "Eye Bags", "Smooth", "Baggy", -0.5f, -0.5f, 1.5f);
Params[24] = new VisualParam(24, "Wide_Eyes", 0, "shape", "Eye Opening", "Narrow", "Wide", -1.5f, -1.5f, 2f);
Params[25] = new VisualParam(25, "Wide_Lip_Cleft", 0, "shape", "Lip Cleft", "Narrow", "Wide", -0.8f, -0.8f, 1.5f);
Params[26] = new VisualParam(26, "Lips_Thin", 1, "shape", String.Empty, String.Empty, String.Empty, 0f, 0f, 0.7f);
Params[27] = new VisualParam(27, "Wide_Nose_Bridge", 0, "shape", "Bridge Width", "Narrow", "Wide", -1.3f, -1.3f, 1.2f);
Params[28] = new VisualParam(28, "Lips_Fat", 1, "shape", String.Empty, String.Empty, String.Empty, 0f, 0f, 2f);
Params[29] = new VisualParam(29, "Wide_Upper_Lip", 1, "shape", String.Empty, String.Empty, String.Empty, -0.7f, -0.7f, 1.3f);
Params[30] = new VisualParam(30, "Wide_Lower_Lip", 1, "shape", String.Empty, String.Empty, String.Empty, -0.7f, -0.7f, 1.3f);
Params[31] = new VisualParam(31, "Arced_Eyebrows", 0, "hair", "Eyebrow Arc", "Flat", "Arced", 0.5f, 0f, 2f);
Params[33] = new VisualParam(33, "Height", 0, "shape", "Height", "Short", "Tall", -2.3f, -2.3f, 2f);
Params[34] = new VisualParam(34, "Thickness", 0, "shape", "Body Thickness", "Body Thin", "Body Thick", -0.7f, -0.7f, 1.5f);
Params[35] = new VisualParam(35, "Big_Ears", 0, "shape", "Ear Size", "Small", "Large", -1f, -1f, 2f);
Params[36] = new VisualParam(36, "Shoulders", 0, "shape", "Shoulders", "Narrow", "Broad", -0.5f, -1.8f, 1.4f);
Params[37] = new VisualParam(37, "Hip Width", 0, "shape", "Hip Width", "Narrow", "Wide", -3.2f, -3.2f, 2.8f);
Params[38] = new VisualParam(38, "Torso Length", 0, "shape", "", "Short Torso", "Long Torso", -1f, -1f, 1f);
Params[80] = new VisualParam(80, "male", 0, "shape", "", "", "", 0f, 0f, 1f);
Params[93] = new VisualParam(93, "Glove Length", 0, "gloves", "", "Short", "Long", 0.8f, 0.01f, 1f);
Params[98] = new VisualParam(98, "Eye Lightness", 0, "eyes", "", "Darker", "Lighter", 0f, 0f, 1f);
Params[99] = new VisualParam(99, "Eye Color", 0, "eyes", "", "Natural", "Unnatural", 0f, 0f, 1f);
Params[105] = new VisualParam(105, "Breast Size", 0, "shape", "", "Small", "Large", 0.5f, 0f, 1f);
Params[108] = new VisualParam(108, "Rainbow Color", 0, "skin", "", "None", "Wild", 0f, 0f, 1f);
Params[38] = new VisualParam(38, "Torso Length", 0, "shape", String.Empty, "Short Torso", "Long Torso", -1f, -1f, 1f);
Params[80] = new VisualParam(80, "male", 0, "shape", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[93] = new VisualParam(93, "Glove Length", 0, "gloves", String.Empty, "Short", "Long", 0.8f, 0.01f, 1f);
Params[98] = new VisualParam(98, "Eye Lightness", 0, "eyes", String.Empty, "Darker", "Lighter", 0f, 0f, 1f);
Params[99] = new VisualParam(99, "Eye Color", 0, "eyes", String.Empty, "Natural", "Unnatural", 0f, 0f, 1f);
Params[105] = new VisualParam(105, "Breast Size", 0, "shape", String.Empty, "Small", "Large", 0.5f, 0f, 1f);
Params[106] = new VisualParam(106, "Muscular_Torso", 1, "shape", "Torso Muscles", "Regular", "Muscular", 0f, 0f, 1.4f);
Params[108] = new VisualParam(108, "Rainbow Color", 0, "skin", String.Empty, "None", "Wild", 0f, 0f, 1f);
Params[110] = new VisualParam(110, "Red Skin", 0, "skin", "Ruddiness", "Pale", "Ruddy", 0f, 0f, 0.1f);
Params[111] = new VisualParam(111, "Pigment", 0, "skin", "", "Light", "Dark", 0.5f, 0f, 1f);
Params[112] = new VisualParam(112, "Rainbow Color", 0, "hair", "", "None", "Wild", 0f, 0f, 1f);
Params[113] = new VisualParam(113, "Red Hair", 0, "hair", "", "No Red", "Very Red", 0f, 0f, 1f);
Params[114] = new VisualParam(114, "Blonde Hair", 0, "hair", "", "Black", "Blonde", 0.5f, 0f, 1f);
Params[115] = new VisualParam(115, "White Hair", 0, "hair", "", "No White", "All White", 0f, 0f, 1f);
Params[116] = new VisualParam(116, "Rosy Complexion", 0, "skin", "", "Less Rosy", "More Rosy", 0f, 0f, 1f);
Params[117] = new VisualParam(117, "Lip Pinkness", 0, "skin", "", "Darker", "Pinker", 0f, 0f, 1f);
Params[119] = new VisualParam(119, "Eyebrow Size", 0, "hair", "", "Thin Eyebrows", "Bushy Eyebrows", 0.5f, 0f, 1f);
Params[130] = new VisualParam(130, "Front Fringe", 0, "hair", "", "Short", "Long", 0.45f, 0f, 1f);
Params[131] = new VisualParam(131, "Side Fringe", 0, "hair", "", "Short", "Long", 0.5f, 0f, 1f);
Params[132] = new VisualParam(132, "Back Fringe", 0, "hair", "", "Short", "Long", 0.39f, 0f, 1f);
Params[133] = new VisualParam(133, "Hair Front", 0, "hair", "", "Short", "Long", 0.25f, 0f, 1f);
Params[134] = new VisualParam(134, "Hair Sides", 0, "hair", "", "Short", "Long", 0.5f, 0f, 1f);
Params[135] = new VisualParam(135, "Hair Back", 0, "hair", "", "Short", "Long", 0.55f, 0f, 1f);
Params[136] = new VisualParam(136, "Hair Sweep", 0, "hair", "", "Sweep Forward", "Sweep Back", 0.5f, 0f, 1f);
Params[137] = new VisualParam(137, "Hair Tilt", 0, "hair", "", "Left", "Right", 0.5f, 0f, 1f);
Params[111] = new VisualParam(111, "Pigment", 0, "skin", String.Empty, "Light", "Dark", 0.5f, 0f, 1f);
Params[112] = new VisualParam(112, "Rainbow Color", 0, "hair", String.Empty, "None", "Wild", 0f, 0f, 1f);
Params[113] = new VisualParam(113, "Red Hair", 0, "hair", String.Empty, "No Red", "Very Red", 0f, 0f, 1f);
Params[114] = new VisualParam(114, "Blonde Hair", 0, "hair", String.Empty, "Black", "Blonde", 0.5f, 0f, 1f);
Params[115] = new VisualParam(115, "White Hair", 0, "hair", String.Empty, "No White", "All White", 0f, 0f, 1f);
Params[116] = new VisualParam(116, "Rosy Complexion", 0, "skin", String.Empty, "Less Rosy", "More Rosy", 0f, 0f, 1f);
Params[117] = new VisualParam(117, "Lip Pinkness", 0, "skin", String.Empty, "Darker", "Pinker", 0f, 0f, 1f);
Params[119] = new VisualParam(119, "Eyebrow Size", 0, "hair", String.Empty, "Thin Eyebrows", "Bushy Eyebrows", 0.5f, 0f, 1f);
Params[130] = new VisualParam(130, "Front Fringe", 0, "hair", String.Empty, "Short", "Long", 0.45f, 0f, 1f);
Params[131] = new VisualParam(131, "Side Fringe", 0, "hair", String.Empty, "Short", "Long", 0.5f, 0f, 1f);
Params[132] = new VisualParam(132, "Back Fringe", 0, "hair", String.Empty, "Short", "Long", 0.39f, 0f, 1f);
Params[133] = new VisualParam(133, "Hair Front", 0, "hair", String.Empty, "Short", "Long", 0.25f, 0f, 1f);
Params[134] = new VisualParam(134, "Hair Sides", 0, "hair", String.Empty, "Short", "Long", 0.5f, 0f, 1f);
Params[135] = new VisualParam(135, "Hair Back", 0, "hair", String.Empty, "Short", "Long", 0.55f, 0f, 1f);
Params[136] = new VisualParam(136, "Hair Sweep", 0, "hair", String.Empty, "Sweep Forward", "Sweep Back", 0.5f, 0f, 1f);
Params[137] = new VisualParam(137, "Hair Tilt", 0, "hair", String.Empty, "Left", "Right", 0.5f, 0f, 1f);
Params[140] = new VisualParam(140, "Hair_Part_Middle", 0, "hair", "Middle Part", "No Part", "Part", 0f, 0f, 2f);
Params[141] = new VisualParam(141, "Hair_Part_Right", 0, "hair", "Right Part", "No Part", "Part", 0f, 0f, 2f);
Params[142] = new VisualParam(142, "Hair_Part_Left", 0, "hair", "Left Part", "No Part", "Part", 0f, 0f, 2f);
Params[143] = new VisualParam(143, "Hair_Sides_Full", 0, "hair", "Full Hair Sides", "Mowhawk", "Full Sides", 0.125f, -4f, 1.5f);
Params[150] = new VisualParam(150, "Body Definition", 0, "skin", "", "Less", "More", 0f, 0f, 1f);
Params[144] = new VisualParam(144, "Bangs_Front_Up", 1, "hair", "Front Bangs Up", "Bangs", "Bangs Up", 0f, 0f, 1f);
Params[145] = new VisualParam(145, "Bangs_Front_Down", 1, "hair", "Front Bangs Down", "Bangs", "Bangs Down", 0f, 0f, 5f);
Params[146] = new VisualParam(146, "Bangs_Sides_Up", 1, "hair", "Side Bangs Up", "Side Bangs", "Side Bangs Up", 0f, 0f, 1f);
Params[147] = new VisualParam(147, "Bangs_Sides_Down", 1, "hair", "Side Bangs Down", "Side Bangs", "Side Bangs Down", 0f, 0f, 2f);
Params[148] = new VisualParam(148, "Bangs_Back_Up", 1, "hair", "Back Bangs Up", "Back Bangs", "Back Bangs Up", 0f, 0f, 1f);
Params[149] = new VisualParam(149, "Bangs_Back_Down", 1, "hair", "Back Bangs Down", "Back Bangs", "Back Bangs Down", 0f, 0f, 2f);
Params[150] = new VisualParam(150, "Body Definition", 0, "skin", String.Empty, "Less", "More", 0f, 0f, 1f);
Params[151] = new VisualParam(151, "Big_Butt_Legs", 1, "shape", "Butt Size", "Regular", "Large", 0f, 0f, 1f);
Params[152] = new VisualParam(152, "Muscular_Legs", 1, "shape", "Leg Muscles", "Regular Muscles", "More Muscles", 0f, 0f, 1.5f);
Params[155] = new VisualParam(155, "Lip Width", 0, "shape", "Lip Width", "Narrow Lips", "Wide Lips", 0f, -0.9f, 1.3f);
Params[157] = new VisualParam(157, "Belly Size", 0, "shape", "", "Small", "Big", 0f, 0f, 1f);
Params[162] = new VisualParam(162, "Facial Definition", 0, "skin", "", "Less", "More", 0f, 0f, 1f);
Params[163] = new VisualParam(163, "wrinkles", 0, "skin", "", "Less", "More", 0f, 0f, 1f);
Params[165] = new VisualParam(165, "Freckles", 0, "skin", "", "Less", "More", 0f, 0f, 1f);
Params[166] = new VisualParam(166, "Sideburns", 0, "hair", "", "Short Sideburns", "Mutton Chops", 0f, 0f, 1f);
Params[167] = new VisualParam(167, "Moustache", 0, "hair", "", "Chaplin", "Handlebars", 0f, 0f, 1f);
Params[168] = new VisualParam(168, "Soulpatch", 0, "hair", "", "Less soul", "More soul", 0f, 0f, 1f);
Params[169] = new VisualParam(169, "Chin Curtains", 0, "hair", "", "Less Curtains", "More Curtains", 0f, 0f, 1f);
Params[157] = new VisualParam(157, "Belly Size", 0, "shape", String.Empty, "Small", "Big", 0f, 0f, 1f);
Params[162] = new VisualParam(162, "Facial Definition", 0, "skin", String.Empty, "Less", "More", 0f, 0f, 1f);
Params[163] = new VisualParam(163, "wrinkles", 0, "skin", String.Empty, "Less", "More", 0f, 0f, 1f);
Params[165] = new VisualParam(165, "Freckles", 0, "skin", String.Empty, "Less", "More", 0f, 0f, 1f);
Params[166] = new VisualParam(166, "Sideburns", 0, "hair", String.Empty, "Short Sideburns", "Mutton Chops", 0f, 0f, 1f);
Params[167] = new VisualParam(167, "Moustache", 0, "hair", String.Empty, "Chaplin", "Handlebars", 0f, 0f, 1f);
Params[168] = new VisualParam(168, "Soulpatch", 0, "hair", String.Empty, "Less soul", "More soul", 0f, 0f, 1f);
Params[169] = new VisualParam(169, "Chin Curtains", 0, "hair", String.Empty, "Less Curtains", "More Curtains", 0f, 0f, 1f);
Params[171] = new VisualParam(171, "Hair_Front_Down", 1, "hair", "Front Hair Down", "Front Hair", "Front Hair Down", 0f, 0f, 1f);
Params[172] = new VisualParam(172, "Hair_Front_Up", 1, "hair", "Front Hair Up", "Front Hair", "Front Hair Up", 0f, 0f, 1f);
Params[173] = new VisualParam(173, "Hair_Sides_Down", 1, "hair", "Sides Hair Down", "Sides Hair", "Sides Hair Down", 0f, 0f, 1f);
Params[174] = new VisualParam(174, "Hair_Sides_Up", 1, "hair", "Sides Hair Up", "Sides Hair", "Sides Hair Up", 0f, 0f, 1f);
Params[175] = new VisualParam(175, "Hair_Back_Down", 1, "hair", "Back Hair Down", "Back Hair", "Back Hair Down", 0f, 0f, 3f);
Params[176] = new VisualParam(176, "Hair_Back_Up", 1, "hair", "Back Hair Up", "Back Hair", "Back Hair Up", 0f, 0f, 1f);
Params[177] = new VisualParam(177, "Hair_Rumpled", 0, "hair", "Rumpled Hair", "Smooth Hair", "Rumpled Hair", 0f, 0f, 1f);
Params[178] = new VisualParam(178, "Hair_Swept_Back", 1, "hair", "Swept Back Hair", "NotHair", "Swept Back", 0f, 0f, 1f);
Params[179] = new VisualParam(179, "Hair_Swept_Forward", 1, "hair", "Swept Forward Hair", "Hair", "Swept Forward", 0f, 0f, 1f);
Params[180] = new VisualParam(180, "Hair_Volume", 1, "hair", "Hair Volume", "Less", "More", 0f, 0f, 1.3f);
Params[181] = new VisualParam(181, "Hair_Big_Front", 0, "hair", "Big Hair Front", "Less", "More", 0.14f, -1f, 1f);
Params[182] = new VisualParam(182, "Hair_Big_Top", 0, "hair", "Big Hair Top", "Less", "More", 0.7f, -1f, 1f);
Params[183] = new VisualParam(183, "Hair_Big_Back", 0, "hair", "Big Hair Back", "Less", "More", 0.05f, -1f, 1f);
Params[184] = new VisualParam(184, "Hair_Spiked", 0, "hair", "Spiked Hair", "No Spikes", "Big Spikes", 0f, 0f, 1f);
Params[185] = new VisualParam(185, "Deep_Chin", 0, "shape", "Chin Depth", "Shallow", "Deep", -1f, -1f, 1f);
Params[186] = new VisualParam(186, "Egg_Head", 1, "shape", "Egg Head", "Chin Heavy", "Forehead Heavy", -1.3f, -1.3f, 1f);
Params[187] = new VisualParam(187, "Squash_Stretch_Head", 1, "shape", "Squash/Stretch Head", "Squash Head", "Stretch Head", -0.5f, -0.5f, 1f);
Params[190] = new VisualParam(190, "Hair_Tilt_Right", 1, "hair", "Hair Tilted Right", "Hair", "Tilt Right", 0f, 0f, 1f);
Params[191] = new VisualParam(191, "Hair_Tilt_Left", 1, "hair", "Hair Tilted Left", "Hair", "Tilt Left", 0f, 0f, 1f);
Params[192] = new VisualParam(192, "Bangs_Part_Middle", 0, "hair", "Part Bangs", "No Part", "Part Bangs", 0f, 0f, 1f);
Params[193] = new VisualParam(193, "Head Shape", 0, "shape", "Head Shape", "More Square", "More Round", 0.5f, 0f, 1f);
Params[194] = new VisualParam(194, "Eye_Spread", 1, "shape", String.Empty, "Eyes Together", "Eyes Spread", -2f, -2f, 2f);
Params[195] = new VisualParam(195, "EyeBone_Spread", 1, "shape", String.Empty, "Eyes Together", "Eyes Spread", -1f, -1f, 1f);
Params[196] = new VisualParam(196, "Eye Spacing", 0, "shape", "Eye Spacing", "Close Set Eyes", "Far Set Eyes", 0f, -2f, 1f);
Params[198] = new VisualParam(198, "Heel Height", 0, "shoes", "", "Low Heels", "High Heels", 0f, 0f, 1f);
Params[503] = new VisualParam(503, "Platform Height", 0, "shoes", "", "Low Platforms", "High Platforms", 0f, 0f, 1f);
Params[505] = new VisualParam(505, "Lip Thickness", 0, "shape", "", "Thin Lips", "Fat Lips", 0.5f, 0f, 1f);
Params[197] = new VisualParam(197, "Shoe_Heels", 1, "shoes", String.Empty, "No Heels", "High Heels", 0f, 0f, 1f);
Params[198] = new VisualParam(198, "Heel Height", 0, "shoes", String.Empty, "Low Heels", "High Heels", 0f, 0f, 1f);
Params[400] = new VisualParam(400, "Displace_Hair_Facial", 1, "hair", "Hair Thickess", "Cropped Hair", "Bushy Hair", 0f, 0f, 2f);
Params[500] = new VisualParam(500, "Shoe_Heel_Height", 1, "shoes", "Heel Height", "Low Heels", "High Heels", 0f, 0f, 1f);
Params[501] = new VisualParam(501, "Shoe_Platform_Height", 1, "shoes", "Platform Height", "Low Platforms", "High Platforms", 0f, 0f, 1f);
Params[502] = new VisualParam(502, "Shoe_Platform", 1, "shoes", String.Empty, "No Heels", "High Heels", 0f, 0f, 1f);
Params[503] = new VisualParam(503, "Platform Height", 0, "shoes", String.Empty, "Low Platforms", "High Platforms", 0f, 0f, 1f);
Params[505] = new VisualParam(505, "Lip Thickness", 0, "shape", String.Empty, "Thin Lips", "Fat Lips", 0.5f, 0f, 1f);
Params[506] = new VisualParam(506, "Mouth_Height", 0, "shape", "Mouth Position", "High", "Low", -2f, -2f, 2f);
Params[507] = new VisualParam(507, "Breast_Gravity", 0, "shape", "Breast Buoyancy", "Less Gravity", "More Gravity", 0f, -1.5f, 2f);
Params[508] = new VisualParam(508, "Shoe_Platform_Width", 0, "shoes", "Platform Width", "Narrow", "Wide", -1f, -1f, 2f);
Params[513] = new VisualParam(513, "Heel Shape", 0, "shoes", "", "Pointy Heels", "Thick Heels", 0.5f, 0f, 1f);
Params[514] = new VisualParam(514, "Toe Shape", 0, "shoes", "", "Pointy", "Square", 0.5f, 0f, 1f);
Params[509] = new VisualParam(509, "Shoe_Heel_Point", 1, "shoes", "Heel Shape", "Default Heels", "Pointy Heels", 0f, 0f, 1f);
Params[510] = new VisualParam(510, "Shoe_Heel_Thick", 1, "shoes", "Heel Shape", "default Heels", "Thick Heels", 0f, 0f, 1f);
Params[511] = new VisualParam(511, "Shoe_Toe_Point", 1, "shoes", "Toe Shape", "Default Toe", "Pointy Toe", 0f, 0f, 1f);
Params[512] = new VisualParam(512, "Shoe_Toe_Square", 1, "shoes", "Toe Shape", "Default Toe", "Square Toe", 0f, 0f, 1f);
Params[513] = new VisualParam(513, "Heel Shape", 0, "shoes", String.Empty, "Pointy Heels", "Thick Heels", 0.5f, 0f, 1f);
Params[514] = new VisualParam(514, "Toe Shape", 0, "shoes", String.Empty, "Pointy", "Square", 0.5f, 0f, 1f);
Params[515] = new VisualParam(515, "Foot_Size", 0, "shape", "Foot Size", "Small", "Big", -1f, -1f, 3f);
Params[516] = new VisualParam(516, "Displace_Loose_Lowerbody", 1, "pants", "Pants Fit", String.Empty, String.Empty, 0f, 0f, 1f);
Params[517] = new VisualParam(517, "Wide_Nose", 0, "shape", "Nose Width", "Narrow", "Wide", -0.5f, -0.5f, 1f);
Params[518] = new VisualParam(518, "Eyelashes_Long", 0, "shape", "Eyelash Length", "Short", "Long", -0.3f, -0.3f, 1.5f);
Params[603] = new VisualParam(603, "Sleeve Length", 0, "undershirt", "", "Short", "Long", 0.4f, 0.01f, 1f);
Params[604] = new VisualParam(604, "Bottom", 0, "undershirt", "", "Short", "Long", 0.85f, 0f, 1f);
Params[605] = new VisualParam(605, "Collar Front", 0, "undershirt", "", "Low", "High", 0.84f, 0f, 1f);
Params[606] = new VisualParam(606, "Sleeve Length", 0, "jacket", "", "Short", "Long", 0.8f, 0f, 1f);
Params[607] = new VisualParam(607, "Collar Front", 0, "jacket", "", "Low", "High", 0.8f, 0f, 1f);
Params[600] = new VisualParam(600, "Sleeve Length Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.7f, 0f, 0.85f);
Params[601] = new VisualParam(601, "Shirt Bottom Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[602] = new VisualParam(602, "Collar Front Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[603] = new VisualParam(603, "Sleeve Length", 0, "undershirt", String.Empty, "Short", "Long", 0.4f, 0.01f, 1f);
Params[604] = new VisualParam(604, "Bottom", 0, "undershirt", String.Empty, "Short", "Long", 0.85f, 0f, 1f);
Params[605] = new VisualParam(605, "Collar Front", 0, "undershirt", String.Empty, "Low", "High", 0.84f, 0f, 1f);
Params[606] = new VisualParam(606, "Sleeve Length", 0, "jacket", String.Empty, "Short", "Long", 0.8f, 0f, 1f);
Params[607] = new VisualParam(607, "Collar Front", 0, "jacket", String.Empty, "Low", "High", 0.8f, 0f, 1f);
Params[608] = new VisualParam(608, "bottom length lower", 0, "jacket", "Jacket Length", "Short", "Long", 0.8f, 0f, 1f);
Params[609] = new VisualParam(609, "open jacket", 0, "jacket", "Open Front", "Open", "Closed", 0.2f, 0f, 1f);
Params[616] = new VisualParam(616, "Shoe Height", 0, "shoes", "", "Short", "Tall", 0.1f, 0f, 1f);
Params[617] = new VisualParam(617, "Socks Length", 0, "socks", "", "Short", "Long", 0.35f, 0f, 1f);
Params[619] = new VisualParam(619, "Pants Length", 0, "underpants", "", "Short", "Long", 0.3f, 0f, 1f);
Params[624] = new VisualParam(624, "Pants Waist", 0, "underpants", "", "Low", "High", 0.8f, 0f, 1f);
Params[614] = new VisualParam(614, "Waist Height Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[615] = new VisualParam(615, "Pants Length Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[616] = new VisualParam(616, "Shoe Height", 0, "shoes", String.Empty, "Short", "Tall", 0.1f, 0f, 1f);
Params[617] = new VisualParam(617, "Socks Length", 0, "socks", String.Empty, "Short", "Long", 0.35f, 0f, 1f);
Params[619] = new VisualParam(619, "Pants Length", 0, "underpants", String.Empty, "Short", "Long", 0.3f, 0f, 1f);
Params[620] = new VisualParam(620, "bottom length upper", 1, "jacket", String.Empty, "hi cut", "low cut", 0.8f, 0f, 1f);
Params[621] = new VisualParam(621, "bottom length lower", 1, "jacket", String.Empty, "hi cut", "low cut", 0.8f, 0f, 1f);
Params[622] = new VisualParam(622, "open upper", 1, "jacket", String.Empty, "closed", "open", 0.8f, 0f, 1f);
Params[623] = new VisualParam(623, "open lower", 1, "jacket", String.Empty, "open", "closed", 0.8f, 0f, 1f);
Params[624] = new VisualParam(624, "Pants Waist", 0, "underpants", String.Empty, "Low", "High", 0.8f, 0f, 1f);
Params[625] = new VisualParam(625, "Leg_Pantflair", 0, "pants", "Cuff Flare", "Tight Cuffs", "Flared Cuffs", 0f, 0f, 1.5f);
Params[629] = new VisualParam(629, "Forehead Angle", 0, "shape", "", "More Vertical", "More Sloped", 0.5f, 0f, 1f);
Params[637] = new VisualParam(637, "Body Fat", 0, "shape", "", "Less Body Fat", "More Body Fat", 0f, 0f, 1f);
Params[626] = new VisualParam(626, "Big_Chest", 1, "shape", "Chest Size", "Small", "Large", 0f, 0f, 1f);
Params[627] = new VisualParam(627, "Small_Chest", 1, "shape", "Chest Size", "Large", "Small", 0f, 0f, 1f);
Params[628] = new VisualParam(628, "Displace_Loose_Upperbody", 1, "shirt", "Shirt Fit", String.Empty, String.Empty, 0f, 0f, 1f);
Params[629] = new VisualParam(629, "Forehead Angle", 0, "shape", String.Empty, "More Vertical", "More Sloped", 0.5f, 0f, 1f);
Params[633] = new VisualParam(633, "Fat_Head", 1, "shape", "Fat Head", "Skinny", "Fat", 0f, 0f, 1f);
Params[634] = new VisualParam(634, "Fat_Torso", 1, "shape", "Fat Torso", "skinny", "fat", 0f, 0f, 1f);
Params[635] = new VisualParam(635, "Fat_Legs", 1, "shape", "Fat Torso", "skinny", "fat", 0f, 0f, 1f);
Params[637] = new VisualParam(637, "Body Fat", 0, "shape", String.Empty, "Less Body Fat", "More Body Fat", 0f, 0f, 1f);
Params[638] = new VisualParam(638, "Low_Crotch", 0, "pants", "Pants Crotch", "High and Tight", "Low and Loose", 0f, 0f, 1.3f);
Params[640] = new VisualParam(640, "Hair_Egg_Head", 1, "hair", String.Empty, String.Empty, String.Empty, -1.3f, -1.3f, 1f);
Params[641] = new VisualParam(641, "Hair_Squash_Stretch_Head", 1, "hair", String.Empty, String.Empty, String.Empty, -0.5f, -0.5f, 1f);
Params[642] = new VisualParam(642, "Hair_Square_Head", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[643] = new VisualParam(643, "Hair_Round_Head", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[644] = new VisualParam(644, "Hair_Forehead_Round", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[645] = new VisualParam(645, "Hair_Forehead_Slant", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[646] = new VisualParam(646, "Egg_Head", 0, "shape", "Egg Head", "Chin Heavy", "Forehead Heavy", 0f, -1.3f, 1f);
Params[647] = new VisualParam(647, "Squash_Stretch_Head", 0, "shape", "Head Stretch", "Squash Head", "Stretch Head", 0f, -0.5f, 1f);
Params[648] = new VisualParam(648, "Scrawny_Torso", 1, "shape", "Torso Muscles", "Regular", "Scrawny", 0f, 0f, 1.3f);
Params[649] = new VisualParam(649, "Torso Muscles", 0, "shape", "Torso Muscles", "Less Muscular", "More Muscular", 0.5f, 0f, 1f);
Params[650] = new VisualParam(650, "Eyelid_Corner_Up", 0, "shape", "Outer Eye Corner", "Corner Down", "Corner Up", -1.3f, -1.3f, 1.2f);
Params[652] = new VisualParam(652, "Leg Muscles", 0, "shape", "", "Less Muscular", "More Muscular", 0.5f, 0f, 1f);
Params[651] = new VisualParam(651, "Scrawny_Legs", 1, "shape", "Scrawny Leg", "Regular Muscles", "Less Muscles", 0f, 0f, 1.5f);
Params[652] = new VisualParam(652, "Leg Muscles", 0, "shape", String.Empty, "Less Muscular", "More Muscular", 0.5f, 0f, 1f);
Params[653] = new VisualParam(653, "Tall_Lips", 0, "shape", "Lip Fullness", "Less Full", "More Full", -1f, -1f, 2f);
Params[654] = new VisualParam(654, "Shoe_Toe_Thick", 0, "shoes", "Toe Thickness", "Flat Toe", "Thick Toe", 0f, 0f, 2f);
Params[655] = new VisualParam(655, "Head Size", 1, "shape", "Head Size", "Small Head", "Big Head", -0.25f, -0.25f, 0.1f);
Params[656] = new VisualParam(656, "Crooked_Nose", 0, "shape", "Crooked Nose", "Nose Left", "Nose Right", -2f, -2f, 2f);
Params[659] = new VisualParam(659, "Mouth Corner", 0, "shape", "", "Corner Down", "Corner Up", 0.5f, 0f, 1f);
Params[662] = new VisualParam(662, "Face Shear", 0, "shape", "", "Shear Right Up", "Shear Left Up", 0.5f, 0f, 1f);
Params[657] = new VisualParam(657, "Smile_Mouth", 1, "shape", "Mouth Corner", "Corner Normal", "Corner Up", 0f, 0f, 1.4f);
Params[658] = new VisualParam(658, "Frown_Mouth", 1, "shape", "Mouth Corner", "Corner Normal", "Corner Down", 0f, 0f, 1.2f);
Params[659] = new VisualParam(659, "Mouth Corner", 0, "shape", String.Empty, "Corner Down", "Corner Up", 0.5f, 0f, 1f);
Params[660] = new VisualParam(660, "Shear_Head", 1, "shape", "Shear Face", "Shear Left", "Shear Right", 0f, -2f, 2f);
Params[661] = new VisualParam(661, "EyeBone_Head_Shear", 1, "shape", String.Empty, "Eyes Shear Left Up", "Eyes Shear Right Up", -2f, -2f, 2f);
Params[662] = new VisualParam(662, "Face Shear", 0, "shape", String.Empty, "Shear Right Up", "Shear Left Up", 0.5f, 0f, 1f);
Params[663] = new VisualParam(663, "Shift_Mouth", 0, "shape", "Shift Mouth", "Shift Left", "Shift Right", 0f, -2f, 2f);
Params[664] = new VisualParam(664, "Pop_Eye", 0, "shape", "Eye Pop", "Pop Right Eye", "Pop Left Eye", 0f, -1.3f, 1.3f);
Params[665] = new VisualParam(665, "Jaw_Jut", 0, "shape", "Jaw Jut", "Overbite", "Underbite", 0f, -2f, 2f);
Params[674] = new VisualParam(674, "Hair_Shear_Back", 0, "hair", "Shear Back", "Full Back", "Sheared Back", -0.3f, -1f, 2f);
Params[675] = new VisualParam(675, "Hand Size", 0, "shape", "", "Small Hands", "Large Hands", -0.3f, -0.3f, 0.3f);
Params[675] = new VisualParam(675, "Hand Size", 0, "shape", String.Empty, "Small Hands", "Large Hands", -0.3f, -0.3f, 0.3f);
Params[676] = new VisualParam(676, "Love_Handles", 0, "shape", "Love Handles", "Less Love", "More Love", 0f, -1f, 2f);
Params[678] = new VisualParam(678, "Torso Muscles", 0, "shape", "", "Less Muscular", "More Muscular", 0.5f, 0f, 1f);
Params[677] = new VisualParam(677, "Scrawny_Torso_Male", 1, "shape", "Torso Scrawny", "Regular", "Scrawny", 0f, 0f, 1.3f);
Params[678] = new VisualParam(678, "Torso Muscles", 0, "shape", String.Empty, "Less Muscular", "More Muscular", 0.5f, 0f, 1f);
Params[679] = new VisualParam(679, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f);
Params[681] = new VisualParam(681, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f);
Params[682] = new VisualParam(682, "Head Size", 0, "shape", "Head Size", "Small Head", "Big Head", 0.5f, 0f, 1f);
Params[683] = new VisualParam(683, "Neck Thickness", 0, "shape", "", "Skinny Neck", "Thick Neck", -0.15f, -0.4f, 0.2f);
Params[683] = new VisualParam(683, "Neck Thickness", 0, "shape", String.Empty, "Skinny Neck", "Thick Neck", -0.15f, -0.4f, 0.2f);
Params[684] = new VisualParam(684, "Breast_Female_Cleavage", 0, "shape", "Breast Cleavage", "Separate", "Join", 0f, -0.3f, 1.3f);
Params[685] = new VisualParam(685, "Chest_Male_No_Pecs", 0, "shape", "Pectorals", "Big Pectorals", "Sunken Chest", 0f, -0.5f, 1.1f);
Params[686] = new VisualParam(686, "Head_Eyes_Big", 1, "shape", "Eye Size", "Beady Eyes", "Anime Eyes", 0f, -2f, 2f);
Params[687] = new VisualParam(687, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f);
Params[689] = new VisualParam(689, "EyeBone_Big_Eyes", 1, "shape", String.Empty, "Eyes Back", "Eyes Forward", -1f, -1f, 1f);
Params[690] = new VisualParam(690, "Eye Size", 0, "shape", "Eye Size", "Beady Eyes", "Anime Eyes", 0.5f, 0f, 1f);
Params[692] = new VisualParam(692, "Leg Length", 0, "shape", "", "Short Legs", "Long Legs", -1f, -1f, 1f);
Params[693] = new VisualParam(693, "Arm Length", 0, "shape", "", "Short Arms", "Long arms", 0.6f, -1f, 1f);
Params[700] = new VisualParam(700, "Lipstick Color", 0, "skin", "", "Pink", "Black", 0.25f, 0f, 1f);
Params[701] = new VisualParam(701, "Lipstick", 0, "skin", "", "No Lipstick", "More Lipstick", 0f, 0f, 0.9f);
Params[702] = new VisualParam(702, "Lipgloss", 0, "skin", "", "No Lipgloss", "Glossy", 0f, 0f, 1f);
Params[703] = new VisualParam(703, "Eyeliner", 0, "skin", "", "No Eyeliner", "Full Eyeliner", 0f, 0f, 1f);
Params[704] = new VisualParam(704, "Blush", 0, "skin", "", "No Blush", "More Blush", 0f, 0f, 0.9f);
Params[705] = new VisualParam(705, "Blush Color", 0, "skin", "", "Pink", "Orange", 0.5f, 0f, 1f);
Params[706] = new VisualParam(706, "Out Shdw Opacity", 0, "skin", "", "Clear", "Opaque", 0.6f, 0.2f, 1f);
Params[707] = new VisualParam(707, "Outer Shadow", 0, "skin", "", "No Eyeshadow", "More Eyeshadow", 0f, 0f, 0.7f);
Params[708] = new VisualParam(708, "Out Shdw Color", 0, "skin", "", "Light", "Dark", 0f, 0f, 1f);
Params[709] = new VisualParam(709, "Inner Shadow", 0, "skin", "", "No Eyeshadow", "More Eyeshadow", 0f, 0f, 1f);
Params[710] = new VisualParam(710, "Nail Polish", 0, "skin", "", "No Polish", "Painted Nails", 0f, 0f, 1f);
Params[711] = new VisualParam(711, "Blush Opacity", 0, "skin", "", "Clear", "Opaque", 0.5f, 0f, 1f);
Params[712] = new VisualParam(712, "In Shdw Color", 0, "skin", "", "Light", "Dark", 0f, 0f, 1f);
Params[713] = new VisualParam(713, "In Shdw Opacity", 0, "skin", "", "Clear", "Opaque", 0.7f, 0.2f, 1f);
Params[714] = new VisualParam(714, "Eyeliner Color", 0, "skin", "", "Dark Green", "Black", 0f, 0f, 1f);
Params[715] = new VisualParam(715, "Nail Polish Color", 0, "skin", "", "Pink", "Black", 0f, 0f, 1f);
Params[750] = new VisualParam(750, "Eyebrow Density", 0, "hair", "", "Sparse", "Dense", 0.7f, 0f, 1f);
Params[752] = new VisualParam(752, "Hair Thickness", 0, "hair", "", "5 O'Clock Shadow", "Bushy Hair", 0.5f, 0f, 1f);
Params[691] = new VisualParam(691, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f);
Params[692] = new VisualParam(692, "Leg Length", 0, "shape", String.Empty, "Short Legs", "Long Legs", -1f, -1f, 1f);
Params[693] = new VisualParam(693, "Arm Length", 0, "shape", String.Empty, "Short Arms", "Long arms", 0.6f, -1f, 1f);
Params[694] = new VisualParam(694, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f);
Params[695] = new VisualParam(695, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f);
Params[700] = new VisualParam(700, "Lipstick Color", 0, "skin", String.Empty, "Pink", "Black", 0.25f, 0f, 1f);
Params[701] = new VisualParam(701, "Lipstick", 0, "skin", String.Empty, "No Lipstick", "More Lipstick", 0f, 0f, 0.9f);
Params[702] = new VisualParam(702, "Lipgloss", 0, "skin", String.Empty, "No Lipgloss", "Glossy", 0f, 0f, 1f);
Params[703] = new VisualParam(703, "Eyeliner", 0, "skin", String.Empty, "No Eyeliner", "Full Eyeliner", 0f, 0f, 1f);
Params[704] = new VisualParam(704, "Blush", 0, "skin", String.Empty, "No Blush", "More Blush", 0f, 0f, 0.9f);
Params[705] = new VisualParam(705, "Blush Color", 0, "skin", String.Empty, "Pink", "Orange", 0.5f, 0f, 1f);
Params[706] = new VisualParam(706, "Out Shdw Opacity", 0, "skin", String.Empty, "Clear", "Opaque", 0.6f, 0.2f, 1f);
Params[707] = new VisualParam(707, "Outer Shadow", 0, "skin", String.Empty, "No Eyeshadow", "More Eyeshadow", 0f, 0f, 0.7f);
Params[708] = new VisualParam(708, "Out Shdw Color", 0, "skin", String.Empty, "Light", "Dark", 0f, 0f, 1f);
Params[709] = new VisualParam(709, "Inner Shadow", 0, "skin", String.Empty, "No Eyeshadow", "More Eyeshadow", 0f, 0f, 1f);
Params[710] = new VisualParam(710, "Nail Polish", 0, "skin", String.Empty, "No Polish", "Painted Nails", 0f, 0f, 1f);
Params[711] = new VisualParam(711, "Blush Opacity", 0, "skin", String.Empty, "Clear", "Opaque", 0.5f, 0f, 1f);
Params[712] = new VisualParam(712, "In Shdw Color", 0, "skin", String.Empty, "Light", "Dark", 0f, 0f, 1f);
Params[713] = new VisualParam(713, "In Shdw Opacity", 0, "skin", String.Empty, "Clear", "Opaque", 0.7f, 0.2f, 1f);
Params[714] = new VisualParam(714, "Eyeliner Color", 0, "skin", String.Empty, "Dark Green", "Black", 0f, 0f, 1f);
Params[715] = new VisualParam(715, "Nail Polish Color", 0, "skin", String.Empty, "Pink", "Black", 0f, 0f, 1f);
Params[750] = new VisualParam(750, "Eyebrow Density", 0, "hair", String.Empty, "Sparse", "Dense", 0.7f, 0f, 1f);
Params[751] = new VisualParam(751, "5 O'Clock Shadow", 1, "hair", String.Empty, "Dense hair", "Shadow hair", 0.7f, 0f, 1f);
Params[752] = new VisualParam(752, "Hair Thickness", 0, "hair", String.Empty, "5 O'Clock Shadow", "Bushy Hair", 0.5f, 0f, 1f);
Params[753] = new VisualParam(753, "Saddlebags", 0, "shape", "Saddle Bags", "Less Saddle", "More Saddle", 0f, -0.5f, 3f);
Params[754] = new VisualParam(754, "Hair_Taper_Back", 0, "hair", "Taper Back", "Wide Back", "Narrow Back", 0f, -1f, 2f);
Params[755] = new VisualParam(755, "Hair_Taper_Front", 0, "hair", "Taper Front", "Wide Front", "Narrow Front", 0.05f, -1.5f, 1.5f);
Params[756] = new VisualParam(756, "Neck Length", 0, "shape", "", "Short Neck", "Long Neck", 0f, -1f, 1f);
Params[756] = new VisualParam(756, "Neck Length", 0, "shape", String.Empty, "Short Neck", "Long Neck", 0f, -1f, 1f);
Params[757] = new VisualParam(757, "Lower_Eyebrows", 0, "hair", "Eyebrow Height", "Higher", "Lower", -1f, -4f, 2f);
Params[758] = new VisualParam(758, "Lower_Bridge_Nose", 0, "shape", "Lower Bridge", "Low", "High", -1.5f, -1.5f, 1.5f);
Params[759] = new VisualParam(759, "Low_Septum_Nose", 0, "shape", "Nostril Division", "High", "Low", 0.5f, -1f, 1.5f);
Params[760] = new VisualParam(760, "Jaw_Angle", 0, "shape", "Jaw Angle", "Low Jaw", "High Jaw", 0f, -1.2f, 2f);
Params[761] = new VisualParam(761, "Hair_Volume_Small", 1, "hair", "Hair Volume", "Less", "More", 0f, 0f, 1.3f);
Params[762] = new VisualParam(762, "Hair_Shear_Front", 0, "hair", "Shear Front", "Full Front", "Sheared Front", 0f, 0f, 3f);
Params[763] = new VisualParam(763, "Hair Volume", 0, "hair", "", "Less Volume", "More Volume", 0.55f, 0f, 1f);
Params[763] = new VisualParam(763, "Hair Volume", 0, "hair", String.Empty, "Less Volume", "More Volume", 0.55f, 0f, 1f);
Params[764] = new VisualParam(764, "Lip_Cleft_Deep", 0, "shape", "Lip Cleft Depth", "Shallow", "Deep", -0.5f, -0.5f, 1.2f);
Params[765] = new VisualParam(765, "Puffy_Lower_Lids", 0, "shape", "Puffy Eyelids", "Flat", "Puffy", -0.3f, -0.3f, 2.5f);
Params[769] = new VisualParam(769, "Eye Depth", 0, "shape", "", "Sunken Eyes", "Bugged Eyes", 0.5f, 0f, 1f);
Params[773] = new VisualParam(773, "Head Length", 0, "shape", "", "Flat Head", "Long Head", 0.5f, 0f, 1f);
Params[775] = new VisualParam(775, "Body Freckles", 0, "skin", "", "Less Freckles", "More Freckles", 0f, 0f, 1f);
Params[779] = new VisualParam(779, "Collar Back", 0, "undershirt", "", "Low", "High", 0.84f, 0f, 1f);
Params[780] = new VisualParam(780, "Collar Back", 0, "jacket", "", "Low", "High", 0.8f, 0f, 1f);
Params[781] = new VisualParam(781, "Collar Back", 0, "shirt", "", "Low", "High", 0.78f, 0f, 1f);
Params[785] = new VisualParam(785, "Pigtails", 0, "hair", "", "Short Pigtails", "Long Pigtails", 0f, 0f, 1f);
Params[789] = new VisualParam(789, "Ponytail", 0, "hair", "", "Short Ponytail", "Long Ponytail", 0f, 0f, 1f);
Params[767] = new VisualParam(767, "Bug_Eyed_Head", 1, "shape", "Eye Depth", "Sunken Eyes", "Bug Eyes", 0f, -2f, 2f);
Params[768] = new VisualParam(768, "EyeBone_Bug", 1, "shape", String.Empty, "Eyes Sunken", "Eyes Bugged", -2f, -2f, 2f);
Params[769] = new VisualParam(769, "Eye Depth", 0, "shape", String.Empty, "Sunken Eyes", "Bugged Eyes", 0.5f, 0f, 1f);
Params[770] = new VisualParam(770, "Elongate_Head", 1, "shape", "Shear Face", "Flat Head", "Long Head", 0f, -1f, 1f);
Params[771] = new VisualParam(771, "Elongate_Head_Hair", 1, "hair", String.Empty, String.Empty, String.Empty, -1f, -1f, 1f);
Params[772] = new VisualParam(772, "EyeBone_Head_Elongate", 1, "shape", String.Empty, "Eyes Short Head", "Eyes Long Head", -1f, -1f, 1f);
Params[773] = new VisualParam(773, "Head Length", 0, "shape", String.Empty, "Flat Head", "Long Head", 0.5f, 0f, 1f);
Params[774] = new VisualParam(774, "Shear_Head_Hair", 1, "hair", String.Empty, String.Empty, String.Empty, -2f, -2f, 2f);
Params[775] = new VisualParam(775, "Body Freckles", 0, "skin", String.Empty, "Less Freckles", "More Freckles", 0f, 0f, 1f);
Params[778] = new VisualParam(778, "Collar Back Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[779] = new VisualParam(779, "Collar Back", 0, "undershirt", String.Empty, "Low", "High", 0.84f, 0f, 1f);
Params[780] = new VisualParam(780, "Collar Back", 0, "jacket", String.Empty, "Low", "High", 0.8f, 0f, 1f);
Params[781] = new VisualParam(781, "Collar Back", 0, "shirt", String.Empty, "Low", "High", 0.78f, 0f, 1f);
Params[782] = new VisualParam(782, "Hair_Pigtails_Short", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[783] = new VisualParam(783, "Hair_Pigtails_Med", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[784] = new VisualParam(784, "Hair_Pigtails_Long", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[785] = new VisualParam(785, "Pigtails", 0, "hair", String.Empty, "Short Pigtails", "Long Pigtails", 0f, 0f, 1f);
Params[786] = new VisualParam(786, "Hair_Ponytail_Short", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[787] = new VisualParam(787, "Hair_Ponytail_Med", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[788] = new VisualParam(788, "Hair_Ponytail_Long", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[789] = new VisualParam(789, "Ponytail", 0, "hair", String.Empty, "Short Ponytail", "Long Ponytail", 0f, 0f, 1f);
Params[790] = new VisualParam(790, "Hair_Pigtails_Medlong", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[793] = new VisualParam(793, "Leg_Longcuffs", 1, "pants", "Longcuffs", String.Empty, String.Empty, 0f, 0f, 3f);
Params[794] = new VisualParam(794, "Small_Butt", 1, "shape", "Butt Size", "Regular", "Small", 0f, 0f, 1f);
Params[795] = new VisualParam(795, "Butt Size", 0, "shape", "Butt Size", "Flat Butt", "Big Butt", 0.25f, 0f, 1f);
Params[796] = new VisualParam(796, "Pointy_Ears", 0, "shape", "Ear Tips", "Flat", "Pointy", -0.4f, -0.4f, 3f);
Params[797] = new VisualParam(797, "Fat_Upper_Lip", 1, "shape", "Fat Upper Lip", "Normal Upper", "Fat Upper", 0f, 0f, 1.5f);
Params[798] = new VisualParam(798, "Fat_Lower_Lip", 1, "shape", "Fat Lower Lip", "Normal Lower", "Fat Lower", 0f, 0f, 1.5f);
Params[799] = new VisualParam(799, "Lip Ratio", 0, "shape", "Lip Ratio", "More Upper Lip", "More Lower Lip", 0.5f, 0f, 1f);
Params[800] = new VisualParam(800, "Sleeve Length", 0, "shirt", "", "Short", "Long", 0.89f, 0f, 1f);
Params[801] = new VisualParam(801, "Shirt Bottom", 0, "shirt", "", "Short", "Long", 1f, 0f, 1f);
Params[802] = new VisualParam(802, "Collar Front", 0, "shirt", "", "Low", "High", 0.78f, 0f, 1f);
Params[803] = new VisualParam(803, "shirt_red", 0, "shirt", "", "", "", 1f, 0f, 1f);
Params[804] = new VisualParam(804, "shirt_green", 0, "shirt", "", "", "", 1f, 0f, 1f);
Params[805] = new VisualParam(805, "shirt_blue", 0, "shirt", "", "", "", 1f, 0f, 1f);
Params[806] = new VisualParam(806, "pants_red", 0, "pants", "", "", "", 1f, 0f, 1f);
Params[807] = new VisualParam(807, "pants_green", 0, "pants", "", "", "", 1f, 0f, 1f);
Params[808] = new VisualParam(808, "pants_blue", 0, "pants", "", "", "", 1f, 0f, 1f);
Params[812] = new VisualParam(812, "shoes_red", 0, "shoes", "", "", "", 1f, 0f, 1f);
Params[813] = new VisualParam(813, "shoes_green", 0, "shoes", "", "", "", 1f, 0f, 1f);
Params[814] = new VisualParam(814, "Waist Height", 0, "pants", "", "Low", "High", 1f, 0f, 1f);
Params[815] = new VisualParam(815, "Pants Length", 0, "pants", "", "Short", "Long", 0.8f, 0f, 1f);
Params[800] = new VisualParam(800, "Sleeve Length", 0, "shirt", String.Empty, "Short", "Long", 0.89f, 0f, 1f);
Params[801] = new VisualParam(801, "Shirt Bottom", 0, "shirt", String.Empty, "Short", "Long", 1f, 0f, 1f);
Params[802] = new VisualParam(802, "Collar Front", 0, "shirt", String.Empty, "Low", "High", 0.78f, 0f, 1f);
Params[803] = new VisualParam(803, "shirt_red", 0, "shirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[804] = new VisualParam(804, "shirt_green", 0, "shirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[805] = new VisualParam(805, "shirt_blue", 0, "shirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[806] = new VisualParam(806, "pants_red", 0, "pants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[807] = new VisualParam(807, "pants_green", 0, "pants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[808] = new VisualParam(808, "pants_blue", 0, "pants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[809] = new VisualParam(809, "lower_jacket_red", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[810] = new VisualParam(810, "lower_jacket_green", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[811] = new VisualParam(811, "lower_jacket_blue", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[812] = new VisualParam(812, "shoes_red", 0, "shoes", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[813] = new VisualParam(813, "shoes_green", 0, "shoes", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[814] = new VisualParam(814, "Waist Height", 0, "pants", String.Empty, "Low", "High", 1f, 0f, 1f);
Params[815] = new VisualParam(815, "Pants Length", 0, "pants", String.Empty, "Short", "Long", 0.8f, 0f, 1f);
Params[816] = new VisualParam(816, "Loose Lower Clothing", 0, "pants", "Pants Fit", "Tight Pants", "Loose Pants", 0f, 0f, 1f);
Params[817] = new VisualParam(817, "shoes_blue", 0, "shoes", "", "", "", 1f, 0f, 1f);
Params[818] = new VisualParam(818, "socks_red", 0, "socks", "", "", "", 1f, 0f, 1f);
Params[819] = new VisualParam(819, "socks_green", 0, "socks", "", "", "", 1f, 0f, 1f);
Params[820] = new VisualParam(820, "socks_blue", 0, "socks", "", "", "", 1f, 0f, 1f);
Params[821] = new VisualParam(821, "undershirt_red", 0, "undershirt", "", "", "", 1f, 0f, 1f);
Params[822] = new VisualParam(822, "undershirt_green", 0, "undershirt", "", "", "", 1f, 0f, 1f);
Params[823] = new VisualParam(823, "undershirt_blue", 0, "undershirt", "", "", "", 1f, 0f, 1f);
Params[824] = new VisualParam(824, "underpants_red", 0, "underpants", "", "", "", 1f, 0f, 1f);
Params[825] = new VisualParam(825, "underpants_green", 0, "underpants", "", "", "", 1f, 0f, 1f);
Params[826] = new VisualParam(826, "underpants_blue", 0, "underpants", "", "", "", 1f, 0f, 1f);
Params[827] = new VisualParam(827, "gloves_red", 0, "gloves", "", "", "", 1f, 0f, 1f);
Params[817] = new VisualParam(817, "shoes_blue", 0, "shoes", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[818] = new VisualParam(818, "socks_red", 0, "socks", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[819] = new VisualParam(819, "socks_green", 0, "socks", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[820] = new VisualParam(820, "socks_blue", 0, "socks", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[821] = new VisualParam(821, "undershirt_red", 0, "undershirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[822] = new VisualParam(822, "undershirt_green", 0, "undershirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[823] = new VisualParam(823, "undershirt_blue", 0, "undershirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[824] = new VisualParam(824, "underpants_red", 0, "underpants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[825] = new VisualParam(825, "underpants_green", 0, "underpants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[826] = new VisualParam(826, "underpants_blue", 0, "underpants", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[827] = new VisualParam(827, "gloves_red", 0, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[828] = new VisualParam(828, "Loose Upper Clothing", 0, "shirt", "Shirt Fit", "Tight Shirt", "Loose Shirt", 0f, 0f, 1f);
Params[829] = new VisualParam(829, "gloves_green", 0, "gloves", "", "", "", 1f, 0f, 1f);
Params[830] = new VisualParam(830, "gloves_blue", 0, "gloves", "", "", "", 1f, 0f, 1f);
Params[834] = new VisualParam(834, "jacket_red", 0, "jacket", "", "", "", 1f, 0f, 1f);
Params[835] = new VisualParam(835, "jacket_green", 0, "jacket", "", "", "", 1f, 0f, 1f);
Params[836] = new VisualParam(836, "jacket_blue", 0, "jacket", "", "", "", 1f, 0f, 1f);
Params[829] = new VisualParam(829, "gloves_green", 0, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[830] = new VisualParam(830, "gloves_blue", 0, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[831] = new VisualParam(831, "upper_jacket_red", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[832] = new VisualParam(832, "upper_jacket_green", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[833] = new VisualParam(833, "upper_jacket_blue", 1, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[834] = new VisualParam(834, "jacket_red", 0, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[835] = new VisualParam(835, "jacket_green", 0, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[836] = new VisualParam(836, "jacket_blue", 0, "jacket", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[840] = new VisualParam(840, "Shirtsleeve_flair", 0, "shirt", "Sleeve Looseness", "Tight Sleeves", "Loose Sleeves", 0f, 0f, 1.5f);
Params[841] = new VisualParam(841, "Bowed_Legs", 0, "shape", "Knee Angle", "Knock Kneed", "Bow Legged", 0f, -1f, 1f);
Params[842] = new VisualParam(842, "Hip Length", 0, "shape", "", "Short hips", "Long Hips", -1f, -1f, 1f);
Params[844] = new VisualParam(844, "Glove Fingers", 0, "gloves", "", "Fingerless", "Fingers", 1f, 0.01f, 1f);
Params[842] = new VisualParam(842, "Hip Length", 0, "shape", String.Empty, "Short hips", "Long Hips", -1f, -1f, 1f);
Params[843] = new VisualParam(843, "No_Chest", 1, "shape", "Chest Size", "Some", "None", 0f, 0f, 1f);
Params[844] = new VisualParam(844, "Glove Fingers", 0, "gloves", String.Empty, "Fingerless", "Fingers", 1f, 0.01f, 1f);
Params[845] = new VisualParam(845, "skirt_poofy", 1, "skirt", "poofy skirt", "less poofy", "more poofy", 0f, 0f, 1.5f);
Params[846] = new VisualParam(846, "skirt_loose", 1, "skirt", "loose skirt", "form fitting", "loose", 0f, 0f, 1f);
Params[848] = new VisualParam(848, "skirt_bustle", 0, "skirt", "bustle skirt", "no bustle", "more bustle", 0.2f, 0f, 2f);
Params[858] = new VisualParam(858, "Skirt Length", 0, "skirt", "", "Short", "Long", 0.4f, 0.01f, 1f);
Params[859] = new VisualParam(859, "Slit Front", 0, "skirt", "", "Open Front", "Closed Front", 1f, 0f, 1f);
Params[860] = new VisualParam(860, "Slit Back", 0, "skirt", "", "Open Back", "Closed Back", 1f, 0f, 1f);
Params[861] = new VisualParam(861, "Slit Left", 0, "skirt", "", "Open Left", "Closed Left", 1f, 0f, 1f);
Params[862] = new VisualParam(862, "Slit Right", 0, "skirt", "", "Open Right", "Closed Right", 1f, 0f, 1f);
Params[858] = new VisualParam(858, "Skirt Length", 0, "skirt", String.Empty, "Short", "Long", 0.4f, 0.01f, 1f);
Params[859] = new VisualParam(859, "Slit Front", 0, "skirt", String.Empty, "Open Front", "Closed Front", 1f, 0f, 1f);
Params[860] = new VisualParam(860, "Slit Back", 0, "skirt", String.Empty, "Open Back", "Closed Back", 1f, 0f, 1f);
Params[861] = new VisualParam(861, "Slit Left", 0, "skirt", String.Empty, "Open Left", "Closed Left", 1f, 0f, 1f);
Params[862] = new VisualParam(862, "Slit Right", 0, "skirt", String.Empty, "Open Right", "Closed Right", 1f, 0f, 1f);
Params[863] = new VisualParam(863, "skirt_looseness", 0, "skirt", "Skirt Fit", "Tight Skirt", "Poofy Skirt", 0.333f, 0f, 1f);
Params[868] = new VisualParam(868, "Shirt Wrinkles", 0, "shirt", "", "", "", 0f, 0f, 1f);
Params[869] = new VisualParam(869, "Pants Wrinkles", 0, "pants", "", "", "", 0f, 0f, 1f);
Params[866] = new VisualParam(866, "skirt_tight", 1, "skirt", "tight skirt", "form fitting", "loose", 0f, 0f, 1f);
Params[867] = new VisualParam(867, "skirt_smallbutt", 1, "skirt", "tight skirt", "form fitting", "loose", 0f, 0f, 1f);
Params[868] = new VisualParam(868, "Shirt Wrinkles", 0, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[869] = new VisualParam(869, "Pants Wrinkles", 0, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[870] = new VisualParam(870, "Pointy_Eyebrows", 1, "hair", "Eyebrow Points", "Smooth", "Pointy", -0.5f, -0.5f, 1f);
Params[871] = new VisualParam(871, "Lower_Eyebrows", 1, "hair", "Eyebrow Height", "Higher", "Lower", -2f, -2f, 2f);
Params[872] = new VisualParam(872, "Arced_Eyebrows", 1, "hair", "Eyebrow Arc", "Flat", "Arced", 0f, 0f, 1f);
Params[873] = new VisualParam(873, "Bump base", 1, "skin", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[874] = new VisualParam(874, "Bump upperdef", 1, "skin", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[877] = new VisualParam(877, "Jacket Wrinkles", 0, "jacket", "Jacket Wrinkles", "No Wrinkles", "Wrinkles", 0f, 0f, 1f);
Params[878] = new VisualParam(878, "Bump upperdef", 1, "skin", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[879] = new VisualParam(879, "Male_Package", 0, "shape", "Package", "Coin Purse", "Duffle Bag", 0f, -0.5f, 2f);
Params[880] = new VisualParam(880, "Eyelid_Inner_Corner_Up", 0, "shape", "Inner Eye Corner", "Corner Down", "Corner Up", -1.3f, -1.3f, 1.2f);
Params[921] = new VisualParam(921, "skirt_red", 0, "skirt", "", "", "", 1f, 0f, 1f);
Params[922] = new VisualParam(922, "skirt_green", 0, "skirt", "", "", "", 1f, 0f, 1f);
Params[923] = new VisualParam(923, "skirt_blue", 0, "skirt", "", "", "", 1f, 0f, 1f);
Params[899] = new VisualParam(899, "Upper Clothes Shading", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[900] = new VisualParam(900, "Sleeve Length Shadow", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 0.87f);
Params[901] = new VisualParam(901, "Shirt Shadow Bottom", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 1f);
Params[902] = new VisualParam(902, "Collar Front Shadow Height", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 1f);
Params[903] = new VisualParam(903, "Collar Back Shadow Height", 1, "shirt", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 1f);
Params[913] = new VisualParam(913, "Lower Clothes Shading", 1, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[914] = new VisualParam(914, "Waist Height Shadow", 1, "pants", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 1f);
Params[915] = new VisualParam(915, "Pants Length Shadow", 1, "pants", String.Empty, String.Empty, String.Empty, 0.02f, 0.02f, 1f);
Params[921] = new VisualParam(921, "skirt_red", 0, "skirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[922] = new VisualParam(922, "skirt_green", 0, "skirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[923] = new VisualParam(923, "skirt_blue", 0, "skirt", String.Empty, String.Empty, String.Empty, 1f, 0f, 1f);
Params[1000] = new VisualParam(1000, "Eyebrow Size Bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1001] = new VisualParam(1001, "Eyebrow Size", 1, "hair", String.Empty, String.Empty, String.Empty, 0.5f, 0f, 1f);
Params[1002] = new VisualParam(1002, "Eyebrow Density Bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1003] = new VisualParam(1003, "Eyebrow Density", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1004] = new VisualParam(1004, "Sideburns bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1005] = new VisualParam(1005, "Sideburns", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1006] = new VisualParam(1006, "Moustache bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1007] = new VisualParam(1007, "Moustache", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1008] = new VisualParam(1008, "Soulpatch bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1009] = new VisualParam(1009, "Soulpatch", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1010] = new VisualParam(1010, "Chin Curtains bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1011] = new VisualParam(1011, "Chin Curtains", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1012] = new VisualParam(1012, "5 O'Clock Shadow bump", 1, "hair", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1013] = new VisualParam(1013, "Sleeve Length Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 0.85f);
Params[1014] = new VisualParam(1014, "Shirt Bottom Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1015] = new VisualParam(1015, "Collar Front Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1016] = new VisualParam(1016, "Collar Back Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1017] = new VisualParam(1017, "Waist Height Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1018] = new VisualParam(1018, "Pants Length Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1019] = new VisualParam(1019, "Jacket Sleeve Length bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1020] = new VisualParam(1020, "jacket Sleeve Length", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1021] = new VisualParam(1021, "Jacket Collar Front bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1022] = new VisualParam(1022, "jacket Collar Front", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1023] = new VisualParam(1023, "Jacket Collar Back bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1024] = new VisualParam(1024, "jacket Collar Back", 1, null, String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1025] = new VisualParam(1025, "jacket bottom length upper bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1026] = new VisualParam(1026, "jacket open upper bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1027] = new VisualParam(1027, "jacket bottom length lower bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1028] = new VisualParam(1028, "jacket open lower bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1029] = new VisualParam(1029, "Sleeve Length Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 0.85f);
Params[1030] = new VisualParam(1030, "Shirt Bottom Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1031] = new VisualParam(1031, "Collar Front Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1032] = new VisualParam(1032, "Collar Back Height Cloth", 1, "shirt", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1033] = new VisualParam(1033, "jacket bottom length lower bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1034] = new VisualParam(1034, "jacket open lower bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1035] = new VisualParam(1035, "Waist Height Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1036] = new VisualParam(1036, "Pants Length Cloth", 1, "pants", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1037] = new VisualParam(1037, "jacket bottom length upper bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1038] = new VisualParam(1038, "jacket open upper bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1039] = new VisualParam(1039, "Jacket Sleeve Length bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1040] = new VisualParam(1040, "Jacket Collar Front bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1041] = new VisualParam(1041, "Jacket Collar Back bump", 1, "jacket", String.Empty, String.Empty, String.Empty, 0f, 0f, 1f);
Params[1042] = new VisualParam(1042, "Sleeve Length", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.4f, 0.01f, 1f);
Params[1043] = new VisualParam(1043, "Sleeve Length bump", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.4f, 0.01f, 1f);
Params[1044] = new VisualParam(1044, "Bottom", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1045] = new VisualParam(1045, "Bottom bump", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1046] = new VisualParam(1046, "Collar Front", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1047] = new VisualParam(1047, "Collar Front bump", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1048] = new VisualParam(1048, "Collar Back", 1, "undershirt", String.Empty, "Low", "High", 0.8f, 0f, 1f);
Params[1049] = new VisualParam(1049, "Collar Back bump", 1, "undershirt", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1050] = new VisualParam(1050, "Socks Length bump", 1, "socks", String.Empty, String.Empty, String.Empty, 0.35f, 0f, 1f);
Params[1051] = new VisualParam(1051, "Socks Length bump", 1, "socks", String.Empty, String.Empty, String.Empty, 0.35f, 0f, 1f);
Params[1052] = new VisualParam(1052, "Shoe Height", 1, "shoes", String.Empty, String.Empty, String.Empty, 0.1f, 0f, 1f);
Params[1053] = new VisualParam(1053, "Shoe Height bump", 1, "shoes", String.Empty, String.Empty, String.Empty, 0.1f, 0f, 1f);
Params[1054] = new VisualParam(1054, "Pants Length", 1, "underpants", String.Empty, String.Empty, String.Empty, 0.3f, 0f, 1f);
Params[1055] = new VisualParam(1055, "Pants Length", 1, "underpants", String.Empty, String.Empty, String.Empty, 0.3f, 0f, 1f);
Params[1056] = new VisualParam(1056, "Pants Waist", 1, "underpants", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1057] = new VisualParam(1057, "Pants Waist", 1, "underpants", String.Empty, String.Empty, String.Empty, 0.8f, 0f, 1f);
Params[1058] = new VisualParam(1058, "Glove Length", 1, "gloves", String.Empty, String.Empty, String.Empty, 0.8f, 0.01f, 1f);
Params[1059] = new VisualParam(1059, "Glove Length bump", 1, "gloves", String.Empty, String.Empty, String.Empty, 0.8f, 0.01f, 1f);
Params[1060] = new VisualParam(1060, "Glove Fingers", 1, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0.01f, 1f);
Params[1061] = new VisualParam(1061, "Glove Fingers bump", 1, "gloves", String.Empty, String.Empty, String.Empty, 1f, 0.01f, 1f);
}
}
}