示例#1
0
            void ICustomVisit <UTinyEntity.Reference> .CustomVisit(UTinyEntity.Reference value)
            {
                int index;

                if (Property.Name == "parent" &&
                    m_Container is UTinyObject.PropertiesContainer &&
                    ((UTinyObject.PropertiesContainer)m_Container).ParentObject.Type.Equals(VisitorContext.Registry
                                                                                            .GetTransformType()))
                {
                    if (!VisitorContext.EntityIndexMap.TryGetValue(value, out index))
                    {
                        return;
                    }

                    var transformTypeName =
                        UTinyBuildPipeline.GetJsTypeName(VisitorContext.Registry.GetTransformType()
                                                         .Dereference(VisitorContext.Registry));

                    var line = $"e{index}.getComponent({transformTypeName}).appendChild({Entity});";
                    VisitorContext.Writer.Line(line);
                }
                else
                {
                    if (!VisitorContext.EntityIndexMap.TryGetValue(value, out index))
                    {
                        return;
                    }

                    VisitorContext.Writer.Line($"{PropertySetter(Property.Name)}(e{index});");
                }
            }
 private bool AddToEntity(UTinyEntity.Reference entity, Object obj, bool runBindings = true)
 {
     if (obj is Texture2D)
     {
         var texture = (Texture2D)obj;
         var path    = AssetDatabase.GetAssetPath(texture);
         var sprite  = AssetDatabase.LoadAllAssetsAtPath(path).OfType <Sprite>().FirstOrDefault();
         if (null == sprite)
         {
             Debug.LogWarning($"{UTinyConstants.ApplicationName}: Only Sprites are supported in {UTinyConstants.ApplicationName}.");
         }
         return(AddToEntity(entity, sprite, runBindings));
     }
     else if (obj is Sprite)
     {
         return(AddToEntity(entity, obj as Sprite, runBindings));
     }
     else if (obj is AudioClip)
     {
         return(AddToEntity(entity, obj as AudioClip, runBindings));
     }
     else if (obj is Font)
     {
         return(AddToEntity(entity, obj as Font, runBindings));
     }
     return(false);
 }
        public sealed override void Create(UTinyEntityView view, Transform t)
        {
            UTinyEntity.Reference parentRef = UTinyEntity.Reference.None;
            if (t.parent)
            {
                parentRef = t.parent.GetComponent <UTinyEntityView>()?.EntityRef ?? UTinyEntity.Reference.None;
            }

            var graph = EntityGroupManager.GetSceneGraph(
                parentRef.Equals(UTinyEntity.Reference.None) ?
                EntityGroupManager.ActiveEntityGroup
                                        : (UTinyEntityGroup.Reference)parentRef.Dereference(Registry).EntityGroup);

            if (null == graph)
            {
                return;
            }

            var transform = new UTinyObject(Registry, GetMainTinyType());

            SyncTransform(t, transform);

            var entityNode = graph.CreateFromExisting(t, t.parent);
            var entity     = entityNode.Entity.Dereference(Registry);

            var tiny = entity.GetOrAddComponent(GetMainTinyType());

            tiny.CopyFrom(transform);

            BindingsHelper.RunBindings(entity, tiny);
        }
示例#4
0
        private EntityNode FindRecursive(EntityNode node, UTinyEntity.Reference entity)
        {
            if (node.Entity.Equals(entity))
            {
                return(node);
            }

            return(node.Children.Select(r => FindRecursive(r, entity)).NotNull().FirstOrDefault());
        }
示例#5
0
            void ICustomVisit <UTinyEntity.Reference> .CustomVisit(UTinyEntity.Reference value)
            {
                int index;

                if (!VisitorContext.EntityIndexMap.TryGetValue(value, out index))
                {
                    return;
                }
                VisitorContext.Writer.Line($"{Path}.{Property.Name} = e{index};");
            }
示例#6
0
 public IEntityNode FindNode(UTinyEntity.Reference entity)
 {
     if (entity.Dereference(Registry).HasTransform())
     {
         return(Roots.Select(r => FindRecursive(r, entity)).NotNull().FirstOrDefault());
     }
     else
     {
         return(StaticEntities.Find(n => n.Entity.Equals(entity)));
     }
 }
示例#7
0
            void ICustomVisit <UTinyEntity.Reference> .CustomVisit(UTinyEntity.Reference value)
            {
                if (!IsListItem)
                {
                    return;
                }

                int index;

                if (!VisitorContext.EntityIndexMap.TryGetValue(value, out index))
                {
                    return;
                }
                VisitorContext.Writer.Line($"{Path}[{ListIndex}] = e{index};");
            }
        public static void ShowEntityContextMenu(this HierarchyTree tree, UTinyEntity.Reference entityRef)
        {
            if (UTinyEntity.Reference.None.Id == entityRef.Id)
            {
                return;
            }

            var menu = new GenericMenu();

            menu.AddItem(new GUIContent("Create Entity"), false, () =>
            {
                tree.CreateEntityFromSelection();
            });

            menu.AddItem(new GUIContent("Rename"), false, () =>
            {
                tree.Rename(entityRef);
            });

            menu.AddItem(new GUIContent("Duplicate"), false, () =>
            {
                tree.DuplicateSelection();
            });

            menu.AddItem(new GUIContent("Delete"), false, () =>
            {
                tree.DeleteSelection();
            });

            menu.AddSeparator("");

            menu.AddItem(new GUIContent("New EntityGroup"), false, () =>
            {
                var context = EditorContext;
                if (null == context)
                {
                    return;
                }
                var registry = context.Registry;
                var project  = context.Project;
                CreateNewEntityGroup(project.Module.Dereference(registry));
            });

            menu.ShowAsContext();
        }
        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, 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);
        }
        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);
        }
示例#12
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);
        }
示例#13
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);
        }
示例#15
0
 public void RemoveEntityReference(UTinyEntity.Reference entity)
 {
     EntitiesProperty.Remove(this, entity);
 }
示例#16
0
 public void AddEntityReference(UTinyEntity.Reference entity)
 {
     EntitiesProperty.Add(this, entity);
 }
示例#17
0
 public void AddImplicitReference(UTinyEntity.Reference entity)
 {
     m_ImplicitReferences.Add(entity);
 }
        public void Rename(UTinyEntity.Reference entity)
        {
            var item = FindItem(entity.Dereference(m_Context.Registry).View.gameObject.GetInstanceID(), rootItem);

            BeginRename(item);
        }
示例#19
0
 bool IExcludeVisit <UTinyEntity.Reference> .ExcludeVisit(UTinyEntity.Reference value)
 {
     return(value.Equals(UTinyEntity.Reference.None));
 }