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); }
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>()); } }
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)); //} }
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; }
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; } } }
public void UpdateTransform()//------ { this.position = GameObjectTool.LogicToWorld(entity.position); this.rb.MovePosition(this.position); this.lastPosition = this.position; UpdateDirection(); }
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("提示", "导出完成", "确定"); }
void UpdateTransform() { position = GameObjectTool.LogicToWorld(entity.position); direction = GameObjectTool.LogicToWorld(entity.direction); transform.position = position; transform.forward = direction; lastPosition = position; lastRotation = rotation; }
internal void FaceTo(Vector3Int position) { this.SetDirection(GameObjectTool.WorldToLogic(GameObjectTool.LogicToWorld(position - this.position).normalized)); this.UpdateEntityData(); if (this.Controller != null) { this.Controller.UpdateDirection(); } }
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); }
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; }
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; }
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); } }
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); }
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"); }
/// <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; }
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; } }
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(); } } }
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("提示", "刷怪点导出完成", "确定"); }
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; }
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(); }
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("提示", "传送点到处完成", "确定"); }
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); }
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); } }
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); }
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]); }
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; } }
public void SetEntityData(Vector3 position, Vector3 direction, float speed) { this.position = GameObjectTool.WorldToLogic(position); this.direction = GameObjectTool.WorldToLogic(direction); this.speed = GameObjectTool.WorldToLogic(speed); }