public void Play(U3D_Render.EntityView ev)
        {
            if (!bInit)
            {
                return;
            }
            isPlaying = true;
            if (ev != null)
            {
                LastEv = ev;
            }

            if (null != EffectList && EffectList.Count > 0)
            {
                int cout = EffectList.Count;
                for (int i = 0; i < cout; i++)
                {
                    StaticEffectNode n = EffectList[i];
                    if (n.PlayTimes > 0)
                    {
                        currPlayTimesList[i]++;
                        if (currPlayTimesList[i] > n.PlayTimes)
                        {
                            continue;
                        }
                    }

                    if (n.effect)
                    {
                        n.effect.PlayEffect(false, LastEv == null ? -1 : LastEv.ID, null, null);
                    }
                }
            }
        }
예제 #2
0
        // Use this for initialization
        public IEnumerator Start()
        {
            if (SwitchList.Count <= 0)
            {
                bNeedToUpdate = false;
            }

            InitAll();

            if (!SceneManager.isLoadingScene)
            {
                DisableAll();
                m_pFSM = GetComponentInParent <BaseStateMachine>();
                if (!m_pFSM)
                {
                    enabled = false;
                    yield break;
                }
                m_entityView = EntityFactory.getEntityViewByID(m_pFSM.entityID);
            }
            else
            {
                //bNeedToUpdate = false;
                GameUtil.StartCoroutineHelper(this, PreWarmEffect());
            }
            bInit = true;
            yield return(sections);
        }
예제 #3
0
        private void SwitchGodEye(U3D_Render.EntityView theSoldier)
        {
            Vector3 godDir    = new Vector3(0, 0, -1);
            float   realAngle = (float)m_userDesireAngle.y;

            EnterGodEyeMode(theSoldier.gameObject.transform.position, new Vector3(50.0f, realAngle, 0.0f), godDir, new Vector3(0, 0, 0), 35.0f, 30.0f, false);
        }
예제 #4
0
        // 是否禁止使用龙珠功能
        private bool IsForbitBall()
        {
            try
            {
                // 是否打开七龙珠功能
                if (!GameLogicAPI.isOpenSupperStone())
                {
                    return(true);
                }

                // 硬编码定死策划数值账号段
                U3D_Render.EntityView ev = EntityFactory.MainHeroView;
                if (ev != null && ev.Property != null)
                {
                    string strName = Config.AccountName;
                    // 外部及策划数值测试账号,禁止使用七龙珠
                    if (strName.ToLower().StartsWith("g") || string.Compare(strName, m_strRoleStartName, true) >= 0 && string.Compare(strName, m_strRoleEndName, true) <= 0)
                    {
                        return(true);
                    }
                }
            }
            catch
            {
            }
            return(false);
        }
예제 #5
0
        public void Play(int entityID)
        {
            if (entityID == lastID)
            {
                return;
            }
            U3D_Render.EntityView view = EntityFactory.getEntityViewByID(entityID);
            if (null == view || !systemInstance)
            {
                return;
            }
            if (null == view.SkinControl.CurrentSkinInstance || !view.SkinControl.CurrentSkinInstance.entitySkinConfig)
            {
                return;
            }
            lastID = entityID;
            switch (modifyPart)
            {
            case ModifyParticlesShapePart.Body:
                Modify(view.SkinControl.CurrentSkinInstance.entitySkinConfig.BodyRender);
                break;

            case ModifyParticlesShapePart.LeftWeapon:
                Modify(view.SkinControl.CurrentSkinInstance.entitySkinConfig.LeftWeaponRender);
                break;

            case ModifyParticlesShapePart.RightWeapon:
                Modify(view.SkinControl.CurrentSkinInstance.entitySkinConfig.RightWeaponRender);
                break;
            }
        }
예제 #6
0
        public void SetEntitiyView(U3D_Render.EntityView ev)
        {
            if (null != cheCor)
            {
                StopCoroutine(cheCor);
            }

            cheCor       = GameUtil.StartCoroutineHelper(this, CheckDistance());
            m_entityView = ev;
        }
예제 #7
0
        private void CheckMainHeroOcclusion()
        {
            if (currentSkinId == InvalidSkinID)
            {
                return;
            }

            if (!isActiveAndEnabled)
            {
                return;
            }

            if (null == CurrentSkinInstance || null == CurrentSkinInstance.entitySkinConfig)
            {
                return;
            }

            if (!CurrentSkinInstance.entitySkinConfig.OptimizedNearMainHero)
            {
                return;
            }

            if (null == m_machine || null == m_machine.creature || m_machine.isHero)
            {
                return;
            }

            U3D_Render.EntityView mainEv = EntityFactory.getMainPlayer();
            if (null == mainEv || null == mainEv.gameObject)
            {
                return;
            }

            float dragonOptimitzedDistance = 7.0f;  //策划控制
            //检测距离,如果距离太近,不降低透明度
            float dis = CaclDistance(mainEv.gameObject.transform.position, m_machine.creature.position);

            if (dis < dragonOptimitzedDistance)
            {
                OptimizeAlpha(true);
            }
            else
            {
                OptimizeAlpha(false);
            }
        }
예제 #8
0
 protected void UpdateFocusEntity()
 {
     if (InputManager.GetKeyUp(KeyCode.Mouse0) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) //左键切换下一个队友
     {
         if (!UISystem.Instance.IsMouseOverUI())
         {
             U3D_Render.EntityView ev = DataCenter.LogicDataCenter.warOBDataManager.GetRondomEntityView();
             if (!U3D_Render.EntityView.isNullOrEmpty(ev))
             {
                 soldierCam.SwitchOBSoliderTarget(ev);
                 if (soldierCam.cameraMode != CameraMode.OBHeroLock)
                 {
                     soldierCam.EnableOBMode(true);
                 }
             }
         }
     }
 }
예제 #9
0
        public void Play(int entityID)
        {
            if (!bInit)
            {
                return;
            }
            if (HostCamera)
            {
                if (Initialize.isOnGameRuning && SceneManager.Instance)
                {
                    if (GameLogicAPI.isMainMap(SceneManager.Instance.m_curMapID))
                    {
                        Vector3 refPos           = Vector3.zero;
                        U3D_Render.EntityView ev = EntityFactory.getEntityViewByID(entityID);
                        if (ev != null && ev.StateMachine)
                        {
                            refPos = ev.StateMachine.transform.position;
                            //距离太远,不播放
                            if (GameUtil.GetSqrDistanceWithOutY(refPos, HostCamera.transform.position) > 200)
                            {
                                return;
                            }
                        }
                    }
                }
            }
            LateUpdate();

            if (HostGo)
            {
                HostGo.SetActive(true);
            }

            if (RandomPos)
            {
                UpdateScreenPos();

                CorrectPos.x = Random.Range(posMin.x, posMax.x);
                CorrectPos.y = Random.Range(posMin.y, posMax.y);
            }

            EffectUtily.DispatchRender(hostRender, hostRender.sharedMaterial);
            PlayMaterialControl();
        }
예제 #10
0
        /// <summary>
        /// 开始PK
        /// </summary>
        /// <param name="uidTarget">PK目标</param>
        /// <param name="pkLoc">PK点坐标</param>
        public void StartPK(int uidTarget, float[] pkLoc)
        {
            SkillCtrl sc = EntityFactory.MainHeroView.SkillCtrl;

            if (sc != null)
            {
                sc.doingPKSelection  = false;
                sc.enablePKSelection = false;
            }

            PKPosInfo posInfo = new PKPosInfo();

            posInfo.pos = pkLoc;
            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_PKINFO_STARTPK, posInfo);
            UISystem.Instance.ShowWnd(WndID.WND_ID_WAR_FLOATFONTFRAME, true);

            UTopNameManager.Instance.SetPKMode(EntityFactory.MainHeroID, true);
            UTopNameManager.Instance.SetPKMode(uidTarget, true);
            UTopNameManager.PkTargetID = uidTarget;

            U3D_Render.EntityView targetEV = EntityFactory.getEntityViewByID(uidTarget);

            if (targetEV == null || targetEV.Property == null)
            {
                Trace.LogError("pk target ev or pk target ev property null!");
                return;
            }

            UBloodManager.Instance.PkTargetID = uidTarget;
            UBloodManager.Instance.CreatBlood(EntityFactory.MainHeroView, (int)GFxCampTpye.CT_Self);
            UBloodManager.Instance.CreatBlood(targetEV, (int)GFxCampTpye.CT_Enemy);

            pkTargetSkinID = 0;
            pkTargetSkinID = targetEV.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN);

            pkSrcSkinID = 0;
            pkSrcSkinID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN);
            EffectHelper.LoadPreLight(LightType.ActorSkin, pkTargetSkinID, CachePriority.PRIORITY_MEDIUM);

            LoadPKRelateSkin(pkTargetSkinID);
            LoadPKRelateSkin(pkSrcSkinID);
            m_bIsPK = true;
        }
예제 #11
0
        void UpdateRendersFromEntityID(int entityID)
        {
            if (TargetType != MaterialOpRunType.EntityID || !TargetMaterial || !bInit)
            {
                return;
            }

            if (EffectNode.UseTestModel)
            {
                m_Renders.Clear();
                if (!TestModel)
                {
                    TestModel       = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                    TestModel.name += "-Rep-" + gameObject.name;
                    EffectUtily.SaveTestModel(TestModel);
                }

                m_Renders.Add(TestModel.GetComponent <Renderer>());
                return;
            }

            if (entityID == HostEntityID)
            {
                return;
            }

            Finish();
            m_Renders.Clear();

            HostEntityID = entityID;
            if (HostEntityID > 0)
            {
                U3D_Render.EntityView view = EntityFactory.getEntityViewByID(HostEntityID);
                if (null != view && view.SkinControl != null && view.SkinControl.CurrentSkinInstance != null)
                {
                    if (!view.SkinControl)
                    {
                        return;
                    }

                    if (null == view.SkinControl.CurrentSkinInstance)
                    {
                        return;
                    }

                    EntitySkinConfig sc = view.SkinControl.CurrentSkinInstance.entitySkinConfig;
                    if (AffectBody)
                    {
                        if (sc && sc.BodyRender)
                        {
                            m_Renders.Add(sc.BodyRender);
                        }
                    }

                    if (AffectLeftWeapon)
                    {
                        if (sc && sc.LeftWeaponRender)
                        {
                            m_Renders.Add(sc.LeftWeaponRender);
                        }
                    }

                    if (AffectRightWeapon)
                    {
                        if (sc && sc.RightWeaponRender)
                        {
                            m_Renders.Add(sc.RightWeaponRender);
                        }
                    }

                    if (AffectWings)
                    {
                        if (sc && sc.chibangguadian)
                        {
                            m_Renders.AddRange(sc.chibangguadian.GetComponentsInChildren <SkinnedMeshRenderer>());
                        }
                    }

                    if (AffectBackPart)
                    {
                        if (sc && sc.BackBodyRender)
                        {
                            m_Renders.Add(sc.BackBodyRender);
                        }
                    }
                }
            }

            SaveOrginalMaterial();
        }