コード例 #1
0
        [Test, Ignore] // ignore as long as Shadow Object info is not support by data binary serialization
        public void TestCreateChildAsset()
        {
            // -------------------------
            // Init
            // -------------------------
            var localComponentDescriptor = TypeDescriptorFactory.Default.Find(typeof(LocalComponent));

            var baseAsset = new LocalAsset {
                Name = "base", Value = 1
            };

            baseAsset.Parameters.Set(LocalAsset.StringKey, "string");

            var component = new LocalComponent()
            {
                Name = "comp1", Position = Vector4.UnitX
            };

            component.SetOverride(localComponentDescriptor["Name"], OverrideType.Sealed);
            baseAsset.Parameters.Set(LocalAsset.ComponentKey, component);

            var baseAssetItem = new AssetItem("base1", baseAsset);

            // Create a child asset
            var newAsset = (LocalAsset)baseAssetItem.CreateChildAsset();

            // -------------------------
            // Check base asset
            // -------------------------
            Assert.NotNull(newAsset.Base);
            Assert.IsFalse(newAsset.Base.IsRootImport);
            Assert.AreEqual(baseAsset.Id, newAsset.Base.Id);

            // Check override on member "Name"
            var newComponent = newAsset.Parameters[LocalAsset.ComponentKey];
            var overrideType = newComponent.GetOverride(localComponentDescriptor["Name"]);

            Assert.AreEqual(OverrideType.Sealed, overrideType);
        }
コード例 #2
0
        public void TestAccessor()
        {
            // -------------------------
            // Init
            // -------------------------
            var localAssetDescriptor     = TypeDescriptorFactory.Default.Find(typeof(LocalAsset));
            var localComponentDescriptor = TypeDescriptorFactory.Default.Find(typeof(LocalComponent));
            var collectionDescriptor     = (DictionaryDescriptor)TypeDescriptorFactory.Default.Find(typeof(CustomParameterCollection));

            var baseAsset = new LocalAsset {
                Name = "base", Value = 1
            };

            baseAsset.Parameters.Set(LocalAsset.StringKey, "string");

            var component = new LocalComponent()
            {
                Name = "comp1", Position = Vector4.UnitX
            };

            component.SetOverride(localComponentDescriptor["Name"], OverrideType.Sealed);
            baseAsset.Parameters.Set(LocalAsset.ComponentKey, component);

            var baseAssetItem = new AssetItem("base1", baseAsset);

            // Create a child asset
            var newAsset     = (LocalAsset)baseAssetItem.CreateChildAsset();
            var newAssetItem = new AssetItem("new1", newAsset);

            // -------------------------
            // Setup project + assets
            // -------------------------
            var project = new Package();

            project.Assets.Add(baseAssetItem);
            project.Assets.Add(newAssetItem);
            var session = new PackageSession(project);

            // Create accessor on new item
            var accessor = new AssetItemAccessor(newAssetItem);

            var memberPath = new MemberPath();

            memberPath.Push(localAssetDescriptor["Parameters"]);
            memberPath.Push(collectionDescriptor, LocalAsset.ComponentKey);
            memberPath.Push(localComponentDescriptor["Name"]);

            // Get value for member path
            var memberValue = accessor.TryGetMemberValue(memberPath);

            Assert.IsTrue(memberValue.IsValid);
            Assert.AreEqual(OverrideType.Sealed, memberValue.Override);
            Assert.NotNull(memberValue.OverriderItem);
            Assert.AreEqual(baseAsset.Id, memberValue.OverriderItem.Id);

            memberPath.Pop();
            memberPath.Push(localComponentDescriptor["Position"]);

            // Get value for member path
            memberValue = accessor.TryGetMemberValue(memberPath);

            Assert.IsTrue(memberValue.IsValid);
            Assert.AreEqual(OverrideType.Base, memberValue.Override);
            Assert.NotNull(memberValue.OverriderItem);
            Assert.AreEqual(baseAsset.Id, memberValue.OverriderItem.Id);

            // Set Position as a new value
            newAsset.Parameters[LocalAsset.ComponentKey].SetOverride(localComponentDescriptor["Position"], OverrideType.New);
            memberValue = accessor.TryGetMemberValue(memberPath);

            Assert.IsTrue(memberValue.IsValid);
            Assert.AreEqual(OverrideType.New, memberValue.Override);
            Assert.IsNull(memberValue.OverriderItem);
        }