Improve regression test TestSetAppearance()
parent
bc9952f901
commit
26fe59c35e
|
@ -48,23 +48,103 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
public void TestSetAppearance()
|
public void TestSetAppearance()
|
||||||
{
|
{
|
||||||
TestHelpers.InMethod();
|
TestHelpers.InMethod();
|
||||||
// log4net.Config.XmlConfigurator.Configure();
|
// TestHelpers.EnableLogging();
|
||||||
|
|
||||||
UUID userId = TestHelpers.ParseTail(0x1);
|
UUID userId = TestHelpers.ParseTail(0x1);
|
||||||
|
UUID bakedTextureID = TestHelpers.ParseTail(0x2);
|
||||||
|
|
||||||
|
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
||||||
|
// to the AssetService, which will then store temporary and local assets permanently
|
||||||
|
CoreAssetCache assetCache = new CoreAssetCache();
|
||||||
|
|
||||||
AvatarFactoryModule afm = new AvatarFactoryModule();
|
AvatarFactoryModule afm = new AvatarFactoryModule();
|
||||||
TestScene scene = new SceneHelpers().SetupScene();
|
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
||||||
SceneHelpers.SetupSceneModules(scene, afm);
|
SceneHelpers.SetupSceneModules(scene, afm);
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
||||||
|
|
||||||
|
// TODO: Use the actual BunchOfCaps functionality once we slot in the CapabilitiesModules
|
||||||
|
AssetBase bakedTextureAsset;
|
||||||
|
bakedTextureAsset
|
||||||
|
= new AssetBase(
|
||||||
|
bakedTextureID, "Test Baked Texture", (sbyte)AssetType.Texture, userId.ToString());
|
||||||
|
bakedTextureAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
||||||
|
bakedTextureAsset.Temporary = true;
|
||||||
|
bakedTextureAsset.Local = true;
|
||||||
|
scene.AssetService.Store(bakedTextureAsset);
|
||||||
|
|
||||||
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
||||||
for (byte i = 0; i < visualParams.Length; i++)
|
for (byte i = 0; i < visualParams.Length; i++)
|
||||||
visualParams[i] = i;
|
visualParams[i] = i;
|
||||||
|
|
||||||
// afm.SetAppearance(sp, new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)), visualParams);
|
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
||||||
|
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
||||||
|
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
||||||
|
|
||||||
// TODO: Check baked texture
|
int rebakeRequestsReceived = 0;
|
||||||
// Assert.AreEqual(visualParams, sp.Appearance.VisualParams);
|
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
||||||
|
|
||||||
|
// This is the alpha texture
|
||||||
|
eyesFace.TextureID = bakedTextureID;
|
||||||
|
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
||||||
|
|
||||||
|
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
||||||
|
|
||||||
|
AssetBase eyesBake = scene.AssetService.Get(bakedTextureID.ToString());
|
||||||
|
Assert.That(eyesBake, Is.Not.Null);
|
||||||
|
Assert.That(eyesBake.Temporary, Is.True);
|
||||||
|
Assert.That(eyesBake.Local, Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test appearance setting where the baked texture UUID are library alpha textures.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// For a mesh avatar, it appears these 'baked textures' are used. So these should not trigger a request to
|
||||||
|
/// rebake.
|
||||||
|
/// </remarks>
|
||||||
|
[Test]
|
||||||
|
public void TestSetAppearanceAlphaBakedTextures()
|
||||||
|
{
|
||||||
|
TestHelpers.InMethod();
|
||||||
|
// TestHelpers.EnableLogging();
|
||||||
|
|
||||||
|
UUID userId = TestHelpers.ParseTail(0x1);
|
||||||
|
UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3");
|
||||||
|
|
||||||
|
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
||||||
|
// to the AssetService, which will then store temporary and local assets permanently
|
||||||
|
CoreAssetCache assetCache = new CoreAssetCache();
|
||||||
|
|
||||||
|
AvatarFactoryModule afm = new AvatarFactoryModule();
|
||||||
|
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
||||||
|
SceneHelpers.SetupSceneModules(scene, afm);
|
||||||
|
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
||||||
|
|
||||||
|
AssetBase libraryAsset;
|
||||||
|
libraryAsset
|
||||||
|
= new AssetBase(
|
||||||
|
alphaTextureID, "Default Alpha Layer Texture", (sbyte)AssetType.Texture, userId.ToString());
|
||||||
|
libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
||||||
|
libraryAsset.Temporary = false;
|
||||||
|
libraryAsset.Local = false;
|
||||||
|
scene.AssetService.Store(libraryAsset);
|
||||||
|
|
||||||
|
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
||||||
|
for (byte i = 0; i < visualParams.Length; i++)
|
||||||
|
visualParams[i] = i;
|
||||||
|
|
||||||
|
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
||||||
|
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
||||||
|
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
||||||
|
|
||||||
|
int rebakeRequestsReceived = 0;
|
||||||
|
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
||||||
|
|
||||||
|
// This is the alpha texture
|
||||||
|
eyesFace.TextureID = alphaTextureID;
|
||||||
|
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
||||||
|
|
||||||
|
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -114,58 +194,5 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
Assert.That(eyesBake.Temporary, Is.False);
|
Assert.That(eyesBake.Temporary, Is.False);
|
||||||
Assert.That(eyesBake.Local, Is.False);
|
Assert.That(eyesBake.Local, Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Test appearance setting where the baked texture UUID are library alpha textures.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// For a mesh avatar, it appears these 'baked textures' are used. So these should not trigger a request to
|
|
||||||
/// rebake.
|
|
||||||
/// </remarks>
|
|
||||||
[Test]
|
|
||||||
public void TestSetAppearanceAlphaBakedTextures()
|
|
||||||
{
|
|
||||||
TestHelpers.InMethod();
|
|
||||||
// TestHelpers.EnableLogging();
|
|
||||||
|
|
||||||
UUID userId = TestHelpers.ParseTail(0x1);
|
|
||||||
UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3");
|
|
||||||
|
|
||||||
|
|
||||||
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
|
||||||
// to the AssetService, which will then store temporary and local assets permanently
|
|
||||||
CoreAssetCache assetCache = new CoreAssetCache();
|
|
||||||
|
|
||||||
AvatarFactoryModule afm = new AvatarFactoryModule();
|
|
||||||
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
|
||||||
SceneHelpers.SetupSceneModules(scene, afm);
|
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
|
||||||
|
|
||||||
AssetBase libraryAsset;
|
|
||||||
libraryAsset
|
|
||||||
= new AssetBase(
|
|
||||||
alphaTextureID, "Default Alpha Layer Texturee", (sbyte)AssetType.Texture, userId.ToString());
|
|
||||||
libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
|
||||||
libraryAsset.Temporary = false;
|
|
||||||
libraryAsset.Local = false;
|
|
||||||
scene.AssetService.Store(libraryAsset);
|
|
||||||
|
|
||||||
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
|
||||||
for (byte i = 0; i < visualParams.Length; i++)
|
|
||||||
visualParams[i] = i;
|
|
||||||
|
|
||||||
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
|
||||||
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
|
||||||
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
|
||||||
|
|
||||||
int rebakeRequestsReceived = 0;
|
|
||||||
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
|
||||||
|
|
||||||
// This is the alpha texture
|
|
||||||
eyesFace.TextureID = alphaTextureID;
|
|
||||||
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
|
||||||
|
|
||||||
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue