public MinimapDisplay(Transform parent)
        {
            for (int row = 0; row < tiles.GetLength(0); row++)
            {
                for (int col = 0; col < tiles.GetLength(1); col++)
                {
                    var pos = new Vector2(row * 32, col * 16);

                    var     s = new Sprite(HUDSpriteFactory.Instance.CreateMinimapBlack());
                    MapTile t = new MapTile(s, pos);
                    tiles[row, col] = t;
                    Scene.Add(t);
                    parent.AddChild(t);
                }
            }

            // link
            linkPosition = new HUDItem(HUDSpriteFactory.Instance.CreateMapGreenSquare(), new Vector2(0, 0));
            SetLinkPosition();
            Constants.SetLayerDepth(linkPosition, Constants.LayerDepth.Debug);
            Scene.Add(linkPosition);
            parent.AddChild(linkPosition);

            // boss
            bossRoom = new HUDItem(HUDSpriteFactory.Instance.CreateMapBossLocation(), new Vector2(0, 0));
            var bossSprite = bossRoom.GetComponent <Sprite>();

            bossSprite.SetVisible(false);
            bossSprite.SetAnimate(true);
            bossSprite.SetUpdateFrameSpeed(10);
            SetBossPosition();
            Constants.SetLayerDepth(bossRoom, Constants.LayerDepth.Debug);
            Scene.Add(bossRoom);
            parent.AddChild(bossRoom);
        }
Beispiel #2
0
        public Link(Vector2 pos)
        {
            // ToDo: move to an appropriate place in this constructor
            AddComponent(new LinkLevelBehavior());

            this.name = "Link";

            // don't do any logic here, just add Components that do the logic
            Transform transform = GetComponent <Transform>();

            transform.position = pos;

            BasicSprite imageSprite = LinkSpriteFactory.Instance.CreateLinkWalkingUp();
            Sprite      sprite      = new Sprite(imageSprite);

            sprite.SetAnimate(false);
            AddComponent(sprite);


            var wideLink = new WideLink();

            transform.AddChild(wideLink);
            var sword = new Sword();

            transform.AddChild(sword);
            BehaviorScript script = new LinkBehavior(sword, wideLink);

            AddComponent(script);

            BehaviorScript inventory = new LinkInventory();

            AddComponent(inventory);

            BehaviorScript healthManagement = new LinkHealthManagement();

            AddComponent(healthManagement);

            Collider coll = new Collider(new RectangleF(6, 38, 30, 24));

            AddComponent(coll);
            coll.response = new LinkCollisionResponse(this);

            Constants.SetLayerDepth(this, Constants.LayerDepth.Player);

            BehaviorScript xp = new LinkXPManager();

            AddComponent(xp);

            //transform.AddChild(new TransformTest());
        }
Beispiel #3
0
        public static GameObject AddChildGameObject(this Transform t, string name, Vector3 localPosition, Vector3 localScale)
        {
            GameObject child = !(t is RectTransform) ? new GameObject(name) : new GameObject(name, new Type[] { typeof(RectTransform) });

            t.AddChild(child, localPosition, localScale);
            return(child);
        }
        //描画オブジェクトを作成
        AdvGraphicObject CreateObject(string name, AdvGraphicInfo grapic)
        {
            AdvGraphicObject obj;
            //IAdvGraphicObjectがAddComponentされたプレハブをリソースに持つかチェック
            GameObject prefab;

            if (grapic.TryGetAdvGraphicObjectPrefab(out prefab))
            {
                //プレハブからリソースオブジェクトを作成して返す
                GameObject go = GameObject.Instantiate(prefab);
                go.name = name;
                obj     = go.GetComponent <AdvGraphicObject>();
                rootObjects.AddChild(obj.gameObject);
            }
            else
            {
                obj = rootObjects.AddChildGameObjectComponent <AdvGraphicObject>(name);
            }
            obj.Init(this, grapic);

            //最初の描画時は位置をリセットする
            if (currentGraphics.Count == 0)
            {
                this.ResetCanvasRectTransform();
            }

            currentGraphics.Add(obj.name, obj);
            return(obj);
        }
        /// <summary>
        /// 克隆物体并添加到parent下
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="clone"></param>
        /// <returns></returns>
        public static GameObject CloneAndAddClild(this Transform parent, GameObject clone)
        {
            var obj = (GameObject)UnityEngine.Object.Instantiate(clone);

            parent.AddChild(obj.transform);
            return(obj);
        }
Beispiel #6
0
        /// <summary>
        /// GameObjectを作成し、子として追加
        /// </summary>
        /// <param name="parent">親</param>
        /// <param name="name">作成する子の名前</param>
        /// <param name="localPosition">子に設定するローカル座標</param>
        /// <returns>追加済みの子</returns>
        /// <param name="localScale">子に設定するローカルスケール</param>
        public static GameObject AddChildGameObject(this Transform t, string name, Vector3 localPosition, Vector3 localScale)
        {
            GameObject go = (t is RectTransform) ? new GameObject(name, typeof(RectTransform)) : new GameObject(name);

            t.AddChild(go, localPosition, localScale);
            return(go);
        }
        public void AddOption(string label, Sprite icon, bool value, Action <bool> toggledCallback, object optionData)
        {
            var item = root.AddChild(itemTemplate);

            item.Init(label, icon, value, isOn =>
            {
                if (suspendCallback)
                {
                    return;
                }
                filterInput.text = string.Empty;
                if (isOn && !multiselect)
                {
                    foreach (var x in _options.Where(x => x.IsOn && x != item))
                    {
                        x.IsOn = false;
                    }
                }
                UpdateSelection();
                toggledCallback(isOn);
                if (isOn && content.activeSelf && !multiselect)
                {
                    ToggleOptions();
                }
            },
                      optionData);
            if (multiselect)
            {
                item.toggle.group = null;
            }
            _options.Add(item);
            UpdateSelection();
        }
Beispiel #8
0
        private void Items_OnInsertItem(T obj, int index)
        {
            var view = new ListViewItem <T>(obj);

            keyToView[obj] = view;
            Transform.AddChild(view);
        }
Beispiel #9
0
        void ShowUtilityButtons()
        {
            EditorGUILayout.BeginHorizontal();

            // Reset Button
            if (GUILayout.Button(new GUIContent(". Reset  .", "Resets the transform to it's original state."), EditorStyles.miniButton, GUILayout.Width("Reset".GetWidth(EditorStyles.miniFont) + 12)))
            {
                Undo.RegisterCompleteObjectUndo(targets, "Transform Reset");

                for (int i = 0; i < Selection.transforms.Length; i++)
                {
                    Transform selectedTransform = Selection.transforms[i];
                    selectedTransform.Reset();
                    SnapSettings.DeleteKey("Toggle" + "Snap" + selectedTransform.GetInstanceID());
                    SnapSettings.DeleteKey("Toggle" + "Grid" + selectedTransform.GetInstanceID());
                    EditorUtility.SetDirty(selectedTransform);
                    deleteBreak = true;
                }

                return;
            }

            Separator(false);

            // Snap Button
            snap = ShowToggleButton("Snap", "Toggles the snapping of the transform to the grid. See Magicolo's Tools/Snap Settings to change the snap settings.", EditorStyles.miniButtonLeft);
            EditorGUI.BeginChangeCheck();
            grid = ShowToggleButton("Grid", "Toggles the display of the grid. See Magicolo's Tools/Snap Settings to change the grid display settings.", EditorStyles.miniButtonRight);
            if (EditorGUI.EndChangeCheck())
            {
                SceneView.RepaintAll();
            }

            // Add Button
            if (GUILayout.Button(new GUIContent(". Add  .", "Adds a child to the transform."), EditorStyles.miniButtonLeft, GUILayout.Width("Add".GetWidth(EditorStyles.miniFont) + 12)))
            {
                for (int i = 0; i < Selection.transforms.Length; i++)
                {
                    Transform selectedTransform = Selection.transforms[i];
                    Undo.RegisterCreatedObjectUndo(selectedTransform.AddChild("New Child").gameObject, "New Child");
                    EditorUtility.SetDirty(selectedTransform);
                }
            }

            // Sort Button
            if (GUILayout.Button(new GUIContent(". Sort  .", "Sorts the immediate children of the transform alphabetically."), EditorStyles.miniButtonRight, GUILayout.Width("Sort".GetWidth(EditorStyles.miniFont) + 12)))
            {
                Undo.RegisterCompleteObjectUndo(targets, "Transform Sort");

                for (int i = 0; i < Selection.transforms.Length; i++)
                {
                    Transform selectedTransform = Selection.transforms[i];
                    selectedTransform.SortChildren();
                    EditorUtility.SetDirty(selectedTransform);
                }
            }

            EditorGUILayout.EndHorizontal();
        }
Beispiel #10
0
 public static GameObject CreateObject(this UnityEngine.MonoBehaviour load, GameObject obj, Transform parent = null)
 {
     if (Object.Instantiate(obj) is GameObject go)
     {
         parent?.AddChild(go.transform);
         return(go);
     }
     return(null);
 }
Beispiel #11
0
        public Slider()
        {
            RegisterService <IMouseEvents>(new MouseHandler());
            RegisterService <IMouseWheel>(this);
            RegisterService <IPixelShader>(this);
            RegisterService <ILayout>(new PassDownChildrenLayout());

            Value = new ObservableProperty <float>(0, v => v.Clamp(0, 1));
            Transform.AddChild(new SliderHandle(Value));
        }
        public override void OnSceneLoaded(SceneView sceneView)
        {
            base.OnSceneLoaded(sceneView);
            _scenesLoaded.Add(sceneView.GetType());

            var sceneName = CpUnityExtensions.GetSceneName(sceneView.GetType());
            var text      = textRoot.AddChild(textPrefab);

            text.name = sceneName;
            text.text = sceneName;
        }
Beispiel #13
0
        public static Transform FindOrAddChild(this Transform parent, string childName)
        {
            var child = parent.FindChild(childName);

            if (child == null)
            {
                child = parent.AddChild(childName);
            }

            return(child);
        }
Beispiel #14
0
        public static IPool CreateTypePool(Type type, int startSize = 0)
        {
            IPool pool;

            if (typeof(Component).IsAssignableFrom(type))
            {
                var gameObject = new GameObject(type.Name);
                var reference  = gameObject.AddComponent(type);
                gameObject.SetActive(false);

                Transform poolTransform = null;

                if (ApplicationUtility.IsPlaying)
                {
                    poolTransform = Transform.AddChild(reference.name + " Pool");
                    reference.transform.parent = poolTransform;
                }

                var poolType = typeof(ComponentPool <>).MakeGenericType(type);
                pool = (IPool)Activator.CreateInstance(poolType, reference, poolTransform, startSize);
            }
            else if (typeof(GameObject).IsAssignableFrom(type))
            {
                var reference = new GameObject(type.Name);
                reference.SetActive(false);

                Transform poolTransform = null;

                if (ApplicationUtility.IsPlaying)
                {
                    poolTransform = Transform.AddChild(reference.name + " Pool");
                    reference.transform.parent = poolTransform;
                }

                pool = new GameObjectPool(reference, poolTransform, startSize);
            }
            else if (typeof(ScriptableObject).IsAssignableFrom(type))
            {
                var poolType = typeof(ScriptablePool <>).MakeGenericType(type);
                pool = (IPool)Activator.CreateInstance(poolType, startSize);
            }
            else
            {
                var reference = Activator.CreateInstance(type);
                var poolType  = typeof(Pool <>).MakeGenericType(type);
                pool = (IPool)Activator.CreateInstance(poolType, reference, startSize);
            }

            return(pool);
        }
Beispiel #15
0
        static bool Prepare(Transform rootTransform)
        {
            meshGroupHolder = rootTransform.FindChild("MeshGroup");

            if (meshGroupHolder != null)
            {
                meshGroupHolder.SetAsLastSibling();
                return(false);
            }
            else
            {
                meshGroupHolder = rootTransform.AddChild("MeshGroup");
                return(true);
            }
        }
Beispiel #16
0
    /// <summary>
    /// 添加子节点并绑定组件
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="parent"></param>
    /// <returns></returns>
    public static T AddChildComponent <T>(this Transform parent) where T : MonoBehaviour
    {
        //已经存在,就直接返回
        T t = parent.GetComponentInChildren <T>();

        if (t != null)
        {
            return(t);
        }
        //不存在,重新创建
        GameObject go = new GameObject();

        t = go.AddComponent <T>();
        parent.AddChild(go.transform);
        go.name = typeof(T).ToString();
        return(t);
    }
        public ColorPickerExample()
        {
            var mouse = new MouseHandler();

            RegisterService <IMouseEvents>(mouse);
            RegisterService <IMouseWheel>(mouse);
            RegisterService <ILayout>(this);

            label = new Label
            {
                Text    = "This is simple example showing 'fake' shader to generate color wheel. Fake, because it is rendered by CPU, so the performance will be low",
                Padding = Vector2.One * 40
            };

            picker = new ColorPicker();

            Transform.AddChild(label);
            Transform.AddChild(picker);
        }
Beispiel #18
0
        public MessagePopup(string text, float time)
        {
            RegisterService <IRenderer>(this);

            label = new Label
            {
                Text = text,
            };
            label.Transform.Pivot  = Vector2.Half;
            label.Transform.Anchor = new Anchor(Vector2.Half, Vector2.Half);
            label.Transform.Size   = new Vector2(200, 150);

            sw.Start();

            Transform.Anchor = new Anchor(Vector2.Zero, Vector2.One);

            Transform.AddChild(label);
            this.time = time;
        }
Beispiel #19
0
        public static IPool CreatePrefabPool(object reference, int startSize = 0)
        {
            IPool pool;

            if (reference is Component)
            {
                var       component     = (Component)reference;
                Transform poolTransform = null;

                if (ApplicationUtility.IsPlaying)
                {
                    poolTransform = Transform.AddChild(component.name + " Pool");
                }

                var poolType = typeof(ComponentPool <>).MakeGenericType(reference.GetType());
                pool = (IPool)Activator.CreateInstance(poolType, reference, poolTransform, startSize);
            }
            else if (reference is GameObject)
            {
                var       gameObject    = (GameObject)reference;
                Transform poolTransform = null;

                if (ApplicationUtility.IsPlaying)
                {
                    poolTransform = Transform.AddChild(gameObject.name + " Pool");
                }

                pool = new GameObjectPool(gameObject, poolTransform, startSize);
            }
            else if (reference is ScriptableObject)
            {
                var poolType = typeof(ScriptablePool <>).MakeGenericType(reference.GetType());
                pool = (IPool)Activator.CreateInstance(poolType, reference, startSize);
            }
            else
            {
                var poolType = typeof(Pool <>).MakeGenericType(reference.GetType());
                pool = (IPool)Activator.CreateInstance(poolType, reference, startSize);
            }

            return(pool);
        }
Beispiel #20
0
    /// <summary>
    /// 实例化预设体并添加到子节点
    /// </summary>
    /// <param name="parent"></param>
    /// <param name="prefab"></param>
    /// <returns></returns>
    static public GameObject AddPrefabChild(this Transform parent, GameObject prefab)
    {
        if (parent == null || prefab == null)
        {
            Debug.LogError("parent or prefab is null");
            return(null);
        }
        GameObject go = GameObject.Instantiate(prefab) as GameObject;

        if (go != null)
        {
            parent.AddChild(go.transform);
            go.name = prefab.name;
        }
        else
        {
            Debug.LogError("Instantiate a prefab failed : " + prefab.name);
        }
        return(go);
    }
Beispiel #21
0
    public void OnAddClick()
    {
        index++;
        var item = imageParent.AddChild(image.gameObject);
        var pos  = image.transform.localPosition;

        item.transform.localPosition = new Vector3(pos.x + (index + 1) * 100, pos.y + (index + 1) * 100, 0);

        UIDynamicRawImage data      = item.transform.Find("RawImage/DynamicImage").GetComponent <UIDynamicRawImage>();
        string            imageName = paths[pathIndex];

        data.SetImage(imageName);
        data.gameObject.name = imageName;
        pathIndex++;
        if (pathIndex >= paths.Count)
        {
            pathIndex = 0;
        }
        images.Add(data);
    }
Beispiel #22
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="par"></param>
            /// <param name="initializeProperties">A method that initializes properties on the gameobject before OnSpawned message is called.</param>
            /// <returns></returns>
            internal SpawnedObjectController Spawn(Vector3 pos, Quaternion rot, Transform par, System.Action <GameObject> initializeProperties)
            {
                if (_instances.Count == 0)
                {
                    int cnt     = this.Count;
                    int newSize = cnt + ResizeBuffer;
                    if (LimitAmount > 0)
                    {
                        newSize = Mathf.Min(newSize, LimitAmount);
                    }

                    if (newSize > cnt)
                    {
                        for (int i = cnt; i < newSize; i++)
                        {
                            _instances.Add(CreateCacheInstance(i));
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }

                //var cntrl = _instances[0];
                //_instances.RemoveAt(0);
                var cntrl = _instances.Pop();

                _activeInstances.Add(cntrl);

                par.AddChild(cntrl.transform);
                cntrl.transform.position = pos;
                cntrl.transform.rotation = rot;
                if (initializeProperties != null)
                {
                    initializeProperties(cntrl.gameObject);
                }
                cntrl.SetSpawned();

                return(cntrl);
            }
Beispiel #23
0
        public RemoveVoxelEditingTool(Action <Entity> setVoxelRender, World world, PhysicsSystem physicsSystem, Entity entity) : base(world, physicsSystem, entity)
        {
            _displaySpaceEntity = world.CreateEntity();
            var voxelSpace = new VoxelSpace(1, 1, _displaySpaceEntity);

            _displaySpaceEntity.Set(voxelSpace);
            var spaceTransform = new Transform();

            _displaySpaceEntity.Set(spaceTransform);

            _displayGridEntity = world.CreateEntity();
            _displayGridEntity.Set(new LightVertexResources());
            _displayGridEntity.Set(new VoxelGrid(1, 1, voxelSpace, Vector3i.Zero));
            voxelSpace[Vector3i.Zero] = _displayGridEntity;
            setVoxelRender(_displayGridEntity);
            var gridTransform = new Transform();

            spaceTransform.AddChild(gridTransform);
            _displayGridEntity.Set(gridTransform);
            _displayGridEntity.Disable();
        }
    public static GameObject GetOrAddChild(this Transform parent, string resourceURI,
                                           string childName = null)
    {
        if (childName == null)
        {
            childName = Load(resourceURI).name;
        }

        Transform c = parent.Find(childName);

        if (c != null)
        {
            return(c.gameObject);
        }

        GameObject child = parent.AddChild(resourceURI);

        child.name = childName;

        return(child);
    }
Beispiel #25
0
    void OnLoadImageCallBack(string newPath, Object obj)
    {
        if (obj != null)
        {
            Texture2D data = (Texture2D)obj;
            texture2dDic[data] = newPath;
        }
        else
        {
            Debug.Log("can not load obj:" + newPath);
        }
        taskIndex--;
        texture2dList.Clear();
        if (taskIndex == 0)//全都加载完
        {
            foreach (var item in texture2dDic)
            {
                texture2dList.Add(item.Key);
            }
            texture2dList.Sort((emp1, emp2) => emp1.width.CompareTo(emp2.width));
            int count = texture2dList.Count;

            for (int i = 0; i < count; i++)
            {
                index++;
                Texture2D tex2D = texture2dList[i];
                var       item  = imageParent.AddChild(root.gameObject);
                objs.Add(item);
                var pos = imageParent.transform.localPosition;

                item.transform.localPosition = new Vector3(pos.x + (index + 1) * 100, pos.y + (index + 1) * 100, 0);

                UIPackingRawImage image = item.transform.Find("RawImage/DynamicImage").GetComponent <UIPackingRawImage>();
                image.SetGroup(baseUIPackingRawImage.mGroup);
                image.SetImage(texture2dDic[tex2D], tex2D);
            }
            texture2dDic.Clear();
            texture2dList.Clear();
        }
    }
Beispiel #26
0
 void Awake()
 {
     //得到UI根节点对象、脚本节点对象
     _GoCanvasRoot     = GameObject.FindGameObjectWithTag(UIConfig.SysTagCanvas);
     _TraUIScriptsNode = _GoCanvasRoot.transform.FindChildNode(UIConfig.SysScriptManagerNode);
     //把本脚本实例,作为“脚本节点对象”的子节点。
     _TraUIScriptsNode.AddChild(gameObject.transform);
     //得到“顶层面板”、“遮罩面板”
     _GoTopPanel  = _GoCanvasRoot;
     _GoMaskPanel = _GoCanvasRoot.transform.FindChildNode("_UIMaskPanel").gameObject;
     //得到UI摄像机原始的“层深”
     _UICamera = GameObject.FindGameObjectWithTag("_TagUICamera").GetComponent <Camera>();
     if (_UICamera != null)
     {
         //得到UI摄像机原始“层深”
         _OriginalUICameralDepth = _UICamera.depth;
     }
     else
     {
         Debug.Log(GetType() + "/Start()/UI_Camera is Null!,Please Check! ");
     }
 }
Beispiel #27
0
        public ColorPicker()
        {
            layout.Owner = this;

            var mouseHandler = new MouseHandler();

            RegisterService <ILayout>(this);
            RegisterService <IMouseEvents>(mouseHandler);
            RegisterService <IMouseWheel>(mouseHandler);

            hueSlider = new Slider();

            hueSlider.Transform.Location = new Vector2(0, 0);
            hueSlider.Transform.Size     = new Vector2(20, 0);

            colorBox = new ColorBox();

            colorBox.Hue.bind(hueSlider.Value);

            Transform.AddChild(hueSlider);
            Transform.AddChild(colorBox);
        }
Beispiel #28
0
        private BinaryTreeNode <T> NodeAdded(ITreeNode <T> old, ITreeNode <T> nnew)
        {
            if (old != null)
            {
                nodeToComponentDict[old].OnNodeClick -= NewNode_OnNodeClick;
                Transform.RemoveChild(nodeToComponentDict[old]);
                nodeToComponentDict.Remove(old);
            }
            if (nnew != null)
            {
                var newNode = new BinaryTreeNode <T>(nnew);
                nodeToComponentDict[nnew] = newNode;

                nnew.Left.OnChange  += NodeAddedHelper;
                nnew.Right.OnChange += NodeAddedHelper;

                newNode.OnNodeClick += NewNode_OnNodeClick;

                Transform.AddChild(newNode);
                return(newNode);
            }
            return(null);
        }
Beispiel #29
0
        public Player(string name = "Player") : base(name, null)
        {
            Tag = "Player";

            AddComponent(new Animator());
            AddComponent(new Collider());
            AddComponent(new PhysicsBody());

            Animator = GetComponent <Animator>();
            Collider = GetComponent <Collider>();
            Body     = GetComponent <PhysicsBody>();

            Body.Mass       = 10;
            Body.Elasticity = 0;
            Collider.CoefficientOfFriction = 0.2;

            Animator.Add(Resources.GetAnimation("Idle"));
            Animator.Add(Resources.GetAnimation("Running"));
            Animator.Add(Resources.GetAnimation("Jumping"));

            Camera = new Camera("Player Camera");
            Transform.AddChild(Camera.Transform);
        }
Beispiel #30
0
        public static Transform CloneTransformTree(Animator parser, Transform frame, Transform parent)
        {
            Transform trans = new Transform(parser.file);
            GameObject gameObj = new GameObject(parser.file);
            gameObj.m_Name = (string)frame.m_GameObject.instance.m_Name.Clone();
            UniqueName(parser, gameObj);
            gameObj.AddLinkedComponent(trans);

            parser.m_Avatar.instance.AddBone(parent, trans);

            trans.m_LocalRotation = frame.m_LocalRotation;
            trans.m_LocalPosition = frame.m_LocalPosition;
            trans.m_LocalScale = frame.m_LocalScale;
            CopyUnknowns(frame, trans);

            trans.InitChildren(frame.Count);
            for (int i = 0; i < frame.Count; i++)
            {
                trans.AddChild(CloneTransformTree(parser, frame[i], trans));
            }

            return trans;
        }
Beispiel #31
0
        public TreeExample()
        {
            mouse = new MouseHandler();
            RegisterService <ILayout>(this);
            RegisterService <IMouseEvents>(mouse);

            var random = new System.Random();

            addRandomNode  = new Button("Add random node");
            tree           = new BSTTree <int>();
            binaryTreeView = new BinaryTreeView <int>(tree);
            label          = new Label
            {
                Text    = "Click on nodes",
                Padding = new Common.Algebra.Vector2(10, 10)
            };

            addRandomNode.Transform.Size = new Common.Algebra.Vector2(220, 40);
            addRandomNode.OnClick       += () => tree.Insert(random.Next(-20, 20));

            binaryTreeView.OnNodeClick += (node) =>
            {
                popup = new MessagePopup(node.Value.ToString(), 2);
                mouse.Block(true);
                popup.TimePassed += () =>
                {
                    Transform.RemoveChild(popup);
                    mouse.Block(false);
                    popup = null;
                };
                Transform.AddChild(popup);
            };

            Transform.AddChild(addRandomNode);
            Transform.AddChild(binaryTreeView);
            Transform.AddChild(label);
        }
Beispiel #32
0
        void MergeFrame(Transform srcParent, Transform destParent)
        {
            for (int i = 0; i < destParent.Count; i++)
            {
                var dest = destParent[i];
                for (int j = 0; j < srcParent.Count; j++)
                {
                    var src = srcParent[j];
                    if (src.m_GameObject.instance.m_Name == dest.m_GameObject.instance.m_Name)
                    {
                        MergeFrame(src, dest);

                        srcParent.RemoveChild(j);
                        destParent.RemoveChild(i);
                        destParent.InsertChild(i, src);
                        break;
                    }
                }
            }

            if (srcParent.m_GameObject.instance.m_Name == destParent.m_GameObject.instance.m_Name)
            {
                while (destParent.Count > 0)
                {
                    var dest = destParent[0];
                    destParent.RemoveChild(0);
                    srcParent.AddChild(dest);
                }
            }
            else
            {
                while (srcParent.Count > 0)
                {
                    var src = srcParent[0];
                    srcParent.RemoveChild(0);
                    destParent.AddChild(src);
                }
            }
        }
Beispiel #33
0
        public void MergeFrame(Transform srcFrame, int destParentId)
        {
            Transform srcParent = new Transform(srcFrame.file);
            GameObject srcGameObj = new GameObject(srcFrame.file);
            srcGameObj.AddLinkedComponent(srcParent);
            srcParent.InitChildren(1);
            srcParent.AddChild(srcFrame);

            Transform destParent;
            if (destParentId < 0)
            {
                destParent = new Transform(srcFrame.file);
                GameObject destGameObj = new GameObject(srcFrame.file);
                destGameObj.AddLinkedComponent(destParent);
                destParent.InitChildren(1);
                destParent.AddChild(Parser.RootTransform);
                Parser.m_GameObject.instance.RemoveLinkedComponent(Parser);
            }
            else
            {
                destParent = Frames[destParentId];
            }

            MergeFrame(srcParent, destParent);

            if (destParentId < 0)
            {
                //Parser.RootTransform = srcParent[0];
                srcParent[0].m_GameObject.instance.AddLinkedComponent(Parser);
                srcParent.RemoveChild(0);
                destParent.m_GameObject.instance.RemoveLinkedComponent(destParent);
                srcFrame.file.RemoveSubfile(destParent.m_GameObject.instance);
                srcFrame.file.RemoveSubfile(destParent);
            }

            srcGameObj.RemoveLinkedComponent(srcParent);
            srcFrame.file.RemoveSubfile(srcGameObj);
            srcFrame.file.RemoveSubfile(srcParent);

            if (Parser.file.Bundle != null)
            {
                Parser.file.Bundle.RegisterForUpdate(Parser.m_GameObject.asset);
            }
            InitLists();
            Changed = true;
        }
Beispiel #34
0
        public static Transform CreateTransformTree(Animator parser, ImportedFrame frame, Transform parent)
        {
            Transform trans = new Transform(parser.file);
            GameObject gameObj = new GameObject(parser.file);
            gameObj.m_Name = (string)frame.Name.Clone();
            UniqueName(parser, gameObj);
            gameObj.AddLinkedComponent(trans);

            parser.m_Avatar.instance.AddBone(parent, trans);

            Vector3 t, s;
            Quaternion r;
            frame.Matrix.Decompose(out s, out r, out t);
            t.X *= -1;
            Vector3 euler = FbxUtility.QuaternionToEuler(r);
            euler.Y *= -1;
            euler.Z *= -1;
            trans.m_LocalRotation = FbxUtility.EulerToQuaternion(euler);
            trans.m_LocalPosition = t;
            trans.m_LocalScale = s;

            trans.InitChildren(frame.Count);
            for (int i = 0; i < frame.Count; i++)
            {
                trans.AddChild(CreateTransformTree(parser, frame[i], trans));
            }

            return trans;
        }