Esempio n. 1
0
    // 给人物换装
    public void ChangePart(string part, string model, EquipModelViewRecord record, bool sync)
    {
        SetPartModel(part, model);

        // 如果还没有加载完基础模型,则等待
        if (_body == null || _loading > 0)
        {
            _avatarLoadQueue.Enqueue(new KeyValuePair <string, WaitingResource>(part,
                                                                                new WaitingResource {
                ModelPath = model, ModelViewRecord = record
            }));
            return;
        }

        //AvatarData adata = DataMgr.Instance.GetAvatarData(avatarId);
        _loading++;
        ComplexObjectPool.NewObject(model, obj =>
        {
            _loading--;

            if (GetPartModel(part) != model)
            {
                ComplexObjectPool.Release(obj);
                TryContinue();
                return;
            }

            if (null != obj)
            {
                ChangePart(obj, part, record, sync);
            }
            TryContinue();
        }, null, null, sync);
    }
Esempio n. 2
0
        private void PlaySkillEffect(IEvent ievent)
        {
            var e = ievent as UIEvent_EquipSkillEffect;

            if (e == null)
            {
                return;
            }

            DestroyEraEffect();

            ComplexObjectPool.NewObject("Effect/UI/UI_jineng.prefab", go =>
            {
                if (null == go)
                {
                    return;
                }

                //var renderQueue = go.GetComponent<ChangeRenderQueue>();
                //if (renderQueue == null)
                //{
                //    renderQueue = go.AddComponent<ChangeRenderQueue>();
                //}
                //renderQueue.CustomRenderQueue = 4000;
                effectGameObject = go;

                go.transform.parent        = SkillItems[e.Index].EquipEffectObj.transform;
                go.transform.localPosition = Vector3.zero;
                go.transform.localScale    = Vector3.one;
                go.transform.localRotation = Quaternion.Euler(0, 0, 0);
            });
        }
Esempio n. 3
0
        private bool CreateAnim()
        {
            if (effectGameObject != null)
            {
                return(false);
            }

            DestroyAnim();
            ComplexObjectPool.NewObject(EffectPath, go =>
            {
                if (null == go)
                {
                    return;
                }

                effectGameObject = go;

                go.transform.parent        = Effect.transform;
                go.transform.localPosition = Vector3.zero;
                go.transform.localScale    = Vector3.one;
                go.transform.localRotation = Quaternion.Euler(0, 0, 0);
            });

            return(true);
        }
Esempio n. 4
0
    private void ShowItemTip(int itemId, int count)
    {
        ComplexObjectPool.NewObject("UI/Hint/ItemTip", go =>
        {
            if (null == Instance)
            {
                ComplexObjectPool.Release(go);
                return;
            }

            if (false == IsWorking)
            {
                ComplexObjectPool.Release(go);
                return;
            }
            go.transform.parent        = gameObject.GetComponent <UIPanel>().transform;
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = new Vector3(0.8f, 0.8f, 0.8f);
            go.transform.localRotation = Quaternion.identity;
            go.SetActive(false);
            go.SetActive(true);
            var Logic = go.GetComponent <GainItemCtrler>();
            Logic.SetItemIcon(itemId, count);
        });
    }
Esempio n. 5
0
        private void ShowModel(string perfabPath) //"res/firstcharget/a.prefab"
        {
            //var modelPath = Resource.GetModelPath(perfabPath);
            if (TModel != null)
            {
                ComplexObjectPool.Release(TModel);
                TModel = null;
            }
            UniqueResourceId = GetNextUniqueResourceId();
            var resId = UniqueResourceId;

            ComplexObjectPool.NewObject(perfabPath, go =>
            {
                if (resId != UniqueResourceId)
                {
                    return;
                }
                TModel = go;
                go.transform.parent        = UIModel.transform;
                go.transform.localPosition = Vector3.zero;
                go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
                go.gameObject.SetRenderQueue(ModelRenderQueue);

                Drag.Target = go.transform;
            });
        }
        private void CreateNewPage(string FlyPrefab, int IconId, Vector3 From, bool OnTop, Action <GameObject> CallBack)
        {
            ComplexObjectPool.NewObject(FlyPrefab, go =>
            {
                if (go == null)
                {
                    return;
                }
                var frame    = go.GetComponent <BookIconFrame>();
                frame.IconId = IconId;

                var pgo = new GameObject();
                pgo.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
                pgo.name    = "flybookpage";
                var panel   = pgo.AddComponent <UIPanel>();
                panel.depth = OnTop ? 2 : 0;
                pgo.transform.SetParent(UIManager.Instance.GetUIRoot(UIType.TYPE_BASE).transform);
                pgo.transform.localPosition = Vector3.zero;
                pgo.transform.localScale    = Vector3.one;
                pgo.transform.localRotation = Quaternion.identity;

                go.transform.SetParent(pgo.transform);
                go.transform.localPosition = From;
                go.transform.localScale    = Vector3.one;

                if (CallBack != null)
                {
                    CallBack(pgo);
                }
                else
                {
                    Logger.Error("Callback must not null!!!");
                }
            });
        }
Esempio n. 7
0
        private void CreateCharRadar(MapRadarDataModel data, string prefab)
        {
            var id = data.CharacterId;

            ComplexObjectPool.NewObject(prefab, o =>
            {
                if (data.CharType != 0)
                {
                    var charObj = ObjManager.Instance.FindCharacterById(id);
                    if (charObj == null || charObj.Dead)
                    {
                        ComplexObjectPool.Release(o);
                        return;
                    }
                }
                var oTransform = o.transform;
                oTransform.SetParentEX(CharCursor.transform);
                oTransform.localScale = Vector3.one;
                o.SetActive(true);
                var i    = o.GetComponent <ListItemLogic>();
                i.Item   = data;
                var r    = o.GetComponent <BindDataRoot>();
                r.Source = data;

                itemLogicDict[data.CharacterId] = i;
            });
        }
Esempio n. 8
0
        private void CreateCharRadar(RararCharDataModel data)
        {
            var id = data.CharacterId;

            ComplexObjectPool.NewObject("UI/MainUI/CharCursor.prefab", o =>
            {
                if (data.CharType != 0)
                {
                    var charObj = ObjManager.Instance.FindCharacterById(id);
                    if (charObj == null || charObj.Dead)
                    {
                        ComplexObjectPool.Release(o, false, false);
                        return;
                    }
                }
                var oTransform = o.transform;
                //oTransform.parent = CharCursor.transform;
                oTransform.SetParentEX(CharCursor.transform);
                oTransform.localScale = Vector3.one;
                if (!o.activeSelf)
                {
                    o.SetActive(true);
                }
                var i    = o.GetComponent <ListItemLogic>();
                i.Item   = data;
                var r    = o.GetComponent <BindDataRoot>();
                r.Source = data;

                itemLogicDict[data.CharacterId] = i;
            }, null, null, false, false, false);
        }
Esempio n. 9
0
        private void OnEvent_PlayAnim(IEvent ievent)
        {
            var e = ievent as Event_EraPlayAnim;

            if (e == null)
            {
                return;
            }

            DestroyAnim();
            ComplexObjectPool.NewObject("Effect/Books/MFS_gaizhang.prefab", go =>
            {
                if (null == go)
                {
                    return;
                }

                effectGameObject = go;

                go.transform.parent        = StampGameObject;
                go.transform.localPosition = Vector3.zero;
                go.transform.localScale    = Vector3.one;
                go.transform.localRotation = Quaternion.Euler(0, 0, 0);
            });
        }
Esempio n. 10
0
    protected override void LoadModelAsync(Action callback = null)
    {
        var tableModel = Table.GetCharModel(TableCharacter.CharModelID);
        var modelPath  = Resource.GetModelPath(tableModel.ResPath);

        UniqueResourceId = GetNextUniqueResourceId();
        var resId = UniqueResourceId;

        ComplexObjectPool.NewObject(modelPath, model =>
        {
            if (resId != UniqueResourceId)
            {
                ComplexObjectPool.Release(model);
                return;
            }
            if (State == ObjState.Deleted)
            {
                ComplexObjectPool.Release(model);
                return;
            }
            SetModel(model);
            mAnimationController.Animation = mModel.animation;
            mAnimationController.Animation.Stop();
            SetScale((float)tableModel.Scale);
            if (null != callback)
            {
                callback();
            }
        });
    }
Esempio n. 11
0
        private void ShowModel(string perfabPath, int index) //"res/firstcharget/a.prefab"
        {
            //var modelPath = Resource.GetModelPath(perfabPath);
            if (TModel != null)
            {
                ComplexObjectPool.Release(TModel);
                TModel = null;
            }
            UniqueResourceId = GetNextUniqueResourceId();
            var resId = UniqueResourceId;

            ComplexObjectPool.NewObject(perfabPath, go =>
            {
                if (resId != UniqueResourceId)
                {
                    ComplexObjectPool.Release(go);
                    return;
                }
                if (UIModel == null)
                {
                    return;
                }
                TModel = go;
                go.transform.parent        = UIModel.transform;
                go.transform.localPosition = Vector3.zero;
                go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
                go.gameObject.SetRenderQueue(ModelRenderQueue);

                Drag.Target = go.transform;
                if (index == 2)
                {
                    for (int i = 1100; i <= 1101; i++)
                    {
                        var tbSkillUpgrading = Table.GetSkillUpgrading(i);
                        if (null == tbSkillUpgrading)
                        {
                            return;
                        }
                        var ValueList = tbSkillUpgrading.Values;
                        if (ValueList.Count < 3)
                        {
                            return;
                        }
                        var x = ValueList[0];
                        var y = ValueList[1];
                        var z = ValueList[2];
                        if (i == 1100)
                        {
                            go.transform.localRotation = Quaternion.Euler(x, y, z);
                        }
                        else
                        {
                            go.transform.localScale = new Vector3(x, y, z);
                        }
                    }
                }
            });
        }
Esempio n. 12
0
    // 创建模型
    public void LoadModel(string model, bool sync)
    {
        _loading++;
        ComplexObjectPool.NewObject(Resource.Dir.Model + model, obj =>
        {
            _loading--;
            Body = obj;

            Body.transform.parent = gameObject.transform;
            TryContinue();
        }, null, null, sync);
    }
Esempio n. 13
0
    protected override void LoadModelAsync(Action callback = null)
    {
        var tableModel = Table.GetCharModel(TableCharacter.CharModelID);
        var modelPath  = Resource.GetModelPath(tableModel.ResPath);

        UniqueResourceId = GetNextUniqueResourceId();
        var resId = UniqueResourceId;

        if (null != mActorAvatar)
        {
            mActorAvatar.Layer       = gameObject.layer;
            mActorAvatar.RenderQueue = RenderQueue;
        }
        ComplexObjectPool.NewObject(modelPath, model =>
        {
            if (resId != UniqueResourceId)
            {
                ComplexObjectPool.Release(model);
                return;
            }
            if (State == ObjState.Deleted)
            {
                ComplexObjectPool.Release(model);
                return;
            }
            SetModel(model);
            mAnimationController.Animation = mModel.animation;
            mAnimationController.Animation.Stop();
            SetScale((float)tableModel.Scale);
            if (null != callback)
            {
                callback();
            }
        }, null, o =>
        {
            if (IsPlayerModel())
            {
                OptList <Renderer> .List.Clear();
                o.GetComponentsInChildren(true, OptList <Renderer> .List);
                {
                    var __array1       = OptList <Renderer> .List;
                    var __arrayLength1 = __array1.Count;
                    for (var __i1 = 0; __i1 < __arrayLength1; ++__i1)
                    {
                        var renderer = __array1[__i1];
                        {
                            renderer.enabled = false;
                        }
                    }
                }
            }
        });
    }
Esempio n. 14
0
    protected virtual void LoadRes(Action callback = null)
    {
        var prafabPath = "";

        mTableData = Table.GetItemBase(mDataId);
        if (null == mTableData)
        {
            Logger.Error("NULL==Table.GetItemBase({0})", mDataId);
        }
        else
        {
            var tableDrop = Table.GetDropModel(mTableData.DropModel);
            if (null == tableDrop)
            {
                Logger.Error("NULL==Table.GetDropModel({0})", mTableData.DropModel);
            }
            else
            {
                prafabPath = tableDrop.ModelPath;
            }
        }

        if ("" == prafabPath)
        {
            Logger.Error("null==prafabPath)");
            return;
        }

        UniqueResourceId = GetNextUniqueResourceId();
        var resId = UniqueResourceId;

        ComplexObjectPool.NewObject(prafabPath, model =>
        {
            if (resId != UniqueResourceId)
            {
                ComplexObjectPool.Release(model);
                return;
            }

            if (State == ObjState.Deleted)
            {
                ComplexObjectPool.Release(model);
                return;
            }
            SetModel(model);
            //SetScale((float)tableDrop.aScale); 这个缩放放到prefab上

            if (null != callback)
            {
                callback();
            }
        });
    }
Esempio n. 15
0
        private void CreateCopyObj(int dataId)
        {
            if (-1 == dataId)
            {
                if (null != ShowModel)
                {
                    ComplexObjectPool.Release(ShowModel);
                    ShowModel         = null;
                    DragRotate.Target = null;
                }
                return;
            }
            else
            {
                if (ShowModel != null)
                {
                    ComplexObjectPool.Release(ShowModel);
                    ShowModel = null;
                }

                var currentData = DataModel.ActivityTermList[DataModel.CurrentSelectPageIdx];
                var position    = currentData.ShowModelData.Position; // 计算模型坐标
                var rotation    = currentData.ShowModelData.Rotation; // 旋转

                UniqueResourceId = GetNextUniqueResourceId();
                var resId = UniqueResourceId;
                var tb    = Table.GetCharModel(dataId);
                if (null == tb)
                {
                    return;
                }

                ComplexObjectPool.NewObject(tb.ResPath, go =>
                {
                    if (resId != UniqueResourceId)
                    {
                        ComplexObjectPool.Release(go);
                        return;
                    }
                    ShowModel                  = go;
                    go.transform.parent        = ModelRoot.transform;
                    go.transform.localPosition = position;
                    go.transform.localRotation = rotation;
                    go.transform.localScale    = Vector3.one;
                    go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
                    DragRotate.Target = ShowModel.transform;
                    ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue();
                    //go.gameObject.SetRenderQueue(ModelRenderQueue);
                });
            }
        }
Esempio n. 16
0
 private void SetupBufferList()
 {
     ComplexObjectPool.NewObject("UI/MainUI/BuffList.prefab", gameObject =>
     {
         if (null != BuffRoot)
         {
             var objTransform = gameObject.transform;
             //objTransform.parent = BuffRoot;
             objTransform.SetParentEX(BuffRoot);
             objTransform.localScale    = Vector3.one;
             objTransform.localPosition = Vector3.zero;
             gameObject.SetActive(true);
         }
     });
 }
Esempio n. 17
0
    //造品质特效
    private void CreateQualityEffect(string res, Action <GameObject> callback)
    {
        DestroyQualityEffect();

        ComplexObjectPool.NewObject(res, o =>
        {
            mEffect             = o;
            var xform           = o.transform;
            xform.parent        = mModel.transform;
            xform.localPosition = Vector3.zero;
            xform.localRotation = Quaternion.identity;
            xform.localScale    = Vector3.one;

            callback(mEffect);
        });
    }
Esempio n. 18
0
    public void PlayEffect(int id)
    {
        var table = Table.GetSceneEffect(id);

        if (null == table)
        {
            return;
        }
        if (table.SceneID != GameLogic.Instance.Scene.SceneTypeId)
        {
            return;
        }

        if (mEffectDic.ContainsKey(id))
        {
            return;
        }
        var root = GameLogic.Instance.Scene.EffectRoot;

        ComplexObjectPool.NewObject(table.Path, go =>
        {
            if (null == root)
            {
                ComplexObjectPool.Release(go);
                return;
            }

            if (mEffectDic.ContainsKey(id))
            {
                ComplexObjectPool.Release(go);
                return;
            }
#if UNITY_EDITOR
            go.name = "SceneEffect_" + id.ToString();
#endif
            var goTransform        = go.transform;
            goTransform.parent     = root.transform;
            goTransform.position   = new Vector3(table.PosX, table.PosY, table.PosZ);
            goTransform.localScale = Vector3.one * (table.Zoom * 0.0001f);
            var guid = NextId;
            mEffectDic.Add(id, new EffectNode(guid, go));
            if (table.LastTime > 0)
            {
                StartCoroutine(DelayDestroy(table.LastTime * 1.0f / 1000.0f, guid));
            }
        });
    }
Esempio n. 19
0
        private void CreateCharRadar(MapRadarDataModel data, string prefab)
        {
            var id = data.CharacterId;

            ComplexObjectPool.NewObject(prefab, o =>
            {
                var oTransform = o.transform;
                oTransform.SetParentEX(CharCursor.transform);
                oTransform.localScale = Vector3.one;
                o.SetActive(true);
                var i    = o.GetComponent <ListItemLogic>();
                i.Item   = data;
                var r    = o.GetComponent <BindDataRoot>();
                r.Source = data;

                itemLogicDict[data.CharacterId] = i;
            });
        }
Esempio n. 20
0
        private void CreateOffineFrame()
        {
            if (null == OffLineRoot)
            {
                return;
            }

            ComplexObjectPool.NewObject("UI/OffLineExp/OffLineExpFrame.prefab", gameObject =>
            {
                if (null != OffLineRoot)
                {
                    var objTransform = gameObject.transform;
                    //objTransform.parent = OffLineRoot;
                    objTransform.SetParentEX(OffLineRoot);
                    objTransform.localScale    = Vector3.one;
                    objTransform.localPosition = Vector3.zero;
                    gameObject.SetActive(true);
                }
            });
        }
Esempio n. 21
0
    private void ShowInfo(int tableId, string info, int waitSec = -1, eRootLayer rootLayer = eRootLayer.High)
    {
        ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o =>
        {
            if (null == Instance)
            {
                ComplexObjectPool.Release(o);
                return;
            }
            if (false == IsWorking)
            {
                ComplexObjectPool.Release(o);
                return;
            }

            var oTransform = o.transform;
            if (rootLayer == eRootLayer.High)
            {
                oTransform.SetParentEX(HighRoot.transform);
            }
            else if (rootLayer == eRootLayer.Low)
            {
                oTransform.SetParentEX(LowRoot.transform);
            }
            if (!o.activeSelf)
            {
                o.SetActive(false);
                o.SetActive(true);
            }
            oTransform.localScale    = Vector3.one;
            oTransform.localPosition = Vector3.zero;
            var logic = o.GetComponent <DamageBoardLogic>();
            logic.StartAction(Vector3.zero, tableId, info, DamageBoardLogic.BoardShowType.UI);
            if (waitSec >= 0)
            {
                logic.StayTime = waitSec * 1000;
            }
        }, null, null, false, false, false, tableId.ToString());
    }
Esempio n. 22
0
 private void CreateCopyObj(int dataId)
 {
     if (-1 == dataId)
     {
         if (null != ShowModel)
         {
             ComplexObjectPool.Release(ShowModel);
             ShowModel         = null;
             DragRotate.Target = null;
         }
         return;
     }
     else
     {
         UniqueResourceId = GetNextUniqueResourceId();
         var resId = UniqueResourceId;
         var tb    = Table.GetCharModel(dataId);
         if (null == tb)
         {
             return;
         }
         ComplexObjectPool.NewObject(tb.ResPath, go =>
         {
             if (resId != UniqueResourceId)
             {
                 return;
             }
             ShowModel                  = go;
             go.transform.parent        = ModelRoot.transform;
             go.transform.localPosition = Vector3.zero;
             go.transform.localRotation = Quaternion.identity;
             go.transform.localScale    = Vector3.one;
             go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
             DragRotate.Target = ShowModel.transform;
             ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue();
             //go.gameObject.SetRenderQueue(ModelRenderQueue);
         });
     }
 }
Esempio n. 23
0
        private void NewEffect(string effectPath, int index)
        {
            ComplexObjectPool.NewObject(effectPath, go =>
            {
                if (null == go)
                {
                    return;
                }

                var renderQueue = go.GetComponent <ChangeRenderQueue>();
                if (renderQueue == null)
                {
                    renderQueue = go.AddComponent <ChangeRenderQueue>();
                }
                renderQueue.CustomRenderQueue = 3145;
                effectGameObjectList[index]   = go;

                go.transform.parent        = Effect.gameObject.transform;
                go.transform.localPosition = Vector3.zero;
                go.transform.localScale    = Vector3.one;
                go.transform.localRotation = Quaternion.identity;
            });
        }
Esempio n. 24
0
    public void CreateWeaponModel(int equipId, Vector3 pos, Vector3 rotation, float curScale)
    {
        if (Model != null)
        {
            DestroyModel();
        }

        var tbEquip = Table.GetEquipBase(equipId);

        if (tbEquip == null)
        {
            return;
        }
        var tbMont = Table.GetWeaponMount(tbEquip.EquipModel);

        if (tbMont == null)
        {
            return;
        }

        ComplexObjectPool.NewObject(tbMont.Path,
                                    go =>
        {
            var goTransform = go.transform;
            if (null != GameLogic.Instance.Scene.NpcRoot)
            {
                goTransform.parent = GameLogic.Instance.Scene.NpcRoot.transform;
            }
            goTransform.position   = pos;
            goTransform.rotation   = Quaternion.Euler(rotation);
            goTransform.localScale = new Vector3(curScale, curScale, curScale);;
            goTransform.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.ObjLogic));

            Model = go;
        });
    }
Esempio n. 25
0
 private void ShowInfo(int tableId, string info, int waitSec = -1, eRootLayer rootLayer = eRootLayer.High)
 {
     ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o =>
     {
         var oTransform = o.transform;
         if (rootLayer == eRootLayer.High)
         {
             oTransform.SetParentEX(HighRoot.transform);
         }
         else if (rootLayer == eRootLayer.Low)
         {
             oTransform.SetParentEX(LowRoot.transform);
         }
         o.SetActive(true);
         oTransform.localScale    = Vector3.one;
         oTransform.localPosition = Vector3.zero;
         var logic = o.GetComponent <DamageBoardLogic>();
         logic.StartAction(Vector3.zero, tableId, info, DamageBoardLogic.BoardShowType.UI);
         if (waitSec >= 0)
         {
             logic.StayTime = waitSec * 1000;
         }
     });
 }
Esempio n. 26
0
    public void NotifyShootBullet(BulletMsg msg)
    {
        Action act = () =>
        {
            var tableData = Table.GetBullet(msg.BulletId);
            var caster    = ObjManager.Instance.FindCharacterById(msg.CasterId);
            if (null == caster)
            {
                Logger.Warn("NotifyShootBullet: null==caster[{0}]", msg.CasterId);
                return;
            }

            if (ObjState.Normal != caster.State &&
                ObjState.Dieing != caster.State)
            {
                Logger.Warn("NotifyShootBullet: caster[{0}] state=[{1}]", msg.CasterId, caster.State.ToString());
                return;
            }

            var bulletPath = tableData.Path;
            var speed      = tableData.Speed;
            if (caster)
            {
                var pos     = caster.Position;
                var emitObj = caster.GetMountPoint(tableData.CasterMountPoint);
                if (null == emitObj)
                {
                    Logger.Error("NotifyShootBullet: Can not find mount point [{0}] in [{1}]",
                                 tableData.CasterMountPoint, caster.name);
                }
                else
                {
                    pos = emitObj.position;
                }
                {
                    var __list5      = msg.TargetObjId;
                    var __listCount5 = __list5.Count;
                    for (var __i5 = 0; __i5 < __listCount5; ++__i5)
                    {
                        var targetId = __list5[__i5];
                        {
                            var target = ObjManager.Instance.FindCharacterById(targetId);
                            if (null == target)
                            {
                                continue;
                            }

                            var id = target.GetObjId();
                            var p  = target.Position;
                            //ResourceManager.PrepareResource<GameObject>(bulletPath, (res) =>
                            ComplexObjectPool.NewObject(bulletPath, obj =>
                            {
                                if (obj == null)
                                {
                                    return;
                                }

                                obj.transform.position = pos;

                                Missile missile;
                                if (tableData.DirRangeX == 0 && tableData.DirRangeY == 0 && tableData.DirRangeZ == 0)
                                {
                                    missile = obj.GetComponent <Missile>();
                                    if (missile == null)
                                    {
                                        missile = obj.AddComponent <Missile>();
                                    }
                                }
                                else
                                {
                                    var dmissile = obj.GetComponent <DirectionalMissile>();
                                    if (dmissile == null)
                                    {
                                        dmissile = obj.AddComponent <DirectionalMissile>();
                                    }

                                    var v = Random.Range(0, Mathf.PI * 2);

                                    dmissile.StartDirection =
                                        new Vector3(
                                            Mathf.Sin(v) *
                                            Random.Range(tableData.DirRangeX * 0.8f, tableData.DirRangeX * 1.2f),
                                            Mathf.Abs(Mathf.Cos(v)) *
                                            Random.Range(tableData.DirRangeY * 0.8f, tableData.DirRangeY * 1.2f),
                                            Random.Range(tableData.DirRangeZ * 0.8f, tableData.DirRangeZ * 1.2f));

                                    missile = dmissile;
                                }

                                if (target.GetModel() == null || target.GetModel().gameObject == null)
                                {
                                    missile.Target = target.ObjTransform;
                                }
                                else
                                {
                                    var targetObj = target.GetMountPoint(tableData.BearMountPoint);
                                    if (null == targetObj)
                                    {
                                        Logger.Error("NotifyShootBullet: Can not find mount point [{0}] in [{1}]",
                                                     tableData.BearMountPoint, target.name);
                                        missile.Target = target.ObjTransform;
                                    }
                                    else
                                    {
                                        missile.Target = targetObj;
                                    }
                                }

                                missile.Init(speed, p, bullet =>
                                {
                                    var tar = ObjManager.Instance.FindCharacterById(id);
                                    if (null != tar)
                                    {
                                        tar.DoHurt();
                                    }

                                    if (!string.IsNullOrEmpty(tableData.HitEffect))
                                    {
                                        var effectId = Convert.ToInt32(tableData.HitEffect);
                                        if (-1 != effectId)
                                        {
                                            var data = Table.GetEffect(effectId);
                                            EffectManager.Instance.CreateEffect(data, tar, null,
                                                                                (effect, eId) =>
                                            {
                                                effect.gameObject.transform.position =
                                                    bullet.gameObject.transform.position;
                                            }, null,
                                                                                (data.BroadcastType == 0 &&
                                                                                 targetId == ObjManager.Instance.MyPlayer.GetObjId()) ||
                                                                                data.BroadcastType == 1);
                                        }
                                    }
                                });

                                missile.enabled = true;
                            }, o =>
                            {
                                OptList <Bullet> .List.Clear();
                                o.GetComponents(OptList <Bullet> .List);
                                {
                                    var __array1       = OptList <Bullet> .List;
                                    var __arrayLength1 = __array1.Count;
                                    for (var __i2 = 0; __i2 < __arrayLength1; ++__i2)
                                    {
                                        var b     = __array1[__i2];
                                        b.enabled = false;
                                    }
                                }
                                OptList <TrailRenderer_Base> .List.Clear();
                                o.GetComponentsInChildren(OptList <TrailRenderer_Base> .List);
                                {
                                    var __array1       = OptList <TrailRenderer_Base> .List;
                                    var __arrayLength1 = __array1.Count;
                                    for (var __i2 = 0; __i2 < __arrayLength1; ++__i2)
                                    {
                                        var t = __array1[__i2];
                                        t.ClearSystem(false);
                                        t.Emit = true;
                                    }
                                }
                            });
                        }
                    }
                }
            }
        };

        var time = Extension.FromServerBinary((long)msg.ViewTime);

        if (time > Game.Instance.ServerTime)
        {
            StartCoroutine(WaitToDoSomething(time - Game.Instance.ServerTime, act));
        }
        else
        {
            act();
        }
    }
Esempio n. 27
0
    public void CreateModel(string prefab, string animationPath = "", Action <GameObject> callback = null)
    {
        if (mState != State.Deleted)
        {
            return;
        }
#if UNITY_EDITOR
        gameObject.name = "AnimationModel";
#endif
        mState = State.Loading;
        ComplexObjectPool.NewObject(prefab, go =>
        {
            if (null == go)
            {
                return;
            }

            if (mState == State.Deleted)
            {
                ComplexObjectPool.Release(go);
                return;
            }

            if (mState == State.Ok)
            {
                ComplexObjectPool.Release(mModel);
            }

            var goTransform           = go.transform;
            goTransform.parent        = transform;
            goTransform.localPosition = Vector3.zero;
            goTransform.localRotation = Quaternion.identity;
            goTransform.localScale    = Vector3.one;

            mModel = go;
            mState = State.Ok;

            if (!string.IsNullOrEmpty(animationPath))
            {
                var ani = go.GetComponent <Animation>();
                if (null == ani)
                {
                    ani = go.AddComponent <Animation>();
                }
                mAnimation  = ani;
                ani.enabled = true;

                var s       = animationPath.LastIndexOf("/");
                var l       = animationPath.LastIndexOf(".anim");
                var aniName = animationPath.Substring(s + 1, l - s - 1);
                if (!string.IsNullOrEmpty(aniName))
                {
                    mAnimationName = aniName;
                    var clip       = ani.GetClip(aniName);
                    if (null == clip)
                    {
                        ResourceManager.PrepareResource <AnimationClip>(animationPath, aniClip =>
                        {
                            aniClip.wrapMode = WrapMode.Loop;
                            ani.AddClip(aniClip, aniName);
                            ani.Play(aniName);
                            if (null != callback)
                            {
                                callback(go);
                            }
                        });
                    }
                    else
                    {
                        ani.Play(aniName);
                        if (null != callback)
                        {
                            callback(go);
                        }
                    }
                }
            }
            else
            {
                if (null != callback)
                {
                    callback(go);
                }
            }
        });
    }
Esempio n. 28
0
    private void OnShowBuffBoardImpl(IEvent ievent)
    {
        if (ActiveCount >= 256)
        {
            return;
        }


        var e      = ievent as ShowDamageBoardEvent;
        var result = e.Result;

        var tableId  = -1;
        var strValue = result.Damage.ToString();

        var targetCharacter = ObjManager.Instance.FindCharacterById(result.TargetObjId);
        var casterCharacter = ObjManager.Instance.FindCharacterById(result.SkillObjId);

        var isShow = false;

        if (targetCharacter != null)
        {
            if (targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                isShow = true;
            }
            else if (targetCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = targetCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    isShow = true;
                }
            }
        }

        if (isShow == false && casterCharacter != null)
        {
            if (casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                isShow = true;
            }
            else if (casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    isShow = true;
                }
            }
        }

        if (isShow == false)
        {
            return;
        }


        var directivityPos = false;

        switch (result.Type)
        {
        case BuffType.HT_NORMAL:
        {
            tableId = 6;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 13;
                }
                else
                {
                    tableId = 17;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 6;
                }
                else
                {
                    directivityPos = true;
                    tableId        = 3;
                }
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 6;
                }
            }
        }
        break;

        case BuffType.HT_CRITICAL:
        {
            // ignorePostion = true;
            tableId = 5;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 13;
                }
                else
                {
                    tableId = 17;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                directivityPos = true;
                tableId        = 2;
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 5;
                }
            }
        }
        break;

        case BuffType.HT_EXCELLENT:
        {
            // ignorePostion = true;
            tableId = 4;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 13;
                }
                else
                {
                    tableId = 17;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                directivityPos = true;
                tableId        = 1;
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 4;
                }
            }
        }
        break;

        case BuffType.HT_MISS:
        {
            tableId  = 10;
            strValue = "";
        }
        break;

        case BuffType.HT_NODAMAGE:
        {
            tableId  = 11;
            strValue = "";
        }
        break;

        case BuffType.HT_HEALTH:
        {
            tableId = 7;
        }
        break;

        case BuffType.HT_MANA:
        {
            tableId = 8;
        }
        break;

        case BuffType.HT_REBOUND:
        {
            tableId = 9;
        }
        break;

        case BuffType.HT_Fire_DAMAGE:
        {
            directivityPos = true;
            tableId        = 20;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 20;
                }
                else
                {
                    tableId = 23;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 23;
                }
                else
                {
                    tableId = 20;
                }
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 23;
                }
            }
        }
        break;

        case BuffType.HT_Ice_DAMAGE:
        {
            directivityPos = true;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 21;
                }
                else
                {
                    tableId = 24;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 24;
                }
                else
                {
                    tableId = 21;
                }
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 24;
                }
            }
        }
        break;

        case BuffType.HT_Poison_DAMAGE:
        {
            directivityPos = true;
            if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE)
            {
                var retinue = casterCharacter as ObjRetinue;
                if (retinue != null && retinue.GetIsMe())
                {
                    tableId = 22;
                }
                else
                {
                    tableId = 25;
                }
            }
            else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 25;
                }
                else
                {
                    tableId = 22;
                }
            }
            else
            {
                if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER)
                {
                    tableId = 25;
                }
            }
        }
        break;

        case BuffType.HT_ADDBUFF:
        case BuffType.HT_DIE:
        case BuffType.HT_EFFECT:
        case BuffType.HT_RELIVE:
        case BuffType.HT_DELBUFF:
        case BuffType.HT_CHANGE_SCENE:
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
        if (tableId == -1)
        {
            return;
        }

        //�ж϶����ʾ
        int showTimes = 1;
        int total     = 0;
        var tableBuff = Table.GetBuff(result.BuffTypeId);

        if (null != tableBuff && tableBuff.DamageNumShowTimes > 0 && !string.IsNullOrEmpty(strValue))
        {
            if (int.TryParse(strValue, out total))
            {
                showTimes = tableBuff.DamageNumShowTimes;
            }
        }

        var position = e.Position;

        if (directivityPos)
        {
            var mountPoint = targetCharacter.GetMountPoint((int)MountPoint.Center);
            if (null != mountPoint)
            {
                position = mountPoint.position;
            }
            else
            {
                Logger.Warn("model does not have center mount point !model:{0}", targetCharacter.Name);
            }
        }


        if (showTimes <= 1 || total < showTimes)
        {
            ActiveCount++;
            ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o =>
            {
                if (null == Instance)
                {
                    ComplexObjectPool.Release(o);
                    return;
                }
                if (false == IsWorking)
                {
                    ComplexObjectPool.Release(o);
                    return;
                }

                var oTransform    = o.transform;
                oTransform.parent = transform;

                //oTransform.SetParent(transform);
                if (!o.activeSelf)
                {
                    o.SetActive(false);
                    o.SetActive(true);
                }

                oTransform.localScale    = Vector3.one;
                oTransform.localPosition = Vector3.zero;
                var logic = o.GetComponent <DamageBoardLogic>();
                logic.BackGround.enabled = false;
                logic.Label.text         = string.Empty;

                var delay = 0.0f;
                if (tableId > 0)
                {
                    var tbCombat = Table.GetCombatText(tableId);
                    if (null != tbCombat && tbCombat.DelayTime > 0)
                    {
                        delay = tbCombat.DelayTime / 1000.0f;
                    }
                }
                //  Action action = () =>
                //  {
                logic.StartAction(position, tableId, strValue, DamageBoardLogic.BoardShowType.Fight, false, delay,
                                  directivityPos);
                //  };

                //  ActionQueue.Enqueue(action);
            }, null, null, false, false, false, tableId.ToString());
        }
        else
        {
            int   remain = total;
            float per    = total * 1.0f / showTimes;
            for (int i = 0; i < showTimes; i++)
            {
                float frac   = 0 == i % 2 ? 1 : -1;
                int   damage = 0;
                if (i == showTimes - 1)
                {
                    damage = remain;
                }
                else
                {
                    damage  = (int)(per + frac * per * UnityEngine.Random.RandomRange(0.0f, 0.1f));
                    remain -= damage;
                }

                ActiveCount++;
                ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o =>
                {
                    if (false == IsWorking)
                    {
                        ComplexObjectPool.Release(o);
                        return;
                    }
                    var oTransform    = o.transform;
                    oTransform.parent = transform;
                    //oTransform.SetParent(transform);
                    if (!o.activeSelf)
                    {
                        o.SetActive(false);
                        o.SetActive(true);
                    }
                    oTransform.localScale    = Vector3.one;
                    oTransform.localPosition = Vector3.zero;
                    var logic = o.GetComponent <DamageBoardLogic>();
                    var delay = 0.0f;
                    if (tableBuff != null)
                    {
                        delay = i * (tableBuff.DamageDeltaTime / 1000.0f);
                    }
                    else
                    {
                        delay = i * 0.38f;
                    }

                    if (tableId > 0)
                    {
                        var tbCombat = Table.GetCombatText(tableId);
                        if (null != tbCombat && tbCombat.DelayTime > 0)
                        {
                            delay += tbCombat.DelayTime / 1000.0f;
                        }
                    }
                    //    Action action = () =>
                    //    {
                    logic.StartAction(position, tableId, damage.ToString(), DamageBoardLogic.BoardShowType.Fight,
                                      false, delay, directivityPos);
                    //    };

                    //    ActionQueue.Enqueue(action);
                }, null, null, false, false, false, tableId.ToString());
            }
        }
    }
Esempio n. 29
0
        private void ShowMountModel(IEvent ievent)
        {
            var e = ievent as ItemInfoMountModelDisplay_Event;

            if (e != null && !string.IsNullOrEmpty(e.PerfabPath))
            {
                var prefabPath    = e.PerfabPath;
                var animationPath = e.AnimationPath;
                if (Model != null)
                {
                    ComplexObjectPool.Release(Model);
                    Model = null;
                }
                ComplexObjectPool.NewObject(prefabPath, go =>
                {
                    if (ModelRoot == null)
                    {
                        return;
                    }
                    Model = go;
                    go.transform.parent        = ModelRoot.transform;
                    go.transform.localPosition = Vector3.zero;
                    go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI));
                    ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue();
                    Drag.Target = go.transform;
                    go.transform.localRotation = Quaternion.Euler(0, e.ShowAngle, 0);
                    go.transform.localScale    = Vector3.one * e.Scale;

                    if (!string.IsNullOrEmpty(animationPath))
                    {
                        var ani = go.GetComponent <Animation>();
                        if (null == ani)
                        {
                            ani = go.AddComponent <Animation>();
                        }
                        ani.enabled = true;
                        var s       = animationPath.LastIndexOf("/");
                        var l       = animationPath.LastIndexOf(".anim");
                        var aniName = animationPath.Substring(s + 1, l - s - 1);
                        if (!string.IsNullOrEmpty(aniName))
                        {
                            var clip = ani.GetClip(aniName);
                            if (null == clip)
                            {
                                ResourceManager.PrepareResource <AnimationClip>(animationPath, aniClip =>
                                {
                                    aniClip.wrapMode = WrapMode.Loop;
                                    ani.AddClip(aniClip, aniName);
                                    ani.Play(aniName);
                                });
                            }
                            else
                            {
                                //clip.wrapMode = WrapMode.Loop;
                                //ani.wrapMode = WrapMode.Loop;
                                ani[aniName].wrapMode = WrapMode.Loop;
                                ani.Play(aniName, PlayMode.StopAll);
                            }
                        }
                    }
                });
            }
        }
Esempio n. 30
0
    public void CreateEffect(EffectRecord tableData,
                             Transform parent,
                             Vector3 dir,
                             int layer   = 0,
                             Vector3?pos = null,
                             Action <EffectController, ulong> loadOverCallback = null,
                             Action <EffectController, ulong> playOverCallback = null,
                             bool firstPriority    = false,
                             bool bPrepareResource = false,
                             bool camShake         = true)
    {
        ComplexObjectPool.NewObject(tableData.Path, obj =>
        {
            if (obj == null)
            {
                return;
            }

            var Id = GenerateNextId();

            var p        = new Vector3(tableData.X, tableData.Y, tableData.Z);
            var rotation =
                Quaternion.Euler(new Vector3(tableData.RotationX, tableData.RotationY, tableData.RotationZ));

            var objTransform = obj.transform;
            if (null != parent)
            {
                objTransform.parent = parent;
            }
            else
            {
                objTransform.parent = GameLogic.Instance.Scene.EffectRoot.transform;
            }

            if (tableData.IsZoom != 0)
            {
                objTransform.localScale = Vector3.one;
            }
            else
            {
                if (parent != null)
                {
                    var v = parent.transform.lossyScale;
                    objTransform.localScale = new Vector3(1.0f / v.x, 1.0f / v.y, 1.0f / v.z);
                }
                else
                {
                    objTransform.localScale = Vector3.one;
                }
            }

            objTransform.localPosition = p;
            objTransform.localRotation = rotation;

            obj.name = "Effect_" + Id.ToString() + "_" + Path.GetFileNameWithoutExtension(tableData.Path);

            obj.SetLayerRecursive(layer);

            ComplexObjectPool.SetActive(obj, false);

            {
                //根据setting设置特效显示
                if (GameSetting.Instance.GameQualityLevel < 3)
                {
                    {
                        // foreach(var data in EnumGameObjectRecursive(obj))
                        var __enumerator5 = (EnumGameObjectRecursive(obj)).GetEnumerator();
                        while (__enumerator5.MoveNext())
                        {
                            var data = __enumerator5.Current;
                            {
                                if (data.CompareTag("LowEffectParticle"))
                                {
                                    data.SetActive(false);
                                }
                            }
                        }
                    }
                }
            }

            var effect = obj.GetComponent <EffectController>();
            if (effect == null)
            {
                effect = obj.AddComponent <EffectController>();
                effect.InitLoop();
            }
            effect.Id               = Id;
            effect.Delay            = tableData.DelayTime;
            effect.Duration         = tableData.Duration == 0 ? float.MaxValue : tableData.Duration;
            effect.Follow           = tableData.Follow != 0;
            effect.PlayOverCallback = playOverCallback;
            effect.LoopTime         = tableData.LoopTime;
            effect.State            = EffectState.WaitToFire;
            effect.Dir              = dir;
            effect.Pos              = pos;
            effect.trans            = effect.transform;
            mDict.Add(effect.Id, effect);

            if (null != loadOverCallback)
            {
                loadOverCallback(effect, Id);
            }

            if (camShake)
            {
                var tableDataShakeDelayTimeLength0 = tableData.ShakeDelayTime.Length;
                for (var i = 0; i < tableDataShakeDelayTimeLength0; i++)
                {
                    if (tableData.ShakeDelayTime[i] != -1)
                    {
                        //创建人物时播放角色动画还没有GameLogic
                        if (null != GameLogic.Instance)
                        {
                            var shake = GameLogic.Instance.MainCamera.GetComponent <CameraShake>();
                            if (null != shake && shake.gameObject.active && (!bPrepareResource) && GameLogic.Instance.MainCamera.enabled)
                            {
                                shake.StartCoroutine(ShakeCamera(shake, tableData.ShakeDelayTime[i] / 1000.0f,
                                                                 tableData.ShakeMagnitude[i], (int)tableData.ShakeCount[i], tableData.ShakeSpeed[i],
                                                                 tableData.ShakeReduction[i], tableData.ShakeType[i]));
                            }
                        }
                    }
                }
            }
        }, null, null, false, firstPriority, false);
    }