show selecting vfx

This commit is contained in:
NguyenVanDat
2025-11-10 18:24:09 +07:00
parent e07be0d048
commit b7bf20be75
13 changed files with 5087 additions and 294 deletions
@@ -49,7 +49,8 @@ MonoBehaviour:
monsterPrefab: {fileID: 2542060226037108388, guid: 244942d3fb9382846b82581ce24fbf4e, type: 3}
npcServerPrefab: {fileID: -5899287755522118344, guid: 9bd42cdc18b3d624db35707155fc50de, type: 3}
cinemachineCamera: {fileID: 0}
_testVfxPrefab: {fileID: 0}
_testVfxPrefab: {fileID: 2282869967233380084, guid: 88e840e5dac12ed4383d994c7fadfef1, type: 3}
SelectingVfxPrefab: {fileID: 6894650530511576330, guid: 412301bece3ebe640b2da0e18c5f4028, type: 3}
freeLookCam: {fileID: 0}
rotateSpeedX: 300
rotateSpeedY: 2
@@ -12,6 +12,7 @@ namespace BrewMonster.Network
private static ATaskTemplMan m_pTaskMan; // Task template manager
private static elementdataman m_pElementDataMan; // global element templates manager
private static CECGameRun m_pGameRun; // Game running object
private static CECGFXCaster m_pGFXCaster; // GFX caster
private static BrewMonster.Common.CECStringTab m_FixedMsgs; // Fixed message table
private static BrewMonster.Common.CECStringTab m_ItemDesc; // Item desciption string table
@@ -56,7 +57,7 @@ namespace BrewMonster.Network
m_pTaskMan.Init(m_pElementDataMan);
if (!m_pTaskMan.InitStorageTask())
{
Debug.LogError("[Dat]- CECGame::Init, Storage task Init Failed!");
BMLogger.LogError("[Dat]- CECGame::Init, Storage task Init Failed!");
return false;
}
m_pGameRun = new CECGameRun();
@@ -65,6 +66,13 @@ namespace BrewMonster.Network
BMLogger.LogError("CECGame::Init");
return false;
}
// Create GFX caster
if (m_pGFXCaster == null)
{
m_pGFXCaster = new CECGFXCaster();
return false;
}
// Initialize string tables
InitializeStringTables();
@@ -169,6 +177,12 @@ namespace BrewMonster.Network
}
}
public static CECGameRun GetGameRun() { return m_pGameRun; }
public static CECGFXCaster GetGFXCaster()
{
if(m_pGFXCaster==null) m_pGFXCaster = new CECGFXCaster();
return m_pGFXCaster;
}
#endregion
}
}
@@ -3,12 +3,20 @@ using UnityEngine;
namespace BrewMonster.PerfectWorld.Scripts.Vfx
{
public enum GFX_STATE
{
ST_STOP = 0,
ST_PLAY = 1,
ST_PAUSE = 2,
ST_EDITMODE = 3
}
public class BaseVfxObject : MonoBehaviour
{
[SerializeField] private ParticleSystem _vfx;
[SerializeField] private string _vfxPath;
private string _vfxPath;
private Vector3 _originalScale = Vector3.one;
private Vector3 _offset = Vector3.zero;
private GFX_STATE m_iState;
private void Awake()
{
@@ -35,6 +43,12 @@ namespace BrewMonster.PerfectWorld.Scripts.Vfx
_vfxPath = vfxPath;
}
#region EC
public GFX_STATE GetState() { return m_iState; }
#endregion
/// <summary>
/// Set VFX scale
/// </summary>
@@ -141,8 +155,10 @@ namespace BrewMonster.PerfectWorld.Scripts.Vfx
/// </summary>
public void Play()
{
Stop();
if (_vfx != null)
{
m_iState = GFX_STATE.ST_PLAY;
_vfx.Play();
}
}
@@ -154,6 +170,7 @@ namespace BrewMonster.PerfectWorld.Scripts.Vfx
{
if (_vfx != null)
{
m_iState = GFX_STATE.ST_PLAY;
_vfx.Play(true);
}
}
@@ -165,6 +182,7 @@ namespace BrewMonster.PerfectWorld.Scripts.Vfx
{
if (_vfx != null)
{
m_iState = GFX_STATE.ST_STOP;
_vfx.Stop();
}
}
@@ -177,6 +195,7 @@ namespace BrewMonster.PerfectWorld.Scripts.Vfx
{
if (_vfx != null)
{
m_iState = GFX_STATE.ST_PAUSE;
_vfx.Pause();
}
}
@@ -0,0 +1,72 @@
using BrewMonster.PerfectWorld.Scripts.Vfx;
using BrewMonster.Scripts;
using UnityEngine;
namespace BrewMonster
{
public class CECGFXCaster
{
// Load normal gfx
public BaseVfxObject LoadGFXEx(string szFile)
{
if (string.IsNullOrEmpty(szFile))
{
BMLogger.LogError("path null!:");
return null;
}
// // ASSERT(m_pGFXMan);
// var loadObj = AddressableManager.Instance.LoadPrefabAsync(szFile.ToLower()).Result;
// if (loadObj == null)
// {
// BMLogger.LogError("Null vfx object in path: " + szFile);
// return null;
// }
// todo: make pool
BaseVfxObject pGFX = GameController.Instance.InstantiateObject(GameController.Instance.SelectingVfxPrefab).GetComponent<BaseVfxObject>();
if (!pGFX)
{
return null;
}
// NORMALGFX* pNode = new NORMALGFX;
// pNode->pGFX = pGFX;
// pNode->dwVisTimeCnt = TIME_CHECKVIS;
// pNode->bVisible = true;
//
// // Add to table
// m_GFXTab.put((int)pGFX, pNode);
return pGFX;
}
// // Release normal gfx
// void CECGFXCaster::ReleaseGFXEx(A3DGFXEx* pGFX, bool bCacheRelease/* true */)
// {
// if (!pGFX)
// return;
//
// // GFX exists ?
// GFXTable::pair_type Pair = m_GFXTab.get((int)pGFX);
// if (!Pair.second)
// return; // Counldn't find this GFX
//
// NORMALGFX* pNode = *Pair.first;
// m_GFXTab.erase((int)pGFX);
//
// if (bCacheRelease)
// {
// ASSERT(m_pGFXMan);
// m_pGFXMan->CacheReleasedGfx(pGFX);
// }
// else
// {
// pNode->pGFX->Release();
// delete pNode->pGFX;
// }
//
// delete pNode;
// }
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e8d5595364cee424bbc8406bec1b5d27
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e75475a77ec787744b3c47108d6b7640
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 412301bece3ebe640b2da0e18c5f4028
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+35 -21
View File
@@ -18,6 +18,7 @@ using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using BrewMonster.PerfectWorld.Scripts.Vfx;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
@@ -52,6 +53,8 @@ public partial class CECHostPlayer : CECPlayer
bool m_bJumpInWater = false;
public A3DVECTOR3 m_vVelocity; // Velocity
List<CECObject> m_aTabSels = new List<CECObject>();
bool m_bChangingFace; // true, host is changing face
float playerSpeed = 5.0f;
float jumpHeight = 1.5f;
@@ -89,6 +92,8 @@ public partial class CECHostPlayer : CECPlayer
RaycastHit lastGroundHit;
Camera mainCam;
private BaseVfxObject m_pSelectedGFX;
private void Awake()
{
base.Awake();
@@ -944,6 +949,13 @@ public partial class CECHostPlayer : CECPlayer
{
return;
}
// Load GFX
var gfxCaster = EC_Game.GetGFXCaster();
// m_pMoveTargetGFX = g_pGame->GetGFXCaster()->LoadGFXEx(res_GFXFile(RES_GFX_MOVETARGET));
m_pSelectedGFX = gfxCaster.LoadGFXEx(EC_Resource.res_GFXFile((int)GfxResourceType.RES_GFX_SELECTED));
// m_pHoverGFX = g_pGame->GetGFXCaster()->LoadGFXEx(res_GFXFile(RES_GFX_CURSORHOVER));
// m_pFloatDust = g_pGame->GetGFXCaster()->LoadGFXEx(res_GFXFile(RES_GFX_FLOATING_DUST));
}
private void JoystickStartDrag(JoystickPressEvent joystickPressEvent)
@@ -1768,13 +1780,11 @@ public partial class CECHostPlayer : CECPlayer
// return fSpeedSev;
//}
void UpdateGFXs(uint dwDeltaTime)
void UpdateGFXs(float dwDeltaTime)
{
// if (m_pLevelUpGFX)
// m_pLevelUpGFX->SetParentTM(GetAbsoluteTM());
var pWorld = CECWorld.Instance;
// if (m_pHoverGFX)// && m_idCurHover != m_idSelTarget)
// {
// if (!IsChangingFace() && (ISPLAYERID(m_idCurHover) || ISNPCID(m_idCurHover)))
@@ -1794,24 +1804,26 @@ public partial class CECHostPlayer : CECPlayer
// m_pHoverGFX->Stop();
// }
// if (m_pSelectedGFX)
// {
// if (!IsChangingFace() && (ISPLAYERID(m_idSelTarget) || ISNPCID(m_idSelTarget)))
// {
// CECObject* pObject = pWorld.GetObject(m_idSelTarget, 1);
// if (pObject)
// {
// if (m_pSelectedGFX->GetState() == ST_STOP)
// m_pSelectedGFX->Start();
//
// m_pSelectedGFX->SetParentTM(pObject->GetAbsoluteTM());
// }
// else
// m_pSelectedGFX->Stop();
// }
// else
// m_pSelectedGFX->Stop();
// }
if (m_pSelectedGFX)
{
if (!IsChangingFace() && (GPDataTypeHelper.ISPLAYERID(m_idSelTarget) || GPDataTypeHelper.ISNPCID(m_idSelTarget)))
{
var pObject =EC_ManMessageMono.Instance?.GetObject(m_idSelTarget, 1);
if (pObject)
{
if (m_pSelectedGFX.GetState() == GFX_STATE.ST_STOP)
m_pSelectedGFX.Play();
// m_pSelectedGFX.SetParentTM(pObject.GetAbsoluteTM());
m_pSelectedGFX.transform.parent = pObject.transform;
m_pSelectedGFX.transform.localPosition = Vector3.zero;
}
else
m_pSelectedGFX.Stop();
}
else
m_pSelectedGFX.Stop();
}
// if (m_pFloatDust)
// {
@@ -1832,6 +1844,8 @@ public partial class CECHostPlayer : CECPlayer
// }
// UpdateMonsterSpiritGfx(dwDeltaTime);
}
public bool IsChangingFace() { return m_bChangingFace; }
}
public enum StateAnim
+6
View File
@@ -1,6 +1,7 @@
using CSNetwork.GPDataType;
using CSNetwork.Protocols.RPCData;
using System.Data;
using BrewMonster.PerfectWorld.Scripts.Vfx;
using Unity.Cinemachine;
using Unity.VisualScripting;
using UnityEngine;
@@ -15,6 +16,7 @@ public class GameController : MonoBehaviour
[SerializeField] private CECNPCServer npcServerPrefab;
[SerializeField] private CinemachineCamera cinemachineCamera;
[SerializeField] private GameObject _testVfxPrefab;
public GameObject SelectingVfxPrefab;
//[SerializeField] private Transform ground;
CECHostPlayer hostPlayer;
@@ -106,6 +108,10 @@ public class GameController : MonoBehaviour
{
instance = null;
}
public GameObject InstantiateObject(GameObject prefab)
{
return Instantiate(prefab, transform);
}
//private void Update()
//{
+39 -270
View File
@@ -18,279 +18,48 @@ namespace BrewMonster
"cursors/gourd.cur",
};
// GFX resource
static readonly string[] l_aGFXFiles = // use where?
private static readonly string[] l_aGFXFiles = // use where?
{
"鲁脤脨貌脕陋脠毛/陆脟脡芦脡媒录露脠脣脌脿.gfx", // RES_GFX_LEVELUP,
"鲁脤脨貌脕陋脠毛/陆脟脡芦鲁枚脧脰脠脣脌脿.gfx", // RES_GFX_PLAYERAPPEAR,
"卤禄禄梅脰脨/卤禄禄梅脰脨脨搂鹿没.gfx", // RES_GFX_HIT,
"鲁脤脨貌脕陋脠毛/脰赂脧貌卤锚.gfx", // RES_GFX_MOVETARGET,
"鲁脤脨貌脕陋脠毛/陆冒卤脪脨搂鹿没.gfx", // RES_GFX_ITEMFLASH,
"鲁脤脨貌脕陋脠毛/脢贸卤锚脨眉赂隆.gfx", // RES_GFX_CURSORHOVER,
"鲁脤脨貌脕陋脠毛/脛驴卤锚卤禄脩隆脰脨.gfx", // RES_GFX_SELECTED,
"鲁脤脨貌脕陋脠毛/潞拢碌脳脝庐鲁戮.gfx", // RES_GFX_FLOATING_DUST,
"鲁脤脨貌脕陋脠毛/脠脣脦茂脫脦露炉脣庐脠娄.gfx", // RES_GFX_WATER_WAVE_STILL,
"鲁脤脨貌脕陋脠毛/脠脣脦茂脫脦露炉脣庐虏篓.gfx", // RES_GFX_WATER_WAVE_MOVE,
"鲁脤脨貌脕陋脠毛/脣庐脰脨潞么脦眉脝酶脜脻.gfx", // RES_GFX_AIR_BUBBLE,
"鲁脤脨貌脕陋脠毛/脣庐脰脨脫脦露炉脝酶脜脻.gfx", // RES_GFX_SWIM_BUBBLE,
"鲁脤脨貌脕陋脠毛/掳脳禄垄卤盲.gfx", // RES_GFX_TRANSFORM_TIGER,
"鲁脤脨貌脕陋脠毛/禄冒潞眉卤盲.gfx", // RES_GFX_TRANSFORM_FOX,
"鲁脤脨貌脕陋脠毛/录脫脩陋.gfx", // RES_GFX_RED_MEDICINE,
"鲁脤脨貌脕陋脠毛/录脫脛搂.gfx", // RES_GFX_BLUE_MEDICINE,
"鲁脤脨貌脕陋脠毛/录脫脩陋录脫脛搂.gfx", // RES_GFX_PURPLE_MEDICINE,
"鲁脤脨貌脕陋脠毛/陆芒露戮.gfx", // RES_GFX_JIEDU_MEDICINE,
"鲁脤脨貌脕陋脠毛/脦茂路脌路没脢脥路脜.gfx", // RES_GFX_PHYSIC_ARMORRUNE,
"鲁脤脨貌脕陋脠毛/路篓路脌路没脢脥路脜.gfx", // RES_GFX_MAGIC_ARMORRUNE,
"鲁脤脨貌脕陋脠毛/戮枚露路脳麓脤卢.gfx", // RES_GFX_INDUEL,
"鲁脤脨貌脕陋脠毛/驴脴脰脝脥露脢炉鲁碌潞矛.gfx", // RES_GFX_TANKLEADER_RED,
"鲁脤脨貌脕陋脠毛/驴脴脰脝脥露脢炉鲁碌脌露.gfx", // RES_GFX_TANKLEADER_BLUE,
"鹿脰脦茂/鲁猫脦茂脥篓脫脙/戮芦脕茅脡媒录露.gfx",// RES_GFX_GOBLIN_LEVELUP,
"鲁脤脨貌脕陋脠毛/陆脟脡芦脡媒录露脠脣脌脿.gfx", // RES_GFX_INVISIBLE_DETECTED
"虏脽禄庐脕陋脠毛/脳麓脤卢脨搂鹿没/潞脷脡芦脕卢脧脽.gfx", // RES_GFX_MONSTER_SPIRIT_LINE
"鲁脤脨貌脕陋脠毛/鹿芒脟貌脤脴脨搂_脳脫脨搂鹿没01.gfx", // RES_GFX_MONSTER_SPIRIT_BALL
"脠脣脦茂/脥篓脫脙/脝盲脣眉/戮鲁陆莽脤谩脡媒.gfx",
"虏脽禄庐脕陋脠毛/脳麓脤卢脨搂鹿没/露路脝酶%d录露.gfx",
"程序联入/角色升级人类.gfx", // RES_GFX_LEVELUP,
"程序联入/角色出现人类.gfx", // RES_GFX_PLAYERAPPEAR,
"被击中/被击中效果.gfx", // RES_GFX_HIT,
"程序联入/指向标.gfx", // RES_GFX_MOVETARGET,
"程序联入/金币效果.gfx", // RES_GFX_ITEMFLASH,
"程序联入/鼠标悬浮.gfx", // RES_GFX_CURSORHOVER,
"程序联入/目标被选中.gfx", // RES_GFX_SELECTED,
"程序联入/海底飘尘.gfx", // RES_GFX_FLOATING_DUST,
"程序联入/人物游动水圈.gfx", // RES_GFX_WATER_WAVE_STILL,
"程序联入/人物游动水波.gfx", // RES_GFX_WATER_WAVE_MOVE,
"程序联入/水中呼吸气泡.gfx", // RES_GFX_AIR_BUBBLE,
"程序联入/水中游动气泡.gfx", // RES_GFX_SWIM_BUBBLE,
"程序联入/白虎变.gfx", // RES_GFX_TRANSFORM_TIGER,
"程序联入/火狐变.gfx", // RES_GFX_TRANSFORM_FOX,
"程序联入/加血.gfx", // RES_GFX_RED_MEDICINE,
"程序联入/加魔.gfx", // RES_GFX_BLUE_MEDICINE,
"程序联入/加血加魔.gfx", // RES_GFX_PURPLE_MEDICINE,
"程序联入/解毒.gfx", // RES_GFX_JIEDU_MEDICINE,
"程序联入/物防符释放.gfx", // RES_GFX_PHYSIC_ARMORRUNE,
"程序联入/法防符释放.gfx", // RES_GFX_MAGIC_ARMORRUNE,
"程序联入/决斗状态.gfx", // RES_GFX_INDUEL,
"程序联入/控制投石车红.gfx", // RES_GFX_TANKLEADER_RED,
"程序联入/控制投石车蓝.gfx", // RES_GFX_TANKLEADER_BLUE,
"怪物/宠物通用/精灵升级.gfx",// RES_GFX_GOBLIN_LEVELUP,
"程序联入/角色升级人类.gfx", // RES_GFX_INVISIBLE_DETECTED
"策划联入/状态效果/黑色连线.gfx", // RES_GFX_MONSTER_SPIRIT_LINE
"程序联入/光球特效_子效果01.gfx", // RES_GFX_MONSTER_SPIRIT_BALL
"人物/通用/其它/境界提升.gfx",
"策划联入/状态效果/斗气%d级.gfx",
};
// Shader resource
static readonly string[] l_aShaderFiles =
public static string res_GFXFile(int n)
{
"hair.sdr", // 0
"goatee.sdr",
"face.sdr",
"eye.sdr",
"brow.sdr",
"mouth.sdr", // 5
"nose.sdr",
"eyeball.sdr",
"moustache.sdr",
"body.sdr"
};
// Icon files
static readonly string[] l_aIconFiles =
{
"麓貌脳酶.dds",
"脳脽脜脺脳陋禄禄.dds",
"脝脮脥篓鹿楼禄梅.dds",
"脩掳脮脪脛驴卤锚.dds",
"脨颅脰煤鹿楼禄梅.dds",
"脩没脟毛录脫脠毛.dds",
"脥脩脌毛露脫脦茅.dds",
"脤脽鲁枚露脫脦茅.dds",
"脩掳脮脪露脫脦茅.dds",
"陆禄脪脳脙眉脕卯.dds",
"掳脷脤炉脗么.dds",
"掳脷脤炉脗貌.dds",
"脩没脟毛录脫脠毛.dds",
"路脡脨脨.dds",
"脮脨脢脰.dds", // RES_ICON_CMD_EXP_WAVE,
"碌茫脥路.dds", // RES_ICON_CMD_EXP_NOD,
"脪隆脥路.dds", // RES_ICON_CMD_EXP_SHAKEHEAD,
"脣脢录莽掳貌.dds", // RES_ICON_CMD_EXP_SHRUG,
"麓贸脨娄.dds", // RES_ICON_CMD_EXP_LAUGH,
"脡煤脝酶.dds", // RES_ICON_CMD_EXP_ANGRY,
"脭脦碌鹿.dds", // RES_ICON_CMD_EXP_STUN,
"戮脷脡楼.dds", // RES_ICON_CMD_EXP_DEPRESSED,
"路脡脦脟.dds", // RES_ICON_CMD_EXP_KISSHAND,
"潞娄脨脽.dds", // RES_ICON_CMD_EXP_SHY,
"卤搂脠颅.dds", // RES_ICON_CMD_EXP_SALUTE,
"脳酶脧脗.dds", // RES_ICON_CMD_EXP_SITDOWN,
"鲁氓路忙.dds", // RES_ICON_CMD_EXP_ASSAULT,
"脣录驴录.dds", // RES_ICON_CMD_EXP_THINK,
"脤么脨脝.dds", // RES_ICON_CMD_EXP_DEFIANCE,
"脢陇脌没.dds", // RES_ICON_CMD_EXP_VICTORY,
"脡矛脌脕脩眉.dds", // RES_ICON_CMD_EXP_GAPE
"脟脳脦脟.dds", // RES_ICON_CMD_EXP_KISS
"脮陆露路.dds", // RES_ICON_CMD_EXP_FIGHT,
"鹿楼禄梅1.dds", // RES_ICON_CMD_EXP_ATTACK1,
"鹿楼禄梅2.dds", // RES_ICON_CMD_EXP_ATTACK2,
"鹿楼禄梅3.dds", // RES_ICON_CMD_EXP_ATTACK3,
"鹿楼禄梅4.dds", // RES_ICON_CMD_EXP_ATTACK4,
"路脌脫霉.dds", // RES_ICON_CMD_EXP_DEFENCE,
"脣陇碌鹿.dds", // RES_ICON_CMD_EXP_FALL,
"碌鹿碌脴.dds", // RES_ICON_CMD_EXP_FALLONGROUND,
"脮脜脥没.dds", // RES_ICON_CMD_EXP_LOOKAROUND,
"脦猫碌赂1.dds", // RES_ICON_CMD_EXP_DANCE,
"脦猫碌赂2.dds", // RES_ICON_CMD_EXP_FASHIONWEAPON
"脢掳脠隆.dds", // RES_ICON_CMD_PICKUP
"脥脷戮貌.dds", // RES_ICON_CMD_GATHER
"录脫脣脵路脡脨脨.dds", // RES_ICON_CMD_RUSHFLY
"脧脿脪脌脧脿脵脣碌脛露炉脳梅.dds", // RES_ICON_CMD_BINDBUDDY
"脟脳脟脳脙脺脙脺碌脛露炉脳梅.dds", // RES_ICON_CMD_TWOKISS
"脤酶脭戮碌脛露炉脳梅1.dds", // RES_ICON_CMD_JUMPTRICK,
"脤酶脭戮碌脛露炉脳梅2.dds", // RES_ICON_CMD_RUNTRICK,
};
// Model files
static readonly string[] l_aModelFiles =
{
"models/matters/脦茂脝路/陆冒卤脪/陆冒卤脪.ecm",
"models/matters/脦茂脝路/脭陋戮搂/脭陋戮搂.ecm",
// 脠脣脌脿
"models/players/脨脦脧贸/脦盲脧脌脛脨/脟没赂脡/脦盲脧脌脛脨.ecm",
"models/players/脨脦脧贸/脦盲脧脌脜庐/脟没赂脡/脦盲脧脌脜庐.ecm",
"models/players/脨脦脧贸/路篓脢娄脛脨/脟没赂脡/路篓脢娄脛脨.ecm",
"models/players/脨脦脧贸/路篓脢娄脜庐/脟没赂脡/路篓脢娄脜庐.ecm",
// 脧芦脳氓 脦脳脢娄
"models/players/脨脦脧贸/脦脳脢娄脛脨/脟没赂脡/脦脳脢娄脛脨.ecm",
"models/players/脨脦脧贸/脦脳脢娄脜庐/脟没赂脡/脦脳脢娄脜庐.ecm",
// 脩媒脳氓
"",
"models/players/脨脦脧贸/脩媒戮芦/脟没赂脡/脩媒戮芦.ecm",
"models/players/脨脦脧贸/脩媒脢脼脛脨/脟没赂脡/脩媒脢脼脛脨.ecm",
"",
// 脧芦脳氓 麓脤驴脥
"models/players/脨脦脧贸/麓脤驴脥脛脨/脟没赂脡/麓脤驴脥脛脨.ecm",
"models/players/脨脦脧贸/麓脤驴脥脜庐/脟没赂脡/麓脤驴脥脜庐.ecm",
// 脫冒脳氓
"models/players/脨脦脧贸/脫冒脙垄脛脨/脟没赂脡/脫冒脙垄脛脨.ecm",
"models/players/脨脦脧贸/脫冒脙垄脜庐/脟没赂脡/脫冒脙垄脜庐.ecm",
"models/players/脨脦脧贸/脫冒脕茅脛脨/脟没赂脡/脫冒脕茅脛脨.ecm",
"models/players/脨脦脧贸/脫冒脕茅脜庐/脟没赂脡/脫冒脕茅脜庐.ecm",
// 脕茅脳氓
"models/players/脨脦脧贸/陆拢脕茅脛脨/脟没赂脡/陆拢脕茅脛脨.ecm",
"models/players/脨脦脧贸/陆拢脕茅脜庐/脟没赂脡/陆拢脕茅脜庐.ecm",
"models/players/脨脦脧贸/梅脠脕茅脛脨/脟没赂脡/梅脠脕茅脛脨.ecm",
"models/players/脨脦脧贸/梅脠脕茅脜庐/脟没赂脡/梅脠脕茅脜庐.ecm",
// 脰掳脪碌卤盲脡铆脛拢脨脥
"models/players/脨脦脧贸/掳脳禄垄/掳脳禄垄.ecm",
"models/players/脨脦脧贸/禄冒潞眉脌锚/禄冒潞眉脌锚.ecm",
"models/players/脨脦脧贸/脫掳脳氓卤盲脡铆脛脨/脫掳脳氓卤盲脡铆脛脨.ecm",
"models/players/脨脦脧贸/脫掳脳氓卤盲脡铆脜庐/脫掳脳氓卤盲脡铆脜庐.ecm",
// 录录脛脺卤盲脡铆脛拢脨脥拢篓麓脣ID虏禄驴脡卤盲拢卢脨脗脛拢脨脥脟毛脥霉潞贸脤铆录脫拢漏
"models/players/脨脦脧贸/陆冒脟庐脥脺/陆冒脟庐脥脺.ecm",
"models/players/脨脦脧贸/禄茅脌帽脥炉脛脨/禄茅脌帽脥炉脛脨.ecm",
"models/players/脨脦脧贸/禄茅脌帽脥炉脜庐/禄茅脌帽脥炉脜庐.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶.ecm",
"models/players/脨脦脧贸/脢梅录娄/脢梅录娄.ecm",
"models/players/脨脦脧贸/脨隆脛搂禄垄/脨隆脛搂禄垄.ecm",
"models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸.ecm",
"models/players/脨脦脧贸/脗陆禄炉碌脛潞拢鹿锚/脗陆禄炉碌脛潞拢鹿锚.ecm",
"models/players/脨脦脧贸/脨脗脛茂碌脛卤铆赂莽/脨脗脛茂碌脛卤铆赂莽.ecm",
"models/players/脨脦脧贸/脡脷卤酶驴镁脌脺/脡脷卤酶驴镁脌脺.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛碌脹脥玫.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛禄脢潞贸.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脤漏碌脧脨脺/脤漏碌脧脨脺.ecm",
"models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸麓贸.ecm",
"models/players/脨脦脧贸/脢梅录娄/脢梅录娄麓贸.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶路脽脜颅.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶戮脷脡楼.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶脢搂脗盲.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙碌莽鹿芒.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脕煤/脕煤.ecm",
// 脰掳脪碌卤盲脡铆脨脗脛拢脨脥
"models/players/脨脦脧贸/脨脺脙篓/脨脺脙篓.ecm",
"models/players/脨脦脧贸/碌没脫冒潞眉/碌没脫冒潞眉.ecm",
// 脛卢脠脧掳脷脤炉脛拢脨脥
"models/players/脨脦脧贸/掳脷脤炉/脛脨/脛脨.ecm",
"models/players/脨脦脧贸/掳脷脤炉/脜庐/脜庐.ecm",
// 毛脢脳氓
"models/players/脨脦脧贸/脪鹿脫掳脛脨/脟没赂脡/脪鹿脫掳脛脨.ecm",
"models/players/脨脦脧贸/脪鹿脫掳脜庐/脟没赂脡/脪鹿脫掳脜庐.ecm",
"models/players/脨脦脧贸/脭脗脧脡脛脨/脟没赂脡/脭脗脧脡脛脨.ecm",
"models/players/脨脦脧贸/脭脗脧脡脜庐/脟没赂脡/脭脗脧脡脜庐.ecm",
// ???????
"models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脪鹿脫掳脛脨/毛脢脳氓卤盲脡铆脪鹿脫掳脛脨.ecm",
"models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脪鹿脫掳脜庐/毛脢脳氓卤盲脡铆脪鹿脫掳脜庐.ecm",
"models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脭脗脧脡脛脨/毛脢脳氓卤盲脡铆脭脗脧脡脛脨.ecm",
"models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脭脗脧脡脜庐/毛脢脳氓卤盲脡铆脭脗脧脡脜庐.ecm",
};
// Model files
static readonly string[] l_aModelFilesForChangeShape2 = // 脨隆露炉脦茂卤盲脡铆拢卢卤盲脡铆脌脿脨脥脦陋 2
{
"",
// 脮陆鲁碌卤盲脡铆
"models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌鲁玫录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌脰脨录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌赂脽录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌鲁玫录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌脰脨录露.ecm", // 5
"models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌赂脽录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌鲁玫录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌脰脨录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌赂脽录露.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脫脟脫么脰脨脛锚/脫脟脫么脰脨脛锚.ecm", // 10
"models/players/脨脦脧贸/2013卤盲脡铆/盲陆脨脺脛脨潞矛/盲陆脨脺脛脨潞矛.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脨隆脗铆鲁碌/脨隆脗铆鲁碌.ecm",
"models/players/脨脦脧贸/脨隆脩漏脠脣/脨隆脩漏脠脣.ecm",
"",
"", //15
"",
"",
"",
"",
"", // 20
"",
"",
"",
"",
"", // 25
// 录录脛脺卤盲脡铆脛拢脨脥拢篓麓脣ID虏禄驴脡卤盲拢卢脨脗脛拢脨脥脟毛脥霉潞贸脤铆录脫拢漏
"models/players/脨脦脧贸/陆冒脟庐脥脺/陆冒脟庐脥脺.ecm",
"models/players/脨脦脧贸/禄茅脌帽脥炉脛脨/禄茅脌帽脥炉脛脨.ecm",
"models/players/脨脦脧贸/禄茅脌帽脥炉脜庐/禄茅脌帽脥炉脜庐.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶.ecm",
"models/players/脨脦脧贸/脢梅录娄/脢梅录娄.ecm",
"models/players/脨脦脧贸/脨隆脛搂禄垄/脨隆脛搂禄垄.ecm",
"models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸.ecm",
"models/players/脨脦脧贸/脗陆禄炉碌脛潞拢鹿锚/脗陆禄炉碌脛潞拢鹿锚.ecm",
"models/players/脨脦脧贸/脨脗脛茂碌脛卤铆赂莽/脨脗脛茂碌脛卤铆赂莽.ecm",
"models/players/脨脦脧贸/脡脷卤酶驴镁脌脺/脡脷卤酶驴镁脌脺.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛碌脹脥玫.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛禄脢潞贸.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脤漏碌脧脨脺/脤漏碌脧脨脺.ecm",
"models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸麓贸.ecm",
"models/players/脨脦脧贸/脢梅录娄/脢梅录娄麓贸.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶路脽脜颅.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶戮脷脡楼.ecm",
"models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶脢搂脗盲.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙碌莽鹿芒.ecm",
"models/players/脨脦脧贸/2013卤盲脡铆/脕煤/脕煤.ecm",
"models/players/脨脦脧贸/2014卤盲脡铆/路莽路篓脢娄/路莽路篓脢娄.ecm",
"models/players/脨脦脧贸/2014卤盲脡铆/脪鹿脫掳脫掳露脻卤盲脡铆/脫掳露脻.ecm",
"models/players/脨脦脧贸/2015卤盲脡铆/碌掳碌掳/碌掳碌掳.ecm",
"models/players/脨脦脧贸/2015卤盲脡铆/路脢脩貌/路脢脩貌.ecm",
"models/players/脨脦脧贸/2015卤盲脡铆/脕煤脙篓/脕煤脙篓.ecm",
"models/players/脨脦脧贸/2015卤盲脡铆/脜脻脜脻脫茫/脜脻脜脻脫茫.ecm",
};
static readonly string[] l_szSysIconFile = {
"2013/驴矛陆脻脌赂/gt(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/touch(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/脨脼脕露(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/掳脵驴脝(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/录脛脗么(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/脥锚脙脌路镁脦帽(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/脟茅脭碌(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/戮脹脕茅(脮媒鲁拢).dds",
"2013/驴矛陆脻脌赂/脳脭露炉潞脠脪漏(脮媒鲁拢).dds",
"",
};
if (n < 0 || n >= l_aGFXFiles.Length)
{
BMLogger.LogError("Dat: res_GFXFile is out of range");
return null;
}
return l_aGFXFiles[n];
}
}
// Cursor resource