* Added FloatToByte and ByteToFloat helper methods
* Syncing my Utilities folder to fix svn (not everything is done yet) git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@866 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -46,6 +46,8 @@ namespace libsecondlife
|
||||
public const byte MSG_RELIABLE = 0x40;
|
||||
/// <summary>This header flag signals that the message is compressed using zerocoding</summary>
|
||||
public const byte MSG_ZEROCODED = 0x80;
|
||||
/// <summary>Used for converting a byte to a variable range float</summary>
|
||||
public const float OneOverByteMax = 1.0f / (float)byte.MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// Passed to SecondLife.Log() to identify the severity of a log entry
|
||||
@@ -187,6 +189,57 @@ namespace libsecondlife
|
||||
((ulong)bytes[0] << 56));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a float value to a byte given a minimum and maximum range
|
||||
/// </summary>
|
||||
/// <param name="val">Value to convert to a byte</param>
|
||||
/// <param name="lower">Minimum value range</param>
|
||||
/// <param name="upper">Maximum value range</param>
|
||||
/// <returns>A single byte representing the original float value</returns>
|
||||
public static byte FloatToByte(float val, float lower, float upper)
|
||||
{
|
||||
val = Clamp(val, lower, upper);
|
||||
// Normalize the value
|
||||
val -= lower;
|
||||
val /= (upper - lower);
|
||||
|
||||
return (byte)Math.Floor(val * (float)byte.MaxValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a byte to a float value given a minimum and maximum range
|
||||
/// </summary>
|
||||
/// <param name="val">Byte to convert to a float value</param>
|
||||
/// <param name="lower">Minimum value range</param>
|
||||
/// <param name="upper">Maximum value range</param>
|
||||
/// <returns>A float value inclusively between lower and upper</returns>
|
||||
public static float ByteToFloat(byte val, float lower, float upper)
|
||||
{
|
||||
float fval = (float)val * OneOverByteMax;
|
||||
float delta = (upper - lower);
|
||||
fval *= delta;
|
||||
fval += lower;
|
||||
|
||||
// Test for values very close to zero
|
||||
float error = delta * OneOverByteMax;
|
||||
if (Math.Abs(fval) < error)
|
||||
fval = 0.0f;
|
||||
|
||||
return fval;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clamp a given value between a range
|
||||
/// </summary>
|
||||
/// <param name="val">Value to clamp</param>
|
||||
/// <param name="lower">Minimum allowable value</param>
|
||||
/// <param name="upper">Maximum allowable value</param>
|
||||
/// <returns>A value inclusively between lower and upper</returns>
|
||||
public static float Clamp(float val, float lower, float upper)
|
||||
{
|
||||
return Math.Min(Math.Max(val, lower), upper);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a variable length field (byte array) to a UTF8 string
|
||||
/// </summary>
|
||||
|
||||
278
libsecondlife-cs/libsecondlife.Utilities/Appearance.cs
Normal file
278
libsecondlife-cs/libsecondlife.Utilities/Appearance.cs
Normal file
@@ -0,0 +1,278 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Second Life Reverse Engineering 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;
|
||||
using System.Threading;
|
||||
using libsecondlife;
|
||||
using libsecondlife.Utilities.Assets;
|
||||
using libsecondlife.Packets;
|
||||
|
||||
namespace libsecondlife.Utilities.Appearance
|
||||
{
|
||||
public enum TextureIndex
|
||||
{
|
||||
HeadBodypaint = 0,
|
||||
UpperShirt,
|
||||
LowerPants,
|
||||
EyesIris,
|
||||
Hair,
|
||||
UpperBodypaint,
|
||||
LowerBodypaint,
|
||||
LowerShoes,
|
||||
HeadBaked,
|
||||
UpperBaked,
|
||||
LowerBaked,
|
||||
EyesBaked,
|
||||
LowerSocks,
|
||||
UpperJacket,
|
||||
LowerJacket,
|
||||
UpperUndershirt,
|
||||
LowerUnderpants,
|
||||
Skirt,
|
||||
SkirtBaked
|
||||
}
|
||||
|
||||
public enum WearableType : byte
|
||||
{
|
||||
Shape = 0,
|
||||
Skin,
|
||||
Hair,
|
||||
Eyes,
|
||||
Shirt,
|
||||
Pants,
|
||||
Shoes,
|
||||
Socks,
|
||||
Jacket,
|
||||
Gloves,
|
||||
Undershirt,
|
||||
Underpants,
|
||||
Skirt,
|
||||
Invalid = 255
|
||||
};
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A single visual characteristic of an avatar mesh, such as eyebrow height
|
||||
/// </summary>
|
||||
public struct VisualParam
|
||||
{
|
||||
/// <summary>Index of this visual param</summary>
|
||||
public int ParamID;
|
||||
/// <summary>Internal name</summary>
|
||||
public string Name;
|
||||
/// <summary>Group ID this parameter belongs to</summary>
|
||||
public int Group;
|
||||
/// <summary>Name of the wearable this parameter belongs to</summary>
|
||||
public string Wearable;
|
||||
/// <summary>Displayable label of this characteristic</summary>
|
||||
public string Label;
|
||||
/// <summary>Displayable label for the minimum value of this characteristic</summary>
|
||||
public string LabelMin;
|
||||
/// <summary>Displayable label for the maximum value of this characteristic</summary>
|
||||
public string LabelMax;
|
||||
/// <summary>Default value</summary>
|
||||
public float Default;
|
||||
/// <summary>Minimum value</summary>
|
||||
public float Min;
|
||||
/// <summary>Maximum value</summary>
|
||||
public float Max;
|
||||
|
||||
/// <summary>
|
||||
/// Set all the values through the constructor
|
||||
/// </summary>
|
||||
/// <param name="paramID">Index of this visual param</param>
|
||||
/// <param name="name">Internal name</param>
|
||||
/// <param name="group"></param>
|
||||
/// <param name="wearable"></param>
|
||||
/// <param name="label">Displayable label of this characteristic</param>
|
||||
/// <param name="labelMin">Displayable label for the minimum value of this characteristic</param>
|
||||
/// <param name="labelMax">Displayable label for the maximum value of this characteristic</param>
|
||||
/// <param name="def">Default value</param>
|
||||
/// <param name="min">Minimum value</param>
|
||||
/// <param name="max">Maximum value</param>
|
||||
public VisualParam(int paramID, string name, int group, string wearable, string label, string labelMin, string labelMax, float def, float min, float max)
|
||||
{
|
||||
ParamID = paramID;
|
||||
Name = name;
|
||||
Group = group;
|
||||
Wearable = wearable;
|
||||
Label = label;
|
||||
LabelMin = labelMin;
|
||||
LabelMax = labelMax;
|
||||
Default = def;
|
||||
Max = max;
|
||||
Min = min;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class AppearanceManager
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="wearables">A mapping of WearableTypes to KeyValuePairs
|
||||
/// with Asset ID of the wearable as key and Item ID as value</param>
|
||||
public delegate void AgentWearablesCallback(Dictionary<WearableType, KeyValuePair<LLUUID, LLUUID>> wearables);
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public event AgentWearablesCallback OnAgentWearables;
|
||||
|
||||
/// <summary>Total number of wearables for each avatar</summary>
|
||||
public const int WEARABLE_COUNT = 13;
|
||||
|
||||
/// <summary>Map of what wearables are included in each bake</summary>
|
||||
public static readonly WearableType[][] WEARABLE_BAKE_MAP = new WearableType[][]
|
||||
{
|
||||
// Head
|
||||
new WearableType[] { WearableType.Shape, WearableType.Skin, WearableType.Hair, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid },
|
||||
// Upper body
|
||||
new WearableType[] { WearableType.Shape, WearableType.Skin, WearableType.Shirt, WearableType.Jacket, WearableType.Gloves, WearableType.Undershirt, WearableType.Invalid },
|
||||
// Lower body
|
||||
new WearableType[] { WearableType.Shape, WearableType.Skin, WearableType.Pants, WearableType.Shoes, WearableType.Socks, WearableType.Jacket, WearableType.Underpants },
|
||||
// Eyes
|
||||
new WearableType[] { WearableType.Eyes, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid },
|
||||
// Skirt
|
||||
new WearableType[] { WearableType.Skin, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid, WearableType.Invalid }
|
||||
};
|
||||
|
||||
/// <summary></summary>
|
||||
public static readonly LLUUID[] BAKED_TEXTURE_HASH = new LLUUID[]
|
||||
{
|
||||
new LLUUID("18ded8d6-bcfc-e415-8539-944c0f5ea7a6"),
|
||||
new LLUUID("338c29e3-3024-4dbb-998d-7c04cf4fa88f"),
|
||||
new LLUUID("91b4a2c7-1b1a-ba16-9a16-1f8f8dcc1c3f"),
|
||||
new LLUUID("b2cf28af-b840-1071-3c6a-78085d8128b5"),
|
||||
new LLUUID("ea800387-ea1a-14e0-56cb-24f2022f969a")
|
||||
};
|
||||
|
||||
/// <summary>Default avatar texture, used to detect when a custom
|
||||
/// texture is not set for a face</summary>
|
||||
public static readonly LLUUID DEFAULT_AVATAR = new LLUUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97");
|
||||
|
||||
|
||||
private SecondLife Client;
|
||||
private AssetManager Assets;
|
||||
private int WearablesSerialNum = 0;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="assets"></param>
|
||||
public AppearanceManager(SecondLife client, libsecondlife.Utilities.Assets.AssetManager assets)
|
||||
{
|
||||
Client = client;
|
||||
Assets = assets;
|
||||
|
||||
Client.Network.RegisterCallback(PacketType.AgentWearablesUpdate, new NetworkManager.PacketCallback(AgentWearablesHandler));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool SetCurrentAppearance()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void RequestAgentWearables()
|
||||
{
|
||||
AgentWearablesRequestPacket request = new AgentWearablesRequestPacket();
|
||||
request.AgentData.AgentID = Client.Network.AgentID;
|
||||
request.AgentData.SessionID = Client.Network.SessionID;
|
||||
|
||||
Client.Network.SendPacket(request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="wearables">A mapping of WearableType to ItemIDs, must
|
||||
/// have exactly WEARABLE_COUNT entries</param>
|
||||
public void SendAgentWearables(Dictionary<WearableType, LLUUID> wearables)
|
||||
{
|
||||
if (wearables.Count != WEARABLE_COUNT)
|
||||
{
|
||||
Client.Log("SendAgentWearables(): wearables must contain " + WEARABLE_COUNT + " IDs",
|
||||
Helpers.LogLevel.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
AgentIsNowWearingPacket wearing = new AgentIsNowWearingPacket();
|
||||
|
||||
wearing.AgentData.AgentID = Client.Network.AgentID;
|
||||
wearing.AgentData.SessionID = Client.Network.SessionID;
|
||||
wearing.WearableData = new AgentIsNowWearingPacket.WearableDataBlock[WEARABLE_COUNT];
|
||||
|
||||
int i = 0;
|
||||
foreach (KeyValuePair<WearableType, LLUUID> pair in wearables)
|
||||
{
|
||||
wearing.WearableData[i] = new AgentIsNowWearingPacket.WearableDataBlock();
|
||||
wearing.WearableData[i].WearableType = (byte)pair.Key;
|
||||
wearing.WearableData[i].ItemID = pair.Value;
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
Client.Network.SendPacket(wearing);
|
||||
}
|
||||
|
||||
private void AgentWearablesHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
lock (OnAgentWearables)
|
||||
{
|
||||
if (OnAgentWearables != null)
|
||||
{
|
||||
Dictionary<WearableType, KeyValuePair<LLUUID, LLUUID>> wearables = new Dictionary<WearableType, KeyValuePair<LLUUID, LLUUID>>();
|
||||
AgentWearablesUpdatePacket update = (AgentWearablesUpdatePacket)packet;
|
||||
|
||||
foreach (AgentWearablesUpdatePacket.WearableDataBlock block in update.WearableData)
|
||||
{
|
||||
KeyValuePair<LLUUID, LLUUID> ids = new KeyValuePair<LLUUID, LLUUID>(block.AssetID, block.ItemID);
|
||||
WearableType type = (WearableType)block.WearableType;
|
||||
wearables[type] = ids;
|
||||
}
|
||||
|
||||
try { OnAgentWearables(wearables); }
|
||||
catch (Exception e) { Client.Log(e.ToString(), Helpers.LogLevel.Error); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -221,8 +221,6 @@ namespace libsecondlife.Utilities.Assets
|
||||
/// <param name="priority"></param>
|
||||
public void RequestAsset(LLUUID assetID, AssetType type, ChannelType channel, SourceType source, float priority)
|
||||
{
|
||||
// TODO: Should we make this function reusable for changing download priorities?
|
||||
|
||||
AssetTransfer transfer = new AssetTransfer();
|
||||
transfer.ID = LLUUID.Random();
|
||||
transfer.AssetID = assetID;
|
||||
@@ -230,8 +228,6 @@ namespace libsecondlife.Utilities.Assets
|
||||
transfer.Channel = channel;
|
||||
transfer.Source = source;
|
||||
|
||||
Console.WriteLine("transfer.ID: " + transfer.ID.ToString());
|
||||
|
||||
// Add this transfer to the dictionary
|
||||
lock (Transfers) Transfers[transfer.ID] = transfer;
|
||||
|
||||
@@ -267,32 +263,44 @@ namespace libsecondlife.Utilities.Assets
|
||||
|
||||
private void TransferInfoHandler(Packet packet, Simulator simulator)
|
||||
{
|
||||
TransferInfoPacket info = (TransferInfoPacket)packet;
|
||||
|
||||
if (Transfers.ContainsKey(info.TransferInfo.TransferID))
|
||||
if (OnAssetReceived != null)
|
||||
{
|
||||
AssetTransfer transfer = Transfers[info.TransferInfo.TransferID];
|
||||
ChannelType channel = ChannelType.Unknown;
|
||||
StatusCode status = StatusCode.Unknown;
|
||||
TargetType target = TargetType.Unknown;
|
||||
TransferInfoPacket info = (TransferInfoPacket)packet;
|
||||
|
||||
// Attempt to recover enumeration values out of the integers
|
||||
channel = (ChannelType)info.TransferInfo.ChannelType;
|
||||
status = (StatusCode)info.TransferInfo.Status;
|
||||
target = (TargetType)info.TransferInfo.TargetType;
|
||||
if (Transfers.ContainsKey(info.TransferInfo.TransferID))
|
||||
{
|
||||
AssetTransfer transfer = Transfers[info.TransferInfo.TransferID];
|
||||
ChannelType channel = ChannelType.Unknown;
|
||||
StatusCode status = StatusCode.Unknown;
|
||||
TargetType target = TargetType.Unknown;
|
||||
|
||||
transfer.Channel = channel;
|
||||
transfer.Status = status;
|
||||
transfer.Target = target;
|
||||
transfer.Size = info.TransferInfo.Size;
|
||||
transfer.AssetData = new byte[transfer.Size];
|
||||
}
|
||||
else
|
||||
{
|
||||
Client.Log("Received a TransferInfo packet for an asset we didn't request, TransferID: " +
|
||||
info.TransferInfo.TransferID, Helpers.LogLevel.Warning);
|
||||
// Attempt to recover enumeration values out of the integers
|
||||
channel = (ChannelType)info.TransferInfo.ChannelType;
|
||||
status = (StatusCode)info.TransferInfo.Status;
|
||||
target = (TargetType)info.TransferInfo.TargetType;
|
||||
|
||||
Console.WriteLine(info.ToString());
|
||||
transfer.Channel = channel;
|
||||
transfer.Status = status;
|
||||
transfer.Target = target;
|
||||
transfer.Size = info.TransferInfo.Size;
|
||||
transfer.AssetData = new byte[transfer.Size];
|
||||
|
||||
// TODO: Once we support mid-transfer status checking and aborting this
|
||||
// will need to become smarter
|
||||
if (transfer.Status != StatusCode.OK)
|
||||
{
|
||||
lock (Transfers) Transfers.Remove(transfer.ID);
|
||||
|
||||
// Fire the event with our transfer that contains Success = false;
|
||||
try { OnAssetReceived(transfer); }
|
||||
catch (Exception e) { Client.Log(e.ToString(), Helpers.LogLevel.Error); }
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Client.Log("Received a TransferInfo packet for an asset we didn't request, TransferID: " +
|
||||
info.TransferInfo.TransferID, Helpers.LogLevel.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,7 +309,6 @@ namespace libsecondlife.Utilities.Assets
|
||||
if (OnAssetReceived != null)
|
||||
{
|
||||
TransferPacketPacket asset = (TransferPacketPacket)packet;
|
||||
Console.WriteLine(asset.ToString());
|
||||
|
||||
if (Transfers.ContainsKey(asset.TransferData.TransferID))
|
||||
{
|
||||
@@ -339,7 +346,9 @@ namespace libsecondlife.Utilities.Assets
|
||||
else
|
||||
{
|
||||
Client.Log("Received a TransferPacket with a data length of " + asset.TransferData.Data.Length +
|
||||
" bytes!", Helpers.LogLevel.Error);
|
||||
" bytes! Bailing out...", Helpers.LogLevel.Error);
|
||||
|
||||
lock (Transfers) Transfers.Remove(transfer.ID);
|
||||
|
||||
// fire the even with out transfer that contains Success = false;
|
||||
try { OnAssetReceived(transfer); }
|
||||
|
||||
349
libsecondlife-cs/libsecondlife.Utilities/_VisualParam_.cs
Normal file
349
libsecondlife-cs/libsecondlife.Utilities/_VisualParam_.cs
Normal file
@@ -0,0 +1,349 @@
|
||||
using System;
|
||||
|
||||
namespace libsecondlife.Utilities.Appearance
|
||||
{
|
||||
public static class VisualParams
|
||||
{
|
||||
public static VisualParam[] Params = new VisualParam[]
|
||||
{
|
||||
new VisualParam(32, "Male_Skeleton", 1, "shape", "", "Female", "Male", 0f, 0f, 1f),
|
||||
new VisualParam(33, "Height", 0, "shape", "Height", "Short", "Tall", -2.3f, -2.3f, 2f),
|
||||
new VisualParam(34, "Thickness", 0, "shape", "Body Thickness", "Body Thin", "Body Thick", -0.7f, -0.7f, 1.5f),
|
||||
new VisualParam(36, "Shoulders", 0, "shape", "Shoulders", "Narrow", "Broad", -0.5f, -1.8f, 1.4f),
|
||||
new VisualParam(37, "Hip Width", 0, "shape", "Hip Width", "Narrow", "Wide", -3.2f, -3.2f, 2.8f),
|
||||
new VisualParam(842, "Hip Length", 0, "shape", "", "Short hips", "Long Hips", -1f, -1f, 1f),
|
||||
new VisualParam(38, "Torso Length", 0, "shape", "", "Short Torso", "Long Torso", -1f, -1f, 1f),
|
||||
new VisualParam(195, "EyeBone_Spread", 1, "shape", "", "Eyes Together", "Eyes Spread", -1f, -1f, 1f),
|
||||
new VisualParam(661, "EyeBone_Head_Shear", 1, "shape", "", "Eyes Shear Left Up", "Eyes Shear Right Up", -2f, -2f, 2f),
|
||||
new VisualParam(772, "EyeBone_Head_Elongate", 1, "shape", "", "Eyes Short Head", "Eyes Long Head", -1f, -1f, 1f),
|
||||
new VisualParam(768, "EyeBone_Bug", 1, "shape", "", "Eyes Sunken", "Eyes Bugged", -2f, -2f, 2f),
|
||||
new VisualParam(655, "Head Size", 1, "shape", "Head Size", "Small Head", "Big Head", -0.25f, -0.25f, 0.1f),
|
||||
new VisualParam(197, "Shoe_Heels", 1, "shoes", "", "No Heels", "High Heels", 0f, 0f, 1f),
|
||||
new VisualParam(502, "Shoe_Platform", 1, "shoes", "", "No Heels", "High Heels", 0f, 0f, 1f),
|
||||
new VisualParam(675, "Hand Size", 0, "shape", "", "Small Hands", "Large Hands", -0.3f, -0.3f, 0.3f),
|
||||
new VisualParam(683, "Neck Thickness", 0, "shape", "", "Skinny Neck", "Thick Neck", -0.15f, -0.4f, 0.2f),
|
||||
new VisualParam(689, "EyeBone_Big_Eyes", 1, "shape", "", "Eyes Back", "Eyes Forward", -1f, -1f, 1f),
|
||||
new VisualParam(692, "Leg Length", 0, "shape", "", "Short Legs", "Long Legs", -1f, -1f, 1f),
|
||||
new VisualParam(693, "Arm Length", 0, "shape", "", "Short Arms", "Long arms", 0.6f, -1f, 1f),
|
||||
new VisualParam(756, "Neck Length", 0, "shape", "", "Short Neck", "Long Neck", 0f, -1f, 1f),
|
||||
new VisualParam(180, "Hair_Volume", 1, "hair", "Hair Volume", "Less", "More", 0f, 0f, 1.3f),
|
||||
new VisualParam(761, "Hair_Volume_Small", 1, "hair", "Hair Volume", "Less", "More", 0f, 0f, 1.3f),
|
||||
new VisualParam(181, "Hair_Big_Front", 0, "hair", "Big Hair Front", "Less", "More", 0.14f, -1f, 1f),
|
||||
new VisualParam(182, "Hair_Big_Top", 0, "hair", "Big Hair Top", "Less", "More", 0.7f, -1f, 1f),
|
||||
new VisualParam(183, "Hair_Big_Back", 0, "hair", "Big Hair Back", "Less", "More", 0.05f, -1f, 1f),
|
||||
new VisualParam(184, "Hair_Spiked", 0, "hair", "Spiked Hair", "No Spikes", "Big Spikes", 0f, 0f, 1f),
|
||||
new VisualParam(140, "Hair_Part_Middle", 0, "hair", "Middle Part", "No Part", "Part", 0f, 0f, 2f),
|
||||
new VisualParam(141, "Hair_Part_Right", 0, "hair", "Right Part", "No Part", "Part", 0f, 0f, 2f),
|
||||
new VisualParam(142, "Hair_Part_Left", 0, "hair", "Left Part", "No Part", "Part", 0f, 0f, 2f),
|
||||
new VisualParam(143, "Hair_Sides_Full", 0, "hair", "Full Hair Sides", "Mowhawk", "Full Sides", 0.125f, -4f, 1.5f),
|
||||
new VisualParam(144, "Bangs_Front_Up", 1, "hair", "Front Bangs Up", "Bangs", "Bangs Up", 0f, 0f, 1f),
|
||||
new VisualParam(145, "Bangs_Front_Down", 1, "hair", "Front Bangs Down", "Bangs", "Bangs Down", 0f, 0f, 5f),
|
||||
new VisualParam(146, "Bangs_Sides_Up", 1, "hair", "Side Bangs Up", "Side Bangs", "Side Bangs Up", 0f, 0f, 1f),
|
||||
new VisualParam(147, "Bangs_Sides_Down", 1, "hair", "Side Bangs Down", "Side Bangs", "Side Bangs Down", 0f, 0f, 2f),
|
||||
new VisualParam(148, "Bangs_Back_Up", 1, "hair", "Back Bangs Up", "Back Bangs", "Back Bangs Up", 0f, 0f, 1f),
|
||||
new VisualParam(149, "Bangs_Back_Down", 1, "hair", "Back Bangs Down", "Back Bangs", "Back Bangs Down", 0f, 0f, 2f),
|
||||
new VisualParam(171, "Hair_Front_Down", 1, "hair", "Front Hair Down", "Front Hair", "Front Hair Down", 0f, 0f, 1f),
|
||||
new VisualParam(172, "Hair_Front_Up", 1, "hair", "Front Hair Up", "Front Hair", "Front Hair Up", 0f, 0f, 1f),
|
||||
new VisualParam(173, "Hair_Sides_Down", 1, "hair", "Sides Hair Down", "Sides Hair", "Sides Hair Down", 0f, 0f, 1f),
|
||||
new VisualParam(174, "Hair_Sides_Up", 1, "hair", "Sides Hair Up", "Sides Hair", "Sides Hair Up", 0f, 0f, 1f),
|
||||
new VisualParam(175, "Hair_Back_Down", 1, "hair", "Back Hair Down", "Back Hair", "Back Hair Down", 0f, 0f, 3f),
|
||||
new VisualParam(176, "Hair_Back_Up", 1, "hair", "Back Hair Up", "Back Hair", "Back Hair Up", 0f, 0f, 1f),
|
||||
new VisualParam(177, "Hair_Rumpled", 0, "hair", "Rumpled Hair", "Smooth Hair", "Rumpled Hair", 0f, 0f, 1f),
|
||||
new VisualParam(178, "Hair_Swept_Back", 1, "hair", "Swept Back Hair", "NotHair", "Swept Back", 0f, 0f, 1f),
|
||||
new VisualParam(179, "Hair_Swept_Forward", 1, "hair", "Swept Forward Hair", "Hair", "Swept Forward", 0f, 0f, 1f),
|
||||
new VisualParam(190, "Hair_Tilt_Right", 1, "hair", "Hair Tilted Right", "Hair", "Tilt Right", 0f, 0f, 1f),
|
||||
new VisualParam(191, "Hair_Tilt_Left", 1, "hair", "Hair Tilted Left", "Hair", "Tilt Left", 0f, 0f, 1f),
|
||||
new VisualParam(192, "Bangs_Part_Middle", 0, "hair", "Part Bangs", "No Part", "Part Bangs", 0f, 0f, 1f),
|
||||
new VisualParam(640, "Hair_Egg_Head", 1, "hair", "", "", "", -1.3f, -1.3f, 1f),
|
||||
new VisualParam(641, "Hair_Squash_Stretch_Head", 1, "hair", "", "", "", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(642, "Hair_Square_Head", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(643, "Hair_Round_Head", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(644, "Hair_Forehead_Round", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(645, "Hair_Forehead_Slant", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(774, "Shear_Head_Hair", 1, "hair", "", "", "", -2f, -2f, 2f),
|
||||
new VisualParam(771, "Elongate_Head_Hair", 1, "hair", "", "", "", -1f, -1f, 1f),
|
||||
new VisualParam(674, "Hair_Shear_Back", 0, "hair", "Shear Back", "Full Back", "Sheared Back", -0.3f, -1f, 2f),
|
||||
new VisualParam(762, "Hair_Shear_Front", 0, "hair", "Shear Front", "Full Front", "Sheared Front", 0f, 0f, 3f),
|
||||
new VisualParam(754, "Hair_Taper_Back", 0, "hair", "Taper Back", "Wide Back", "Narrow Back", 0f, -1f, 2f),
|
||||
new VisualParam(755, "Hair_Taper_Front", 0, "hair", "Taper Front", "Wide Front", "Narrow Front", 0.05f, -1.5f, 1.5f),
|
||||
new VisualParam(782, "Hair_Pigtails_Short", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(783, "Hair_Pigtails_Med", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(790, "Hair_Pigtails_Medlong", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(784, "Hair_Pigtails_Long", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(786, "Hair_Ponytail_Short", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(787, "Hair_Ponytail_Med", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(788, "Hair_Ponytail_Long", 1, "hair", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(1, "Big_Brow", 0, "shape", "Brow Size", "Small", "Large", -0.3f, -0.3f, 2f),
|
||||
new VisualParam(2, "Nose_Big_Out", 0, "shape", "Nose Size", "Small", "Large", -0.8f, -0.8f, 2.5f),
|
||||
new VisualParam(4, "Broad_Nostrils", 0, "shape", "Nostril Width", "Narrow", "Broad", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(759, "Low_Septum_Nose", 0, "shape", "Nostril Division", "High", "Low", 0.5f, -1f, 1.5f),
|
||||
new VisualParam(517, "Wide_Nose", 0, "shape", "Nose Width", "Narrow", "Wide", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(5, "Cleft_Chin", 0, "shape", "Chin Cleft", "Round", "Cleft", -0.1f, -0.1f, 1f),
|
||||
new VisualParam(6, "Bulbous_Nose_Tip", 0, "shape", "Nose Tip Shape", "Pointy", "Bulbous", -0.3f, -0.3f, 1f),
|
||||
new VisualParam(7, "Weak_Chin", 0, "shape", "Chin Angle", "Chin Out", "Chin In", -0.5f, -0.5f, 0.5f),
|
||||
new VisualParam(8, "Double_Chin", 0, "shape", "Chin-Neck", "Tight Chin", "Double Chin", -0.5f, -0.5f, 1.5f),
|
||||
new VisualParam(10, "Sunken_Cheeks", 0, "shape", "Lower Cheeks", "Well-Fed", "Sunken", -1.5f, -1.5f, 3f),
|
||||
new VisualParam(11, "Noble_Nose_Bridge", 0, "shape", "Upper Bridge", "Low", "High", -0.5f, -0.5f, 1.5f),
|
||||
new VisualParam(758, "Lower_Bridge_Nose", 0, "shape", "Lower Bridge", "Low", "High", -1.5f, -1.5f, 1.5f),
|
||||
new VisualParam(12, "Jowls", 0, "shape", "", "Less", "More", -0.5f, -0.5f, 2.5f),
|
||||
new VisualParam(13, "Cleft_Chin_Upper", 0, "shape", "Upper Chin Cleft", "Round", "Cleft", 0f, 0f, 1.5f),
|
||||
new VisualParam(14, "High_Cheek_Bones", 0, "shape", "Cheek Bones", "Low", "High", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(15, "Ears_Out", 0, "shape", "Ear Angle", "In", "Out", -0.5f, -0.5f, 1.5f),
|
||||
new VisualParam(870, "Pointy_Eyebrows", 1, "hair", "Eyebrow Points", "Smooth", "Pointy", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(17, "Square_Jaw", 0, "shape", "Jaw Shape", "Pointy", "Square", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(18, "Puffy_Upper_Cheeks", 0, "shape", "Upper Cheeks", "Thin", "Puffy", -1.5f, -1.5f, 2.5f),
|
||||
new VisualParam(19, "Upturned_Nose_Tip", 0, "shape", "Nose Tip Angle", "Downturned", "Upturned", -1.5f, -1.5f, 1f),
|
||||
new VisualParam(20, "Bulbous_Nose", 0, "shape", "Nose Thickness", "Thin Nose", "Bulbous Nose", -0.5f, -0.5f, 1.5f),
|
||||
new VisualParam(21, "Upper_Eyelid_Fold", 0, "shape", "Upper Eyelid Fold", "Uncreased", "Creased", -0.2f, -0.2f, 1.3f),
|
||||
new VisualParam(22, "Attached_Earlobes", 0, "shape", "Attached Earlobes", "Unattached", "Attached", 0f, 0f, 1f),
|
||||
new VisualParam(23, "Baggy_Eyes", 0, "shape", "Eye Bags", "Smooth", "Baggy", -0.5f, -0.5f, 1.5f),
|
||||
new VisualParam(765, "Puffy_Lower_Lids", 0, "shape", "Puffy Eyelids", "Flat", "Puffy", -0.3f, -0.3f, 2.5f),
|
||||
new VisualParam(24, "Wide_Eyes", 0, "shape", "Eye Opening", "Narrow", "Wide", -1.5f, -1.5f, 2f),
|
||||
new VisualParam(25, "Wide_Lip_Cleft", 0, "shape", "Lip Cleft", "Narrow", "Wide", -0.8f, -0.8f, 1.5f),
|
||||
new VisualParam(764, "Lip_Cleft_Deep", 0, "shape", "Lip Cleft Depth", "Shallow", "Deep", -0.5f, -0.5f, 1.2f),
|
||||
new VisualParam(27, "Wide_Nose_Bridge", 0, "shape", "Bridge Width", "Narrow", "Wide", -1.3f, -1.3f, 1.2f),
|
||||
new VisualParam(872, "Arced_Eyebrows", 1, "hair", "Eyebrow Arc", "Flat", "Arced", 0f, 0f, 1f),
|
||||
new VisualParam(871, "Lower_Eyebrows", 1, "hair", "Eyebrow Height", "Higher", "Lower", -2f, -2f, 2f),
|
||||
new VisualParam(35, "Big_Ears", 0, "shape", "Ear Size", "Small", "Large", -1f, -1f, 2f),
|
||||
new VisualParam(796, "Pointy_Ears", 0, "shape", "Ear Tips", "Flat", "Pointy", -0.4f, -0.4f, 3f),
|
||||
new VisualParam(185, "Deep_Chin", 0, "shape", "Chin Depth", "Shallow", "Deep", -1f, -1f, 1f),
|
||||
new VisualParam(186, "Egg_Head", 1, "shape", "Egg Head", "Chin Heavy", "Forehead Heavy", -1.3f, -1.3f, 1f),
|
||||
new VisualParam(187, "Squash_Stretch_Head", 1, "shape", "Squash/Stretch Head", "Squash Head", "Stretch Head", -0.5f, -0.5f, 1f),
|
||||
new VisualParam(188, "Square_Head", 1, "shape", "", "Less Square", "More Square", 0f, 0f, 0.7f),
|
||||
new VisualParam(189, "Round_Head", 1, "shape", "", "Less Round", "More Round", 0f, 0f, 1f),
|
||||
new VisualParam(194, "Eye_Spread", 1, "shape", "", "Eyes Together", "Eyes Spread", -2f, -2f, 2f),
|
||||
new VisualParam(400, "Displace_Hair_Facial", 1, "hair", "Hair Thickess", "Cropped Hair", "Bushy Hair", 0f, 0f, 2f),
|
||||
new VisualParam(506, "Mouth_Height", 0, "shape", "Mouth Position", "High", "Low", -2f, -2f, 2f),
|
||||
new VisualParam(633, "Fat_Head", 1, "shape", "Fat Head", "Skinny", "Fat", 0f, 0f, 1f),
|
||||
new VisualParam(630, "Forehead_Round", 1, "shape", "Round Forehead", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(631, "Forehead_Slant", 1, "shape", "Slanted Forehead", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(650, "Eyelid_Corner_Up", 0, "shape", "Outer Eye Corner", "Corner Down", "Corner Up", -1.3f, -1.3f, 1.2f),
|
||||
new VisualParam(880, "Eyelid_Inner_Corner_Up", 0, "shape", "Inner Eye Corner", "Corner Down", "Corner Up", -1.3f, -1.3f, 1.2f),
|
||||
new VisualParam(653, "Tall_Lips", 0, "shape", "Lip Fullness", "Less Full", "More Full", -1f, -1f, 2f),
|
||||
new VisualParam(656, "Crooked_Nose", 0, "shape", "Crooked Nose", "Nose Left", "Nose Right", -2f, -2f, 2f),
|
||||
new VisualParam(657, "Smile_Mouth", 1, "shape", "Mouth Corner", "Corner Normal", "Corner Up", 0f, 0f, 1.4f),
|
||||
new VisualParam(658, "Frown_Mouth", 1, "shape", "Mouth Corner", "Corner Normal", "Corner Down", 0f, 0f, 1.2f),
|
||||
new VisualParam(797, "Fat_Upper_Lip", 1, "shape", "Fat Upper Lip", "Normal Upper", "Fat Upper", 0f, 0f, 1.5f),
|
||||
new VisualParam(798, "Fat_Lower_Lip", 1, "shape", "Fat Lower Lip", "Normal Lower", "Fat Lower", 0f, 0f, 1.5f),
|
||||
new VisualParam(660, "Shear_Head", 1, "shape", "Shear Face", "Shear Left", "Shear Right", 0f, -2f, 2f),
|
||||
new VisualParam(770, "Elongate_Head", 1, "shape", "Shear Face", "Flat Head", "Long Head", 0f, -1f, 1f),
|
||||
new VisualParam(663, "Shift_Mouth", 0, "shape", "Shift Mouth", "Shift Left", "Shift Right", 0f, -2f, 2f),
|
||||
new VisualParam(664, "Pop_Eye", 0, "shape", "Eye Pop", "Pop Right Eye", "Pop Left Eye", 0f, -1.3f, 1.3f),
|
||||
new VisualParam(760, "Jaw_Angle", 0, "shape", "Jaw Angle", "Low Jaw", "High Jaw", 0f, -1.2f, 2f),
|
||||
new VisualParam(665, "Jaw_Jut", 0, "shape", "Jaw Jut", "Overbite", "Underbite", 0f, -2f, 2f),
|
||||
new VisualParam(686, "Head_Eyes_Big", 1, "shape", "Eye Size", "Beady Eyes", "Anime Eyes", 0f, -2f, 2f),
|
||||
new VisualParam(767, "Bug_Eyed_Head", 1, "shape", "Eye Depth", "Sunken Eyes", "Bug Eyes", 0f, -2f, 2f),
|
||||
new VisualParam(518, "Eyelashes_Long", 0, "shape", "Eyelash Length", "Short", "Long", -0.3f, -0.3f, 1.5f),
|
||||
new VisualParam(626, "Big_Chest", 1, "shape", "Chest Size", "Small", "Large", 0f, 0f, 1f),
|
||||
new VisualParam(627, "Small_Chest", 1, "shape", "Chest Size", "Large", "Small", 0f, 0f, 1f),
|
||||
new VisualParam(843, "No_Chest", 1, "shape", "Chest Size", "Some", "None", 0f, 0f, 1f),
|
||||
new VisualParam(106, "Muscular_Torso", 1, "shape", "Torso Muscles", "Regular", "Muscular", 0f, 0f, 1.4f),
|
||||
new VisualParam(648, "Scrawny_Torso", 1, "shape", "Torso Muscles", "Regular", "Scrawny", 0f, 0f, 1.3f),
|
||||
new VisualParam(677, "Scrawny_Torso_Male", 1, "shape", "Torso Scrawny", "Regular", "Scrawny", 0f, 0f, 1.3f),
|
||||
new VisualParam(634, "Fat_Torso", 1, "shape", "Fat Torso", "skinny", "fat", 0f, 0f, 1f),
|
||||
new VisualParam(507, "Breast_Gravity", 0, "shape", "Breast Buoyancy", "Less Gravity", "More Gravity", 0f, -1.5f, 2f),
|
||||
new VisualParam(840, "Shirtsleeve_flair", 0, "shirt", "Sleeve Looseness", "Tight Sleeves", "Loose Sleeves", 0f, 0f, 1.5f),
|
||||
new VisualParam(684, "Breast_Female_Cleavage", 0, "shape", "Breast Cleavage", "Separate", "Join", 0f, -0.3f, 1.3f),
|
||||
new VisualParam(685, "Chest_Male_No_Pecs", 0, "shape", "Pectorals", "Big Pectorals", "Sunken Chest", 0f, -0.5f, 1.1f),
|
||||
new VisualParam(151, "Big_Butt_Legs", 1, "shape", "Butt Size", "Regular", "Large", 0f, 0f, 1f),
|
||||
new VisualParam(794, "Small_Butt", 1, "shape", "Butt Size", "Regular", "Small", 0f, 0f, 1f),
|
||||
new VisualParam(152, "Muscular_Legs", 1, "shape", "Leg Muscles", "Regular Muscles", "More Muscles", 0f, 0f, 1.5f),
|
||||
new VisualParam(651, "Scrawny_Legs", 1, "shape", "Scrawny Leg", "Regular Muscles", "Less Muscles", 0f, 0f, 1.5f),
|
||||
new VisualParam(853, "Bowed_Legs", 1, "shape", "Knee Angle", "", "", -1f, -1f, 1f),
|
||||
new VisualParam(500, "Shoe_Heel_Height", 1, "shoes", "Heel Height", "Low Heels", "High Heels", 0f, 0f, 1f),
|
||||
new VisualParam(501, "Shoe_Platform_Height", 1, "shoes", "Platform Height", "Low Platforms", "High Platforms", 0f, 0f, 1f),
|
||||
new VisualParam(508, "Shoe_Platform_Width", 0, "shoes", "Platform Width", "Narrow", "Wide", -1f, -1f, 2f),
|
||||
new VisualParam(509, "Shoe_Heel_Point", 1, "shoes", "Heel Shape", "Default Heels", "Pointy Heels", 0f, 0f, 1f),
|
||||
new VisualParam(510, "Shoe_Heel_Thick", 1, "shoes", "Heel Shape", "default Heels", "Thick Heels", 0f, 0f, 1f),
|
||||
new VisualParam(511, "Shoe_Toe_Point", 1, "shoes", "Toe Shape", "Default Toe", "Pointy Toe", 0f, 0f, 1f),
|
||||
new VisualParam(512, "Shoe_Toe_Square", 1, "shoes", "Toe Shape", "Default Toe", "Square Toe", 0f, 0f, 1f),
|
||||
new VisualParam(654, "Shoe_Toe_Thick", 0, "shoes", "Toe Thickness", "Flat Toe", "Thick Toe", 0f, 0f, 2f),
|
||||
new VisualParam(515, "Foot_Size", 0, "shape", "Foot Size", "Small", "Big", -1f, -1f, 3f),
|
||||
new VisualParam(625, "Leg_Pantflair", 0, "pants", "Cuff Flare", "Tight Cuffs", "Flared Cuffs", 0f, 0f, 1.5f),
|
||||
new VisualParam(638, "Low_Crotch", 0, "pants", "Pants Crotch", "High and Tight", "Low and Loose", 0f, 0f, 1.3f),
|
||||
new VisualParam(635, "Fat_Legs", 1, "shape", "Fat Torso", "skinny", "fat", 0f, 0f, 1f),
|
||||
new VisualParam(879, "Male_Package", 0, "shape", "Package", "Coin Purse", "Duffle Bag", 0f, -0.5f, 2f),
|
||||
new VisualParam(679, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f),
|
||||
new VisualParam(687, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f),
|
||||
new VisualParam(694, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f),
|
||||
new VisualParam(695, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f),
|
||||
new VisualParam(680, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f),
|
||||
new VisualParam(688, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f),
|
||||
new VisualParam(681, "Eyeball_Size", 1, "shape", "Eyeball Size", "small eye", "big eye", -0.25f, -0.25f, 0.1f),
|
||||
new VisualParam(691, "Eyeball_Size", 1, "shape", "Big Eyeball", "small eye", "big eye", -0.25f, -0.25f, 0.25f),
|
||||
new VisualParam(845, "skirt_poofy", 1, "skirt", "poofy skirt", "less poofy", "more poofy", 0f, 0f, 1.5f),
|
||||
new VisualParam(846, "skirt_loose", 1, "skirt", "loose skirt", "form fitting", "loose", 0f, 0f, 1f),
|
||||
new VisualParam(866, "skirt_tight", 1, "skirt", "tight skirt", "form fitting", "loose", 0f, 0f, 1f),
|
||||
new VisualParam(867, "skirt_smallbutt", 1, "skirt", "tight skirt", "form fitting", "loose", 0f, 0f, 1f),
|
||||
new VisualParam(848, "skirt_bustle", 0, "skirt", "bustle skirt", "no bustle", "more bustle", 0.2f, 0f, 2f),
|
||||
new VisualParam(847, "skirt_bowlegs", 1, "skirt", "legs skirt", "", "", 0f, -1f, 1f),
|
||||
new VisualParam(111, "Pigment", 0, "skin", "", "Light", "Dark", 0.5f, 0f, 1f),
|
||||
new VisualParam(110, "Red Skin", 0, "skin", "Ruddiness", "Pale", "Ruddy", 0f, 0f, 0.1f),
|
||||
new VisualParam(108, "Rainbow Color", 0, "skin", "", "None", "Wild", 0f, 0f, 1f),
|
||||
new VisualParam(114, "Blonde Hair", 0, "hair", "", "Black", "Blonde", 0.5f, 0f, 1f),
|
||||
new VisualParam(113, "Red Hair", 0, "hair", "", "No Red", "Very Red", 0f, 0f, 1f),
|
||||
new VisualParam(115, "White Hair", 0, "hair", "", "No White", "All White", 0f, 0f, 1f),
|
||||
new VisualParam(112, "Rainbow Color", 0, "hair", "", "None", "Wild", 0f, 0f, 1f),
|
||||
new VisualParam(99, "Eye Color", 0, "eyes", "", "Natural", "Unnatural", 0f, 0f, 1f),
|
||||
new VisualParam(98, "Eye Lightness", 0, "eyes", "", "Darker", "Lighter", 0f, 0f, 1f),
|
||||
new VisualParam(158, "Shading", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(159, "Shading", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(116, "Rosy Complexion", 0, "skin", "", "Less Rosy", "More Rosy", 0f, 0f, 1f),
|
||||
new VisualParam(117, "Lip Pinkness", 0, "skin", "", "Darker", "Pinker", 0f, 0f, 1f),
|
||||
new VisualParam(118, "Wrinkles", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(165, "Freckles", 0, "skin", "", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(1001, "Eyebrow Size", 1, "hair", "", "", "", 0.5f, 0f, 1f),
|
||||
new VisualParam(700, "Lipstick Color", 0, "skin", "", "Pink", "Black", 0.25f, 0f, 1f),
|
||||
new VisualParam(701, "Lipstick", 0, "skin", "", "No Lipstick", "More Lipstick", 0f, 0f, 0.9f),
|
||||
new VisualParam(702, "Lipgloss", 0, "skin", "", "No Lipgloss", "Glossy", 0f, 0f, 1f),
|
||||
new VisualParam(704, "Blush", 0, "skin", "", "No Blush", "More Blush", 0f, 0f, 0.9f),
|
||||
new VisualParam(705, "Blush Color", 0, "skin", "", "Pink", "Orange", 0.5f, 0f, 1f),
|
||||
new VisualParam(711, "Blush Opacity", 0, "skin", "", "Clear", "Opaque", 0.5f, 0f, 1f),
|
||||
new VisualParam(708, "Out Shdw Color", 0, "skin", "", "Light", "Dark", 0f, 0f, 1f),
|
||||
new VisualParam(706, "Out Shdw Opacity", 0, "skin", "", "Clear", "Opaque", 0.6f, 0.2f, 1f),
|
||||
new VisualParam(707, "Outer Shadow", 0, "skin", "", "No Eyeshadow", "More Eyeshadow", 0f, 0f, 0.7f),
|
||||
new VisualParam(712, "In Shdw Color", 0, "skin", "", "Light", "Dark", 0f, 0f, 1f),
|
||||
new VisualParam(713, "In Shdw Opacity", 0, "skin", "", "Clear", "Opaque", 0.7f, 0.2f, 1f),
|
||||
new VisualParam(709, "Inner Shadow", 0, "skin", "", "No Eyeshadow", "More Eyeshadow", 0f, 0f, 1f),
|
||||
new VisualParam(703, "Eyeliner", 0, "skin", "", "No Eyeliner", "Full Eyeliner", 0f, 0f, 1f),
|
||||
new VisualParam(714, "Eyeliner Color", 0, "skin", "", "Dark Green", "Black", 0f, 0f, 1f),
|
||||
new VisualParam(751, "5 O'Clock Shadow", 1, "hair", "", "Dense hair", "Shadow hair", 0.7f, 0f, 1f),
|
||||
new VisualParam(125, "Shading", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(126, "Shading", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(776, "freckles upper", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(1045, "Bottom bump", 1, "undershirt", "", "", "", 0.8f, 0f, 1f),
|
||||
new VisualParam(821, "undershirt_red", 0, "undershirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(822, "undershirt_green", 0, "undershirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(823, "undershirt_blue", 0, "undershirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(710, "Nail Polish", 0, "skin", "", "No Polish", "Painted Nails", 0f, 0f, 1f),
|
||||
new VisualParam(715, "Nail Polish Color", 0, "skin", "", "Pink", "Black", 0f, 0f, 1f),
|
||||
new VisualParam(827, "gloves_red", 0, "gloves", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(829, "gloves_green", 0, "gloves", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(830, "gloves_blue", 0, "gloves", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(868, "Shirt Wrinkles", 0, "shirt", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(803, "shirt_red", 0, "shirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(804, "shirt_green", 0, "shirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(805, "shirt_blue", 0, "shirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(875, "jacket upper Wrinkles", 1, "jacket", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(831, "upper_jacket_red", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(832, "upper_jacket_green", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(833, "upper_jacket_blue", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(620, "bottom length upper", 1, "jacket", "", "hi cut", "low cut", 0.8f, 0f, 1f),
|
||||
new VisualParam(622, "open upper", 1, "jacket", "", "closed", "open", 0.8f, 0f, 1f),
|
||||
new VisualParam(160, "Shading", 1, "pants", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(161, "Shading", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(777, "freckles lower", 1, "skin", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(1055, "Pants Length", 1, "underpants", "", "", "", 0.3f, 0f, 1f),
|
||||
new VisualParam(1057, "Pants Waist", 1, "underpants", "", "", "", 0.8f, 0f, 1f),
|
||||
new VisualParam(824, "underpants_red", 0, "underpants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(825, "underpants_green", 0, "underpants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(826, "underpants_blue", 0, "underpants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(818, "socks_red", 0, "socks", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(819, "socks_green", 0, "socks", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(820, "socks_blue", 0, "socks", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(812, "shoes_red", 0, "shoes", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(813, "shoes_green", 0, "shoes", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(817, "shoes_blue", 0, "shoes", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(869, "Pants Wrinkles", 0, "pants", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(806, "pants_red", 0, "pants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(807, "pants_green", 0, "pants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(808, "pants_blue", 0, "pants", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(876, "jacket upper Wrinkles", 1, "jacket", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(809, "lower_jacket_red", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(810, "lower_jacket_green", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(811, "lower_jacket_blue", 1, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(621, "bottom length lower", 1, "jacket", "", "hi cut", "low cut", 0.8f, 0f, 1f),
|
||||
new VisualParam(623, "open lower", 1, "jacket", "", "open", "closed", 0.8f, 0f, 1f),
|
||||
new VisualParam(921, "skirt_red", 0, "skirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(922, "skirt_green", 0, "skirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(923, "skirt_blue", 0, "skirt", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(858, "Skirt Length", 0, "skirt", "", "Short", "Long", 0.4f, 0.01f, 1f),
|
||||
new VisualParam(859, "Slit Front", 0, "skirt", "", "Open Front", "Closed Front", 1f, 0f, 1f),
|
||||
new VisualParam(860, "Slit Back", 0, "skirt", "", "Open Back", "Closed Back", 1f, 0f, 1f),
|
||||
new VisualParam(861, "Slit Left", 0, "skirt", "", "Open Left", "Closed Left", 1f, 0f, 1f),
|
||||
new VisualParam(862, "Slit Right", 0, "skirt", "", "Open Right", "Closed Right", 1f, 0f, 1f),
|
||||
new VisualParam(828, "Loose Upper Clothing", 0, "shirt", "Shirt Fit", "Tight Shirt", "Loose Shirt", 0f, 0f, 1f),
|
||||
new VisualParam(816, "Loose Lower Clothing", 0, "pants", "Pants Fit", "Tight Pants", "Loose Pants", 0f, 0f, 1f),
|
||||
new VisualParam(814, "Waist Height", 0, "pants", "", "Low", "High", 1f, 0f, 1f),
|
||||
new VisualParam(815, "Pants Length", 0, "pants", "", "Short", "Long", 0.8f, 0f, 1f),
|
||||
new VisualParam(800, "Sleeve Length", 0, "shirt", "", "Short", "Long", 0.89f, 0f, 1f),
|
||||
new VisualParam(801, "Shirt Bottom", 0, "shirt", "", "Short", "Long", 1f, 0f, 1f),
|
||||
new VisualParam(802, "Collar Front", 0, "shirt", "", "Low", "High", 0.78f, 0f, 1f),
|
||||
new VisualParam(781, "Collar Back", 0, "shirt", "", "Low", "High", 0.78f, 0f, 1f),
|
||||
new VisualParam(150, "Body Definition", 0, "skin", "", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(775, "Body Freckles", 0, "skin", "", "Less Freckles", "More Freckles", 0f, 0f, 1f),
|
||||
new VisualParam(162, "Facial Definition", 0, "skin", "", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(163, "wrinkles", 0, "skin", "", "Less", "More", 0f, 0f, 1f),
|
||||
new VisualParam(505, "Lip Thickness", 0, "shape", "", "Thin Lips", "Fat Lips", 0.5f, 0f, 1f),
|
||||
new VisualParam(799, "Lip Ratio", 0, "shape", "Lip Ratio", "More Upper Lip", "More Lower Lip", 0.5f, 0f, 1f),
|
||||
new VisualParam(155, "Lip Width", 0, "shape", "Lip Width", "Narrow Lips", "Wide Lips", 0f, -0.9f, 1.3f),
|
||||
new VisualParam(196, "Eye Spacing", 0, "shape", "Eye Spacing", "Close Set Eyes", "Far Set Eyes", 0f, -2f, 1f),
|
||||
new VisualParam(769, "Eye Depth", 0, "shape", "", "Sunken Eyes", "Bugged Eyes", 0.5f, 0f, 1f),
|
||||
new VisualParam(198, "Heel Height", 0, "shoes", "", "Low Heels", "High Heels", 0f, 0f, 1f),
|
||||
new VisualParam(513, "Heel Shape", 0, "shoes", "", "Pointy Heels", "Thick Heels", 0.5f, 0f, 1f),
|
||||
new VisualParam(514, "Toe Shape", 0, "shoes", "", "Pointy", "Square", 0.5f, 0f, 1f),
|
||||
new VisualParam(503, "Platform Height", 0, "shoes", "", "Low Platforms", "High Platforms", 0f, 0f, 1f),
|
||||
new VisualParam(193, "Head Shape", 0, "shape", "Head Shape", "More Square", "More Round", 0.5f, 0f, 1f),
|
||||
new VisualParam(157, "Belly Size", 0, "shape", "", "Small", "Big", 0f, 0f, 1f),
|
||||
new VisualParam(637, "Body Fat", 0, "shape", "", "Less Body Fat", "More Body Fat", 0f, 0f, 1f),
|
||||
new VisualParam(130, "Front Fringe", 0, "hair", "", "Short", "Long", 0.45f, 0f, 1f),
|
||||
new VisualParam(131, "Side Fringe", 0, "hair", "", "Short", "Long", 0.5f, 0f, 1f),
|
||||
new VisualParam(132, "Back Fringe", 0, "hair", "", "Short", "Long", 0.39f, 0f, 1f),
|
||||
new VisualParam(133, "Hair Front", 0, "hair", "", "Short", "Long", 0.25f, 0f, 1f),
|
||||
new VisualParam(134, "Hair Sides", 0, "hair", "", "Short", "Long", 0.5f, 0f, 1f),
|
||||
new VisualParam(135, "Hair Back", 0, "hair", "", "Short", "Long", 0.55f, 0f, 1f),
|
||||
new VisualParam(136, "Hair Sweep", 0, "hair", "", "Sweep Forward", "Sweep Back", 0.5f, 0f, 1f),
|
||||
new VisualParam(137, "Hair Tilt", 0, "hair", "", "Left", "Right", 0.5f, 0f, 1f),
|
||||
new VisualParam(608, "bottom length lower", 0, "jacket", "Jacket Length", "Short", "Long", 0.8f, 0f, 1f),
|
||||
new VisualParam(609, "open jacket", 0, "jacket", "Open Front", "Open", "Closed", 0.2f, 0f, 1f),
|
||||
new VisualParam(105, "Breast Size", 0, "shape", "", "Small", "Large", 0.5f, 0f, 1f),
|
||||
new VisualParam(629, "Forehead Angle", 0, "shape", "", "More Vertical", "More Sloped", 0.5f, 0f, 1f),
|
||||
new VisualParam(646, "Egg_Head", 0, "shape", "Egg Head", "Chin Heavy", "Forehead Heavy", 0f, -1.3f, 1f),
|
||||
new VisualParam(647, "Squash_Stretch_Head", 0, "shape", "Head Stretch", "Squash Head", "Stretch Head", 0f, -0.5f, 1f),
|
||||
new VisualParam(649, "Torso Muscles", 0, "shape", "Torso Muscles", "Less Muscular", "More Muscular", 0.5f, 0f, 1f),
|
||||
new VisualParam(678, "Torso Muscles", 0, "shape", "", "Less Muscular", "More Muscular", 0.5f, 0f, 1f),
|
||||
new VisualParam(652, "Leg Muscles", 0, "shape", "", "Less Muscular", "More Muscular", 0.5f, 0f, 1f),
|
||||
new VisualParam(80, "male", 0, "shape", "", "", "", 0f, 0f, 1f),
|
||||
new VisualParam(659, "Mouth Corner", 0, "shape", "", "Corner Down", "Corner Up", 0.5f, 0f, 1f),
|
||||
new VisualParam(662, "Face Shear", 0, "shape", "", "Shear Right Up", "Shear Left Up", 0.5f, 0f, 1f),
|
||||
new VisualParam(773, "Head Length", 0, "shape", "", "Flat Head", "Long Head", 0.5f, 0f, 1f),
|
||||
new VisualParam(682, "Head Size", 0, "shape", "Head Size", "Small Head", "Big Head", 0.5f, 0f, 1f),
|
||||
new VisualParam(690, "Eye Size", 0, "shape", "Eye Size", "Beady Eyes", "Anime Eyes", 0.5f, 0f, 1f),
|
||||
new VisualParam(752, "Hair Thickness", 0, "hair", "", "5 O'Clock Shadow", "Bushy Hair", 0.5f, 0f, 1f),
|
||||
new VisualParam(763, "Hair Volume", 0, "hair", "", "Less Volume", "More Volume", 0.55f, 0f, 1f),
|
||||
new VisualParam(834, "jacket_red", 0, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(835, "jacket_green", 0, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(836, "jacket_blue", 0, "jacket", "", "", "", 1f, 0f, 1f),
|
||||
new VisualParam(785, "Pigtails", 0, "hair", "", "Short Pigtails", "Long Pigtails", 0f, 0f, 1f),
|
||||
new VisualParam(789, "Ponytail", 0, "hair", "", "Short Ponytail", "Long Ponytail", 0f, 0f, 1f),
|
||||
new VisualParam(795, "Butt Size", 0, "shape", "Butt Size", "Flat Butt", "Big Butt", 0.25f, 0f, 1f),
|
||||
new VisualParam(841, "Bowed_Legs", 0, "shape", "Knee Angle", "Knock Kneed", "Bow Legged", 0f, -1f, 1f),
|
||||
new VisualParam(753, "Saddlebags", 0, "shape", "Saddle Bags", "Less Saddle", "More Saddle", 0f, -0.5f, 3f),
|
||||
new VisualParam(676, "Love_Handles", 0, "shape", "Love Handles", "Less Love", "More Love", 0f, -1f, 2f),
|
||||
new VisualParam(863, "skirt_looseness", 0, "skirt", "Skirt Fit", "Tight Skirt", "Poofy Skirt", 0.333f, 0f, 1f),
|
||||
new VisualParam(119, "Eyebrow Size", 0, "hair", "", "Thin Eyebrows", "Bushy Eyebrows", 0.5f, 0f, 1f),
|
||||
new VisualParam(750, "Eyebrow Density", 0, "hair", "", "Sparse", "Dense", 0.7f, 0f, 1f),
|
||||
new VisualParam(166, "Sideburns", 0, "hair", "", "Short Sideburns", "Mutton Chops", 0f, 0f, 1f),
|
||||
new VisualParam(167, "Moustache", 0, "hair", "", "Chaplin", "Handlebars", 0f, 0f, 1f),
|
||||
new VisualParam(168, "Soulpatch", 0, "hair", "", "Less soul", "More soul", 0f, 0f, 1f),
|
||||
new VisualParam(169, "Chin Curtains", 0, "hair", "", "Less Curtains", "More Curtains", 0f, 0f, 1f),
|
||||
new VisualParam(606, "Sleeve Length", 0, "jacket", "", "Short", "Long", 0.8f, 0f, 1f),
|
||||
new VisualParam(607, "Collar Front", 0, "jacket", "", "Low", "High", 0.8f, 0f, 1f),
|
||||
new VisualParam(780, "Collar Back", 0, "jacket", "", "Low", "High", 0.8f, 0f, 1f),
|
||||
new VisualParam(603, "Sleeve Length", 0, "undershirt", "", "Short", "Long", 0.4f, 0.01f, 1f),
|
||||
new VisualParam(604, "Bottom", 0, "undershirt", "", "Short", "Long", 0.85f, 0f, 1f),
|
||||
new VisualParam(605, "Collar Front", 0, "undershirt", "", "Low", "High", 0.84f, 0f, 1f),
|
||||
new VisualParam(779, "Collar Back", 0, "undershirt", "", "Low", "High", 0.84f, 0f, 1f),
|
||||
new VisualParam(617, "Socks Length", 0, "socks", "", "Short", "Long", 0.35f, 0f, 1f),
|
||||
new VisualParam(616, "Shoe Height", 0, "shoes", "", "Short", "Tall", 0.1f, 0f, 1f),
|
||||
new VisualParam(619, "Pants Length", 0, "underpants", "", "Short", "Long", 0.3f, 0f, 1f),
|
||||
new VisualParam(624, "Pants Waist", 0, "underpants", "", "Low", "High", 0.8f, 0f, 1f),
|
||||
new VisualParam(93, "Glove Length", 0, "gloves", "", "Short", "Long", 0.8f, 0.01f, 1f),
|
||||
new VisualParam(844, "Glove Fingers", 0, "gloves", "", "Fingerless", "Fingers", 1f, 0.01f, 1f),
|
||||
new VisualParam(16, "Pointy_Eyebrows", 0, "hair", "Eyebrow Points", "Smooth", "Pointy", -0.5f, -0.5f, 3f),
|
||||
new VisualParam(757, "Lower_Eyebrows", 0, "hair", "Eyebrow Height", "Higher", "Lower", -1f, -4f, 2f),
|
||||
new VisualParam(31, "Arced_Eyebrows", 0, "hair", "Eyebrow Arc", "Flat", "Arced", 0.5f, 0f, 2f),
|
||||
new VisualParam(877, "Jacket Wrinkles", 0, "jacket", "Jacket Wrinkles", "No Wrinkles", "Wrinkles", 0f, 0f, 1f)
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@
|
||||
<Compile Include="Assets.cs" />
|
||||
<Compile Include="Utilities.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="_VisualParam_.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libsecondlife.csproj">
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<OutputPath>..\..\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
|
||||
Reference in New Issue
Block a user