93 lines
3.1 KiB
C#
93 lines
3.1 KiB
C#
using BrewMonster;
|
||
using BrewMonster.Managers;
|
||
using BrewMonster.Scripts.Ornament;
|
||
using CSNetwork.GPDataType;
|
||
using PerfectWorld.Scripts.Managers.BrewMonster.Managers;
|
||
using UnityEngine;
|
||
|
||
|
||
namespace BrewMonster.Scripts.World
|
||
{
|
||
public class CECWorld : Singleton<CECWorld>
|
||
{
|
||
protected A3DTerrain2 m_pA3DTerrain;
|
||
CECOrnamentMan m_pOnmtMan;
|
||
uint m_dwBornStamp = 0;
|
||
CECAssureMove m_pAssureMove; // object used to assure move
|
||
int m_idInst = 161; // id of instance
|
||
|
||
public uint GetBornStamp() { return m_dwBornStamp++; }
|
||
|
||
// Get terrain object
|
||
public A3DTerrain2 GetTerrain()
|
||
{
|
||
return m_pA3DTerrain;
|
||
}
|
||
//TODO: Skill Gfx Manager
|
||
//public CECSkillGfxMan GetSkillGfxMan() { return (CECSkillGfxMan)m_aManagers[MAN_SKILLGFX]; }// Terrain object
|
||
|
||
public CECOrnamentMan GetOrnamentMan()
|
||
{
|
||
return m_pOnmtMan;
|
||
}
|
||
public float GetTerrainHeight(A3DVECTOR3 vPos, ref A3DVECTOR3 pvNormal /* NULL */)
|
||
{
|
||
A3DTerrain2 pTerrain = GetTerrain();
|
||
return pTerrain.GetPosHeight(vPos, ref pvNormal);
|
||
}
|
||
|
||
public float GetWaterHeight(A3DVECTOR3 vPos)
|
||
{
|
||
// TODO: Hook into the actual water system once it is available.
|
||
A3DVECTOR3 dummy = default;
|
||
return GetTerrainHeight(vPos, ref dummy);
|
||
}
|
||
|
||
public CECObject GetObject(int idObject, int iAliveFlag)
|
||
{
|
||
CECObject pObject = null;
|
||
|
||
if (GPDataTypeHelper.ISNPCID(idObject))
|
||
{
|
||
if (!(pObject = EC_ManMessageMono.Instance.CECNPCMan.GetNPC(idObject)))
|
||
return null;
|
||
|
||
if ((iAliveFlag == 1 && ((CECNPC)pObject).IsDead()) ||
|
||
(iAliveFlag == 2 && !((CECNPC)pObject).IsDead()))
|
||
return null;
|
||
}
|
||
else if (GPDataTypeHelper.ISPLAYERID(idObject))
|
||
{
|
||
if (!(pObject = EC_ManMessageMono.Instance.GetECManPlayer.GetPlayer(idObject)))
|
||
return null;
|
||
|
||
if ((iAliveFlag == 1 && ((CECPlayer)pObject).IsDead()) ||
|
||
(iAliveFlag == 2 && !((CECPlayer)pObject).IsDead()))
|
||
return null;
|
||
}
|
||
else if (GPDataTypeHelper.ISMATTERID(idObject))
|
||
pObject = EC_ManMessageMono.Instance.GetECManMatter.GetMatter(idObject);
|
||
|
||
return pObject;
|
||
}
|
||
public int GetInstanceID() { return m_idInst; }
|
||
|
||
// 设置实例ID(地图ID) // Set instance ID (map ID)
|
||
public void SetInstanceID(int idInst)
|
||
{
|
||
m_idInst = idInst;
|
||
|
||
// Sync AutoPF intelligent route data for the new map.
|
||
// 同步新地图的 AutoPF 智能寻路数据。
|
||
BrewMonster.Scripts.CECIntelligentRoute.Instance().ChangeWorldInstance(idInst);
|
||
}
|
||
public CECAssureMove GetAssureMove()
|
||
{ return m_pAssureMove; }
|
||
|
||
public CECNPCMan GetNPCMan()
|
||
{
|
||
return EC_ManMessageMono.Instance.CECNPCMan;
|
||
}
|
||
}
|
||
}
|