diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Services/Interfaces/IAvatarService.cs | 95 |
1 files changed, 94 insertions, 1 deletions
diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index 682616a..39368f1 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs | |||
@@ -26,6 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections; | ||
29 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
30 | 31 | ||
31 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
@@ -93,7 +94,16 @@ namespace OpenSim.Services.Interfaces | |||
93 | 94 | ||
94 | public AvatarData(Dictionary<string, object> kvp) | 95 | public AvatarData(Dictionary<string, object> kvp) |
95 | { | 96 | { |
96 | // TODO | 97 | Data = new Dictionary<string, string>(); |
98 | |||
99 | if (kvp.ContainsKey("AvatarType")) | ||
100 | Int32.TryParse(kvp["AvatarType"].ToString(), out AvatarType); | ||
101 | |||
102 | foreach (KeyValuePair<string, object> _kvp in kvp) | ||
103 | { | ||
104 | if (_kvp.Value != null) | ||
105 | Data[_kvp.Key] = _kvp.Value.ToString(); | ||
106 | } | ||
97 | } | 107 | } |
98 | 108 | ||
99 | /// <summary> | 109 | /// <summary> |
@@ -101,7 +111,90 @@ namespace OpenSim.Services.Interfaces | |||
101 | /// <returns></returns> | 111 | /// <returns></returns> |
102 | public Dictionary<string, object> ToKeyValuePairs() | 112 | public Dictionary<string, object> ToKeyValuePairs() |
103 | { | 113 | { |
114 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
115 | |||
116 | result["AvatarType"] = AvatarType.ToString(); | ||
117 | foreach (KeyValuePair<string, string> _kvp in Data) | ||
118 | { | ||
119 | if (_kvp.Value != null) | ||
120 | result[_kvp.Key] = _kvp.Value; | ||
121 | } | ||
104 | return null; | 122 | return null; |
105 | } | 123 | } |
124 | |||
125 | public AvatarData(AvatarAppearance appearance) | ||
126 | { | ||
127 | AvatarType = 1; // SL avatars | ||
128 | Data = new Dictionary<string, string>(); | ||
129 | |||
130 | // Wearables | ||
131 | Data["AvatarHeight"] = appearance.AvatarHeight.ToString(); | ||
132 | Data["BodyItem"] = appearance.BodyItem.ToString(); | ||
133 | Data["EyesItem"] = appearance.EyesItem.ToString(); | ||
134 | Data["GlovesItem"] = appearance.GlovesItem.ToString(); | ||
135 | Data["HairItem"] = appearance.HairItem.ToString(); | ||
136 | //Data["HipOffset"] = appearance.HipOffset.ToString(); | ||
137 | Data["JacketItem"] = appearance.JacketItem.ToString(); | ||
138 | Data["Owner"] = appearance.Owner.ToString(); | ||
139 | Data["PantsItem"] = appearance.PantsItem.ToString(); | ||
140 | Data["Serial"] = appearance.Serial.ToString(); | ||
141 | Data["ShirtItem"] = appearance.ShirtItem.ToString(); | ||
142 | Data["ShoesItem"] = appearance.ShoesItem.ToString(); | ||
143 | Data["SkinItem"] = appearance.SkinItem.ToString(); | ||
144 | Data["SkirtItem"] = appearance.SkirtItem.ToString(); | ||
145 | Data["SocksItem"] = appearance.SocksItem.ToString(); | ||
146 | Data["UnderPantsItem"] = appearance.UnderPantsItem.ToString(); | ||
147 | Data["UnderShirtItem"] = appearance.UnderShirtItem.ToString(); | ||
148 | |||
149 | // Attachments | ||
150 | Hashtable attachs = appearance.GetAttachments(); | ||
151 | foreach (KeyValuePair<int, Hashtable> kvp in attachs) | ||
152 | { | ||
153 | Data["_ap_" + kvp.Key] = kvp.Value["item"].ToString(); | ||
154 | } | ||
155 | } | ||
156 | |||
157 | public AvatarAppearance ToAvatarAppearance() | ||
158 | { | ||
159 | AvatarAppearance appearance = new AvatarAppearance(); | ||
160 | // Wearables | ||
161 | appearance.AvatarHeight = float.Parse(Data["AvatarHeight"]); | ||
162 | appearance.BodyItem = UUID.Parse(Data["BodyItem"]); | ||
163 | appearance.EyesItem = UUID.Parse(Data["EyesItem"]); | ||
164 | appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]); | ||
165 | appearance.HairItem = UUID.Parse(Data["HairItem"]); | ||
166 | //appearance.HipOffset = float.Parse(Data["HipOffset"]); | ||
167 | appearance.JacketItem = UUID.Parse(Data["JacketItem"]); | ||
168 | appearance.Owner = UUID.Parse(Data["Owner"]); | ||
169 | appearance.PantsItem = UUID.Parse(Data["PantsItem"]); | ||
170 | appearance.Serial = Int32.Parse(Data["Serial"]); | ||
171 | appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]); | ||
172 | appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]); | ||
173 | appearance.SkinItem = UUID.Parse(Data["SkinItem"]); | ||
174 | appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]); | ||
175 | appearance.SocksItem = UUID.Parse(Data["SocksItem"]); | ||
176 | appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]); | ||
177 | appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]); | ||
178 | |||
179 | // Attachments | ||
180 | Dictionary<string, string> attchs = new Dictionary<string, string>(); | ||
181 | foreach (KeyValuePair<string, string> _kvp in Data) | ||
182 | if (_kvp.Key.StartsWith("_ap_")) | ||
183 | attchs[_kvp.Key] = _kvp.Value; | ||
184 | Hashtable aaAttachs = new Hashtable(); | ||
185 | foreach (KeyValuePair<string, string> _kvp in attchs) | ||
186 | { | ||
187 | string pointStr = _kvp.Key.Substring(4); | ||
188 | int point = 0; | ||
189 | if (!Int32.TryParse(pointStr, out point)) | ||
190 | continue; | ||
191 | Hashtable tmp = new Hashtable(); | ||
192 | tmp["item"] = _kvp.Value; | ||
193 | tmp["asset"] = UUID.Zero.ToString(); | ||
194 | aaAttachs[point] = tmp; | ||
195 | } | ||
196 | |||
197 | return appearance; | ||
198 | } | ||
106 | } | 199 | } |
107 | } | 200 | } |