* Added add, subtract, multiply operators to Color4 * Switched baking to use Color4 instead of System.Drawing.Color * Untested implementation of multiply and add color operations in baking git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3077 52acb1d6-8a22-11de-b505-999d5b087335
155 lines
6.0 KiB
C#
155 lines
6.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace OpenMetaverse
|
|
{
|
|
/// <summary>
|
|
/// Operation to apply when applying color to texture
|
|
/// </summary>
|
|
public enum VisualColorOperation
|
|
{
|
|
Add,
|
|
Blend,
|
|
Multiply
|
|
}
|
|
|
|
/// <summary>
|
|
/// Information needed to translate visual param value to RGBA color
|
|
/// </summary>
|
|
public struct VisualColorParam
|
|
{
|
|
public VisualColorOperation Operation;
|
|
public Color4[] Colors;
|
|
|
|
/// <summary>
|
|
/// Construct VisualColorParam
|
|
/// </summary>
|
|
/// <param name="operation">Operation to apply when applying color to texture</param>
|
|
/// <param name="colors">Colors</param>
|
|
public VisualColorParam(VisualColorOperation operation, Color4[] colors)
|
|
{
|
|
Operation = operation;
|
|
Colors = colors;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Represents alpha blending and bump infor for a visual parameter
|
|
/// such as sleive length
|
|
/// </summary>
|
|
public struct VisualAlphaParam
|
|
{
|
|
/// <summary>Stregth of the alpha to apply</summary>
|
|
public float Domain;
|
|
|
|
/// <summary>File containing the alpha channel</summary>
|
|
public string TGAFile;
|
|
|
|
/// <summary>Skip blending if parameter value is 0</summary>
|
|
public bool SkipIfZero;
|
|
|
|
/// <summary>Use miltiply insted of alpha blending</summary>
|
|
public bool MultiplyBlend;
|
|
|
|
/// <summary>
|
|
/// Create new alhpa information for a visual param
|
|
/// </summary>
|
|
/// <param name="domain">Stregth of the alpha to apply</param>
|
|
/// <param name="tgaFile">File containing the alpha channel</param>
|
|
/// <param name="skipIfZero">Skip blending if parameter value is 0</param>
|
|
/// <param name="multiplyBlend">Use miltiply insted of alpha blending</param>
|
|
public VisualAlphaParam(float domain, string tgaFile, bool skipIfZero, bool multiplyBlend)
|
|
{
|
|
Domain = domain;
|
|
TGAFile = tgaFile;
|
|
SkipIfZero = skipIfZero;
|
|
MultiplyBlend = multiplyBlend;
|
|
}
|
|
}
|
|
/// <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 DefaultValue;
|
|
/// <summary>Minimum value</summary>
|
|
public float MinValue;
|
|
/// <summary>Maximum value</summary>
|
|
public float MaxValue;
|
|
/// <summary>Is this param used for creation of bump layer?</summary>
|
|
public bool IsBumpAttribute;
|
|
/// <summary>Alpha blending/bump info</summary>
|
|
public VisualAlphaParam? AlphaParams;
|
|
/// <summary>Color information</summary>
|
|
public VisualColorParam? ColorParams;
|
|
/// <summary>Array of param IDs that are drivers for this parameter</summary>
|
|
public int[] Drivers;
|
|
/// <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>
|
|
/// <param name="isBumpAttribute">Is this param used for creation of bump layer?</param>
|
|
/// <param name="drivers">Array of param IDs that are drivers for this parameter</param>
|
|
/// <param name="alpha">Alpha blending/bump info</param>
|
|
/// <param name="colorParams">Color information</param>
|
|
public VisualParam(int paramID, string name, int group, string wearable, string label, string labelMin, string labelMax, float def, float min, float max, bool isBumpAttribute, int[] drivers, VisualAlphaParam? alpha, VisualColorParam? colorParams)
|
|
{
|
|
ParamID = paramID;
|
|
Name = name;
|
|
Group = group;
|
|
Wearable = wearable;
|
|
Label = label;
|
|
LabelMin = labelMin;
|
|
LabelMax = labelMax;
|
|
DefaultValue = def;
|
|
MaxValue = max;
|
|
MinValue = min;
|
|
IsBumpAttribute = isBumpAttribute;
|
|
Drivers = drivers;
|
|
AlphaParams = alpha;
|
|
ColorParams = colorParams;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Holds the Params array of all the avatar appearance parameters
|
|
/// </summary>
|
|
public static class VisualParams
|
|
{
|
|
public static SortedList<int, VisualParam> Params = new SortedList<int, 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();
|
|
}
|
|
|
|
static VisualParams()
|
|
{ |