예제 #1
0
 public void Destroy()
 {
     if (m_ObjAnim != null)
     {
         GameObject.Destroy(ObjAnim.gameObject);
         m_ObjAnim = null;
     }
 }
예제 #2
0
        public static void onAsyLoadFlyWing(string modeName, GameObject resObj, object param1, object param2, object param3)
        {
            if (resObj == null || param1 == null || param2 == null)
            {
                return;
            }

            GameObject playerObj = param1 as  GameObject;

            if (playerObj == null)
            {
                return;
            }

            int id = (int)param2;
            Tab_FlyWingClient tabClient = TableManager.GetFlyWingClientByID(id, 0);

            if (tabClient == null || tabClient.ModeName == "")
            {
                return;
            }

            Transform flyWingForm = playerObj.transform.Find(GlobeVar.STR_FATHER_MODE_NAME);

            if (flyWingForm == null)
            {
                return;
            }

            // 创建模型
            GameObject model = (GameObject)GameObject.Instantiate(resObj);

            if (model == null)
            {
                return;
            }

            model.name                    = GlobeVar.STR_MODE_NAME_FADEOBJ;
            model.transform.parent        = flyWingForm;
            model.transform.localPosition = Vector3.zero;
            model.transform.localRotation = Quaternion.Euler(new Vector3(-90, 90, 0));           //Quaternion.identity;

            Transform[] trans = model.GetComponentsInChildren <Transform> ();
            for (int i = 0; i < trans.Length; ++i)
            {
                trans[i].gameObject.layer = resObj.layer;
            }

            ObjAnimModel objAnim = playerObj.GetComponent <ObjAnimModel>();

            if (objAnim != null)
            {
                objAnim.FakeObjEffectController.OnFlyWingOk(id, model);
            }
        }
    public void OnLoadWeaponOK(Tab_WeaponModel tabData)
    {
        ObjAnimModel objAnim = gameObject.GetComponent <ObjAnimModel>();

        if (objAnim == null)
        {
            return;
        }

        Transform effectPointBone;

        if (objAnim.LWeaponObject != null)
        {
            effectPointBone = objAnim.LWeaponObject.transform.Find(tabData.LWeaponBindPointPath);
            if (effectPointBone != null)
            {
                if (m_effectBindPointCache.ContainsKey(GlobeVar.EFFECT_BIND_POINT_LWEAPON))
                {
                    m_effectBindPointCache[GlobeVar.EFFECT_BIND_POINT_LWEAPON] = effectPointBone.gameObject;
                }
                else
                {
                    m_effectBindPointCache.Add(GlobeVar.EFFECT_BIND_POINT_LWEAPON, effectPointBone.gameObject);
                }
            }
        }
        if (objAnim.RWeaponObject != null)
        {
            effectPointBone = objAnim.RWeaponObject.transform.Find(tabData.RWeaponBindPointPath);
            if (effectPointBone != null)
            {
                if (m_effectBindPointCache.ContainsKey(GlobeVar.EFFECT_BIND_POINT_RWEAPON))
                {
                    m_effectBindPointCache[GlobeVar.EFFECT_BIND_POINT_RWEAPON] = effectPointBone.gameObject;
                }
                else
                {
                    m_effectBindPointCache.Add(GlobeVar.EFFECT_BIND_POINT_RWEAPON, effectPointBone.gameObject);
                }
            }
        }

        int count = tabData.getWeaponEffectCount();
        int effectId;

        for (int i = 0; i < count; i++)
        {
            effectId = tabData.GetWeaponEffectbyIndex(i);
            if (effectId >= 0)
            {
                PlayEffect(effectId);
            }
        }
    }
예제 #4
0
        public bool initFakeObject(int nFakeObjID, GameObject fakeObjNode, out GameObject FakeObj)
        {
            FakeObj = null;

            if (m_ObjAnim)
            {
                Destroy();
            }

            FakeObjNode = fakeObjNode;
            if (FakeObjNode == null)
            {
                LogModule.DebugLog("error: initFakeObject FakeObjNode is null");
                return(false);
            }

            Tab_FakeObject FakeObjTable = TableManager.GetFakeObjectByID(nFakeObjID, 0);

            if (FakeObjTable == null)
            {
                return(false);
            }

            FakeObj = ResourceManager.InstantiateResource("Prefab/Model/NPCRoot", nFakeObjID.ToString()) as GameObject;
            if (FakeObj != null)
            {
                if (FakeObjTable.IsPlayer == 1)
                {
                    if (GameManager.gameManager.OtherPlayerData.ModuleVisualID == GlobeVar.INVALID_ID)
                    {
                        Singleton <ObjManager> .GetInstance().ReloadModel(FakeObj, FakeObjTable.FakeObjModel, Singleton <ObjManager> .GetInstance().OtherView_AsycLoadFakeObjOver, FakeObjTable, this);
                    }
                    else
                    {
                        InitFashionFakeObj(FakeObj, GameManager.gameManager.OtherPlayerData.ModuleVisualID, FakeObjTable);
                    }
                }
                else
                {
                    Singleton <ObjManager> .GetInstance().ReloadModel(FakeObj, FakeObjTable.FakeObjModel, Singleton <ObjManager> .GetInstance().OtherView_AsycLoadFakeObjOver, FakeObjTable, this);
                }

                m_ObjAnim = FakeObj.AddComponent <ObjAnimModel>() as ObjAnimModel;

                return(true);
            }

            return(false);
        }
예제 #5
0
        public bool initFakeObject(int nFakeObjID, GameObject fakeObjNode, out GameObject FakeObj, int modeVisualID = -1, int nProfession = -1)
        {
            FakeObj = null;

            if (m_ObjAnim)
            {
                Destroy();
            }

            FakeObjNode = fakeObjNode;
            if (FakeObjNode == null)
            {
                LogModule.DebugLog("error: initFakeObject FakeObjNode is null");
                return(false);
            }

            Tab_FakeObject FakeObjTable = TableManager.GetFakeObjectByID(nFakeObjID, 0);

            if (FakeObjTable == null)
            {
                return(false);
            }

            FakeObj = ResourceManager.InstantiateResource("Prefab/Model/NPCRoot", nFakeObjID.ToString()) as GameObject;
            if (FakeObj != null)
            {
                if (!Singleton <ObjManager> .Instance.MainPlayer)
                {
                    // 重载模型
                    if (modeVisualID != GlobeVar.INVALID_ID)
                    {
                        InitFashionFakeObj(FakeObj, modeVisualID, FakeObjTable, nProfession);
                    }

                    else
                    {
                        Singleton <ObjManager> .GetInstance().ReloadModel(FakeObj, FakeObjTable.FakeObjModel, Singleton <ObjManager> .GetInstance().AsycLoadFakeObjOver, FakeObjTable, this);
                    }
                }
                else if (FakeObjTable.IsPlayer == 1)
                {
                    if (Singleton <ObjManager> .Instance.MainPlayer.ModelVisualID == GlobeVar.INVALID_ID)
                    {
                        Singleton <ObjManager> .GetInstance().ReloadModel(FakeObj, FakeObjTable.FakeObjModel, Singleton <ObjManager> .GetInstance().AsycLoadFakeObjOver, FakeObjTable, this);
                    }
                    else
                    {
                        InitFashionFakeObj(FakeObj, Singleton <ObjManager> .Instance.MainPlayer.ModelVisualID, FakeObjTable);
                    }
                }
                else
                {
                    Singleton <ObjManager> .GetInstance().ReloadModel(FakeObj, FakeObjTable.FakeObjModel, Singleton <ObjManager> .GetInstance().AsycLoadFakeObjOver, FakeObjTable, this);
                }

                m_ObjAnim = FakeObj.GetComponent <ObjAnimModel>() as ObjAnimModel;
                if (m_ObjAnim == null)
                {
                    m_ObjAnim = FakeObj.AddComponent <ObjAnimModel>() as ObjAnimModel;
                }

                return(true);
            }

            return(false);
        }
예제 #6
0
    public static void OnAsycLoadMount(string modelName, GameObject resObj, object param1, object param2, object param3)
    {
        if (param1 == null || param2 == null || param3 == null)
        {
            return;
        }

        GameObject      objRoot      = (GameObject)param1;
        Obj_OtherPlayer PlayerObj    = (Obj_OtherPlayer)param2;
        string          strBindPoint = (string)param3;

        if (null == objRoot || null == PlayerObj || null == strBindPoint)
        {
            return;
        }

        if (PlayerObj.MountObj == null)
        {
            return;
        }

        if (resObj == null || PlayerObj.MountID <= 0)
        {
            if (PlayerObj.MountObj != null)
            {
                DestroyMount(PlayerObj.MountObj);
                PlayerObj.MountObj = null;
            }
            return;
        }

        // 保存角色模型 找Model 放在MountPlayer下

        string strModelName = "Model";
        //if (Singleton<ObjManager>.GetInstance().MainPlayer.IsChangedMainPlayer)
        //{
        //    strModelName = "ModelChange";
        //}

        Transform gMountPlayerTrans = objRoot.transform.FindChild(strModelName);

        if (gMountPlayerTrans == null || gMountPlayerTrans.gameObject == null)
        {
            DestroyMount(PlayerObj.MountObj);
            PlayerObj.MountObj = null;
            return;
        }
        gMountPlayerTrans.parent        = PlayerObj.MountObj.gameObject.transform;
        gMountPlayerTrans.localPosition = Vector3.zero;
        gMountPlayerTrans.localRotation = Quaternion.identity;
        // 初始化动作
        PlayerObj.MountObj.MountPlayer = PlayerObj.MountObj.gameObject.AddComponent <ObjAnimModel>() as ObjAnimModel;
        ObjAnimModel mountPlayer = PlayerObj.MountObj.MountPlayer;

        if (mountPlayer == null)
        {
            DestroyMount(PlayerObj.MountObj);
            PlayerObj.MountObj = null;
            return;
        }
        mountPlayer.AnimationFilePath = PlayerObj.AnimationFilePath;
        mountPlayer.InitAnimation();

        // 添加马Model
        Singleton <ObjManager> .GetInstance().AsycReloadMountModelOver(modelName, resObj, objRoot, PlayerObj.AnimationFilePath, null);

        string    str            = strModelName + strBindPoint;
        Transform mountTransferm = objRoot.transform.FindChild(str);

        if (null == mountTransferm)
        {
            LogModule.ErrorLog("can not find the mount's bindpoint:" + str);
            DestroyMount(PlayerObj.MountObj);
            PlayerObj.MountObj = null;
            return;
        }
        GameObject gBindPoint = mountTransferm.gameObject;

        if (gBindPoint)
        {
            mountPlayer.transform.parent        = gBindPoint.transform;
            mountPlayer.transform.localPosition = Vector3.zero;
            mountPlayer.transform.rotation      = objRoot.transform.rotation;
        }

        PlayerObj.OnSwithObjAnimState(PlayerObj.CurObjAnimState);
        //需要下马时 还骑着马 走下面流程(防止出现 上马立马下马的情况 下马失败)
        if (PlayerObj.IsNeedUnMount && PlayerObj.MountID != -1)
        {
            UnMount(PlayerObj);
        }

        if (null != PlayerObj)
        {
            PlayerObj.OnReloadModle();
            if (PlayerObj.ObjEffectController != null)
            {
                PlayerObj.ObjEffectController.OnMountModelOk();

                //非登陆状态才有上骑乘的特效
                if (PlayerObj.ShowRideOnEffect)
                {
                    Tab_MountBase MountBase = TableManager.GetMountBaseByID(PlayerObj.MountID, 0);
                    if (MountBase != null)
                    {
                        Tab_CharMount MountTable = TableManager.GetCharMountByID(MountBase.ModelID, 0);
                        if (MountTable != null)
                        {
                            PlayerObj.ObjEffectController.PlayEffect(MountTable.EffectMountOn);
                            PlayerObj.ShowRideOnEffect = false;
                        }
                    }
                }
            }

            PlayerObj.RideMountWeapon();

            PlayerObj.IsLoadingModel = false;
            if (PlayerObj.WaitChangeState != GlobeVar.INVALID_ID)
            {
                int nChangeState = PlayerObj.WaitChangeState;
                PlayerObj.WaitChangeState = GlobeVar.INVALID_ID;
                PlayerObj.UpdateOtherPlayerChangeState(nChangeState);
            }
        }
    }