Naming Conventions - CRITICAL RULES
⚠️ CRITICAL: Preserve C++ Names Exactly
Never change C++ class/field/method names unless explicitly requested by the user.
Class Names
Movement System
| C++ Name |
C# Name |
✅/❌ |
CGfxMoveBase |
CGfxMoveBase |
✅ Correct |
CGfxLinearMove |
CGfxLinearMove |
✅ Correct |
CGfxOnTargetMove |
CGfxOnTargetMove |
✅ Correct |
CGfxParabolicMove |
CGfxParabolicMove |
✅ Correct |
CGfxMissileMove |
CGfxMissileMove |
✅ Correct |
CGfxMeteoricMove |
CGfxMeteoricMove |
✅ Correct |
CGfxHelixMove |
CGfxHelixMove |
✅ Correct |
CGfxCurvedMove |
CGfxCurvedMove |
✅ Correct |
CGfxAccMove |
CGfxAccMove |
✅ Correct |
CGfxLinkMove |
CGfxLinkMove |
✅ Correct |
CGfxRandMove |
CGfxRandMove |
✅ Correct |
❌ WRONG: IGfxMovement, GfxLinearMove, LinearMovement
Event System
| C++ Name |
C# Name |
✅/❌ |
A3DSkillGfxEvent |
A3DSkillGfxEvent |
✅ Correct |
A3DSkillGfxMan |
A3DSkillGfxMan |
✅ Correct |
A3DSkillGfxComposer |
A3DSkillGfxComposer |
✅ Correct |
A3DSkillGfxComposerMan |
A3DSkillGfxComposerMan |
✅ Correct |
CECSkillGfxEvent |
CECSkillGfxEvent |
✅ Correct |
CECSkillGfxMan |
CECSkillGfxMan |
✅ Correct |
Field Names
Movement Base Fields
| C++ Name |
C# Name |
Notes |
m_Mode |
m_Mode |
GfxMoveMode enum |
m_HitPos |
m_HitPos |
GfxHitPos enum |
m_vPos |
m_vPos |
Position vector |
m_vMoveDir |
m_vMoveDir |
Movement direction |
m_bOneOfCluser |
m_bOneOfCluser |
⚠️ TYPO PRESERVED - C++ has this spelling |
m_dwMaxFlyTime |
m_dwMaxFlyTime |
Max flight time (uint) |
m_bReverse |
m_bReverse |
Reverse direction flag |
m_bArea |
m_bArea |
Area emission flag |
m_Shape |
m_Shape |
EmitShape enum |
m_vSize |
m_vSize |
Size vector |
m_vXRange |
m_vXRange |
X range for area emission |
m_vYRange |
m_vYRange |
Y range for area emission |
m_vZRange |
m_vZRange |
Z range for area emission |
m_fSquare |
m_fSquare |
Square magnitude |
m_fSquareH |
m_fSquareH |
Horizontal square magnitude |
❌ WRONG: m_bOneOfCluster (correct spelling) - C++ has the typo, we must preserve it
Event Fields
| C++ Name |
C# Name |
Notes |
m_pComposer |
m_pComposer |
A3DSkillGfxComposer reference |
m_pMoveMethod |
m_pMoveMethod |
CGfxMoveBase reference |
m_pFlyGfx |
m_pFlyGfx |
Fly GFX instance |
m_pHitGfx |
m_pHitGfx |
Hit GFX instance |
m_dwFlyTimeSpan |
m_dwFlyTimeSpan |
Flight time span (uint) |
m_dwCurSpan |
m_dwCurSpan |
Current span (uint) |
m_dwDelayTime |
m_dwDelayTime |
Delay time (uint) |
m_bTraceTarget |
m_bTraceTarget |
Trace target flag |
m_bFadeOut |
m_bFadeOut |
Fade out flag |
m_nHostID |
m_nHostID |
Host ID (long/clientid_t) |
m_nTargetID |
m_nTargetID |
Target ID (long/clientid_t) |
m_dwModifier |
m_dwModifier |
Modifier (uint) |
m_bIsGoblinSkill |
m_bIsGoblinSkill |
Goblin skill flag |
m_vHostPos |
m_vHostPos |
Host position |
m_vTargetPos |
m_vTargetPos |
Target position |
m_vTargetDir |
m_vTargetDir |
Target direction |
m_vTargetUp |
m_vTargetUp |
Target up vector |
m_bHostExist |
m_bHostExist |
Host exists flag |
m_bTargetExist |
m_bTargetExist |
Target exists flag |
m_bHitGfxInfinite |
m_bHitGfxInfinite |
Hit GFX infinite flag |
m_bTargetDirAndUpExist |
m_bTargetDirAndUpExist |
Target dir/up exist flag |
m_enumState |
m_enumState |
GfxSkillEventState enum |
Method Names
Movement Methods
| C++ Name |
C# Name |
Notes |
StartMove() |
StartMove() |
Initialize movement |
TickMove() |
TickMove() |
Update movement (returns bool) |
SetParam() |
SetParam() |
Set GFX_SKILL_PARAM |
SetIsCluster() |
SetIsCluster() |
Set cluster flag |
SetReverse() |
SetReverse() |
Set reverse flag |
UpdateGfxParam() |
UpdateGfxParam() |
Update GFX parameters |
GetMode() |
GetMode() |
Get movement mode |
GetHitPos() |
GetHitPos() |
Get hit position |
GetPos() |
GetPos() |
Get current position |
GetMoveDir() |
GetMoveDir() |
Get movement direction |
IsReverse() |
IsReverse() |
Check reverse flag |
SetMaxFlyTime() |
SetMaxFlyTime() |
Set max flight time |
CreateMoveMethod() |
CreateMoveMethod() |
Static factory method |
Event Methods
| C++ Name |
C# Name |
Notes |
Tick() |
Tick() |
Update event |
HitTarget() |
HitTarget() |
Handle target hit |
GetTargetCenter() |
GetTargetCenter() |
Get target center (abstract) |
GetTargetDirAndUp() |
GetTargetDirAndUp() |
Get target direction/up |
SetComposer() |
SetComposer() |
Set composer |
GetMoveMethod() |
GetMoveMethod() |
Get movement method |
Resume() |
Resume() |
Resume event |
Enum Names
| C++ Name |
C# Name |
Notes |
GfxMoveMode |
GfxMoveMode |
Movement mode enum |
GfxHitPos |
GfxHitPos |
Hit position enum |
EmitShape |
EmitShape |
Emission shape enum |
GfxSkillValType |
GfxSkillValType |
Value type enum |
GfxSkillEventState |
GfxSkillEventState |
Event state enum |
Enum Values
GfxMoveMode
enumLinearMove (0)
enumParabolicMove (1)
enumMissileMove (2)
enumMeteoricMove (3)
enumHelixMove (4)
enumCurvedMove (5)
enumAccMove (6)
enumOnTarget (7)
enumLink (8)
enumRandMove (9)
enumMoveModeNum (10)
GfxHitPos
enumHitCenter (0)
enumHitBottom (1)
EmitShape
enumBox (0)
enumSphere (1)
enumCylinder (2)
enumShapeNum (3)
GfxSkillEventState
enumWait (0)
enumFlying (1)
enumHit (2)
enumFinished (3)
File Names
| C++ File |
C# File |
Location |
A3DSkillGfxEvent2.h |
CGfxMoveBase.cs |
Assets/PerfectWorld/Scripts/Vfx/ |
A3DSkillGfxEvent2.cpp |
CGfxLinearMove.cs |
Assets/PerfectWorld/Scripts/Vfx/ |
A3DSkillGfxEvent2.cpp |
CGfxOnTargetMove.cs |
Assets/PerfectWorld/Scripts/Vfx/ |
A3DSkillGfxMan.h |
A3DSkillGfxMan.cs |
Assets/PerfectWorld/Scripts/Managers/ |
CECSkillGfxMan.h |
CECSkillGfxMan.cs |
Assets/PerfectWorld/Scripts/Managers/ |
Naming Patterns
Hungarian Notation (Preserved from C++)
m_ prefix = member variable
p prefix = pointer/reference (C#: reference)
n prefix = number/ID
dw prefix = DWORD (uint)
b prefix = bool
f prefix = float
v prefix = vector
sz prefix = string (C#: string)
Examples
m_pMoveMethod = member pointer/reference to MoveMethod
m_dwFlyTimeSpan = member DWORD (uint) for fly time span
m_bTraceTarget = member bool for trace target
m_vHostPos = member vector for host position
szFlyGfx = string for fly GFX path
Rules Summary
- Preserve ALL C++ names exactly - including typos (
m_bOneOfCluser)
- Keep Hungarian notation - maintain
m_, p, dw, b, f, v prefixes
- Match enum values - exact same names and order
- Preserve file structure - similar organization to C++
- Never "improve" names - unless user explicitly requests it