corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 using System;
2 using System.Collections.Generic;
3  
4 namespace OpenMetaverse
5 {
6 /// <summary>
7 /// Operation to apply when applying color to texture
8 /// </summary>
9 public enum VisualColorOperation
10 {
11 Add,
12 Blend,
13 Multiply
14 }
15  
16 /// <summary>
17 /// Information needed to translate visual param value to RGBA color
18 /// </summary>
19 public struct VisualColorParam
20 {
21 public VisualColorOperation Operation;
22 public Color4[] Colors;
23  
24 /// <summary>
25 /// Construct VisualColorParam
26 /// </summary>
27 /// <param name="operation">Operation to apply when applying color to texture</param>
28 /// <param name="colors">Colors</param>
29 public VisualColorParam(VisualColorOperation operation, Color4[] colors)
30 {
31 Operation = operation;
32 Colors = colors;
33 }
34 }
35  
36 /// <summary>
37 /// Represents alpha blending and bump infor for a visual parameter
38 /// such as sleive length
39 /// </summary>
40 public struct VisualAlphaParam
41 {
42 /// <summary>Stregth of the alpha to apply</summary>
43 public float Domain;
44  
45 /// <summary>File containing the alpha channel</summary>
46 public string TGAFile;
47  
48 /// <summary>Skip blending if parameter value is 0</summary>
49 public bool SkipIfZero;
50  
51 /// <summary>Use miltiply insted of alpha blending</summary>
52 public bool MultiplyBlend;
53  
54 /// <summary>
55 /// Create new alhpa information for a visual param
56 /// </summary>
57 /// <param name="domain">Stregth of the alpha to apply</param>
58 /// <param name="tgaFile">File containing the alpha channel</param>
59 /// <param name="skipIfZero">Skip blending if parameter value is 0</param>
60 /// <param name="multiplyBlend">Use miltiply insted of alpha blending</param>
61 public VisualAlphaParam(float domain, string tgaFile, bool skipIfZero, bool multiplyBlend)
62 {
63 Domain = domain;
64 TGAFile = tgaFile;
65 SkipIfZero = skipIfZero;
66 MultiplyBlend = multiplyBlend;
67 }
68 }
69 /// <summary>
70 /// A single visual characteristic of an avatar mesh, such as eyebrow height
71 /// </summary>
72 public struct VisualParam
73 {
74 /// <summary>Index of this visual param</summary>
75 public int ParamID;
76 /// <summary>Internal name</summary>
77 public string Name;
78 /// <summary>Group ID this parameter belongs to</summary>
79 public int Group;
80 /// <summary>Name of the wearable this parameter belongs to</summary>
81 public string Wearable;
82 /// <summary>Displayable label of this characteristic</summary>
83 public string Label;
84 /// <summary>Displayable label for the minimum value of this characteristic</summary>
85 public string LabelMin;
86 /// <summary>Displayable label for the maximum value of this characteristic</summary>
87 public string LabelMax;
88 /// <summary>Default value</summary>
89 public float DefaultValue;
90 /// <summary>Minimum value</summary>
91 public float MinValue;
92 /// <summary>Maximum value</summary>
93 public float MaxValue;
94 /// <summary>Is this param used for creation of bump layer?</summary>
95 public bool IsBumpAttribute;
96 /// <summary>Alpha blending/bump info</summary>
97 public VisualAlphaParam? AlphaParams;
98 /// <summary>Color information</summary>
99 public VisualColorParam? ColorParams;
100 /// <summary>Array of param IDs that are drivers for this parameter</summary>
101 public int[] Drivers;
102 /// <summary>
103 /// Set all the values through the constructor
104 /// </summary>
105 /// <param name="paramID">Index of this visual param</param>
106 /// <param name="name">Internal name</param>
107 /// <param name="group"></param>
108 /// <param name="wearable"></param>
109 /// <param name="label">Displayable label of this characteristic</param>
110 /// <param name="labelMin">Displayable label for the minimum value of this characteristic</param>
111 /// <param name="labelMax">Displayable label for the maximum value of this characteristic</param>
112 /// <param name="def">Default value</param>
113 /// <param name="min">Minimum value</param>
114 /// <param name="max">Maximum value</param>
115 /// <param name="isBumpAttribute">Is this param used for creation of bump layer?</param>
116 /// <param name="drivers">Array of param IDs that are drivers for this parameter</param>
117 /// <param name="alpha">Alpha blending/bump info</param>
118 /// <param name="colorParams">Color information</param>
119 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)
120 {
121 ParamID = paramID;
122 Name = name;
123 Group = group;
124 Wearable = wearable;
125 Label = label;
126 LabelMin = labelMin;
127 LabelMax = labelMax;
128 DefaultValue = def;
129 MaxValue = max;
130 MinValue = min;
131 IsBumpAttribute = isBumpAttribute;
132 Drivers = drivers;
133 AlphaParams = alpha;
134 ColorParams = colorParams;
135 }
136 }
137  
138 /// <summary>
139 /// Holds the Params array of all the avatar appearance parameters
140 /// </summary>
141 public static class VisualParams
142 {
143 public static SortedList<int, VisualParam> Params = new SortedList<int, VisualParam>();
144  
145 public static VisualParam Find(string name, string wearable)
146 {
147 foreach (KeyValuePair<int, VisualParam> param in Params)
148 if (param.Value.Name == name && param.Value.Wearable == wearable)
149 return param.Value;
150  
151 return new VisualParam();
152 }
153  
154 static VisualParams()
155 {