예제 #1
0
        NodeID CopyContext(ref Context context, VFXContextController controller, int index)
        {
            NodeID id = CopyNode(ref context.node, controller.model, (NodeID)index);

            var blocks = controller.blockControllers;

            context.label      = controller.model.label;
            context.systemName = VFXSystemNames.GetSystemName(controller.model);

            if (controller.model.GetData() != null)
            {
                context.dataIndex = Array.IndexOf(datas, controller.model.GetData());
            }
            else
            {
                context.dataIndex = -1;
            }
            context.blocks = CopyBlocks(controller.blockControllers, index);
            context.node.indexInClipboard = contextsIndices[index];

            if (controller.model is VFXAbstractRenderedOutput)
            {
                context.subOutputs = CopySubOutputs(((VFXAbstractRenderedOutput)controller.model).GetSubOutputs());
            }
            else
            {
                context.subOutputs = null;
            }

            return(id);
        }
예제 #2
0
        public void UniqueSystemNames()
        {
            string[] names =
            {
                "foo",
                "bar",
                null,
                "foo",
                "bar",
                "foobar",
                "foobar (1)",
                "foobar (1)",
                null,
                "",
                VFXSystemNames.DefaultSystemName,
                VFXSystemNames.DefaultSystemName,
                "foo",
                "bar",
                "J'aime les panoramas",
                "Vous savez, moi je ne crois pas qu’il y ait de bonne ou de mauvaise situation." +
                "Moi, si je devais résumer ma vie aujourd’hui avec vous, je dirais que c’est d’abord des rencontres. " +
                "Des gens qui m’ont tendu la main, peut-être à un moment où je ne pouvais pas, où j’étais seul chez moi. " +
                "Et c’est assez curieux de se dire que les hasards, les rencontres forgent une destinée… " +
                "Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, " +
                "parfois on ne trouve pas l’interlocuteur en face je dirais, le miroir qui vous aide à avancer. " +
                "Alors ça n’est pas mon cas, comme je disais là, puisque moi au contraire, j’ai pu : " +
                "et je dis merci à la vie, je lui dis merci, je chante la vie, je danse la vie… je ne suis qu’amour ! " +
                "Et finalement, quand beaucoup de gens aujourd’hui me disent \" Mais comment fais-tu pour avoir cette humanité ? \", " +
                "et bien je leur réponds très simplement, je leur dis que c’est ce goût de l’amour ce goût donc qui m’a poussé aujourd’hui à entreprendre une construction mécanique, " +
                "mais demain qui sait ? Peut-être simplement à me mettre au service de la communauté, à faire le don, le don de soi… "
            };

            var spawnerCount   = names.Length / 2;
            var GPUSystemCount = names.Length - spawnerCount;

            List <VFXModel> systems = new List <VFXModel>();

            int i = 0;

            for (; i < spawnerCount; ++i)
            {
                var context = ScriptableObject.CreateInstance <ContextSpawner>();
                VFXSystemNames.SetSystemName(context, names[i]);
                systems.Add(context);
            }
            for (; i < spawnerCount + GPUSystemCount; ++i)
            {
                var data = ScriptableObject.CreateInstance <VFXDataParticle>();
                VFXSystemNames.SetSystemName(data, names[i]);
                systems.Add(data);
            }

            var systemNames = new VFXSystemNames();

            systemNames.Init(systems);
            var uniqueNames = systems.Select(system => systemNames.GetUniqueSystemName(system)).Where(name => !string.IsNullOrEmpty(name)).Distinct().ToList();

            Assert.IsTrue(uniqueNames.Count() == names.Length, "Some systems have the same name or are null or empty.");
        }
예제 #3
0
        VFXContext PasteContext(VFXViewController controller, ref Context context)
        {
            VFXContext newContext = PasteAndInitializeNode <VFXContext>(controller, ref context.node);

            if (newContext == null)
            {
                newContexts.Add(new KeyValuePair <VFXContext, List <VFXBlock> >(null, null));
                return(null);
            }

            newContext.label = context.label;
            VFXSystemNames.SetSystemName(newContext, context.systemName);

            if (newContext is VFXAbstractRenderedOutput)
            {
                PasteSubOutputs((VFXAbstractRenderedOutput)newContext, ref context);
            }

            List <VFXBlock> blocks = new List <VFXBlock>();

            foreach (var block in context.blocks)
            {
                var blk = block;

                VFXBlock newBlock = PasteAndInitializeNode <VFXBlock>(null, ref blk);

                newBlock.enabled = (blk.flags & Node.Flags.Enabled) == Node.Flags.Enabled;

                blocks.Add(newBlock);

                if (newBlock != null)
                {
                    newContext.AddChild(newBlock);
                }
            }
            newContexts.Add(new KeyValuePair <VFXContext, List <VFXBlock> >(newContext, blocks));

            return(newContext);
        }