示例#1
0
        private void CreateHierarchy()
        {
            hierarchyPos = GUI.BeginScrollView(hierarchyRect, hierarchyPos, hierarchyViewRect);
            GUI.Box(hierarchyRect, "");
            Rect labelRect = hierarchyRect;

            labelRect.x     += 2;
            labelRect.y     += 2;
            labelRect.height = itemHeight;
            rootFoldOut      = EditorGUI.Foldout(hierarchyRect, rootFoldOut, "PUIRoot");
            GUI.EndScrollView();

            if (!rootFoldOut)
            {
                return;
            }

            Event e = Event.current;

            if (e.isMouse && e.type == EventType.MouseDown && e.button == 1)
            {
                if (labelRect.Contains(e.mousePosition))
                {
                    rootMenu.AddItem(new GUIContent("添加布局容器"), false, () => {
                        RectTransform rect     = GameObjectTool.NewUIGameObject("PUIContainer", uiRoot.gameObject);
                        PUIContainer container = rect.gameObject.OnAddComponent <PUIContainer>();
                        rect.sizeDelta         = container.nodeInfo.size;
                        containers.Add(container);
                    });
                }
                rootMenu.ShowAsContext();
                e.Use();
            }
            OnDrawContainer(hierarchyRect);
        }
示例#2
0
        private void InitGameObject(Character character, GameObject go)
        {
            go.transform.position = GameObjectTool.LogicToWorld(character.position);
            go.transform.forward  = GameObjectTool.LogicToWorld(character.direction);
            EntityController ec = go.GetComponent <EntityController>();

            if (ec != null)
            {
                ec.isCurrentPlayer = character.IsCurrentPlayer;
                ec.entity          = character;
                ec.enabled         = true;
            }

            PlayerController pc = go.GetComponent <PlayerController>();

            if (character.IsCurrentPlayer && pc != null)
            {
                User.Instance.CurrentCharacterObject = go;
                pc.ec        = ec;
                pc.character = character;
                GameObject playModule = ResMgr.GetPrefab("playModule", "module/common/PlayModule.prefab");
                playModule = Instantiate(playModule);
                DontDestroyOnLoad(playModule);
                Transform player = go.transform;
                playModule.transform.position = player.position;
                playModule.transform.rotation = player.rotation;
                player.SetParent(playModule.transform);
                player.localPosition = Vector3.zero;
                MainPlayerCamera.Instance.SetCurrentPlayer(player, playModule, playModule.GetComponent <CharacterController>());
            }
        }
示例#3
0
    public void OnEntityChanged(NEntity nEntity)
    {
        //Debug.LogFormat("Postion{0}", GameObjectTool.LogicToWorld(nEntity.Position));
        this.transform.position = GameObjectTool.LogicToWorld(nEntity.Position);

        this.transform.rotation = Quaternion.Euler((GameObjectTool.LogicToWorld(nEntity.Direction)));
    }
    private void LateUpdate()
    {
        if (character == null)
        {
            return;
        }
        Vector3 offset = this.rb.transform.position - lastPos;

        this.speed   = (int)(offset.magnitude * 100f / Time.deltaTime);                                    //magnitude向量的模
        this.lastPos = this.rb.transform.position;
        if ((GameObjectTool.WorldToLogic(rb.transform.position) - this.character.position).magnitude > 50) //物理位置和逻辑位置大于50
        {
            this.character.SetPosition(GameObjectTool.WorldToLogic(this.rb.transform.position));
            this.SendEntityEvent(EntityEvent.None);//同步
        }
        this.transform.position = this.rb.transform.position;

        //var dir = GameObjectTool.LogicToWorld(character.direction);
        //var rot = new Quaternion();
        //rot.SetFromToRotation(dir, this.transform.forward);
        //if (rot.eulerAngles.y>this.turnAgle&&rot.eulerAngles.y<(360-this.turnAgle))
        //{
        //    character.SetDirection(GameObjectTool.WorldToLogic(this.transform.forward));
        //}
    }
示例#5
0
    private void LateUpdate()
    {
        if (this.character == null || !character.ready)//----
        {
            return;
        }

        Vector3 offset = this.rb.transform.position - lastPos;

        this.speed = (int)(offset.magnitude * 100f / Time.deltaTime);
        //Debug.LogFormat("LateUpdate velocity {0} : {1}", this.rb.velocity.magnitude, this.speed);
        this.lastPos = this.rb.transform.position;

        Vector3Int goLogicPos  = GameObjectTool.WorldToLogic(this.rb.transform.position);
        float      logicOffset = (goLogicPos - this.character.position).magnitude;

        if (logicOffset > 100)
        {
            this.character.SetPosition(GameObjectTool.WorldToLogic(this.rb.transform.position));
            this.SendEntityEvent(EntityEvent.None);
        }
        this.transform.position = this.rb.transform.position;
        Vector3    dir = GameObjectTool.LogicToWorld(this.character.direction);
        Quaternion rot = new Quaternion();

        rot.SetFromToRotation(dir, this.transform.forward);
        if (rot.eulerAngles.y > this.turnAngle && rot.eulerAngles.y < (360 - this.turnAngle))
        {
            character.SetDirection(GameObjectTool.WorldToLogic(this.transform.forward));
            this.SendEntityEvent(EntityEvent.None);
        }
    }
    private void LateUpdate()
    {
        if (this.character == null)
        {
            return;
        }

        //lastPos records the position of rigidbody after last update
        Vector3 offset = this.mRigidbody.transform.position - mLastPos;

        mSpeed = (int)(offset.magnitude * 100 / Time.deltaTime);

        mLastPos = mRigidbody.transform.position;

        Vector3Int goLogicPos  = GameObjectTool.WorldToLogic(this.mRigidbody.transform.position);
        float      logicOffset = (goLogicPos - this.character.position).magnitude;

        if (logicOffset > 100f)
        {
            this.character.SetPosition(GameObjectTool.WorldToLogic(this.mRigidbody.transform.position));
            this.SendEntityEvent(EntityEvent.None);
        }

        //update gameobject position
        this.transform.position = mRigidbody.transform.position;
    }
示例#7
0
    private void InitGameObject(GameObject go, Character character)
    {
        go.transform.position = GameObjectTool.LogicToWorld(character.position);
        go.transform.forward  = GameObjectTool.LogicToWorld(character.direction);
        EntityController ec = go.GetComponent <EntityController>();

        if (ec != null)
        {
            ec.entity   = character;
            ec.isPlayer = character.IsCurrentPlayer;
            ec.Ride(character.Info.Ride);
            character.Controller = ec;
        }
        PlayerInputController pc = go.GetComponent <PlayerInputController>();

        if (pc != null)
        {
            if (character.IsCurrentPlayer)
            {
                User.Instance.CurrentCharacterObject = pc;
                MainPlayerCamera.Instance.player     = go;
                pc.enabled          = true;
                pc.character        = character;
                pc.entityController = ec;
            }
            else
            {
                pc.enabled = false;
            }
        }
    }
示例#8
0
    public void UpdateTransform()//------
    {
        this.position = GameObjectTool.LogicToWorld(entity.position);
        this.rb.MovePosition(this.position);
        this.lastPosition = this.position;

        UpdateDirection();
    }
示例#9
0
    public static void ExportTeleporter()
    {
        Scene currScene = EditorSceneManager.GetActiveScene();

        if (currScene.isDirty)
        {
            EditorUtility.DisplayDialog("提示", "请先保存当前场景", "确定");
            return;
        }

        string currSceneName = currScene.path;

        DataManager.Instance.Load();
        int mapCount = DataManager.Instance.Maps.Count;
        int mapIndex = 0;

        foreach (var map in DataManager.Instance.Maps)
        {
            mapIndex++;
            string mapPath = $"Assets/Levels/{map.Value.Resource}.unity";
            if (!System.IO.File.Exists(mapPath))
            {
                Debug.LogError($"map'{map.Value.Resource}' no exist");
                continue;
            }

            EditorSceneManager.OpenScene(mapPath, OpenSceneMode.Single);

            TeleporterObj[] teleporterObjs = GameObject.FindObjectsOfType <TeleporterObj>();
            int             count          = teleporterObjs.Length;
            int             index          = 0;
            foreach (var teleporter in teleporterObjs)
            {
                index++;
                if (!DataManager.Instance.Teleporters.ContainsKey(teleporter.ID))
                {
                    Debug.LogError($"没有配置ID为{teleporter.ID}的传送点");
                    continue;
                }

                TeleporterDefine define = DataManager.Instance.Teleporters[teleporter.ID];
                if (define.MapID != map.Value.ID)
                {
                    Debug.LogError($"配置ID为{teleporter.ID}的传送点的MapID" +
                                   $"与实际该传送点所在地图ID不一致");
                    continue;
                }

                define.Position  = GameObjectTool.WorldToLogicN(teleporter.transform.position);
                define.Direction = GameObjectTool.WorldToLogicN(teleporter.transform.forward);
                EditorUtility.DisplayProgressBar("提示", string.Format("Scene:{0} ({1}/{2})", map.Value.Name, mapIndex, mapCount), index * 1.0f / count);
            }
        }
        DataManager.Instance.SaveTeleporters();
        EditorSceneManager.OpenScene(currSceneName, OpenSceneMode.Single);
        EditorUtility.ClearProgressBar();
        EditorUtility.DisplayDialog("提示", "导出完成", "确定");
    }
示例#10
0
 void UpdateTransform()
 {
     position           = GameObjectTool.LogicToWorld(entity.position);
     direction          = GameObjectTool.LogicToWorld(entity.direction);
     transform.position = position;
     transform.forward  = direction;
     lastPosition       = position;
     lastRotation       = rotation;
 }
示例#11
0
 internal void FaceTo(Vector3Int position)
 {
     this.SetDirection(GameObjectTool.WorldToLogic(GameObjectTool.LogicToWorld(position - this.position).normalized));
     this.UpdateEntityData();
     if (this.Controller != null)
     {
         this.Controller.UpdateDirection();
     }
 }
示例#12
0
    public void InitUI()
    {
        //assign transform by your ui framework
        //transform = ;
        text_TextContent_2 = transform.Find("TextContent_2").GetComponent <Text>();
        m_ItemTitleNode    = transform.Find("ItemTitleDiTu").gameObject;

        txt_TextTitle      = transform.Find("ItemTitleDiTu/ItemTitle_74").GetComponent <Text>();
        txt_TextTitle.text = GameObjectTool.GetLanguage(50138124);
    }
示例#13
0
    void UpdateTransform()
    {
        this.Position  = GameObjectTool.LogicToWorld(Entity.position);
        this.Direction = GameObjectTool.LogicToWorld(Entity.direction);

        this.m_Rigibody.MovePosition(this.Position);
        this.transform.forward = this.Direction;
        this.LastPosition      = this.Position;
        this.m_LastRotation    = this.m_Rotation;
    }
示例#14
0
    void UpdateTransform()
    {
        this.position  = GameObjectTool.LogicToWorld(entity.position);
        this.direction = GameObjectTool.LogicToWorld(entity.direction);

        this.rb.MovePosition(this.position);
        this.transform.forward = this.direction;
        this.lastPosition      = this.position;
        this.lastRotation      = this.rotation;
    }
示例#15
0
 public void PlayEffect(EffectType type, string name, NVector3 postion, float duration)
 {
     if (type == EffectType.Position || type == EffectType.Hit)
     {
         FXManager.Instance.PlayEffect(type, name, null, GameObjectTool.LogicToWorld(postion), duration);
     }
     else
     {
         this.EffectMgr.PlayEffect(type, name, null, GameObjectTool.LogicToWorld(postion), duration);
     }
 }
示例#16
0
 public static void ShowSelector(Vector3Int center, float range, float size, Action <Vector3> onPostionSelected)
 {
     if (TargetSelector.Instance == null)
     {
         return;
     }
     TargetSelector.Instance.center      = GameObjectTool.LogicToWorld(center);
     TargetSelector.Instance.range       = GameObjectTool.LogicToWorld(range);
     TargetSelector.Instance.size        = GameObjectTool.LogicToWorld(size);
     TargetSelector.Instance.selectPoint = onPostionSelected;
     TargetSelector.Instance.Active(true);
 }
示例#17
0
    public static void ExportTeleporters()
    {
        DataManager.Instance.Load();

        Scene  current      = EditorSceneManager.GetActiveScene();
        string currentScene = current.name;

        if (current.isDirty)
        {
            EditorUtility.DisplayDialog("Tip", "Please save the current scene", "OK");
            return;
        }

        List <Teleporter> allTeleporters = new List <Teleporter>();

        foreach (var map in DataManager.Instance.Maps)
        {
            string sceneFile = "Assets/Levels/" + map.Value.Resource + ".unity";
            if (!File.Exists(sceneFile))
            {
                Debug.LogErrorFormat("scene {0} does not exist!", sceneFile);
                continue;
            }

            EditorSceneManager.OpenScene(sceneFile, OpenSceneMode.Single);

            Teleporter[] teleporters = GameObject.FindObjectsOfType <Teleporter>();
            foreach (var teleporter in teleporters)
            {
                if (!DataManager.Instance.Teleporters.ContainsKey(teleporter.ID))
                {
                    EditorUtility.DisplayDialog("Error",
                                                String.Format("in map {0}, teleporter {1} does not exist!", map.Value.Name, teleporter.ID), "OK");
                    return;
                }

                TeleporterDefine define = DataManager.Instance.Teleporters[teleporter.ID];
                if (define.ID != teleporter.ID)
                {
                    EditorUtility.DisplayDialog("Error",
                                                String.Format("In map {0}, teleporter[{1}], mapID: {3} does not match", map.Value.Name,
                                                              teleporter.ID, define.ID), "OK");
                }

                define.Position  = GameObjectTool.WorldToLogicN(teleporter.transform.position);
                define.Direction = GameObjectTool.WorldToLogicN(teleporter.transform.forward);
            }
        }

        DataManager.Instance.SaveTeleporters();
        EditorSceneManager.OpenScene("Assets/Levels/" + currentScene + ".unity");
        EditorUtility.DisplayDialog("Tip", "All teleporters are successfully exported!", "OK");
    }
示例#18
0
    /// <summary>
    /// update controller's fields
    /// </summary>
    private void UpdateTransform()
    {
        //update transform to be the same with what stored in entity
        mPosition  = GameObjectTool.LogicToWorld(entity.position);
        mDirection = GameObjectTool.LogicToWorld(entity.direction);
        mSpeed     = entity.speed;

        mRigidbody.MovePosition(mPosition);
        this.transform.forward = mDirection;

        mLastPosition = mPosition;
        mLastPosition = mDirection;
    }
示例#19
0
 private void Update()
 {
     if (Models.User.Instance.TeleportID == this.ID)
     {
         User.Instance.CurrentCharacterObject.transform.position = this.transform.position;
         User.Instance.CurrentCharacterObject.transform.forward  = this.transform.forward;
         PlayerInputController pc = User.Instance.CurrentCharacterObject.GetComponent <PlayerInputController>();
         pc.character.SetDirection(GameObjectTool.WorldToLogic(this.transform.forward));
         pc.character.SetPosition(GameObjectTool.WorldToLogic(this.transform.position));
         pc.SendEntityEvent(EntityEvent.None);
         Models.User.Instance.TeleportID = 0;
     }
 }
示例#20
0
        public override void OnInitialization()
        {
            base.OnInitialization();
            mEntityRoot = GameObject.Find("EntityRoot").transform;

            for (int i = 0; i < defineEntityNames.Count; i++)
            {
                if (!mDefineEntity.ContainsKey(defineEntityNames[i]))
                {
                    mDefineEntity.Add(defineEntityNames[i], defineEntityGos[i]);
                }
            }

            //初始化相关的数据 并且将指定的类型均已添加到实体字典中
            List <Type> types = GlobalTool.GetRuntimeTypes();

            foreach (Type t in types)
            {
                if (!t.IsSubclassOf(typeof(Entity)))
                {
                    continue;
                }
                System.Object[]     objs = t.GetCustomAttributes(true);
                EntityInfoAttribute att  = objs[0] as EntityInfoAttribute;
                if (att != null)
                {
                    mEntities.Add(t, new List <Entity> ());

                    //对放实体对象的容器
                    GameObject group = GameObjectTool.NewGameObject(t.Name + "_[Group]", mEntityRoot.gameObject);
                    mEntityGroup[t] = group;

                    //按照实体的类型将队列初始化
                    mObjectPool[t] = new Queue <GameObject> ();
                    this.d("+++++", "添加实体类型" + t.GetType(), false);
                }
                else
                {
                    this.e("damon", "未定义实体资源属性");
                }
            }
            //实体的生命周期
            foreach (List <Entity> list in mEntities.Values)
            {
                foreach (Entity e in list)
                {
                    e.OnAwake();
                }
            }
        }
示例#21
0
    public static void ExportSpawnPoints()
    {
        DataManager.Instance.Load();
        Scene  current      = EditorSceneManager.GetActiveScene();
        string currentScene = current.name;

        if (current.isDirty)
        {
            EditorUtility.DisplayDialog("提示", "请先保存当前场景", "确定");
            return;
        }
        if (DataManager.Instance.SpawnPoints == null)
        {
            DataManager.Instance.SpawnPoints = new Dictionary <int, Dictionary <int, SpawnPointDefine> >();
        }
        string sceneFile;

        foreach (var map in DataManager.Instance.Maps)
        {
            sceneFile = "Assets/Levels/" + map.Value.Resource + ".unity";
            if (!System.IO.File.Exists(sceneFile))
            {
                Debug.LogWarningFormat("Scene{0} not existed!", sceneFile);
                continue;
            }
            EditorSceneManager.OpenScene(sceneFile, OpenSceneMode.Single);
            SpawnPoint[] spawnPoints = GameObject.FindObjectsOfType <SpawnPoint>();
            if (!DataManager.Instance.SpawnPoints.ContainsKey(map.Value.ID))
            {
                DataManager.Instance.SpawnPoints[map.Value.ID] = new Dictionary <int, SpawnPointDefine>();
            }
            foreach (var sp in spawnPoints)
            {
                if (!DataManager.Instance.SpawnPoints[map.Value.ID].ContainsKey(sp.ID))
                {
                    DataManager.Instance.SpawnPoints[map.Value.ID][sp.ID] = new SpawnPointDefine();
                }
                SpawnPointDefine def = DataManager.Instance.SpawnPoints[map.Value.ID][sp.ID];
                def.ID        = sp.ID;
                def.MapID     = map.Value.ID;
                def.Position  = GameObjectTool.WorldToLogicN(sp.transform.position);
                def.Direction = GameObjectTool.WorldToLogicN(sp.transform.forward);
            }
        }
        DataManager.Instance.SaveSpawnPoints();
        sceneFile = "Assets/Levels/" + currentScene + ".unity";
        EditorSceneManager.OpenScene(sceneFile);

        EditorUtility.DisplayDialog("提示", "刷怪点导出完成", "确定");
    }
示例#22
0
    private void LateUpdate()
    {
        Vector3 offset = this.rb.transform.position - lastPos;

        this.speed = (int)(offset.magnitude * 100f / Time.deltaTime);
        //Debug.LogFormat("LateUpdate velocity {0} : {1}", this.rb.velocity.magnitude, this.speed);
        this.lastPos = this.rb.transform.position;

        if ((GameObjectTool.WorldToLogic(this.rb.transform.position) - this.character.position).magnitude > 50)
        {
            this.character.SetPosition(GameObjectTool.WorldToLogic(this.rb.transform.position));
            this.SendEntityEvent(EntityEvent.None);
        }
        this.transform.position = this.rb.transform.position;
    }
示例#23
0
    void OnStart()
    {
        tableFactory = TableFactory.Instance;

        menuList = GameObjectTool.GenerateGos(prefab, tableFactory.count, tableMenu);
        OnDrawLayoutMenu(menuList);

        curTable = tableFactory[index];
        curTable.InitData();

        menuItemList = GameObjectTool.GenerateGos(prefab, curTable.count, tableItem);
        OnDrawLayoutMenuItem(curTable);

        InitView();
    }
示例#24
0
    public static void ExportTeleporters()
    {
        DataManager.Instance.Load();

        Scene  current      = EditorSceneManager.GetActiveScene();
        string currentScene = current.name;

        if (current.isDirty)
        {
            EditorUtility.DisplayDialog("提示", "请先保存场景", "确定");
            return;
        }

        List <TeleporterObject> allTeleporters = new List <TeleporterObject>();

        foreach (var map in DataManager.Instance.Maps)
        {
            string sceneFile = "Assets/Levels/" + map.Value.Resource + ".unity";
            if (!System.IO.File.Exists(sceneFile))
            {
                Debug.LogWarningFormat("Scene {0} not existed!", sceneFile);
                continue;
            }
            EditorSceneManager.OpenScene(sceneFile, OpenSceneMode.Single);

            TeleporterObject[] teleporters = GameObject.FindObjectsOfType <TeleporterObject>();
            foreach (var teleporter in teleporters)
            {
                if (!DataManager.Instance.Teleporters.ContainsKey(teleporter.ID))
                {
                    EditorUtility.DisplayDialog("错误", string.Format("地图:{0} 中配置的 Teleporter:[{1}]中不存在", map.Value.Resource, teleporter.ID), "确定");
                    return;
                }

                TeleporterDefine def = DataManager.Instance.Teleporters[teleporter.ID];
                if (def.MapID != map.Value.ID)
                {
                    EditorUtility.DisplayDialog("错误", string.Format("地图:{0} 中配置的 Teleporter:[{1}] MapID:[{2}] 错误", map.Value.Resource, teleporter.ID, def.MapID), "确定");
                    return;
                }
                def.Position  = GameObjectTool.WorldToLogicN(teleporter.transform.position);
                def.Direction = GameObjectTool.WorldToLogicN(teleporter.transform.forward);
            }
        }
        DataManager.Instance.SaveTeleporters();
        EditorSceneManager.OpenScene("Assets/Levels/" + currentScene + ".unity");
        EditorUtility.DisplayDialog("提示", "传送点到处完成", "确定");
    }
示例#25
0
        public void ShowCloseUpUI(ETModel.Match.HorseRunData selectedHorseData, UIBattleMainData uiMatchData)
        {
            GameObjectTool.TextOverFlowLimitWidth(uiMatchData.text_TextHorseName, selectedHorseData.horseName);
            //名马
            if (selectedHorseData.horseName.Contains("famousHorse__"))
            {
                GameObjectTool.TextOverFlowLimitWidth(uiMatchData.text_TextHorseName, selectedHorseData.horseName.Substring(13));
            }
            uiMatchData.text_TextPlayerName.text = selectedHorseData.playerNickname;
            uiMatchData.text_TextPower.text      = selectedHorseData.fightValue + "";
            uiMatchData.text_TextRoad.text       = string.Format("Track {0}", selectedHorseData.PathId + 1);

            var ancestryType = (GameObjectTool.AncestryType)ModelComTools.Config.GetAncestryByID(selectedHorseData.horseModleId).Type;

            GameObjectTool.LoadHorseIconByHorseClothes(uiMatchData.image_Horse.transform, selectedHorseData.clothesModel, ancestryType);
            uiMatchData.go_m_CloseUpInfo.SetActive(true);
        }
示例#26
0
    private void CreateCharacterObject(Character character)
    {
        if (!Characters.ContainsKey(character.entityId) || Characters[character.entityId] == null)
        {
            Object obj = Resloader.Load <Object>(character.Define.Resource);
            if (obj == null)
            {
                Debug.LogErrorFormat("Character[{0}] Resource[{1}] not existed.", character.Define.TID, character.Define.Resource);
                return;
            }
            GameObject go = (GameObject)Instantiate(obj);
            go.name = "Character_" + character.entityId + "_" + character.Info.Name;

            go.transform.position = GameObjectTool.LogicToWorld(character.position);
            go.transform.forward  = GameObjectTool.LogicToWorld(character.direction);
            go.transform.SetParent(_parent);
            Characters[character.entityId] = go;
            EntityController ec = go.GetComponent <EntityController>();
            if (ec != null)
            {
                ec.entity   = character;
                ec.isPlayer = character.IsPlayer;
                EntityManager.Instance.RegisterEntityChangeNotify(character.entityId, ec);
            }

            PlayerInputController pc = go.GetComponent <PlayerInputController>();
            if (pc != null)
            {
                if (character.Info.Id == Models.User.Instance.CurrentCharacter.Id)
                {
                    User.Instance.CurrentCharacterObject = go;
                    GameManager.CameraMgr.player         = go;
                    pc.enabled          = true;
                    pc.character        = character;
                    pc.entityController = ec;
                }
                else
                {
                    pc.enabled = false;
                }
            }
            GameManager.NameMgr.AddHeadBar(go.transform, character);
        }
    }
示例#27
0
        public GameObject OnSpawn(string name)
        {
            GameObject obj = null;

            if (mPool.Count > 0)
            {
                obj = mPool.Dequeue();
            }
            else
            {
                obj = GameObjectTool.Instantiated(mPrefab, name);
                obj.SetActive(true);
                mCount++;
            }
            if (mOnSpawn != null && obj != null)
            {
                mOnSpawn(obj);
            }
            return(obj);
        }
示例#28
0
    private void CreateCharacter(Entities.Character character)
    {
        if (!Characters.ContainsKey(character.entityId) || Characters[character.entityId] == null)
        {
            UnityEngine.Object obj = Resloader.Load <UnityEngine.Object>(character.Define.Resource);
            if (obj == null)
            {
                Debug.LogErrorFormat("Character[{0}] Resource[{1}] not existed.", character.Define.TID, character.Define.Resource);
                return;
            }
            GameObject go = (GameObject)Instantiate(obj, this.transform);
            go.name = "Character_" + character.Info.Id + "_" + character.Info.Name;

            go.transform.position          = GameObjectTool.LogicToWorld(character.position);
            go.transform.forward           = GameObjectTool.LogicToWorld(character.direction);
            Characters[character.entityId] = go;
            UIWorldElementManager.Instance.AddCharacterNameBar(go.transform, character);
        }
        InitGameObj(character, Characters[character.entityId]);
    }
示例#29
0
    private void InitCharacter(GameObject obj, Character cha)
    {
        Debug.LogFormat("GameObjectManager->InitCharacter()");
        obj.name = cha.Name;
        obj.transform.position = GameObjectTool.LogicToWorld(cha.position);
        obj.transform.forward  = GameObjectTool.LogicToWorld(cha.direction);

        EntityController entityController = obj.GetComponent <EntityController>();

        if (entityController != null)
        {
            entityController.isPlayer = cha.IsCurrentPlayer;
            entityController.entity   = cha;
            EntityManager.Instance.RegisterEntityNotifier(cha.entityID, entityController);
        }

        PlayerInputController playerController = obj.GetComponent <PlayerInputController>();

        if (entityController.isPlayer)
        {
            if (playerController != null)
            {
                playerController.character = cha;
            }

            //if (mainPlayerCamera != null)
            //{
            //    mainPlayerCamera.transform.parent = obj.transform;
            //    mainPlayerCamera.transform.localPosition = Vector3.zero;
            //    mainPlayerCamera.transform.localRotation = Quaternion.identity;
            //    mainPlayerCamera.transform.localScale = Vector3.one;
            //}

            Models.User.Instance.currentPlayerObject = obj;
        }
        else
        {
            playerController.enabled = false;
        }
    }
示例#30
0
 public void SetEntityData(Vector3 position, Vector3 direction, float speed)
 {
     this.position  = GameObjectTool.WorldToLogic(position);
     this.direction = GameObjectTool.WorldToLogic(direction);
     this.speed     = GameObjectTool.WorldToLogic(speed);
 }