예제 #1
0
        public static EntityGroupGraph CreateFromEntityGroup(UTinyEntityGroup entityGroup)
        {
            var graph = new EntityGroupGraph(entityGroup);

            graph.SyncFromUTiny();
            foreach (var entity in entityGroup.Entities.Select(entityRef => entityRef.Dereference(entityGroup.Registry)))
            {
                if (null == entity)
                {
                    continue;
                }
                entity.EntityGroup = entityGroup;
                graph.CreateLink(entity);
            }

            graph.CommitToUnity();

            foreach (var entity in entityGroup.Entities.Select(entityRef => entityRef.Dereference(entityGroup.Registry)))
            {
                if (null == entity)
                {
                    continue;
                }
                BindingsHelper.RunAllBindings(entity);
            }

            return(graph);
        }
예제 #2
0
        private UTinyEntityView CreateLink(UTinyEntity entity)
        {
            try
            {
                var entityRef = (UTinyEntity.Reference)entity;
                if (null != entity.View && entity.View)
                {
                    entity.View.EntityRef = entityRef;
                    entity.View.Registry  = entity.Registry;
                    entity.View.gameObject.SetActive(entity.Enabled);
                    entity.View.gameObject.layer = entity.Layer;
                    return(null);
                }

                // We may have recreated the entity, try to find an active view
                {
                    var scene = UTinyEditorApplication.EntityGroupManager.UnityScratchPad;
                    foreach (var r in scene.GetRootGameObjects())
                    {
                        foreach (var v in r.GetComponentsInChildren <UTinyEntityView>())
                        {
                            if (v.EntityRef.Equals(entityRef))
                            {
                                entity.View           = v;
                                entity.View.EntityRef = entityRef;
                                entity.View.Registry  = entity.Registry;
                                v.gameObject.SetActive(entity.Enabled);
                                v.gameObject.layer = entity.Layer;
                                return(null);
                            }
                        }
                    }
                }

                var go   = new GameObject(entity.Name);
                var view = go.AddComponent <UTinyEntityView>();
                view.gameObject.SetActive(entity.Enabled);
                view.gameObject.layer = entity.Layer;
                view.EntityRef        = entityRef;
                view.Registry         = entity.Registry;
                entity.View           = view;

                return(view);
            }
            finally
            {
                // At this point, it is not clear if the bindings have been added or not (we may have undo-ed something).
                entity.OnComponentAdded   -= HandleComponentAdded;
                entity.OnComponentRemoved -= HandleComponentRemoved;
                entity.OnComponentAdded   += HandleComponentAdded;
                entity.OnComponentRemoved += HandleComponentRemoved;
                BindingsHelper.RunAllBindings(entity);
            }
        }
        private void RunAllTheBidings()
        {
            var entityGroupManager = UTinyEditorApplication.EntityGroupManager;
            var registry           = UTinyEditorApplication.Registry;

            if (null == entityGroupManager || null == registry)
            {
                return;
            }
            foreach (var entity in entityGroupManager.LoadedEntityGroups.Deref(registry).SelectMany(s => s.Entities).Deref(registry))
            {
                BindingsHelper.RunAllBindings(entity);
            }
        }
        private bool AddToEntity(UTinyEntity.Reference entityRef, Sprite sprite, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = sprite?.name ?? "NullSprite";

            var renderer = entity.GetOrAddComponent(Registry.GetSprite2DRendererType());

            renderer["sprite"] = sprite;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }

            UTinyHierarchyWindow.InvalidateSceneGraph();
            return(true);
        }
        private bool AddToEntity(UTinyEntity.Reference entityRef, Font font, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = font.name;

            var renderer = entity.GetOrAddComponent(Registry.GetTextRendererType());

            renderer["text"] = "Sample Text";
            renderer["font"] = font;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }

            UTinyHierarchyWindow.InvalidateSceneGraph();
            return(true);
        }
        private bool AddToEntity(UTinyEntity.Reference entityRef, AudioClip audioClip, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = audioClip.name;

            var audioSource = entity.GetOrAddComponent(Registry.GetAudioSourceType());

            audioSource.Refresh();
            audioSource["clip"]   = audioClip;
            audioSource["volume"] = 1.0f;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }
            UTinyHierarchyWindow.InvalidateSceneGraph();
            return(true);
        }
예제 #7
0
        private bool AddToEntity(UTinyEntity.Reference entityRef, Sprite sprite, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = sprite?.name ?? "NullSprite";

            var renderer = entity.GetOrAddComponent(Registry.GetSprite2DRendererType());

            renderer["sprite"] = sprite;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }

            UTinyEventDispatcher <ChangeSource> .Dispatch(ChangeSource.SceneGraph);

            return(true);
        }
예제 #8
0
        private bool AddToEntity(UTinyEntity.Reference entityRef, Font font, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = font.name;

            var renderer = entity.GetOrAddComponent(Registry.GetTextRendererType());

            renderer["text"] = "Sample Text";
            renderer["font"] = font;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }

            UTinyEventDispatcher <ChangeSource> .Dispatch(ChangeSource.SceneGraph);

            return(true);
        }
        private bool AddToEntity(UTinyEntity.Reference entityRef, Texture2D texture, bool runBindings)
        {
            var entity = entityRef.Dereference(m_Context.Registry);

            entity.Name = texture.name;

            var image2d = entity.GetOrAddComponent(Registry.GetImage2DType());

            image2d.Refresh();
            image2d["imageFile"] = texture;

            // @TODO Pull from texture importer
            image2d["pixelsToWorldUnits"] = 1.0f;

            if (runBindings)
            {
                BindingsHelper.RunAllBindings(entity);
            }
            UTinyHierarchyWindow.InvalidateSceneGraph();
            return(true);
        }