done else player animation
This commit is contained in:
Binary file not shown.
@@ -26,6 +26,7 @@ namespace PerfectWorld.Scripts.Managers
|
||||
public int HandlerId => (int)MANAGER_INDEX.MAN_PLAYER;
|
||||
public bool ProcessMessage(ECMSG Msg)
|
||||
{
|
||||
Debug.Log("HoangDev: ProcessMessageManPlayer :");
|
||||
if (Msg.iSubID == 0)
|
||||
{
|
||||
if (GameController.Instance == null) return true;
|
||||
|
||||
@@ -7,7 +7,7 @@ using UnityEngine;
|
||||
|
||||
namespace PerfectWorld.Scripts.Player
|
||||
{
|
||||
public class EC_ElsePlayer : MonoBehaviour
|
||||
public class EC_ElsePlayer : EC_Player
|
||||
{
|
||||
A3DVECTOR3 m_vMoveDir; // Player's velocity
|
||||
A3DVECTOR3 m_vServerPos; // Player's real position on server
|
||||
@@ -119,6 +119,11 @@ namespace PerfectWorld.Scripts.Player
|
||||
m_aabb.CompleteMinsMaxs();
|
||||
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
|
||||
m_aabbServer.CompleteMinsMaxs();
|
||||
|
||||
if (TryGetComponent<PlayerVisual>(out var visual))
|
||||
{
|
||||
visual.InitHostPlayerEventDoneHandler();
|
||||
}
|
||||
}
|
||||
|
||||
void CalcPlayerAABB()
|
||||
@@ -160,6 +165,10 @@ namespace PerfectWorld.Scripts.Player
|
||||
m_fMoveSpeed = fDist / (dwDeltaTime * 0.001f);
|
||||
Mathf.Clamp(m_fMoveSpeed, 0.0f, fSpeed * 1.2f);
|
||||
|
||||
//if (!m_pPlayerModel) return;
|
||||
//if (!IsValidAction(iCurAction)) return;
|
||||
BrewMonster.Logger.Log("HoangDev : MoveToMoveTo");
|
||||
PlayAction((int)PLAYER_ACTION_TYPE.ACT_RUN, true, 1, false);
|
||||
}
|
||||
|
||||
public bool MovingTo(float dwDeltaTime)
|
||||
@@ -202,6 +211,12 @@ namespace PerfectWorld.Scripts.Player
|
||||
vDir.Normalize();
|
||||
vPos = MoveStep(vDir, m_fMoveSpeed, fDeltaTime);
|
||||
SetPos(vPos);
|
||||
Quaternion targetRotation = Quaternion.LookRotation(EC_Utility.ToVector3(vDir));
|
||||
transform.rotation = Quaternion.Slerp(
|
||||
transform.rotation,
|
||||
targetRotation,
|
||||
rotationSpeed * Time.deltaTime
|
||||
);
|
||||
}
|
||||
|
||||
return bRet;
|
||||
@@ -266,7 +281,7 @@ namespace PerfectWorld.Scripts.Player
|
||||
// SetGroundNormal(m_cdr.vecGroundNormal);
|
||||
//else
|
||||
// SetGroundNormal(g_vAxisY);
|
||||
|
||||
|
||||
return m_cdr.vCenter - g_vAxisY * m_cdr.vExts.y;
|
||||
}
|
||||
|
||||
@@ -314,7 +329,7 @@ namespace PerfectWorld.Scripts.Player
|
||||
// Set server position
|
||||
public void SetServerPos(A3DVECTOR3 vPos)
|
||||
{
|
||||
m_vServerPos = vPos;
|
||||
m_vServerPos = vPos;
|
||||
// If this player is a mule, change it's rider's server pos too.
|
||||
if (m_iBuddyId != 0 && !m_bHangerOn)
|
||||
{
|
||||
@@ -341,7 +356,7 @@ namespace PerfectWorld.Scripts.Player
|
||||
m_aabb.CompleteMinsMaxs();
|
||||
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
|
||||
m_aabbServer.CompleteMinsMaxs();
|
||||
}
|
||||
}
|
||||
|
||||
private A3DVECTOR3 GetPos()
|
||||
{
|
||||
@@ -350,7 +365,7 @@ namespace PerfectWorld.Scripts.Player
|
||||
result.y = transform.position.y;
|
||||
result.z = transform.position.z;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Player appear flag
|
||||
|
||||
@@ -77450,7 +77450,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &960760104
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -39,7 +39,6 @@ public class CECHostPlayer : EC_Player
|
||||
Vector3 playerVelocity;
|
||||
bool isGrounded = false;
|
||||
bool isRun = false;
|
||||
GameObject modle;
|
||||
Vector3 m_vLastSevPos;
|
||||
|
||||
// ====== Ground cast config ======
|
||||
@@ -76,16 +75,16 @@ public class CECHostPlayer : EC_Player
|
||||
|
||||
public void SetModelHostPlayer()
|
||||
{
|
||||
modle = NPCManager.Instance.GetModelPlayer();
|
||||
m_pPlayerModel = NPCManager.Instance.GetModelPlayer();
|
||||
Scene scene = SceneManager.GetSceneByName("WorldRender");
|
||||
SceneManager.MoveGameObjectToScene(modle, scene);
|
||||
modle.transform.SetParent(parentModel);
|
||||
modle.transform.localPosition = Vector3.zero;
|
||||
modle.SetActive(true);
|
||||
SceneManager.MoveGameObjectToScene(m_pPlayerModel, scene);
|
||||
m_pPlayerModel.transform.SetParent(parentModel);
|
||||
m_pPlayerModel.transform.localPosition = Vector3.zero;
|
||||
m_pPlayerModel.SetActive(true);
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
_playerStateMachine.InitState(_moveState);
|
||||
_playerStateMachine.InitState(_idleState);
|
||||
// btnJump.onClick.AddListener(HandleJump);
|
||||
}
|
||||
|
||||
@@ -301,6 +300,7 @@ public class CECHostPlayer : EC_Player
|
||||
//{
|
||||
// roleName = Encoding.UTF8.GetString(role.name.ByteArray, 0, role.name.Length);
|
||||
//}
|
||||
SetPlayerInfor(new INFO(role.cid, role.crc_e, role.crc_c));
|
||||
Vector3 pos = new Vector3(role.pos.x, role.pos.y, role.pos.z);
|
||||
if (txtName != null) txtName.text = roleName;
|
||||
transform.position = pos;
|
||||
@@ -309,7 +309,10 @@ public class CECHostPlayer : EC_Player
|
||||
joystick = FindAnyObjectByType<Joystick>();
|
||||
EventBus.Subscribe<JoystickRealeaseEvent>(JoystickRelease);
|
||||
EventBus.Subscribe<JoystickPressEvent>(JoystickStartDrag);
|
||||
EventBus.Publish(new InitHostPlayerEventDone()) ;
|
||||
if (TryGetComponent<PlayerVisual>(out var visual))
|
||||
{
|
||||
visual.InitHostPlayerEventDoneHandler();
|
||||
}
|
||||
}
|
||||
|
||||
private void JoystickStartDrag(JoystickPressEvent joystickPressEvent)
|
||||
@@ -343,7 +346,3 @@ public enum StateAnim
|
||||
Run = 3,
|
||||
Jump = 4
|
||||
}
|
||||
public struct InitHostPlayerEventDone
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -25,10 +25,6 @@ public class CECStringTab
|
||||
{
|
||||
bool ok = bUnicode ? LoadWideStrings(szFile) : LoadANSIStrings(szFile);
|
||||
m_bInit = ok;
|
||||
foreach(var str in m_AStrTab.Values)
|
||||
{
|
||||
BrewMonster.Logger.Log("HoangDev: m_AStrTab.Values" + str);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BrewMonster;
|
||||
using CSNetwork.GPDataType;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
@@ -33,6 +34,10 @@ public static class EC_Utility
|
||||
{
|
||||
return new System.Numerics.Vector3(v.x, v.y, v.z);
|
||||
}
|
||||
public static Vector3 ToVector3(A3DVECTOR3 a3DVECTOR3)
|
||||
{
|
||||
return new Vector3(a3DVECTOR3.x, a3DVECTOR3.y, a3DVECTOR3.z);
|
||||
}
|
||||
public static float MagnitudeH(this Vector3 v)
|
||||
{
|
||||
return Mathf.Sqrt(v.x * v.x + v.z * v.z);
|
||||
|
||||
@@ -1,24 +1,37 @@
|
||||
using BrewMonster;
|
||||
using ModelRenderer.Scripts.GameData;
|
||||
using Mono.Cecil;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EC_Player : MonoBehaviour
|
||||
public abstract class EC_Player : MonoBehaviour
|
||||
{
|
||||
private static PLAYER_ACTION[] _default_actions;
|
||||
private static PLAYER_ACTION[] _turning_actions;
|
||||
PLAYER_ACTION[] m_PlayerActions;
|
||||
[SerializeField] protected INFO m_PlayerInfo;
|
||||
protected GameObject m_pPlayerModel;
|
||||
protected float rotationSpeed = 5;
|
||||
|
||||
protected void Awake()
|
||||
{
|
||||
m_PlayerActions = _default_actions;
|
||||
}
|
||||
public void SetPlayerInfor(INFO playinfo)
|
||||
{
|
||||
m_PlayerInfo = playinfo;
|
||||
}
|
||||
public INFO GetPlayInfo()
|
||||
{
|
||||
return m_PlayerInfo;
|
||||
}
|
||||
|
||||
public static void InitStaticRes()
|
||||
{
|
||||
BuildActionList();
|
||||
}
|
||||
public bool IsValidAction(int iIndex) { return (iIndex >= 0 && iIndex < (int)PLAYER_ACTION_TYPE.ACT_MAX) ? true : false; }
|
||||
private static void BuildActionList()
|
||||
{
|
||||
if (_default_actions == null)
|
||||
@@ -98,6 +111,7 @@ public class EC_Player : MonoBehaviour
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
return PlayActionWithConfig(iAction, m_PlayerActions[iAction], bRestart, iTransTime, bQueue);
|
||||
@@ -108,7 +122,8 @@ public class EC_Player : MonoBehaviour
|
||||
PLAYER_ACTION action = actionConfig;
|
||||
|
||||
var szAct = EC_Utility.BuildActionName(action, 0);
|
||||
EventBus.Publish(new PlayActionEvent(szAct));
|
||||
BrewMonster.Logger.Log("HoangDev szActszAct: " + szAct);
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
|
||||
return true;
|
||||
}
|
||||
public static void Dispose()
|
||||
@@ -260,9 +275,22 @@ public class EC_Player : MonoBehaviour
|
||||
}
|
||||
public struct PlayActionEvent
|
||||
{
|
||||
public string AnimationName;
|
||||
public string AnimationName;
|
||||
public PlayActionEvent(string animationName)
|
||||
{
|
||||
this.AnimationName = animationName;
|
||||
}
|
||||
}
|
||||
[Serializable]
|
||||
public struct INFO
|
||||
{
|
||||
public int cid; // Character ID
|
||||
public int crc_c; // customized data crc
|
||||
public int crc_e; // Equipment data crc
|
||||
public INFO(int cid, int crc_c, int crc_)
|
||||
{
|
||||
this.cid = cid;
|
||||
this.crc_c = crc_c;
|
||||
this.crc_e = crc_;
|
||||
}
|
||||
};
|
||||
@@ -5,11 +5,9 @@ using UnityEngine;
|
||||
public class PlayerVisual : MonoBehaviour
|
||||
{
|
||||
[SerializeField] NamedAnimancerComponent animancer;
|
||||
private void Awake()
|
||||
{
|
||||
EventBus.Subscribe<InitHostPlayerEventDone>(InitHostPlayerEventDoneHandler);
|
||||
EventBus.Subscribe<PlayActionEvent>(PlayActionEventHandler);
|
||||
}
|
||||
|
||||
[SerializeField] private INFO _playerInfo;
|
||||
|
||||
|
||||
private void PlayActionEventHandler(PlayActionEvent @event)
|
||||
{
|
||||
@@ -17,17 +15,25 @@ public class PlayerVisual : MonoBehaviour
|
||||
animancer.TryPlay(@event.AnimationName);
|
||||
}
|
||||
|
||||
private void InitHostPlayerEventDoneHandler(InitHostPlayerEventDone done)
|
||||
public void InitHostPlayerEventDoneHandler()
|
||||
{
|
||||
animancer = GetComponentInChildren<NamedAnimancerComponent>();
|
||||
if(animancer == null)
|
||||
{
|
||||
BrewMonster.Logger.Log("animancer == null");
|
||||
BrewMonster.Logger.LogError("animancer == null");
|
||||
return;
|
||||
}
|
||||
var player = GetComponentInParent<EC_Player>();
|
||||
if(player == null)
|
||||
{
|
||||
BrewMonster.Logger.LogError("player == null");
|
||||
return;
|
||||
}
|
||||
_playerInfo = player.GetPlayInfo();
|
||||
EventBus.SubscribeChannel<PlayActionEvent>(_playerInfo.cid, PlayActionEventHandler);
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
EventBus.Unsubscribe<InitHostPlayerEventDone>(InitHostPlayerEventDoneHandler);
|
||||
EventBus.Unsubscribe<PlayActionEvent>(PlayActionEventHandler);
|
||||
EventBus.UnsubscribeAllInChannel(_playerInfo.cid);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user