Apply approved knight models and natural scenery to all thirty stages
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System.Linq;
|
||||
using MagnetismHeroes.UnityRuntime.Presentation;
|
||||
using MagnetismHeroes.UnityRuntime.StageAssets;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MagnetismHeroes.Tests
|
||||
{
|
||||
public sealed class VisualUpgradeAssetTests
|
||||
{
|
||||
private const string Root = "Assets/MagnetismHeroes/UnityRuntime/Presentation/";
|
||||
[Test] public void ApprovedBodyAndOneEquipmentAssemblyAreConnectedWithoutChangingSelectionSphere()
|
||||
{
|
||||
var ball = AssetDatabase.LoadAssetAtPath<GameObject>(Root + "Prefabs/MagnetFriend.prefab");
|
||||
var body = ball.transform.Find("ApprovedHeroBody");
|
||||
Assert.That(body, Is.Not.Null, "Approved FBX body must replace the primitive rendering.");
|
||||
Assert.That(ball.transform.localScale, Is.EqualTo(Vector3.one));
|
||||
Assert.That(ball.GetComponentsInChildren<Collider>(true).Length, Is.EqualTo(1));
|
||||
Assert.That(ball.GetComponent<SphereCollider>().radius, Is.EqualTo(.5f));
|
||||
var renderer = body.GetComponentInChildren<MeshRenderer>();
|
||||
Assert.That(renderer.sharedMaterial.name, Is.EqualTo("Hero_CyanSatin"));
|
||||
Assert.That(renderer.sharedMaterial.color.r, Is.EqualTo(.17f).Within(.0001f));
|
||||
Assert.That(renderer.sharedMaterial.color.g, Is.EqualTo(.72f).Within(.0001f));
|
||||
Assert.That(renderer.sharedMaterial.color.b, Is.EqualTo(.83f).Within(.0001f));
|
||||
var mesh = body.GetComponentInChildren<MeshFilter>().sharedMesh;
|
||||
Assert.That(mesh.bounds.size.x, Is.EqualTo(1).Within(.002f));
|
||||
var badge = AssetDatabase.LoadAssetAtPath<GameObject>(Root + "Prefabs/GroupBadge.prefab");
|
||||
Assert.That(badge.transform.Cast<Transform>().Count(child => child.name == "KnightEquipment"), Is.EqualTo(1));
|
||||
Assert.That(badge.GetComponentsInChildren<Collider>(true), Is.Empty);
|
||||
Assert.That(badge.GetComponentsInChildren<Animator>(true), Is.Empty);
|
||||
Assert.That(badge.GetComponentsInChildren<SkinnedMeshRenderer>(true), Is.Empty);
|
||||
Assert.That(badge.GetComponentsInChildren<SpriteRenderer>(true).Length, Is.EqualTo(1));
|
||||
foreach (var material in badge.transform.Find("KnightEquipment").GetComponentsInChildren<MeshRenderer>(true).SelectMany(item => item.sharedMaterials))
|
||||
Assert.That(AssetDatabase.GetAssetPath(material), Does.StartWith(Root + "Materials/VisualUpgrade/"));
|
||||
foreach (string name in new[] { "HeroBody", "KnightEquipment" })
|
||||
{
|
||||
var importer = (ModelImporter)AssetImporter.GetAtPath(Root + "Models/Heroes/" + name + ".fbx");
|
||||
Assert.That(importer.globalScale, Is.EqualTo(1));
|
||||
Assert.That(importer.bakeAxisConversion, Is.True); Assert.That(importer.importAnimation, Is.False);
|
||||
}
|
||||
}
|
||||
[Test] public void AllThirtyStagesConnectNaturalThemesWithOpenNearMeshCollidersAndColliderFreeDistantDecor()
|
||||
{
|
||||
foreach (int id in Enumerable.Range(1, 30))
|
||||
{
|
||||
var stage = AssetDatabase.LoadAssetAtPath<StageAsset>($"Assets/MagnetismHeroes/UnityRuntime/StageAssets/Stage{id:D2}.asset");
|
||||
Assert.That(stage.Theme, Is.EqualTo(id <= 10 ? "Garden" : id <= 20 ? "Cloud" : "Workshop"));
|
||||
Assert.That(stage.Decorations.Any(item => item.prefab.name == "MeadowClearing"), Is.True);
|
||||
var arch = stage.Decorations.Single(item => item.prefab.name == "OpenStoneArch").prefab;
|
||||
Assert.That(arch.GetComponentsInChildren<BoxCollider>(true), Is.Empty);
|
||||
Assert.That(arch.GetComponentsInChildren<MeshCollider>(true).All(item => !item.convex && item.sharedMesh != null), Is.True);
|
||||
Assert.That(arch.GetComponentsInChildren<MeshCollider>(true), Is.Not.Empty);
|
||||
foreach (var decoration in stage.Decorations.Where(item => item.prefab.name != "OpenStoneArch" && item.prefab.name != "MossStoneSteps"))
|
||||
Assert.That(decoration.prefab.GetComponentsInChildren<Collider>(true), Is.Empty, decoration.prefab.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 61d4021e6d4aace41964197d9377009b
|
||||
Reference in New Issue
Block a user