Change MoapModule.ClearMediaEntry to set TextureEntryFace.MediaFlags back to false
Implement test for ClearMediaEntry()0.7.1-dev
parent
12d5a20094
commit
9f85ee29ac
|
@ -250,7 +250,7 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
//m_log.DebugFormat("[SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length);
|
// m_log.DebugFormat("[SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length);
|
||||||
try { return new Primitive.TextureEntry(m_textureEntry, 0, m_textureEntry.Length); }
|
try { return new Primitive.TextureEntry(m_textureEntry, 0, m_textureEntry.Length); }
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap
|
||||||
return me;
|
return me;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the media entry on the face of the given part.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="part">/param>
|
||||||
|
/// <param name="face"></param>
|
||||||
|
/// <param name="me"></param>
|
||||||
public void SetMediaEntry(SceneObjectPart part, int face, MediaEntry me)
|
public void SetMediaEntry(SceneObjectPart part, int face, MediaEntry me)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[MOAP]: SetMediaEntry for {0}, face {1}", part.Name, face);
|
// m_log.DebugFormat("[MOAP]: SetMediaEntry for {0}, face {1}", part.Name, face);
|
||||||
|
@ -249,9 +255,31 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap
|
||||||
part.TriggerScriptChangedEvent(Changed.MEDIA);
|
part.TriggerScriptChangedEvent(Changed.MEDIA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clear the media entry from the face of the given part.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="part"></param>
|
||||||
|
/// <param name="face"></param>
|
||||||
public void ClearMediaEntry(SceneObjectPart part, int face)
|
public void ClearMediaEntry(SceneObjectPart part, int face)
|
||||||
{
|
{
|
||||||
SetMediaEntry(part, face, null);
|
CheckFaceParam(part, face);
|
||||||
|
|
||||||
|
// If no media has been set up yetthen we don't need to clear anything
|
||||||
|
if (null == part.Shape.Media)
|
||||||
|
return;
|
||||||
|
|
||||||
|
lock (part.Shape.Media)
|
||||||
|
part.Shape.Media[face] = null;
|
||||||
|
|
||||||
|
UpdateMediaUrl(part, UUID.Zero);
|
||||||
|
|
||||||
|
Primitive.TextureEntry te = part.Shape.Textures;
|
||||||
|
Primitive.TextureEntryFace teFace = te.CreateFace((uint)face);
|
||||||
|
teFace.MediaFlags = false;
|
||||||
|
part.Shape.Textures = te;
|
||||||
|
|
||||||
|
part.ScheduleFullUpdate();
|
||||||
|
part.TriggerScriptChangedEvent(Changed.MEDIA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -48,21 +48,52 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap.Tests
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class MoapTests
|
public class MoapTests
|
||||||
{
|
{
|
||||||
|
protected TestScene m_scene;
|
||||||
|
protected MoapModule m_module;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
m_module = new MoapModule();
|
||||||
|
m_scene = SceneSetupHelpers.SetupScene();
|
||||||
|
SceneSetupHelpers.SetupSceneModules(m_scene, m_module);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestClearMediaUrl()
|
||||||
|
{
|
||||||
|
TestHelper.InMethod();
|
||||||
|
// log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
|
SceneObjectPart part = SceneSetupHelpers.AddSceneObject(m_scene);
|
||||||
|
MediaEntry me = new MediaEntry();
|
||||||
|
|
||||||
|
m_module.SetMediaEntry(part, 1, me);
|
||||||
|
m_module.ClearMediaEntry(part, 1);
|
||||||
|
|
||||||
|
Assert.That(part.Shape.Media[1], Is.EqualTo(null));
|
||||||
|
|
||||||
|
// Although we've cleared one face, other faces may still be present. So we need to check for an
|
||||||
|
// update media url version
|
||||||
|
Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000001/" + UUID.Zero));
|
||||||
|
|
||||||
|
// By changing media flag to false, the face texture once again becomes identical to the DefaultTexture.
|
||||||
|
// Therefore, when libOMV reserializes it, it disappears and we are left with no face texture in this slot.
|
||||||
|
// Not at all confusing, eh?
|
||||||
|
Assert.That(part.Shape.Textures.FaceTextures[1], Is.Null);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestSetMediaUrl()
|
public void TestSetMediaUrl()
|
||||||
{
|
{
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
|
||||||
string homeUrl = "opensimulator.org";
|
string homeUrl = "opensimulator.org";
|
||||||
|
|
||||||
MoapModule module = new MoapModule();
|
SceneObjectPart part = SceneSetupHelpers.AddSceneObject(m_scene);
|
||||||
TestScene scene = SceneSetupHelpers.SetupScene();
|
|
||||||
SceneSetupHelpers.SetupSceneModules(scene, module);
|
|
||||||
|
|
||||||
SceneObjectPart part = SceneSetupHelpers.AddSceneObject(scene);
|
|
||||||
MediaEntry me = new MediaEntry() { HomeURL = homeUrl };
|
MediaEntry me = new MediaEntry() { HomeURL = homeUrl };
|
||||||
|
|
||||||
module.SetMediaEntry(part, 1, me);
|
m_module.SetMediaEntry(part, 1, me);
|
||||||
|
|
||||||
Assert.That(part.Shape.Media[1].HomeURL, Is.EqualTo(homeUrl));
|
Assert.That(part.Shape.Media[1].HomeURL, Is.EqualTo(homeUrl));
|
||||||
Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000000/" + UUID.Zero));
|
Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000000/" + UUID.Zero));
|
||||||
|
|
Loading…
Reference in New Issue