aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs81
1 files changed, 39 insertions, 42 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs b/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
index 82596ca..c0b7ab5 100644
--- a/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
@@ -138,13 +138,10 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
138 updater.newTextureID = newTextureID; 138 updater.newTextureID = newTextureID;
139 } 139 }
140 140
141 if (updater.UpdateTimer == 0) 141 lock (Updaters)
142 { 142 {
143 lock (Updaters) 143 if (Updaters.ContainsKey(updater.UpdaterID))
144 { 144 Updaters.Remove(updater.UpdaterID);
145 if (Updaters.ContainsKey(updater.UpdaterID))
146 Updaters.Remove(updater.UpdaterID);
147 }
148 } 145 }
149 } 146 }
150 } 147 }
@@ -171,21 +168,20 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
171 } 168 }
172 169
173 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url, 170 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
174 string extraParams, int updateTimer) 171 string extraParams)
175 { 172 {
176 return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, updateTimer, false, 255); 173 return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, false, 255);
177 } 174 }
178 175
179 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url, 176 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
180 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue) 177 string extraParams, bool SetBlending, byte AlphaValue)
181 { 178 {
182 return AddDynamicTextureURL(simID, primID, contentType, url, 179 return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, SetBlending,
183 extraParams, updateTimer, SetBlending, 180 (DISP_TEMP|DISP_EXPIRE), AlphaValue, ALL_SIDES);
184 (int)(DISP_TEMP|DISP_EXPIRE), AlphaValue, ALL_SIDES);
185 } 181 }
186 182
187 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url, 183 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
188 string extraParams, int updateTimer, bool SetBlending, 184 string extraParams, bool SetBlending,
189 int disp, byte AlphaValue, int face) 185 int disp, byte AlphaValue, int face)
190 { 186 {
191 if (RenderPlugins.ContainsKey(contentType)) 187 if (RenderPlugins.ContainsKey(contentType))
@@ -195,7 +191,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
195 updater.PrimID = primID; 191 updater.PrimID = primID;
196 updater.ContentType = contentType; 192 updater.ContentType = contentType;
197 updater.Url = url; 193 updater.Url = url;
198 updater.UpdateTimer = updateTimer;
199 updater.UpdaterID = UUID.Random(); 194 updater.UpdaterID = UUID.Random();
200 updater.Params = extraParams; 195 updater.Params = extraParams;
201 updater.BlendWithOldTexture = SetBlending; 196 updater.BlendWithOldTexture = SetBlending;
@@ -218,20 +213,21 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
218 } 213 }
219 214
220 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data, 215 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
221 string extraParams, int updateTimer) 216 string extraParams)
222 { 217 {
223 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, false, 255); 218 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, false,
219 (DISP_TEMP|DISP_EXPIRE), 255, ALL_SIDES);
224 } 220 }
225 221
226 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data, 222 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
227 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue) 223 string extraParams, bool SetBlending, byte AlphaValue)
228 { 224 {
229 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, SetBlending, 225 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, SetBlending,
230 (int) (DISP_TEMP|DISP_EXPIRE), AlphaValue, ALL_SIDES); 226 (DISP_TEMP|DISP_EXPIRE), AlphaValue, ALL_SIDES);
231 } 227 }
232 228
233 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data, 229 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
234 string extraParams, int updateTimer, bool SetBlending, int disp, byte AlphaValue, int face) 230 string extraParams, bool SetBlending, int disp, byte AlphaValue, int face)
235 { 231 {
236 if (!RenderPlugins.ContainsKey(contentType)) 232 if (!RenderPlugins.ContainsKey(contentType))
237 return UUID.Zero; 233 return UUID.Zero;
@@ -257,7 +253,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
257 updater.PrimID = primID; 253 updater.PrimID = primID;
258 updater.ContentType = contentType; 254 updater.ContentType = contentType;
259 updater.BodyData = data; 255 updater.BodyData = data;
260 updater.UpdateTimer = updateTimer;
261 updater.UpdaterID = UUID.Random(); 256 updater.UpdaterID = UUID.Random();
262 updater.Params = extraParams; 257 updater.Params = extraParams;
263 updater.BlendWithOldTexture = SetBlending; 258 updater.BlendWithOldTexture = SetBlending;
@@ -403,10 +398,8 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
403 public byte FrontAlpha = 255; 398 public byte FrontAlpha = 255;
404 public string Params; 399 public string Params;
405 public UUID PrimID; 400 public UUID PrimID;
406 public bool SetNewFrontAlpha = false;
407 public UUID SimUUID; 401 public UUID SimUUID;
408 public UUID UpdaterID; 402 public UUID UpdaterID;
409 public int UpdateTimer;
410 public int Face; 403 public int Face;
411 public int Disp; 404 public int Disp;
412 public string Url; 405 public string Url;
@@ -414,7 +407,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
414 407
415 public DynamicTextureUpdater() 408 public DynamicTextureUpdater()
416 { 409 {
417 UpdateTimer = 0;
418 BodyData = null; 410 BodyData = null;
419 } 411 }
420 412
@@ -440,19 +432,15 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
440 { 432 {
441 oldID = tmptex.DefaultTexture.TextureID; 433 oldID = tmptex.DefaultTexture.TextureID;
442 tmptex.DefaultTexture.TextureID = textureID; 434 tmptex.DefaultTexture.TextureID = textureID;
435 for(int i = 0; i < tmptex.FaceTextures.Length; i++)
436 tmptex.FaceTextures[i] = null;
443 } 437 }
444 else 438 else
445 { 439 {
446 try 440 try
447 { 441 {
448 Primitive.TextureEntryFace texface = tmptex.GetFace((uint)Face); 442 Primitive.TextureEntryFace texface = tmptex.CreateFace((uint)Face);
449 if(texface == null) 443 oldID = texface.TextureID;
450 tmptex.GetFace((uint)Face);
451 else
452 {
453 if(texface.TextureID != null && texface.TextureID != UUID.Zero)
454 oldID = texface.TextureID;
455 }
456 texface.TextureID = textureID; 444 texface.TextureID = textureID;
457 tmptex.FaceTextures[Face] = texface; 445 tmptex.FaceTextures[Face] = texface;
458 } 446 }
@@ -462,10 +450,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
462 } 450 }
463 } 451 }
464 452
465 // I'm pretty sure we always want to force this to true
466 // I'm pretty sure noone whats to set fullbright true if it wasn't true before.
467 // tmptex.DefaultTexture.Fullbright = true;
468
469 part.UpdateTextureEntry(tmptex.GetBytes()); 453 part.UpdateTextureEntry(tmptex.GetBytes());
470 } 454 }
471 455
@@ -498,13 +482,26 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
498 482
499 if (BlendWithOldTexture) 483 if (BlendWithOldTexture)
500 { 484 {
501 Primitive.TextureEntryFace defaultFace = part.Shape.Textures.DefaultTexture; 485 Primitive.TextureEntryFace curFace;
502 if (defaultFace != null) 486 if(Face == ALL_SIDES)
487 curFace = part.Shape.Textures.DefaultTexture;
488 else
489 {
490 try
491 {
492 curFace = part.Shape.Textures.GetFace((uint)Face);
493 }
494 catch
495 {
496 curFace = null;
497 }
498 }
499 if (curFace != null)
503 { 500 {
504 oldAsset = scene.AssetService.Get(defaultFace.TextureID.ToString()); 501 oldAsset = scene.AssetService.Get(curFace.TextureID.ToString());
505 502
506 if (oldAsset != null) 503 if (oldAsset != null)
507 assetData = BlendTextures(data, oldAsset.Data, SetNewFrontAlpha, FrontAlpha); 504 assetData = BlendTextures(data, oldAsset.Data, FrontAlpha);
508 } 505 }
509 } 506 }
510 507
@@ -555,7 +552,7 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
555 return asset.FullID; 552 return asset.FullID;
556 } 553 }
557 554
558 private byte[] BlendTextures(byte[] frontImage, byte[] backImage, bool setNewAlpha, byte newAlpha) 555 private byte[] BlendTextures(byte[] frontImage, byte[] backImage, byte newAlpha)
559 { 556 {
560 ManagedImage managedImage; 557 ManagedImage managedImage;
561 Image image; 558 Image image;
@@ -575,7 +572,7 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
575 Bitmap image2 = new Bitmap(image); 572 Bitmap image2 = new Bitmap(image);
576 image.Dispose(); 573 image.Dispose();
577 574
578 if (setNewAlpha) 575 if (newAlpha < 255)
579 SetAlpha(ref image1, newAlpha); 576 SetAlpha(ref image1, newAlpha);
580 577
581 using(Bitmap joint = MergeBitMaps(image1, image2)) 578 using(Bitmap joint = MergeBitMaps(image1, image2))