Ejemplo n.º 1
0
        public override void CreateActualModel()
        {
            AvatarModelData data = AvatarModelData.dataMap.GetValueOrDefault(m_monsterData.model, null);

            if (data == null)
            {
                LoggerHelper.Error("Model not found: " + m_monsterData.model);
                return;
            }
            LoggerHelper.Debug("monster create:" + ID + ",name:" + data.prefabName);
            SubAssetCacheMgr.GetCharacterInstance(data.prefabName,
                                                  (prefab, guid, gameObject) =>
            {
                if (this.Actor)
                {
                    this.Actor.Release();
                }

                if (Transform)
                {
                    AssetCacheMgr.ReleaseLocalInstance(Transform.gameObject);
                }

                GameObject           = (gameObject as GameObject);
                Transform            = GameObject.transform;
                Transform.localScale = scale;
                if (data.scale > 0)
                {
                    Transform.localScale = new Vector3(data.scale, data.scale, data.scale);
                }

                Transform.tag = "Monster";
                Transform.gameObject.layer = 11;
                sfxHandler = GameObject.AddComponent <SfxHandler>();
                motor      = GameObject.AddComponent <MogoMotorServer>();

                audioSource             = GameObject.AddComponent <AudioSource>();
                audioSource.rolloffMode = AudioRolloffMode.Custom;

                CharacterController controller = GameObject.GetComponent <CharacterController>();
                controller.radius = m_monsterData.scaleRadius / 100f;
                controller.height = EntityColiderHeight;
                float centerY     = (controller.height > controller.radius * 2) ? (controller.height * 0.5f) : (controller.radius);
                controller.center = new Vector3(0, centerY, 0);

                animator          = GameObject.GetComponent <Animator>();
                ActorMercenary ap = GameObject.AddComponent <ActorMercenary>();
                ap.theEntity      = this;
                this.Actor        = ap;
                UpdatePosition();
                if (data.originalRotation != null && data.originalRotation.Count == 3)
                {
                    Transform.eulerAngles = new Vector3(data.originalRotation[0], data.originalRotation[1], data.originalRotation[2]);
                }
                else
                {
                    Vector3 targetToLookAt = MogoWorld.thePlayer.Transform.position;
                    Transform.LookAt(new Vector3(targetToLookAt.x, Transform.position.y, targetToLookAt.z));
                }
                motor.canTurn = !NotTurn();
                base.CreateModel();
                motor.SetAngularSpeed(400f);
                motor.acceleration = 2f;

                if (!NotTurn())
                {
                    Vector3 bornTargetToLookAt = MogoWorld.thePlayer.position;
                    Transform.LookAt(new Vector3(bornTargetToLookAt.x, Transform.position.y, bornTargetToLookAt.z));
                }


                #region Shader
                if (ShaderData.dataMap.ContainsKey(m_monsterData.shader) &&
                    GameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true) != null &&
                    ID != MogoWorld.theLittleGuyID)
                {
                    MogoFXManager.Instance.SetObjShader(GameObject, ShaderData.dataMap[m_monsterData.shader].name, ShaderData.dataMap[m_monsterData.shader].color);
                    MogoFXManager.Instance.AlphaFadeIn(GameObject, fadeInTime);
                }
                #endregion
                try
                {
                    if (m_monsterData != null && m_monsterData.bornFx != null)
                    {
                        foreach (var item in m_monsterData.bornFx)
                        {
                            sfxHandler.HandleFx(item);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LoggerHelper.Except(ex);
                }


                //开始执行出生流程
                m_bModelBuilded = true;

                m_aiRoot      = AIContainer.container.Get((uint)m_monsterData.aiId);
                uint waitTime = (uint)m_monsterData.bornTime;
                if (waitTime <= 1)    //容错
                {
                    waitTime = 3000;
                }
                if (blackBoard.timeoutId > 0)
                {
                    TimerHeap.DelTimer(blackBoard.timeoutId);
                }

                m_currentSee = m_monsterData.see;
                blackBoard.ChangeState(Mogo.AI.AIState.THINK_STATE);
                TimerHeap.AddTimer(waitTime, 0, RebornAnimationDelay);
                TimerHeap.AddTimer(waitTime, 0, BornedHandler);
                Actor.ActChangeHandle = ActionChange;
            }
                                                  );
        }
Ejemplo n.º 2
0
        /*
         *      private void AttachBuildingModel()
         *      {
         *          GearParent[] gears = (GearParent[])GameObject.FindObjectsOfType(typeof(GearParent));
         *          foreach (GearParent gear in gears)
         *          {
         *              if (gear.ID == (uint)clientTrapId)
         *              {
         *                  Transform = gear.transform;
         *                  GameObject = gear.gameObject;
         *                  Transform.tag = "Monster";
         *                  // motor = GameObject.AddComponent<MogoMotorServer>();
         *                  animator = GameObject.GetComponent<Animator>();
         *
         *                  ActorDummy ap = GameObject.GetComponent<ActorDummy>();
         *                  if (ap == null)
         *                      ap = GameObject.AddComponent<ActorDummy>();
         *
         *                  ap.theEntity = this;
         *                  this.Actor = ap;
         *              }
         *          }
         *      }
         */
        public void CreatePlayerActualModel()
        {
            isCreatingModel = true;
            AssetCacheMgr.ReleaseLocalInstance(GameObject);
            AvatarModelData data = AvatarModelData.dataMap.Get((int)vocation);

            SubAssetCacheMgr.GetPlayerInstance(data.prefabName,
                                               (prefab, guid, go) =>
            {
                var gameObject = go as GameObject;
                var actor      = gameObject.AddComponent <ActorMercenary>();
                actor.InitEquipment((int)vocation);
                motor = gameObject.AddComponent <MogoMotorServer>();

                CharacterController controller = gameObject.GetComponent <CharacterController>();
                controller.radius = m_monsterData.scaleRadius / 100f;
                controller.height = EntityColiderHeight;
                float centerY     = (controller.height > controller.radius * 2) ? (controller.height * 0.5f) : (controller.radius);
                controller.center = new Vector3(0, centerY, 0);

                animator = gameObject.GetComponent <Animator>();

                sfxHandler = gameObject.AddComponent <SfxHandler>();

                actor.theEntity = this;

                GameObject = gameObject;
                Transform  = gameObject.transform;
                this.Actor = actor;
                //Transform.localScale = scale;
                Transform.tag = "OtherPlayer";
                Transform.gameObject.layer = 18;
                Vector3 targetToLookAt     = MogoWorld.thePlayer.Transform.position;
                Transform.LookAt(new Vector3(targetToLookAt.x, Transform.position.y, targetToLookAt.z));

                UpdatePosition();

                base.CreateModel();
                LoadEquip();
                //gameObject.SetActive(false);
                gameObject.SetActive(true);
                isCreatingModel = false;
                if (m_factionFlag == 0)
                {
                    BillboardLogicManager.Instance.AddInfoBillboard(ID, Transform, this, true);
                }
                else
                {
                    BillboardLogicManager.Instance.AddInfoBillboard(ID, Transform, this, false);
                }

                MogoFXManager.Instance.AddShadow(Transform.gameObject, ID);

                #region 血条

                if (isLittleGuy)
                {
                    MainUILogicManager.Instance.SetMercenaryMessageInit(this);
                }
                else if (IsPVP())
                {
                    //logic
                }
                else
                {
                    hp = (uint)m_monsterData.hpBase;
                    //curHp = (uint)m_monsterData.hpBase;
                    if (m_monsterData != null && m_monsterData.hpShow != null && m_monsterData.hpShow.Count >= 3)
                    {
                        MainUILogicManager.Instance.SetBossMessageInit(this, m_monsterData.hpShow[2]);
                    }
                }

                #endregion


                //开始执行出生流程
                m_bModelBuilded = true;

                m_aiRoot = AIContainer.container.Get((uint)m_monsterData.aiId);

                uint waitTime = (uint)m_monsterData.bornTime;
                if (waitTime <= 1)    //容错
                {
                    waitTime = 3000;
                }
                if (blackBoard.timeoutId > 0)
                {
                    TimerHeap.DelTimer(blackBoard.timeoutId);
                }
                //LoggerHelper.Error("RebornAnimationDelay begin:" + waitTime);

                m_currentSee = m_monsterData.see;
                blackBoard.ChangeState(Mogo.AI.AIState.THINK_STATE);
                TimerHeap.AddTimer(waitTime, 0, RebornAnimationDelay);
                Actor.ActChangeHandle = ActionChange;
            }

                                               );
        }
Ejemplo n.º 3
0
        public override void CreateActualModel()
        {
            isCreatingModel = true;
            AssetCacheMgr.ReleaseLocalInstance(GameObject);
            AvatarModelData data = AvatarModelData.dataMap.Get((int)vocation);

            SubAssetCacheMgr.GetPlayerInstance(data.prefabName,
                                               (prefab, guid, go) =>
            {
                var gameObject = go as GameObject;
                var actor      = gameObject.AddComponent <ActorPlayer>();

                actor.theEntity = this;
                motor           = gameObject.AddComponent <MogoMotorServer>();
                animator        = gameObject.GetComponent <Animator>();

                sfxHandler = gameObject.AddComponent <SfxHandler>();

                //actor.mogoMotor = motor;

                audioSource             = gameObject.AddComponent <AudioSource>();
                audioSource.rolloffMode = AudioRolloffMode.Custom;

                GameObject       = gameObject;
                Transform        = gameObject.transform;
                GameObject.layer = 20;    //otherplayer
                //Debug.LogError("entityPlayer.CreateActualModel:" + gameObject.layer);
                // Debug.LogError(GameObject.name + " " + ID + " Player CreateActualModel: " + Transform.position);

                this.Actor = actor;
                //Transform.localScale = scale;
                Transform.tag = "OtherPlayer";

                UpdatePosition();
                foreach (var item in gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true))
                {
                    item.enabled = false;
                }

                if (data.scale > 0)
                {
                    Transform.localScale = new Vector3(data.scale, data.scale, data.scale);
                }

                base.CreateModel();

                LoadEquip();

                foreach (var item in gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true))
                {
                    item.enabled = true;
                }
                //Debug.Log("AddComponent<CombineSkinnedMeshes>");

                //gameObject.AddComponent<CombineSkinnedMeshes>();
                //Debug.Log("AddComponent<CombineSkinnedMeshes>");
                gameObject.SetActive(false);
                idleTimer = TimerHeap.AddTimer(1000, 0, DelayCheckIdle);
                TimerHeap.AddTimer(3000, 0, () =>
                {
                    if (gameObject == null)
                    {
                        return;
                    }
                    gameObject.SetActive(true);
                    isCreatingModel = false;

                    SetBillBoard();

                    MogoFXManager.Instance.AddShadow(gameObject, ID);

                    //gameObject.AddComponent<MogoObjOpt>().ObjType = MogoObjType.Player;

                    //if (gameObject.GetComponent<Animator>() != null)
                    //{
                    //    gameObject.GetComponent<Animator>().enabled = false;
                    //}

                    //if (gameObject.GetComponent<Animation>() != null)
                    //{
                    //    gameObject.GetComponent<Animation>().enabled = false;
                    //}
                });
                Actor.ActChangeHandle = ActionChange;

                UpdateDressWing();
                AddEquipFX(loadedEquipId);
                AddJewelFX(loadedJewelId);
                AddStrenthFX(loadedStrengthenId);
            }

                                               );
        }
Ejemplo n.º 4
0
 void StopSfx(int id)
 {
     m_objectList[id].GetComponentsInChildren <Gadget>(true)[0].StopFX();
     AssetCacheMgr.ReleaseLocalInstance(m_objectList[id]);
     m_objectList.Remove(id);
 }
Ejemplo n.º 5
0
        public override void CreateActualModel()
        {
            AvatarModelData data = AvatarModelData.dataMap.GetValueOrDefault(model, null);

            if (data == null)
            {
                Debug.LogError("Model not found: " + model);
                return;
            }
            SubAssetCacheMgr.GetCharacterInstance(data.prefabName,
                                                  (prefab, guid, gameObject) =>
            {
                if (this.Actor)
                {
                    this.Actor.Release();
                }
                if (Transform)
                {
                    AssetCacheMgr.ReleaseLocalInstance(Transform.gameObject);
                }
                GameObject = (gameObject as GameObject);

                Transform                  = GameObject.transform;
                Transform.localScale       = scale;
                Transform.tag              = "Monster";
                Transform.gameObject.layer = 11;    //monster

                sfxHandler = GameObject.AddComponent <SfxHandler>();
                motor      = GameObject.AddComponent <MogoMotorServer>();

                audioSource             = GameObject.AddComponent <AudioSource>();
                audioSource.rolloffMode = AudioRolloffMode.Custom;

                if (m_monsterData.notTurn == 0)
                {
                    motor.SetAngularSpeed(360f);
                }
                else
                {
                    motor.canMove = false;
                    motor.canTurn = false;
                }
                Debug.Log(" m_monsterData.scaleRadius:" + m_monsterData.scaleRadius);
                CharacterController controller = GameObject.GetComponent <CharacterController>();
                controller.radius = m_monsterData.scaleRadius / 100f;
                controller.height = EntityColiderHeight;
                float centerY     = (controller.height > controller.radius * 2) ? (controller.height * 0.5f) : (controller.radius);
                controller.center = new Vector3(0, centerY, 0);
                animator          = GameObject.GetComponent <Animator>();
                //animator.speed = 0.3f;
                ActorMonster ap = GameObject.AddComponent <ActorMonster>();
                ap.theEntity    = this;
                this.Actor      = ap;
                UpdatePosition();
                if (data.originalRotation != null && data.originalRotation.Count == 3)
                {
                    Transform.eulerAngles = new Vector3(data.originalRotation[0], data.originalRotation[1], data.originalRotation[2]);
                }
                else
                {
                    Vector3 targetToLookAt = MogoWorld.thePlayer.Transform.position;
                    Transform.LookAt(new Vector3(targetToLookAt.x, Transform.position.y, targetToLookAt.z));
                }
                base.CreateModel();
                animator.applyRootMotion = false;

                #region Shader
                if (ShaderData.dataMap.ContainsKey(m_monsterData.shader) &&
                    (GameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true) != null || GameObject.GetComponentsInChildren <MeshRenderer>(true) != null))
                {
                    MogoFXManager.Instance.SetObjShader(GameObject, ShaderData.dataMap[m_monsterData.shader].name, ShaderData.dataMap[m_monsterData.shader].color);
                    MogoFXManager.Instance.AlphaFadeIn(GameObject, 0.3f);
                }
                #endregion

                if (data.scale > 0)
                {
                    Transform.localScale = new Vector3(data.scale, data.scale, data.scale);
                }
                try
                {
                    if (m_monsterData != null && m_monsterData.bornFx != null && PlayBornFX)
                    {
                        foreach (var item in m_monsterData.bornFx)
                        {
                            sfxHandler.HandleFx(item);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogException(ex);
                }
                uint waitTime = (uint)m_monsterData.bornTime;
                if (waitTime <= 1)    //容错
                {
                    waitTime = 3000;
                }
                BornedHandler();
                Actor.ActChangeHandle = ActionChange;
            }
                                                  );
        }