Esempio n. 1
0
    //private void OnTimerUp(int seq)
    //{
    //    int layer = transform.parent.gameObject.layer;
    //    //设置layer
    //    transform.parent.SetChildLayer(layer);
    //}

#if UNITY_EDITOR
    public void PreviewCharacter()
    {
        if (m_MoveSetPrefab == null)
        {
            return;
        }
        string     previewName = string.Format("__Preview_{0}", gameObject.name);
        GameObject go          = GameObject.Find(previewName);

        if (go != null)
        {
            GameObject.DestroyImmediate(go);
        }

        go      = GameObject.Instantiate(m_MoveSetPrefab, gameObject.transform.position, Quaternion.identity) as GameObject;
        go.name = previewName;

        AvatarComponent avatar = go.AddComponent <AvatarComponent>();

        avatar.PreviewTransformName  = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform;
        avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform;
        avatar.PreviewCharacter(m_Partitions);

        InitFX(m_MoveSetPrefab.name);
    }
Esempio n. 2
0
 public void Awake()
 {
     // Create modules.
     avatarComponent = new AvatarComponent(this); // Avatar component module.
     avatarAnimation = new AvatarAnimation(this);
     avatarFx        = new AvatarFx(this);        // Avatar effect module.
 }
Esempio n. 3
0
        public VMAvatar(GameObject obj)
            : base(obj)
        {
            PlatformState = new VMTSOAvatarState(); //todo: ts1 switch
            BodyStrings   = Object.Resource.Get <STR>(Object.OBJ.BodyStringID);

            SetAvatarType(BodyStrings);
            SkinTone = AppearanceType.Light;

            if (UseWorld)
            {
                WorldUI = new AvatarComponent();
                var avatarc = (AvatarComponent)WorldUI;
                avatarc.Avatar = Avatar;
                var type = BodyStrings.GetString(0);
                if (type != "adult" && type != "child")
                {
                    avatarc.IsPet = true;
                }
            }


            MotiveDecay = new VMAvatarMotiveDecay();
            for (int i = 0; i < 16; i++)
            {
                MotiveChanges[i]        = new VMMotiveChange();
                MotiveChanges[i].Motive = (VMMotive)i;
            }
        }
Esempio n. 4
0
        private void CreateAvatarComponentDisplayItems(string setName, string componentName, Profile.LockState lockState, float yPosition)
        {
            string name        = string.Concat(componentName, " ", setName);
            string messageText = Translator.Translation(string.Concat("item-", lockState).ToLower()).Replace("[ITEM]", Translator.Translation(name));

            if (lockState == Profile.LockState.FullVersionOnly)
            {
                messageText = Translator.Translation("buy full game to unlock");
            }

            _registerObject(
                new TextContent(messageText, new Vector2(Unlock_Text_X, yPosition + Unlock_Text_Y_Offset))
            {
                FadeFraction         = 0.0f,
                FadeFractionModifier = LockStateFadeModifier(lockState),
                Alignment            = TextWriter.Alignment.Left,
                Scale = Unlock_Text_Scale
            });

            AvatarComponent component = AvatarComponentManager.Component(setName, componentName);
            AvatarContent   avatar    = new AvatarContent(new Vector2(Unlock_Image_X, yPosition), AvatarComponentManager.DisplaySkeletonForSet(setName));

            if (setName != "body")
            {
                avatar.AddComponent(AvatarComponentManager.Component("body", "Blue"));
            }
            avatar.AddComponent(AvatarComponentManager.Component(setName, componentName));
            avatar.SkinSkeleton();
            avatar.FadeFraction         = 0.0f;
            avatar.FadeFractionModifier = LockStateFadeModifier(lockState);
            avatar.Scale = 0.65f;
            _registerObject(avatar);
        }
Esempio n. 5
0
        public VMAvatar(GameObject obj)
            : base(obj)
        {
            AvatarState   = new VMTSOAvatarState(); //todo: ts1 switch
            PlatformState = AvatarState;
            BodyStrings   = Object.Resource.Get <STR>(Object.OBJ.BodyStringID);
            Visitor       = false;
            SetAvatarType(BodyStrings);
            SkinTone = AppearanceType.Light;

            if (UseWorld)
            {
                WorldUI = new AvatarComponent();
                var avatarc = (AvatarComponent)WorldUI;
                avatarc.Avatar = Avatar;
            }


            MotiveDecay = new VMAvatarMotiveDecay();
            for (int i = 0; i < 16; i++)
            {
                MotiveChanges[i]        = new VMMotiveChange();
                MotiveChanges[i].Motive = (VMMotive)i;
            }
        }
Esempio n. 6
0
    public override void OnLookupUpdate(string dataID, object value)
    {
        base.OnLookupUpdate(dataID, value);
        if (value == null)
        {
            return;
        }

        Dictionary <string, string> .Enumerator enumerator = m_EquipmentRegisterIDs.GetEnumerator();
        while (enumerator.MoveNext())
        {
            KeyValuePair <string, string> current = enumerator.Current;
            AvatarComponent avatar     = GetComponent <AvatarComponent>();
            int             colorIndex = 0;
            if (dataID == enumerator.Current.Value)
            {
                if (int.TryParse(value.ToString(), out colorIndex))
                {
                    if (avatar != null)
                    {
                        avatar.UpdateEquipmentColor(current.Key, colorIndex - 1);
                    }
                }
            }
        }
    }
Esempio n. 7
0
        private static void FindSelectors()
        {
            HandSelector[] selectors = Object.FindObjectsOfType(typeof(HandSelector)) as HandSelector[];

            if (selectors.Length == 0)
            {
                Debug.LogWarning("Found 0 selectors. Expected 2. Not initializing any.");

                return;
            }

            if (selectors.Length == 1)
            {
                Debug.LogWarning("Found 1 selectors. Expected 2.");

                selectorLeft = selectors[0];

                return;
            }

            if (selectors.Length > 2)
            {
                Debug.LogWarning("Found more than 2 selectors. Expected 2.");
            }

            AvatarComponent avatarComponent0 = selectors[0].transform.GetComponentInParent(typeof(AvatarComponent)) as AvatarComponent;

            AvatarComponent avatarComponent1 = selectors[1].transform.GetComponentInParent(typeof(AvatarComponent)) as AvatarComponent;

            if (avatarComponent0.thisEntityType != Entity_Type.users_Lhand && avatarComponent1.thisEntityType != Entity_Type.users_Lhand)
            {
                Debug.LogWarning("Left hand not found.");

                return;
            }

            if (avatarComponent0.thisEntityType != Entity_Type.users_Rhand && avatarComponent1.thisEntityType != Entity_Type.users_Rhand)
            {
                Debug.LogWarning("Right hand not found.");

                return;
            }

            if (avatarComponent0.thisEntityType == Entity_Type.users_Rhand)
            {
                selectorLeft = selectors[1];

                selectorRight = selectors[0];

                return;
            }

            selectorLeft = selectors[0];

            selectorRight = selectors[1];
        }
Esempio n. 8
0
        public VMAvatar() : base(Content.Get().WorldObjects.Get(TEMPLATE_PERSON))
        {
            WorldUI = new AvatarComponent();

            Avatar      = new AdultSimAvatar();
            Avatar.Head = Content.Get().AvatarOutfits.Get("mah108_apallo.oft");
            Avatar.Body = Content.Get().AvatarOutfits.Get("mab011_lsexy.oft");

            WorldUI.Avatar = Avatar;
        }
Esempio n. 9
0
 private void UpdateMipMapBias(AvatarComponent avatar, float mipMapBias)
 {
     if (m_Avatar != null)
     {
         var iter = m_Avatar.Partitions.GetEnumerator();
         while (iter.MoveNext())
         {
             iter.Current.Value.UpdateMipMapBias(mipMapBias);
         }
         iter.Dispose();
     }
 }
Esempio n. 10
0
    public void InstantiateCharacter(IDictionary partitions)
    {
        if (m_MoveSetPrefab != null)
        {
            if (m_CharacterInstance == null)
            {
                m_CharacterInstance      = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject;
                m_CharacterInstance.name = m_MoveSetPrefab.name;
                //
                OnTimerUpInitCharacter(0, partitions);
                //
                EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name);
            }
            else
            {
                EB.Debug.LogPSPoolAsset(string.Format("<color=#00ff00>已经存在这个角色变体<color=#000000>{0}</color>,开启协程重新注册一次身上的所有特效</color>", this.name));
                //需要重新将特效列表~注册进入特效缓存池
                FXLib fxLib = m_CharacterInstance.GetComponent <FXLib>();
                if (fxLib != null)
                {
                    StartCoroutine(fxLib.TryRegisterAll());
                }
                else
                {
                    EB.Debug.LogError("为什么~模型对象身上没有这个FXLib特效组件了?");
                }

                m_CharacterInstance.transform.SetParent(transform.parent);
                m_CharacterInstance.CustomSetActive(true);
                AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();
                if (avatar != null)
                {
                    avatar.SyncLoad = SyncLoad;

                    int partitionCount = m_Partitions.Count;
                    for (int i = 0; i < partitionCount; i++)
                    {
                        if (partitions != null && partitions.Contains(m_Partitions[i].Name))
                        {
                            string assetname = partitions[m_Partitions[i].Name].ToString();
                            avatar.LoadEquipment(m_Partitions[i].Name, assetname);

                            if (IsPlayer)
                            {
                                PartitionObject.PlayerPartitions.Add(assetname);
                            }
                        }
                    }
                }
            }
            InitFX(m_MoveSetPrefab.name);
        }
    }
Esempio n. 11
0
 // 设置avatar显示组件
 protected void SetAvatarComponent(AvatarComponent avatar)
 {
     _avatar = avatar;
     if (_avatar == null)
     {
         RemoveComponent(typeof(AvatarComponent).FullName);
     }
     else
     {
         AddComponent(_avatar);
     }
 }
Esempio n. 12
0
        private IEnumerator ScaleOutLine(AvatarComponent m_Avatar) //by pj
        {
            while (m_Avatar != null && m_Avatar.GetToLoadCount() != 0)
            {
                yield return(null);
            }

            if (m_Character != null)
            {
                CartoonHelp.ScaleCartoonOutLine(m_Character, 0.005f);
            }
        }
Esempio n. 13
0
    private void OnTimerUpInitAvatar(int seq, object arg)
    {
        AvatarComponent avatar = arg as AvatarComponent;

        if (avatar == null)
        {
            return;
        }

        avatar.PreviewTransformName  = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform;
        avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform;
        avatar.SyncLoad = SyncLoad;
        avatar.InitAvatar();
        m_CharacterInstance.transform.SetParent(transform.parent);
    }
Esempio n. 14
0
 public void InitAnimator()
 {
     m_Animator        = GetComponent <Animator>();
     m_AvatarComponent = GetComponent <AvatarComponent>();
     //主要战斗当中~有些模型会是从屏幕外进入屏幕内的情况
     m_Animator.cullingMode = AnimatorCullingMode.AlwaysAnimate;
     //
     for (int i = 0, count = m_Moves.Length; i < count; ++i)
     {
         if (m_Moves[i] != null)
         {
             m_Moves[i]._animationEvents = m_Moves[i].CompileEvents();
         }
     }
 }
Esempio n. 15
0
        private void AddSkeletonForComponent(string skeletonName, AvatarComponent component, bool addBody)
        {
            ComponentSetDisplayAvatar avatar = new ComponentSetDisplayAvatar((component == null)  ? "none" : component.Name, 0.0f);

            avatar.CreateBonesFromDataManager(skeletonName);
            avatar.Name = skeletonName;

            if (addBody)
            {
                avatar.Components.Add(AvatarComponentManager.Component("body", "Blue"));
            }
            if (component != null)
            {
                avatar.Components.Add(component);
            }
            avatar.SkinFromComponents();
            avatar.RenderLayer = RenderLayer;

            AddItem(avatar);
        }
Esempio n. 16
0
        public VMAvatar(GameObject obj)
            : base(obj)
        {
            Name    = "Sim";
            WorldUI = new AvatarComponent();

            BodyStrings = Object.Resource.Get <STR>(Object.OBJ.BodyStringID);

            SetAvatarType(BodyStrings);
            SkinTone = AppearanceType.Light;

            var avatarc = (AvatarComponent)WorldUI;

            avatarc.Avatar = Avatar;

            for (int i = 0; i < 16; i++)
            {
                MotiveChanges[i]        = new VMMotiveChange();
                MotiveChanges[i].Motive = (VMMotive)i;
            }
        }
Esempio n. 17
0
    private void OnTimerUpInitCharacter(int seq, object arg)
    {
        TimerManager.instance.RemoveTimer(OnTimerUpInitCharacter);

        IDictionary partitions = arg as IDictionary;

        if (m_CharacterInstance == null)
        {
            return;
        }
        AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();

        if (avatar == null)
        {
            avatar = m_CharacterInstance.AddComponent <AvatarComponent>();
            int partitionCount = m_Partitions.Count;
            for (int i = 0; i < partitionCount; i++)
            {
                if (partitions != null && partitions.Contains(m_Partitions[i].Name))
                {
                    avatar.AddPartition(m_Partitions[i].Name, partitions[m_Partitions[i].Name].ToString());

                    if (IsPlayer)
                    {
                        PartitionObject.PlayerPartitions.Add(partitions[m_Partitions[i].Name].ToString());
                    }
                }
                else
                {
                    avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName);

                    if (IsPlayer)
                    {
                        PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName);
                    }
                }
            }
        }
        OnTimerUpInitAvatar(0, avatar);
    }
Esempio n. 18
0
 public void RemoveAvatar(AvatarComponent avatar)
 {
     this.Avatars.Remove(avatar);
 }
Esempio n. 19
0
 public void AddAvatar(AvatarComponent avatar)
 {
     this.Avatars.Add(avatar);
 }
Esempio n. 20
0
 /// <summary>
 /// Set headShape in current User
 /// </summary>
 /// <param name="headShape"></param>
 public void SetUserHeadShape(AvatarComponent headShape)
 {
     userData.user.Avatar.HeadShape = headShape;
 }
Esempio n. 21
0
    /*
     * protected void UpdateEquipmentColor(string equipmentType, int equipmentColorIndex)
     * {
     *      CombinedMesh avatar = GetComponent<CombinedMesh>();
     *      if(avatar != null)
     *      {
     *              avatar.UpdateEquipmentColor(equipmentType, equipmentColorIndex);
     *      }
     * }
     */

    protected void UpdateEquipment(string equipmentType, string inventoryDataID)
    {
        string equipmentAssetName = !string.IsNullOrEmpty(inventoryDataID)
                        ? GetLookupData <string>(inventoryDataID + ".economy_id") + "-prefab"
                                : "MaleWarrior_Default" + equipmentType;

        //bool foundAsset = false;

        string nexteqpname = inventoryDataID;
        string preeqpname  = null;

        if (preEquipmentDic.ContainsKey(equipmentType))
        {
            preeqpname = preEquipmentDic[equipmentType];
        }
        OnEquipmentChanged(equipmentType, preeqpname, nexteqpname);

        AvatarComponent avatar = GetComponent <AvatarComponent>();

        if (avatar != null)
        {
            avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/);
        }

        /*
         * Combatant c = GetComponent<Combatant>();
         * if (c != null) {
         *      if (c.Equipment != null) {
         *              for(int i = 0; i < c.Equipment.Length; i++)
         *              {
         *                      if(c.Equipment[i].name == equipmentAssetName)
         *                      {
         *                              foundAsset = true;
         *
         *                              c.Equipment[i].SetActive(true);
         *
         *                              CombinedMesh avatar = GetComponent<CombinedMesh>();
         *
         *                              avatar.SetToCombineGameObjectByRowName(equipmentType, c.Equipment[i], equipmentDataID);
         *                              OnEquipmentChanged(equipmentType,preeqpname,nexteqpname);
         *
         *                              c.Equipment[i].SetActive(false);
         *                      }
         *              }
         *      }
         * }
         * System.Action<string, GameObject, bool> onAssetLoaded = delegate(string arg1, GameObject arg2, bool arg3) {
         *      if(!arg3)
         *      {
         *              EB.Debug.LogError("Failed to load assset: " + arg1);
         *              return;
         *      }
         *      CombinedMesh avatar = GetComponent<CombinedMesh>();
         *      avatar.SetToCombineGameObjectByRowName(equipmentType, arg2, equipmentDataID);
         *      OnEquipmentChanged(equipmentType,preeqpname,nexteqpname);
         *      Destroy(arg2);
         *      Resources.UnloadUnusedAssets(); // slow
         * };
         *
         * if (!foundAsset) {
         *      GM.AssetManager.GetAsset<GameObject> (equipmentAssetName, onAssetLoaded, GameEngine.Instance.gameObject);
         * }
         */
    }
Esempio n. 22
0
        public void ChangeModel(string modelName, bool firstCreate, float scale = 1)
        {
            if (playerController == null)
            {
                EB.Debug.LogWarning("playerController is null");
                return;
            }

            if (playerController.CharacterModel != null && playerController.CharacterModel.ResourcePrefabNameMain.IndexOf(modelName) >= 0)
            {
                EB.Debug.LogWarning("ChangeModel: Aready Exist model={0}", modelName);
                return;
            }

            if (_HeadBar != null)
            {
                _HeadBar.ClearBars();
                _HeadBar = null;
            }

            try
            {
                CharacterVariant    CV = mDMono.transform.GetComponentInChildren <CharacterVariant>();
                MoveEditor.FXHelper FH = mDMono.transform.GetComponentInChildren <MoveEditor.FXHelper>();

                if (FH != null)
                {
                    FH.StopAll(true);
                }

                if (CV != null && GameEngine.Instance != null)
                {
                    SetObjLayer(CV.CharacterInstance, GameEngine.Instance.defaultLayer);
                    CV.Recycle();
                    PoolModel.DestroyModel(CV.gameObject);
                }

                if (playerController.SkinnedRigPrefab != null)
                {
                    PoolModel.DestroyModel(playerController.SkinnedRigPrefab);
                }
                ///
                playerController.Gender         = eGender.Male;
                playerController.CharacterModel = CharacterCatalog.Instance.GetModel(modelName);
                string prefabName = playerController.CharacterModel.PrefabNameFromGenderMain(playerController.Gender);
                PoolModel.GetModelAsync(prefabName, mDMono.transform.position, Quaternion.identity, (o, prm) =>
                {
                    var variantObj = o as GameObject;
                    variantObj.transform.SetParent(mDMono.transform);
                    variantObj.transform.localPosition = Vector3.zero;

                    CharacterVariant variant = variantObj.GetComponent <CharacterVariant>();
                    variant.SyncLoad         = true;
                    IDictionary partions     = GetPartitionsData(LoginManager.Instance.LocalUserId.Value);
                    variant.InstantiateCharacter(partions);
                    InitDataLookupSet();

                    playerController.SkinnedRigPrefab      = variant.CharacterInstance;
                    playerController.SkinnedRigPrefab.name = prefabName + "_Character";
                    playerController.SkinnedRigPrefab.tag  = "CharacterMesh";
                    playerController.SkinnedRigPrefab.transform.SetParent(mDMono.transform);
                    playerController.SkinnedRigPrefab.transform.localRotation = Quaternion.identity;
                    playerController.SkinnedRigPrefab.transform.localScale    = new Vector3(scale, scale, scale);
                    _combatController = mDMono.GetComponent <CombatController>();
                    _combatController.Initialize(playerController.SkinnedRigPrefab.transform, playerController.CharacterModel, 1 << LayerMask.NameToLayer("Enemy"));

                    playerController.CharacterComponent = mDMono.GetComponent <CharacterComponent>();
                    playerController.CharacterComponent.OnSpawn(playerController.CharacterModel, playerController.SkinnedRigPrefab, -1, false);

                    _HeadBar = playerController.SkinnedRigPrefab.GetMonoILRComponent <HeadBars2D>(false);
                    if (_HeadBar == null)
                    {
                        _HeadBar = playerController.SkinnedRigPrefab.AddMonoILRComponent <HeadBars2D>("Hotfix_LT.UI.HeadBars2D");
                    }

                    if (mDMono.GetComponent <Collider>() != null && mDMono.GetComponent <Collider>() is BoxCollider)
                    {
                        BoxCollider box = mDMono.GetComponent <Collider>() as BoxCollider;
                        box.size        = new Vector3(1.5f, 1.5f, 1.5f) + new Vector3(0, playerController.CharacterModel.heightOffset, 0);
                        box.center      = new Vector3(0, box.size.y / 2.0f, 0);
                    }

                    _muzzle = GameUtils.SearchHierarchyForBone(playerController.SkinnedRigPrefab.transform, "muzzle");
                    if (null == _muzzle)
                    {
                        _muzzle = mDMono.transform;
                    }

                    if (firstCreate)
                    {
                        LevelOwnerComponent.AssignLevelOwner(mDMono.gameObject); // this must be called after PlayerManager.RegisterPlayerController(this);
                    }
                    _avatar             = playerController.SkinnedRigPrefab.GetComponent <AvatarComponent>();
                    _shouldSetHideColor = !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice;

                    if (!firstCreate)
                    {
                        PlayerDataLookupSet PDLS = playerController.SkinnedRigPrefab.transform.GetDataLookupILRComponent <PlayerDataLookupSet>();
                        if (PDLS != null)
                        {
                            PDLS.UserId = playerController.playerUid;
                        }
                    }

                    MoveController mc = playerController.SkinnedRigPrefab.GetComponent <MoveController>();
                    if (mDMono != null && mDMono.GetComponent <CharacterComponent>().State != eCampaignCharacterState.Idle)
                    {
                        mc.TransitionTo(MoveController.CombatantMoveState.kLocomotion);
                    }
                }, null);
            }
            catch (System.NullReferenceException e)
            {
                EB.Debug.LogError(e.ToString());
            }
        }
Esempio n. 23
0
 public void AddComponent(AvatarComponent toAdd)
 {
     _skeleton.Components.Add(toAdd);
 }
Esempio n. 24
0
    /// <summary>
    /// 实例化角色.将根据身上记录的部件数据组装
    /// </summary>
    public void InstantiateCharacter()
    {
        if (m_MoveSetPrefab != null)
        {
            if (m_CharacterInstance == null)
            {
                //
                EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name);

                m_CharacterInstance      = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject;
                m_CharacterInstance.name = m_MoveSetPrefab.name;
                AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();
                if (avatar == null)
                {
                    avatar = m_CharacterInstance.AddComponent <AvatarComponent>();
                    int partitionCount = m_Partitions.Count;
                    for (int i = 0; i < partitionCount; i++)
                    {
                        avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName);

                        if (IsPlayer)
                        {
                            PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName);
                        }
                    }
                }
                avatar.PreviewTransformName  = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform;
                avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform;
                avatar.SyncLoad = SyncLoad;
                avatar.InitAvatar();
                m_CharacterInstance.transform.SetParent(transform.parent);
            }
            else
            {
                //
                EB.Debug.LogObjectMgrAsset("<color=#00ffff>已经_克隆过这个预置体</color>:<color=#00ff00>{0}</color>,将其设置可见", m_MoveSetPrefab.name);

                m_CharacterInstance.transform.SetParent(transform.parent);
                m_CharacterInstance.CustomSetActive(true);
                AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();
                if (avatar != null)
                {
                    avatar.SyncLoad = SyncLoad;

                    int partitionCount = m_Partitions.Count;
                    for (int i = 0; i < partitionCount; i++)
                    {
                        avatar.LoadEquipment(m_Partitions[i].Name, m_Partitions[i].AssetName);

                        if (IsPlayer)
                        {
                            PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName);
                        }
                    }
                }
            }

            InitFX(m_MoveSetPrefab.name);
        }
        else
        {
            EB.Debug.LogError("[" + Time.frameCount + "]为什么角色变体没有相应的预置体呢?");
        }

        //TimerManager.instance.AddLateUpdateTimer(70, 1, OnTimerUp);
    }
Esempio n. 25
0
        /// <summary>
        /// Muniuma_Model   Muniuma+"_Model_"    Muniuma 取自Muniuma-Variant
        /// </summary>
        /// <param name="equipmentType"></param>
        /// <param name="inventoryDataID"></param>
        protected void UpdateEquipment(string equipmentType, string ecomomy_id)
        {
            string equipmentAssetName;

            //卸下逻辑
            if (string.IsNullOrEmpty(ecomomy_id))
            {
                equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
            }
            else
            {               //穿上逻辑
                if (string.IsNullOrEmpty(ecomomy_id))
                {
                    equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                }
                else
                {
                    string raceModel = PlayerEquipmentDataLookup.GetModeAtributeName(userid.ToString());
                    if (string.IsNullOrEmpty(raceModel))
                    {
                        equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                    }
                    else
                    {
                        //string equipmentName = EconemyTemplateManager.GetPartitionName(raceModel, ecomomy_id); TODOX
                        string equipmentName = string.Empty;
                        if (string.IsNullOrEmpty(equipmentName))
                        {
                            equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                        }
                        else
                        {
                            equipmentAssetName = equipmentName;
                        }
                    }
                }
            }

            //bool foundAsset = false;

            string nexteqpname = ecomomy_id;
            string preeqpname  = null;

            if (preEquipmentDic.ContainsKey(equipmentType))
            {
                preeqpname = preEquipmentDic[equipmentType];
            }
            OnEquipmentChanged(equipmentType, preeqpname, nexteqpname);

            AvatarComponent avatar = mDL.transform.GetComponent <AvatarComponent>();

            if (avatar != null)
            {
                avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/);
            }

            long uid = 0;

            DataLookupsCache.Instance.SearchDataByID <long>("user.uid", out uid);           //LoginManager.Instance.LocalUserId.Value
            if (userid == uid && !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice)
            {
                GameEngine.Instance.SetHideColorTarget(mDL.gameObject);
            }
        }
Esempio n. 26
0
        public ParticleSystem PlayParticle(ParticleEventProperties properties, float time = 0, bool forcePlay = false, bool target = false, Vector3 tarPos = new Vector3(), Animator tarAimator = null, Vector3 tarOrgPos = new Vector3(), Vector3 tarHitPos = new Vector3())
        {
            if (!m_CanPlayParticle)
            {
                return(null);
            }

            //判断是否被禁止播放特效
            if (DisableFX)
            {
                return(null);
            }

            if (properties._applyOnTargetList)
            {
                ParticleEventProperties clone = ParticleEventProperties.Deserialize(properties.Serialize());
                PlayParticleOnTargetList(clone);
                return(null);
            }
            //ToDo:改调热更
            //if (LTInstanceMapModel.Instance.IsInsatnceViewAction() && properties._flippedParticleReference.Name.Contains("paobu"))
            if (GameFlowControlManager.IsInView("InstanceView") && properties._flippedParticleReference.Name.Contains("paobu"))
            {
                return(null);
            }

            //如果是世界boss的封印特效,则必须要在主场景才会出现
            //ToDo:改调热更
            //if (properties._flippedParticleReference.Name.Contains("fx_f_M00") && (!_animator.name.Contains("-Variant-Normal-M") || LTWorldBossDataManager.Instance.IsOpenWorldBoss()))
            if (properties._flippedParticleReference.Name.Contains("fx_f_M00") && (!_animator.name.Contains("-Variant-Normal-M") || (bool)GlobalUtils.CallStaticHotfix("Hotfix_LT.UI.LTWorldBossDataManager", "IsOpenWorldBossFromILR")))
            {
                return(null);
            }

            //世界boss某个出场特效播放之后需要特殊处理场景状态
            if (properties._flippedParticleReference.Name.Equals("fx_m_m001_specialappear03") || properties._flippedParticleReference.Name.Equals("fx_m_m002_specialappear03") || properties._flippedParticleReference.Name.Equals("fx_m_m003_specialappear03"))
            {
                if (WorldBossCombatScene.Instance != null)
                {
                    WorldBossCombatScene.Instance.SetSceneStatus(2);//世界boss播放出场镜头的时候需要特殊设置场景状态
                }
            }

            if (!string.IsNullOrEmpty(properties._partition))
            {
                //AvatarComponent avatar = _player != null ? _player.GetComponent<AvatarComponent>() : GetComponent<AvatarComponent>();
                AvatarComponent avatar = GetComponent <AvatarComponent>();
                if (avatar == null)
                {
                    return(null);
                }

                if (!avatar.Partitions.ContainsKey(properties._partition))
                {
                    return(null);
                }

                /*string fxName = avatar.Partitions[properties._partition].AssetName;
                 * if (properties._particleReference.Valiad && !properties._particleReference.Name.EndsWith(fxName))
                 * {
                 *      return null;
                 * }
                 * if (properties._flippedParticleReference.Valiad && !properties._flippedParticleReference.Name.EndsWith(fxName))
                 * {
                 *      return null;
                 * }
                 * if (!string.IsNullOrEmpty(properties.ParticleName) && !properties.ParticleName.EndsWith(fxName))
                 * {
                 *      return null;
                 * }
                 * if (!string.IsNullOrEmpty(properties.FlippedParticleName) && !properties.FlippedParticleName.EndsWith(fxName))
                 * {
                 *      return null;
                 * }*/
            }

            bool canPlay = true;

            // TJ: Test conditions that would prevent the particle from playing
            if (!forcePlay)
            {
                // check if there are any particles playing using this event name
                if (properties._eventName.Length > 0 && _activeParticles.Count(pi => pi._name == properties._eventName) > 0)
                {
                    ParticleInfo info = _activeParticles.Find(pi => pi._name == properties._eventName);
                    if (!info._stopOnOverride)
                    {
                        canPlay = false;
                    }
                }
                // check if we need to wait for attacks to be resolved
                else if (properties._killIfBlocked || properties._cancelIfMissed || properties._cancelIfHit)
                {
                    _cachedConditionalParticles.Add(properties);
                    canPlay = false;
                }
            }

            if (!canPlay)
            {
                return(null);
            }

            ParticleInfo last = null;

            if (properties._eventName.Length > 0 && _activeParticles.Count(pi => pi._name == properties._eventName) > 0)
            {
                foreach (ParticleInfo info in _activeParticles.FindAll(pi => pi._name == properties._eventName))
                {
                    if (info._stopOnOverride)
                    {
                        if (!info._particleSystem.loop || last != null)
                        {
                            StopParticle(info._name);
                        }
                        else
                        {
                            last = info;
                        }
                    }
                }
            }

            //EB.Debug.Log("PlayParticle: play {0} _activeParticles = {1}", properties._eventName, _activeParticles.Count);

            ParticleInfo   new_pi = last;
            ParticleSystem ps     = last != null ? last._particleSystem : null;

            if (new_pi == null)
            {
                ps = InstantiateParticle(properties, _flipped, target, tarPos, tarAimator, tarOrgPos, tarHitPos);
                if (ps == null)
                {
                    //如果是开场动画,如果还没播放开场动画,还需要隔一段时间播放
                    //if (CombatUtil.IsHeroStartEffect(MoveUtils.GetParticleName(properties, true)))
                    if (IsHeroStartEffect(MoveUtils.GetParticleName(properties, true)))
                    {
                        mCurrentReplayTime++;
                        if (mCurrentReplayTime >= mReplayTime)
                        {
                            TimerManager.instance.RemoveTimer(mTimer);
                            mCurrentReplayTime = 0;
                            return(null);
                        }
                        mTimer = TimerManager.instance.AddTimer(100, 1, delegate(int seq)
                        {
                            TimerManager.instance.RemoveTimer(mTimer);
                            PlayParticle(properties, time, forcePlay);
                        });
                    }
                    return(null);
                }

                new_pi = RegisterParticle(ps, properties._eventName, properties._interruptable, properties._stopOnExit, properties._stopOnDuration, properties._duration);
            }

            new_pi._stopOnOverride = properties._stopOnOverride;
            new_pi._stopOnEndTurn  = properties._stopOnEndTurn;
            new_pi._stopAfterTurns = properties._stopAfterTurns;
            new_pi._turns          = properties._turns;
            new_pi.properties      = properties;
            new_pi._activeTurn     = Mathf.Max(1, GetCurrentTurn());

            if (last == null)
            {
                ps.EnableEmission(true);

                if (time < 0.01f)
                {
                    ps.Simulate(0.0001f, true, true);
                }
                else
                {
                    ps.Simulate(time, true, true);
                }
                ps.gameObject.layer = gameObject.layer;
                ps.transform.SetChildLayer(gameObject.layer);

                ps.Play(true);
            }
            //EB.Debug.LogPSPoolAsset(string.Format(">>播放指定的特效:<color=#00ff00>{0}</color>", ps.name));
            if (PlayParticleAction != null)
            {
                PlayParticleAction(ps);
            }

            return(ps);
        }
Esempio n. 27
0
        private void CreatCharacterAsync()
        {
            if (character != null || m_Loading)
            {
                if (m_VariantName == CharacterVariantTemplate)
                {
                    EB.Debug.Log("already loaded variant {0}", CharacterVariantTemplate);
                    return;
                }
                else
                {
                    EB.Debug.Log("destroy last instance {0}", m_VariantName);
                    DestroyCharacter();
                }
            }

            if (string.IsNullOrEmpty(CharacterVariantTemplate))
            {
                return;
            }

            m_Loading     = true;
            m_VariantName = CharacterVariantTemplate;

            var    listener     = this;
            string variant_name = m_VariantName;
            string prefab_path  = variantPath;

            PoolModel.GetModelAsync(prefab_path, Vector3.zero, Quaternion.identity, delegate(Object obj, object param)
            {
                GameObject variantObj = obj as GameObject;
                if (variantObj == null)
                {
                    EB.Debug.LogError("UIBuddy3DModelCreater.CreatCharacter: No Resources for {0}", prefab_path);
                    return;
                }

                if (listener == null)
                {
                    EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: creator already destroyed");
                    PoolModel.DestroyModel(variantObj);
                    return;
                }

                if (variant_name != m_VariantName)
                {
                    EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: resource not match");
                    PoolModel.DestroyModel(variantObj);
                    return;
                }

                if (m_Character != null)
                {
                    EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: character set");
                    PoolModel.DestroyModel(variantObj);
                    return;
                }

                if (!m_Loading)
                {
                    EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: load canceled");
                    PoolModel.DestroyModel(variantObj);
                    return;
                }

                // everything is ok
                m_Loading = false;

                variantObj.transform.SetParent(m_CharacterContainer.transform);
                CharacterVariant variant = variantObj.GetComponent <CharacterVariant>();

                if (variant != null)
                {
                    variant.SyncLoad = true;

                    if (m_Partitions == null)
                    {
                        variant.InstantiateCharacter();
                    }
                    else
                    {
                        variant.InstantiateCharacter(m_Partitions);
                    }

                    m_Character = variant.CharacterInstance;
                }

                if (m_Character != null)
                {
                    m_Character.transform.SetParent(m_CharacterContainer.transform);
                    m_Character.transform.localScale    = modelScale;
                    m_Character.transform.localRotation = Quaternion.identity;
                    m_Character.transform.localPosition = Vector3.zero;
                    SetObjLayer(m_Character, m_CharacterContainer.gameObject.layer);
                    //StartCoroutine(SetParticleScaleMode(m_Character));
                    m_Avatar = m_Character.GetComponent <AvatarComponent>();
                    SetNeedToTransitionToIdle(m_Character, true);
                    //StartCoroutine(ScaleOutLine(m_Avatar)); //by pj 异步 开启协程判断
                }

                ShouldSetMipMapBias = true;

                if (mDMono.gameObject.activeInHierarchy)// && HuDState.IsLTLegionFBHudOpen)
                {
                    if (m_Coroutine != null)
                    {
                        StopCoroutine(m_Coroutine);
                        m_Coroutine = null;
                    }
                    m_Coroutine = StartCoroutine(SetMaterial());
                }
            }, null);
        }
Esempio n. 28
0
 private TextureRegion2D GetSprite(AvatarComponent avatar)
 {
     return(atlas[avatar.id]);
 }
Esempio n. 29
0
 public override void OnEnable()
 {
     mDL.hasStarted = true;
     IsLoadFashion  = true;
     _avatar        = mDL.transform.GetComponent <AvatarComponent>();
 }
Esempio n. 30
0
 public void RemoveAvatar(AvatarComponent avatar)
 {
     this.Avatars.Remove(avatar);
     HeadlineObjects.Remove(avatar);
 }