public void CreateObj(int dataId, int colorId) { if (mObjElf != null) { mObjElf.Destroy(); mObjElf = null; } if (dataId == -1) { return; } var angle = gameObject.transform.rotation.eulerAngles.y; angle += 90.0f; var temp = Owner.Position; temp.x += (float)Math.Cos(angle) * Radius; temp.z += (float)Math.Sin(angle) * Radius; NavMeshHit hit; if (NavMesh.Raycast(Owner.Position, temp, out hit, -1)) { temp = hit.position; } InitBaseData initData = new InitOtherPlayerData { ObjId = 0, DataId = dataId, X = temp.x, Y = temp.y, Z = temp.z, DirX = 1, DirZ = 0, Name = "", RobotId = 0ul }; var go = ComplexObjectPool.NewObjectSync(Resource.PrefabPath.Elf); var elf = go.GetComponent <ObjElf>(); elf.Init(initData, () => { mObjElf = elf; mObjElf.OnElfMoveOver = OnElfMoveOver; mObjElf.DoIdle(); var character = gameObject.GetComponent <ObjCharacter>(); if (character) { mObjElf.SetMoveSpeed(character.GetMoveSpeed() + 0.08f); ObjFakeCharacter.ChangeColor(mObjElf.GetModel(), colorId); } }); go.SetActive(true); }
public static Actor Create(int dateId, Dictionary <int, int> equipList = null, Action <Actor> callback = null, int layer = 0, bool sync = false, bool dynamicShadow = false) { var initData = new InitOtherPlayerData { ObjId = 0, DataId = dateId, X = Offset += 10, Y = -1000, Z = -2000, DirX = 1, DirZ = 0, Name = "", IsDead = false, IsMoving = false, MoveSpeed = 0, Camp = 0, RobotId = 0ul }; if (null != equipList) { { // foreach(var pair in equipList) var __enumerator2 = (equipList).GetEnumerator(); while (__enumerator2.MoveNext()) { var pair = __enumerator2.Current; { initData.EquipModel.Add(pair.Key, pair.Value); } } } } var go = ComplexObjectPool.NewObjectSync(Resource.PrefabPath.Actor); go.layer = layer; var character = go.GetComponent <Actor>(); character.mIsDynamicShadow = dynamicShadow; character.SyncLoadModel = sync; #if UNITY_EDITOR go.name = "Actor" + "_" + initData.ObjId; #endif character.Init(initData, () => { callback(character); }); go.SetActive(true); return(character); }
public void CreateOtherPlayerAsync(InitOtherPlayerData initData, Action <ObjOtherPlayer> callBack = null) { GameObject root = null; if (null != GameLogic.Instance && null != GameLogic.Instance.Scene) { root = GameLogic.Instance.Scene.OtherPlayerRoot; } if (GameLogic.Instance.Scene.OtherPlayerRootTransform.childCount - mFakeList.Count > GameSetting.Instance.MaxVisibleModelCount) { initData.UseFakeModel = true; } CreateObjAsync(initData, Resource.PrefabPath.OtherPlayer, root, callBack); }
public static ObjFakeCharacter Create(int dateId, Dictionary <int, int> equipList = null, Action <ObjFakeCharacter> callback = null, int layer = 0, bool sync = false, int renderQueue = -1, ulong objId = 0, int colorId = -1) { var initData = new InitOtherPlayerData { ObjId = objId, DataId = dateId, X = Offset += 10, Y = -1000, Z = -2000, DirX = 0, DirZ = 1, Name = "", IsDead = false, IsMoving = false, MoveSpeed = 0, Camp = 0, RobotId = 0ul }; if (null != equipList) { { // foreach(var pair in equipList) var __enumerator2 = (equipList).GetEnumerator(); while (__enumerator2.MoveNext()) { var pair = __enumerator2.Current; { initData.EquipModel.Add(pair.Key, pair.Value); } } } } var go = ComplexObjectPool.NewObjectSync(Resource.PrefabPath.FakeCharacter); go.layer = layer; var character = go.GetComponent <ObjFakeCharacter>(); character.SyncLoadModel = sync; character.RenderQueue = renderQueue; #if UNITY_EDITOR go.name = "ObjFakeCharacter" + "_" + initData.ObjId; #endif go.SetActive(true); var model = character.GetModel(); if (model != null) { model.SetActive(false); } character.Init(initData, () => { callback(character); model = character.GetModel(); if (model != null) { ChangeColor(model, colorId); //var frequency = model.GetComponent<AnimationUpdateFrequencyController>(); //if (frequency) //{ // frequency.enabled = false; //} model.SetActive(true); //if (!model.animation.isActiveAndEnabled) // model.animation.enabled = true; } }); return(character); }
public void CreateObj(CreateObjMsg msg) { if (ObjManager.Instance == null) { Logger.Log2Bugly("ObjManager.Instance == null"); return; } if (PlayerDataManager.Instance == null) { Logger.Log2Bugly("PlayerDataManager.Instance == null"); return; } { var __list1 = msg.Data; var __listCount1 = __list1.Count; for (var __i1 = 0; __i1 < __listCount1; ++__i1) { var data = __list1[__i1]; { if (data.ObjId == PlayerDataManager.Instance.GetGuid()) { continue; } switch ((OBJ.TYPE)data.Type) { case OBJ.TYPE.NPC: { var init = new InitNPCData(); AssignInitCharacterData(init, data); ObjManager.Instance.CreateNPCAsync(init); } break; case OBJ.TYPE.AUTOPLAYER: case OBJ.TYPE.OTHERPLAYER: { var init = new InitOtherPlayerData(); if (data.ExtData.Count > 0) { init.ServerId = data.ExtData[0]; } for (var i = 0; i < data.Titles.Count; i++) { init.TitleList.Add(i, data.Titles[i]); } if (data.Owner != null && data.Owner.Items != null && data.Owner.Items.Count == 1) { init.RobotId = data.Owner.Items[0]; } else { init.RobotId = 0ul; } init.AllianceName = data.AllianceName; AssignInitCharacterData(init, data); ObjManager.Instance.CreateOtherPlayerAsync(init); } break; case OBJ.TYPE.RETINUE: { var init = new InitRetinueData(); AssignInitCharacterData(init, data); if (data.Owner != null && data.Owner.Items != null && data.Owner.Items.Count == 1) { init.Owner = data.Owner.Items[0]; } ObjManager.Instance.CreateRetinueAsync(init); } break; case OBJ.TYPE.DROPITEM: { var init = new InitDropItemData(); AssignInitBaseData(init, data); init.Owner.AddRange(data.Owner.Items); init.RemianSeconds = data.ExtData[0]; init.PlayDrop = 1 == data.ExtData[1] ? true : false; init.TargetPos = new Vector2(GameUtils.DividePrecision(data.TargetPos[0].x), GameUtils.DividePrecision(data.TargetPos[0].y)); ObjManager.Instance.CreateDropItemAsync(init); } break; default: { Logger.Fatal("Obj[{0}] is unknow type[{1}]", data.ObjId, data.Type); } break; } } } } }