diff --git a/.gitkeep b/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build/gamesource/config/entities/classes.ent b/build/gamesource/config/entities/classes.ent
index b0b7cf2c7190c9660cefe1732cf049de2d73ade8..8b2422ed126b5fdbee25bfdceb62b569156dd57e 100644
--- a/build/gamesource/config/entities/classes.ent
+++ b/build/gamesource/config/entities/classes.ent
@@ -51,6 +51,10 @@ single_speed = 40; выст/мин
 burst_speed = 100; выст/мин
 
 effective_distance = 650
+
+;разброс
+spread_base       	= 0.33    ;угол (в градусах) базовой дисперсии оружия (оружия, зажатого в тисках)
+
 ; Боевая скорострельность (одиночными): 40 выст/мин
 ; Боевая скорострельность (очередями): 100 выст/мин
 ; Дальность, до которой сохраняется убойное действие пули: 1350 м
@@ -80,8 +84,6 @@ durability = 350000
 durability_return_min = 0.7 ; при ремонте:
 durability_return_max = 0.9 ; durability_max = durability_max * rand(durability_return_min, durability_return_max)
 
-;разброс
-fire_dispersion_base       	= 0.33    ;угол (в градусах) базовой дисперсии оружия (оружия, зажатого в тисках)
 
 ;отдача
 cam_return					= 0
diff --git a/build/sysconfig.cfg b/build/sysconfig.cfg
index cf190d3f6e162e0e1227562d504984882c7e23a2..595abcb14e782db5c72c44363f5e0911ff0a0386 100644
--- a/build/sysconfig.cfg
+++ b/build/sysconfig.cfg
@@ -24,9 +24,9 @@ bind f8 change_mode_window_abs
 cl_mode_editor 1
 
 r_default_fov 1.046
-r_stats 0
-r_win_width 1024
-r_win_height 768
+r_stats 1
+r_win_width 800
+r_win_height 600
 
 pp_ssao 1
 pp_bloom true
diff --git a/proj/sxgame/vs2013/sxgame.vcxproj b/proj/sxgame/vs2013/sxgame.vcxproj
index a0ebed554340ecea118d218c68b7fbdf3c231d50..49968e5526ed205c8010da021f8bb518cb1fdeec 100644
--- a/proj/sxgame/vs2013/sxgame.vcxproj
+++ b/proj/sxgame/vs2013/sxgame.vcxproj
@@ -97,6 +97,7 @@
     <ClCompile Include="..\..\..\source\game\BaseSilencer.cpp" />
     <ClCompile Include="..\..\..\source\game\BaseWeaponAddon.cpp" />
     <ClCompile Include="..\..\..\source\game\BaseTrigger.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseCharacter.cpp" />
     <ClCompile Include="..\..\..\source\game\crosshair.cpp" />
     <ClCompile Include="..\..\..\source\game\CrosshairManager.cpp" />
     <ClCompile Include="..\..\..\source\game\EntityFactory.cpp" />
@@ -110,20 +111,20 @@
     <ClCompile Include="..\..\..\source\game\PathCorner.cpp" />
     <ClCompile Include="..\..\..\source\game\proptable.cpp" />
     <ClCompile Include="..\..\..\source\game\Ragdoll.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseAmmo.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseAmmoBox.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseAnimating.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseEntity.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseItem.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseRiffle.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseSupply.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseTool.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXbaseWeapon.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseAmmo.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseAmmoBox.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseAnimating.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseEntity.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseItem.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseRiffle.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseSupply.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseTool.cpp" />
+    <ClCompile Include="..\..\..\source\game\BaseWeapon.cpp" />
     <ClCompile Include="..\..\..\source\game\sxgame_dll.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXplayer.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXplayerSpawn.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXpointCamera.cpp" />
-    <ClCompile Include="..\..\..\source\game\SXpointEntity.cpp" />
+    <ClCompile Include="..\..\..\source\game\Player.cpp" />
+    <ClCompile Include="..\..\..\source\game\PlayerSpawn.cpp" />
+    <ClCompile Include="..\..\..\source\game\PointCamera.cpp" />
+    <ClCompile Include="..\..\..\source\game\PointEntity.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\source\common\AAString.h" />
@@ -133,6 +134,7 @@
     <ClInclude Include="..\..\..\source\game\BaseSilencer.h" />
     <ClInclude Include="..\..\..\source\game\BaseWeaponAddon.h" />
     <ClInclude Include="..\..\..\source\game\BaseTrigger.h" />
+    <ClInclude Include="..\..\..\source\game\BaseCharacter.h" />
     <ClInclude Include="..\..\..\source\game\crosshair.h" />
     <ClInclude Include="..\..\..\source\game\CrosshairManager.h" />
     <ClInclude Include="..\..\..\source\game\EntityFactory.h" />
@@ -146,22 +148,22 @@
     <ClInclude Include="..\..\..\source\game\PathCorner.h" />
     <ClInclude Include="..\..\..\source\game\proptable.h" />
     <ClInclude Include="..\..\..\source\game\Ragdoll.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseAmmo.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseAmmoBox.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseAnimating.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseEntity.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseItem.h" />
-    <ClInclude Include="..\..\..\source\game\SXbasePistol.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseRiffle.h" />
+    <ClInclude Include="..\..\..\source\game\BaseAmmo.h" />
+    <ClInclude Include="..\..\..\source\game\BaseAmmoBox.h" />
+    <ClInclude Include="..\..\..\source\game\BaseAnimating.h" />
+    <ClInclude Include="..\..\..\source\game\BaseEntity.h" />
+    <ClInclude Include="..\..\..\source\game\BaseItem.h" />
+    <ClInclude Include="..\..\..\source\game\BasePistol.h" />
+    <ClInclude Include="..\..\..\source\game\BaseRiffle.h" />
     <ClInclude Include="..\..\..\source\game\SXbaseSnipe.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseSupply.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseTool.h" />
-    <ClInclude Include="..\..\..\source\game\SXbaseWeapon.h" />
+    <ClInclude Include="..\..\..\source\game\BaseSupply.h" />
+    <ClInclude Include="..\..\..\source\game\BaseTool.h" />
+    <ClInclude Include="..\..\..\source\game\BaseWeapon.h" />
     <ClInclude Include="..\..\..\source\game\sxgame.h" />
-    <ClInclude Include="..\..\..\source\game\SXplayer.h" />
-    <ClInclude Include="..\..\..\source\game\SXplayerSpawn.h" />
-    <ClInclude Include="..\..\..\source\game\SXpointCamera.h" />
-    <ClInclude Include="..\..\..\source\game\SXpointEntity.h" />
+    <ClInclude Include="..\..\..\source\game\Player.h" />
+    <ClInclude Include="..\..\..\source\game\PlayerSpawn.h" />
+    <ClInclude Include="..\..\..\source\game\PointCamera.h" />
+    <ClInclude Include="..\..\..\source\game\PointEntity.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/proj/sxgame/vs2013/sxgame.vcxproj.filters b/proj/sxgame/vs2013/sxgame.vcxproj.filters
index 55022f88ce2ef8af728f3e0df1b75771cfcf09cd..1fd6f5807ca9c46dcab9e6cc3389acce1053427e 100644
--- a/proj/sxgame/vs2013/sxgame.vcxproj.filters
+++ b/proj/sxgame/vs2013/sxgame.vcxproj.filters
@@ -49,14 +49,23 @@
     <Filter Include="Source Files\ents\triggers">
       <UniqueIdentifier>{a19af9a9-9698-4f6e-94fc-fc12afaa10a2}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\ents\characters">
+      <UniqueIdentifier>{dd25ca33-fbd9-40fb-878e-4d2f1531565f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\ents\characters\npc">
+      <UniqueIdentifier>{befd7b49-c663-45c4-87cf-9d481da7fb90}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\ents\characters">
+      <UniqueIdentifier>{9a873af0-2663-4675-9e2e-ce30a5bfc8ea}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\ents\characters\npc">
+      <UniqueIdentifier>{474c6cbf-9b16-4a74-876b-edd6fc116cbc}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\source\game\sxgame_dll.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseEntity.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\source\game\proptable.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -69,21 +78,6 @@
     <ClCompile Include="..\..\..\source\game\EntityManager.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXpointEntity.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXplayerSpawn.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXplayer.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXpointCamera.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseAnimating.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\source\game\PathCorner.cpp">
       <Filter>Source Files\ents</Filter>
     </ClCompile>
@@ -93,30 +87,6 @@
     <ClCompile Include="..\..\..\source\game\GameData.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseItem.cpp">
-      <Filter>Source Files\ents\items</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseAmmo.cpp">
-      <Filter>Source Files\ents\items</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseAmmoBox.cpp">
-      <Filter>Source Files\ents\items</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseTool.cpp">
-      <Filter>Source Files\ents\items\tools</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseRiffle.cpp">
-      <Filter>Source Files\ents\items\tools\weapons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseWeapon.cpp">
-      <Filter>Source Files\ents\items\tools</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\NPCBase.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\source\game\NPCZombie.cpp">
-      <Filter>Source Files\ents</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\source\game\LightDirectional.cpp">
       <Filter>Source Files\ents</Filter>
     </ClCompile>
@@ -150,7 +120,52 @@
     <ClCompile Include="..\..\..\source\game\BaseTrigger.cpp">
       <Filter>Source Files\ents\triggers</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\source\game\SXbaseSupply.cpp">
+    <ClCompile Include="..\..\..\source\game\NPCZombie.cpp">
+      <Filter>Source Files\ents\characters\npc</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\NPCBase.cpp">
+      <Filter>Source Files\ents\characters</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseEntity.cpp">
+      <Filter>Source Files\ents</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseAnimating.cpp">
+      <Filter>Source Files\ents</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\PlayerSpawn.cpp">
+      <Filter>Source Files\ents</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\PointCamera.cpp">
+      <Filter>Source Files\ents</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\PointEntity.cpp">
+      <Filter>Source Files\ents</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseTool.cpp">
+      <Filter>Source Files\ents\items\tools</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseWeapon.cpp">
+      <Filter>Source Files\ents\items\tools</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseRiffle.cpp">
+      <Filter>Source Files\ents\items\tools\weapons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\Player.cpp">
+      <Filter>Source Files\ents\characters</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseCharacter.cpp">
+      <Filter>Source Files\ents\characters</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseSupply.cpp">
+      <Filter>Source Files\ents\items</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseItem.cpp">
+      <Filter>Source Files\ents\items</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseAmmo.cpp">
+      <Filter>Source Files\ents\items</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\source\game\BaseAmmoBox.cpp">
       <Filter>Source Files\ents\items</Filter>
     </ClCompile>
   </ItemGroup>
@@ -161,30 +176,12 @@
     <ClInclude Include="..\..\..\source\game\EntityManager.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseEntity.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseAnimating.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXplayer.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXpointEntity.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXplayerSpawn.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\source\game\EntityFactory.h">
       <Filter>Header Files</Filter>
     </ClInclude>
     <ClInclude Include="..\..\..\source\game\proptable.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXpointCamera.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\source\game\PathCorner.h">
       <Filter>Header Files\ents</Filter>
     </ClInclude>
@@ -197,36 +194,9 @@
     <ClInclude Include="..\..\..\source\common\AAString.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseRiffle.h">
-      <Filter>Header Files\ents\items\tools\weapons</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\source\game\SXbaseSnipe.h">
       <Filter>Header Files\ents\items\tools\weapons</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbasePistol.h">
-      <Filter>Header Files\ents\items\tools\weapons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseTool.h">
-      <Filter>Header Files\ents\items\tools</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseAmmo.h">
-      <Filter>Header Files\ents\items</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseItem.h">
-      <Filter>Header Files\ents\items</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseAmmoBox.h">
-      <Filter>Header Files\ents\items</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseWeapon.h">
-      <Filter>Header Files\ents\items\tools</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\NPCBase.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\source\game\NPCZombie.h">
-      <Filter>Header Files\ents</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\source\game\LightDirectional.h">
       <Filter>Header Files\ents</Filter>
     </ClInclude>
@@ -260,8 +230,56 @@
     <ClInclude Include="..\..\..\source\game\BaseTrigger.h">
       <Filter>Header Files\ents\triggers</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\source\game\SXbaseSupply.h">
+    <ClInclude Include="..\..\..\source\game\NPCBase.h">
+      <Filter>Header Files\ents\characters</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\NPCZombie.h">
+      <Filter>Header Files\ents\characters\npc</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseEntity.h">
+      <Filter>Header Files\ents</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseAnimating.h">
+      <Filter>Header Files\ents</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\PlayerSpawn.h">
+      <Filter>Header Files\ents</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\PointCamera.h">
+      <Filter>Header Files\ents</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\PointEntity.h">
+      <Filter>Header Files\ents</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseTool.h">
+      <Filter>Header Files\ents\items\tools</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseWeapon.h">
+      <Filter>Header Files\ents\items\tools</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseRiffle.h">
+      <Filter>Header Files\ents\items\tools\weapons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\Player.h">
+      <Filter>Header Files\ents\characters</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseCharacter.h">
+      <Filter>Header Files\ents\characters</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseSupply.h">
       <Filter>Header Files\ents\items</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseItem.h">
+      <Filter>Header Files\ents\items</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseAmmo.h">
+      <Filter>Header Files\ents\items</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BaseAmmoBox.h">
+      <Filter>Header Files\ents\items</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\source\game\BasePistol.h">
+      <Filter>Header Files\ents\items\tools\weapons</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/source/SkyXEngine_Build/SkyXEngine_Build.cpp b/source/SkyXEngine_Build/SkyXEngine_Build.cpp
index 884d3258c17cbf3f6499620edbb1d200a37526fc..50232fab65535afaa7c7ee20db16c7caded02074 100644
--- a/source/SkyXEngine_Build/SkyXEngine_Build.cpp
+++ b/source/SkyXEngine_Build/SkyXEngine_Build.cpp
@@ -23,17 +23,17 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLin
 	SGeom_0SettGreenSetFreqGrass(30);
 
 	/*NPCBase* npc = new NPCBase();
-	npc->SetModel("models/stalker_zombi/stalker_zombi_a.dse");
-	npc->SetPos(&float3(0, 0, 0));*/
+	npc->setModel("models/stalker_zombi/stalker_zombi_a.dse");
+	npc->setPos(&float3(0, 0, 0));*/
 
 	/*for (int i = 0; i < 10; ++i)
 	{
-		SXbaseEntity* bEnt = SXGame_CreateEntity("npc_zombie");
-		bEnt->SetFlags(bEnt->GetFlags() | EF_EXPORT | EF_LEVEL);
+		CBaseEntity* bEnt = SXGame_CreateEntity("npc_zombie");
+		bEnt->setFlags(bEnt->getFlags() | EF_EXPORT | EF_LEVEL);
 		char pos[256];
 		//sprintf(pos, "%f %f %f", randf(-0.1, 0.1), randf(-0.1, 0.1), randf(-0.1, 0.1));
-		//bEnt->SetKV("origin", "14.90 0.36 25.56");
-		bEnt->SetKV("origin", "0 0 0");
+		//bEnt->setKV("origin", "14.90 0.36 25.56");
+		bEnt->setKV("origin", "0 0 0");
 	}*/
 
 	/*for (int i = 0; i < 10; ++i)
diff --git a/source/anim/animated.cpp b/source/anim/animated.cpp
index ceab902136c174c86c0e34e036f4584d8ea70231..c7de1b11a86160292e266477b55808fab4fcc66a 100644
--- a/source/anim/animated.cpp
+++ b/source/anim/animated.cpp
@@ -98,7 +98,7 @@ void ModelFile::Load(const char * name)
 			for(uint32_t i = 0; i < m_hdr2.iDepsCount; i++)
 			{
 				fread(&md, sizeof(ModelDependensy), 1, fp);
-				m_pDeps[i] = m_pMgr->LoadModel(md.szName);
+				m_pDeps[i] = m_pMgr->loadModel(md.szName);
 			}
 		}
 	}
@@ -137,13 +137,13 @@ void ModelFile::Load(const char * name)
 			{
 				fread(m_iMaterials[j][i].szName, 1, MODEL_MAX_NAME, fp);
 
-				m_iMaterials[j][i].iMat = m_pMgr->GetMaterial(m_iMaterials[j][i].szName); //3
+				m_iMaterials[j][i].iMat = m_pMgr->getMaterial(m_iMaterials[j][i].szName); //3
 
 			}
 		}
 	}
 
-	SGCore_LoadTexLoadTextures();
+	//SGCore_LoadTexLoadTextures();
 
 	if(m_hdr.iAnimationsOffset)
 	{
@@ -268,7 +268,7 @@ void ModelFile::Load6(const char * name)
 			for(uint32_t i = 0; i < m_hdr2.iDepsCount; i++)
 			{
 				fread(&md, sizeof(ModelDependensy), 1, fp);
-				m_pDeps[i] = m_pMgr->LoadModel(md.szName);
+				m_pDeps[i] = m_pMgr->loadModel(md.szName);
 			}
 		}
 	}
@@ -316,7 +316,7 @@ void ModelFile::Load6(const char * name)
 				}
 				//fread(m_iMaterials[j][i].szName, 1, MODEL_MAX_NAME, fp);
 
-				m_iMaterials[j][i].iMat = m_pMgr->GetMaterial(m_iMaterials[j][i].szName, true); //3
+				m_iMaterials[j][i].iMat = m_pMgr->getMaterial(m_iMaterials[j][i].szName, true); //3
 
 			}
 		}
@@ -405,11 +405,11 @@ void ModelFile::LoadParts()
 {
 	for(uint32_t i = 0; i < m_hdr2.iDepsCount; ++i)
 	{
-		m_pParts[i].pMdl = m_pMgr->LoadModel(m_pParts[i].file);
+		m_pParts[i].pMdl = m_pMgr->loadModel(m_pParts[i].file);
 	}
 }
 
-void ModelFile::GetBoneName(UINT id, char * name, int len) const
+void ModelFile::getBoneName(UINT id, char * name, int len) const
 {
 	if(id >= m_hdr2.iBoneTableCount)
 	{
@@ -432,7 +432,7 @@ UINT ModelFile::GetBoneID(const char * name)
 	return(-1);
 }
 
-const ModelHitbox * ModelFile::GetHitbox(const char * name) const
+const ModelHitbox * ModelFile::getHitbox(const char * name) const
 {
 	for(uint32_t i = 0; i < m_hdr2.iHitboxCount; ++i)
 	{
@@ -443,7 +443,7 @@ const ModelHitbox * ModelFile::GetHitbox(const char * name) const
 	}
 	return(NULL);
 }
-const ModelHitbox * ModelFile::GetHitbox(uint32_t id) const
+const ModelHitbox * ModelFile::getHitbox(uint32_t id) const
 {
 	if(id >= m_hdr2.iHitboxCount)
 	{
@@ -451,7 +451,7 @@ const ModelHitbox * ModelFile::GetHitbox(uint32_t id) const
 	}
 	return(&m_pHitboxes[id]);
 }
-uint32_t ModelFile::GetHitboxCount() const
+uint32_t ModelFile::getHitboxCount() const
 {
 	return(m_hdr2.iHitboxCount);
 }
@@ -544,7 +544,7 @@ const ModelBoneController * ModelFile::GetController(UINT id) const
 	}
 	return(&m_pControllers[id]);
 }
-UINT ModelFile::GetBoneCount() const
+UINT ModelFile::getBoneCount() const
 {
 	return(m_hdr.iBoneCount);
 }
@@ -557,7 +557,7 @@ UINT ModelFile::GetControllersCount() const
 	return(m_hdr2.iControllersCount);
 }
 #ifndef _SERVER
-void ModelFile::Render(SMMATRIX * mWorld, UINT nSkin, UINT nLod, ID idOverrideMaterial)
+void ModelFile::render(SMMATRIX * mWorld, UINT nSkin, UINT nLod, ID idOverrideMaterial)
 {
 	if(nSkin >= m_hdr.iSkinCount)
 	{
@@ -581,7 +581,7 @@ void ModelFile::Render(SMMATRIX * mWorld, UINT nSkin, UINT nLod, ID idOverrideMa
 	m_pMgr->m_pd3dDevice->SetIndices(m_ppIndexBuffer[nLod]);
 	m_pMgr->m_pd3dDevice->SetStreamSource(0, m_ppVertexBuffer[nLod], 0, iVertSize[vtype]);
 
-	m_pMgr->SetVertexDeclaration(vtype);
+	m_pMgr->setVertexDeclaration(vtype);
 
 	for(UINT i = 0; i < m_pLods[nLod].iSubMeshCount; i++)
 	{
@@ -827,7 +827,7 @@ void ModelFile::BuildMeshBuffers()
 
 }
 
-const ISXBound * ModelFile::GetBound() const
+const ISXBound * ModelFile::getBound() const
 {
 	return(m_pBoundBox);
 }
@@ -889,7 +889,7 @@ ModelFile::~ModelFile()
 	{
 		for(uint32_t i = 0; i < m_hdr2.iDepsCount; ++i)
 		{
-			m_pMgr->UnloadModel(m_pParts[i].pMdl);
+			m_pMgr->unloadModel(m_pParts[i].pMdl);
 		}
 	}
 	mem_delete_a(m_pParts);
@@ -1052,7 +1052,7 @@ m_pRagdoll(0)
 		m_pIsBoneWorld[i] = NULL;
 	}
 
-	myId = pMgr->Register(this);
+	myId = pMgr->reg(this);
 }
 
 Animation::~Animation()
@@ -1067,10 +1067,10 @@ Animation::~Animation()
 	mem_delete_a(m_pBoneMatrix);
 	mem_delete_a(m_FinalBones);
 	mem_delete_a(m_pBoneMatrixRender);
-	m_pMgr->UnRegister(myId);
+	m_pMgr->unreg(myId);
 }
 
-SMMATRIX Animation::GetBoneTransform(UINT _id)
+SMMATRIX Animation::getBoneTransform(UINT _id)
 {
 	//id *= 2;
 	int id = m_FinalBones[_id].pid;
@@ -1083,23 +1083,23 @@ SMMATRIX Animation::GetBoneTransform(UINT _id)
 	return(q.GetMatrix() * SMMatrixTranslation(pos));
 }
 
-float3 Animation::GetBoneTransformPos(UINT id)
+float3 Animation::getBoneTransformPos(UINT id)
 {
 	ModelBone * mBonesOrig = m_pMdl->m_pBonesBindPoseInv;
-	return(GetOrient() * ((m_pBoneMatrixRender[id].position - m_pBoneMatrixRender[id].orient * (float3)mBonesOrig[id].position) * m_fScale) + GetPos());
+	return(getOrient() * ((m_pBoneMatrixRender[id].position - m_pBoneMatrixRender[id].orient * (float3)mBonesOrig[id].position) * m_fScale) + getPos());
 }
 
-SMQuaternion Animation::GetBoneTransformRot(UINT id)
+SMQuaternion Animation::getBoneTransformRot(UINT id)
 {
 	ModelBone * mBonesOrig = m_pMdl->m_pBonesBindPoseInv;
-	return(GetOrient() * m_pBoneMatrixRender[id].orient * mBonesOrig[id].orient.Conjugate());
+	return(getOrient() * m_pBoneMatrixRender[id].orient * mBonesOrig[id].orient.Conjugate());
 }
 
 /*
 bool Animation::IsVisibleFrustum(Core::ControllMoving::Frustum* frustum)
 {
 	m_pMdl->BoundVol.GetSphere(&jcenter2, &jradius);
-	jcenter = SMVector3Transform(jcenter2, GetWorldTM());
+	jcenter = SMVector3Transform(jcenter2, getWorldTM());
 
 	if((frustum->SphereInFrustum(&jcenter, jradius)))
 		return true;
@@ -1118,15 +1118,15 @@ void Animation::SyncAnims()
 	}
 }
 
-void Animation::SetModel(const char * file)
+void Animation::setModel(const char * file)
 {
 	mem_delete(m_pMdl);
-	m_pMdl = const_cast<ModelFile*>(m_pMgr->LoadModel(file));
+	m_pMdl = const_cast<ModelFile*>(m_pMgr->loadModel(file));
 	if(!m_pMdl)
 	{
 		return;
 	}
-	AddModel(m_pMdl);
+	addModel(m_pMdl);
 	DownloadData();
 }
 
@@ -1141,7 +1141,7 @@ void Animation::DownloadData()
 		mem_delete_a(m_pIsBoneWorld[slot]);
 	}
 
-	m_iBoneCount = m_pMdl->GetBoneCount();
+	m_iBoneCount = m_pMdl->getBoneCount();
 
 	SyncAnims();
 
@@ -1190,7 +1190,7 @@ void Animation::setRagdoll(IAnimRagdoll * pRagdoll)
 	if(m_pRagdoll)
 	{
 		ModelBone * mBonesOrig = m_pMdl->m_pBonesBindPoseInv;
-		StopAll();
+		stopAll();
 		for(UINT i = 0; i < m_iBoneCount; ++i)
 		{
 			if(/*i == 18 && */(m_pIsBoneWorld[0][i] = pRagdoll->isBoneAffected(i)))
@@ -1208,12 +1208,12 @@ void Animation::setRagdoll(IAnimRagdoll * pRagdoll)
 	}
 }
 
-ModelSequence const * Animation::GetCurAnim(int slot)
+ModelSequence const * Animation::getCurAnim(int slot)
 {
 	return(m_pMdl->GetSequence(m_iPlayingAnim[slot]));
 }
 
-void Animation::Advance(unsigned long int dt)
+void Animation::advance(unsigned long int dt)
 {
 	if(!m_pMdl || m_pMdl->m_hdr.iFlags & MODEL_FLAG_STATIC)
 	{
@@ -1390,7 +1390,7 @@ void Animation::Advance(unsigned long int dt)
 	}
 }
 
-inline bool Animation::PlayingAnimations()
+inline bool Animation::playingAnimations()
 {
 	for(int i = 0; i<BLEND_MAX; i++)
 	{
@@ -1400,7 +1400,7 @@ inline bool Animation::PlayingAnimations()
 	return false;
 }
 
-void Animation::StopAll()
+void Animation::stopAll()
 {
 	for(int i = 0; i < BLEND_MAX; ++i)
 	{
@@ -1413,7 +1413,7 @@ void Animation::StopAll()
 	}
 }
 
-void Animation::SetProgress(float progress, UINT slot)
+void Animation::setProgress(float progress, UINT slot)
 {
 	const ModelSequence * pCurAnim = m_pMdl->GetSequence(m_iPlayingAnim[slot]);
 	if(!pCurAnim)
@@ -1431,12 +1431,12 @@ void Animation::SetProgress(float progress, UINT slot)
 
 }
 
-void Animation::SetAdvance(bool set, UINT slot)
+void Animation::setAdvance(bool set, UINT slot)
 {
 	m_bDoAdvance[slot] = set;
 }
 
-void Animation::Stop(UINT slot)
+void Animation::stop(UINT slot)
 {
 	if(m_bIsAnimationPlaying[slot])
 	{
@@ -1445,7 +1445,7 @@ void Animation::Stop(UINT slot)
 	}
 }
 
-void Animation::Resume(UINT slot)
+void Animation::resume(UINT slot)
 {
 	if(!m_bIsAnimationPlaying[slot])
 	{
@@ -1625,7 +1625,7 @@ void Animation::RenderSkeleton(int hlBone)
 	mem_delete_a(verts);
 }
 
-inline bool Animation::PlayingAnimations(const char* name)
+inline bool Animation::playingAnimations(const char* name)
 {
 	for(int i = 0; i<BLEND_MAX; i++)
 	{
@@ -1635,7 +1635,7 @@ inline bool Animation::PlayingAnimations(const char* name)
 	return false;
 }
 
-void Animation::Play(const char * name, UINT iFadeTime, UINT slot, bool bReplaceActivity) // name: Animation name; changeTime: time to fade to this animation from previous
+void Animation::play(const char * name, UINT iFadeTime, UINT slot, bool bReplaceActivity) // name: Animation name; changeTime: time to fade to this animation from previous
 {
 	if(!m_pMdl)
 	{
@@ -1673,7 +1673,7 @@ void Animation::Play(const char * name, UINT iFadeTime, UINT slot, bool bReplace
 	}
 }
 
-void Animation::SetBoneController(const String & name, float value, MODEL_BONE_CTL what)
+void Animation::setBoneController(const String & name, float value, MODEL_BONE_CTL what)
 {
 	if(m_mfBoneControllers.KeyExists(name))
 	{
@@ -1728,7 +1728,7 @@ void Animation::UpdateControllers()
 	}
 }
 
-void Animation::StartActivity(const char * name, UINT iFadeTime, UINT slot)
+void Animation::startActivity(const char * name, UINT iFadeTime, UINT slot)
 {
 	for(int i = 0, l = m_pMdl->m_hdr2.iActivitiesTableCount; i < l; ++i)
 	{
@@ -1767,7 +1767,7 @@ void Animation::PlayActivityNext(UINT slot)
 		{
 			if(fMaxChance >= fch)
 			{
-				Play(m_pMdl->GetSequence(i)->name, m_iCurrentActivityFadeTime[slot], slot, false);
+				play(m_pMdl->GetSequence(i)->name, m_iCurrentActivityFadeTime[slot], slot, false);
 				break;
 			}
 			fMaxChance += (float)m_pMdl->GetSequence(i)->act_chance;
@@ -1775,42 +1775,42 @@ void Animation::PlayActivityNext(UINT slot)
 	}
 }
 
-int Animation::GetActiveSkin()
+int Animation::getActiveSkin()
 {
 	return(m_iCurrentSkin);
 }
 
-void Animation::SetSkin(int n)
+void Animation::setSkin(int n)
 {
 	m_iCurrentSkin = n;
 }
 
-void Animation::SetPos(const float3 & pos)
+void Animation::setPos(const float3 & pos)
 {
 	m_vPosition = pos;
 }
 
-float3 Animation::GetPos()
+float3 Animation::getPos()
 {
 	return(m_vPosition);
 }
 
-SMMATRIX Animation::GetWorldTM()
+SMMATRIX Animation::getWorldTM()
 {
 	return(SMMatrixScaling(m_fScale, m_fScale, m_fScale) * m_vOrientation.GetMatrix() * SMMatrixTranslation(m_vPosition));
 }
 
-void Animation::SetOrient(const SMQuaternion & pos)
+void Animation::setOrient(const SMQuaternion & pos)
 {
 	m_vOrientation = pos;
 }
 
-SMQuaternion Animation::GetOrient()
+SMQuaternion Animation::getOrient()
 {
 	return(m_vOrientation);
 }
 
-void Animation::Render()
+void Animation::render()
 {
 	if(!m_bEnabled)
 	{
@@ -1829,7 +1829,7 @@ void Animation::Render()
 		m_pMgr->m_pd3dDevice->SetVertexShaderConstantF(16, (float*)m_pBoneMatrixRender, sizeof(ModelBoneShader)* m_iBoneCount / sizeof(float) / 4);
 	}
 
-	m_pMdl->Render(&(GetWorldTM()), m_iCurrentSkin, 0, m_idOverrideMaterial);
+	m_pMdl->render(&(getWorldTM()), m_iCurrentSkin, 0, m_idOverrideMaterial);
 }
 
 void Animation::setOverrideMaterial(const char *name)
@@ -1841,52 +1841,52 @@ void Animation::enable(bool enable)
 	m_bEnabled = enable;
 }
 
-UINT Animation::GetBoneCount() const
+UINT Animation::getBoneCount() const
 {
-	return(m_pMdl->GetBoneCount());
+	return(m_pMdl->getBoneCount());
 }
-void Animation::GetBoneName(UINT id, char * name, int len) const
+void Animation::getBoneName(UINT id, char * name, int len) const
 {
-	m_pMdl->GetBoneName(id, name, len);
+	m_pMdl->getBoneName(id, name, len);
 }
-UINT Animation::GetBone(const char * str)
+UINT Animation::getBone(const char * str)
 {
 	return(m_pMdl->GetBoneID(str));
 }
 
-const ModelHitbox * Animation::GetHitbox(uint32_t id) const
+const ModelHitbox * Animation::getHitbox(uint32_t id) const
 {
-	return(m_pMdl->GetHitbox(id));
+	return(m_pMdl->getHitbox(id));
 }
-uint32_t Animation::GetHitboxCount() const
+uint32_t Animation::getHitboxCount() const
 {
-	return(m_pMdl->GetHitboxCount());
+	return(m_pMdl->getHitboxCount());
 }
 
-AnimStateCB Animation::SetCallback(AnimStateCB cb)
+AnimStateCB Animation::setCallback(AnimStateCB cb)
 {
 	AnimStateCB old = m_pfnCallBack;
 	m_pfnCallBack = cb;
 	return(old);
 }
 
-AnimProgressCB Animation::SetProgressCB(AnimProgressCB cb)
+AnimProgressCB Animation::setProgressCB(AnimProgressCB cb)
 {
 	AnimProgressCB old = m_pfnProgressCB;
 	m_pfnProgressCB = cb;
 	return(old);
 }
 
-const ModelFile * Animation::AddModel(const char * mdl, UINT flags, char * name)
+const ModelFile * Animation::addModel(const char * mdl, UINT flags, char * name)
 {
-	const ModelFile * pMdl = m_pMgr->LoadModel(mdl);
+	const ModelFile * pMdl = m_pMgr->loadModel(mdl);
 	if(pMdl)
 	{
-		AddModel(pMdl, flags, name);
+		addModel(pMdl, flags, name);
 	}
 	return(pMdl);
 }
-void Animation::AddModel(const ModelFile * mdl, UINT flags, char * name)
+void Animation::addModel(const ModelFile * mdl, UINT flags, char * name)
 {
 	ModelPart pt;
 	pt.pMdl = mdl;
@@ -1902,9 +1902,9 @@ void Animation::AddModel(const ModelFile * mdl, UINT flags, char * name)
 		pt.file[0] = 0;
 	}
 	pt.attachDesc.type = MA_SKIN;
-	AddModel(&pt);
+	addModel(&pt);
 }
-int Animation::AddModel(ModelPart * mp)
+int Animation::addModel(ModelPart * mp)
 {
 	if(!mp)
 	{
@@ -1923,7 +1923,7 @@ ModelPart * Animation::GetPart(UINT idx)
 	return(m_mMdls[idx]);
 }
 
-void Animation::DelModel(ModelPart * mp)
+void Animation::delModel(ModelPart * mp)
 {
 	for(int i = 0, l = m_mMdls.size(); i < l; ++i)
 	{
@@ -1941,12 +1941,12 @@ UINT Animation::GetPartCount()
 	return(m_mMdls.size());
 }
 
-const ISXBound * Animation::GetBound() const
+const ISXBound * Animation::getBound() const
 {
-	return(m_pMdl->GetBound());
+	return(m_pMdl->getBound());
 }
 
-void Animation::Assembly()
+void Animation::assembly()
 {
 	//mem_delete(m_pMdl);
 	///@TODO: clear previous data
@@ -2004,7 +2004,7 @@ void Animation::Assembly()
 			}
 		}
 	}
-	m_iBoneCount = m_pMdl->GetBoneCount();
+	m_iBoneCount = m_pMdl->getBoneCount();
 
 	//build relink lists
 	for(int i = 0, l = m_mMdls.size(); i < l; ++i)
@@ -2014,10 +2014,10 @@ void Animation::Assembly()
 		{
 			continue;
 		}
-		for(int j = 0, ll = mp->pMdl->GetBoneCount(); j < ll; ++j)
+		for(int j = 0, ll = mp->pMdl->getBoneCount(); j < ll; ++j)
 		{
 			vvBoneRelinkList[i][j] = 0;
-			for(int k = 0, lll = m_pMdl->GetBoneCount(); k < lll; ++k)
+			for(int k = 0, lll = m_pMdl->getBoneCount(); k < lll; ++k)
 			{
 				if(!strcmp(mp->pMdl->m_pBones[j].szName, m_pMdl->m_pBones[k].szName))
 				{
@@ -2127,7 +2127,7 @@ void Animation::Assembly()
 			{
 				hb = mdl->m_pHitboxes[j];
 				hb.bone_id = -1;
-				for(int k = 0, lll = m_pMdl->GetBoneCount(); k < lll; ++k)
+				for(int k = 0, lll = m_pMdl->getBoneCount(); k < lll; ++k)
 				{
 					if(!strcmp(hb.bone, m_pMdl->m_pBones[k].szName))
 					{
@@ -2155,10 +2155,10 @@ void Animation::Assembly()
 	for(uint32_t i = 0; i < m_pMdl->m_hdr.iMaterialCount; ++i)
 	{
 		strcpy(m_pMdl->m_iMaterials[0][i].szName, vszMats[i]);
-		m_pMdl->m_iMaterials[0][i].iMat = m_pMgr->GetMaterial(m_pMdl->m_iMaterials[0][i].szName);
+		m_pMdl->m_iMaterials[0][i].iMat = m_pMgr->getMaterial(m_pMdl->m_iMaterials[0][i].szName);
 	}
 
-	SGCore_LoadTexLoadTextures();
+	//SGCore_LoadTexLoadTextures();
 
 	m_pMdl->m_hdr.iLODcount = vvLods.size();
 	m_pMdl->m_pLods = new ModelLoD[m_pMdl->m_hdr.iLODcount];
@@ -2256,7 +2256,7 @@ void Animation::Release()
 	delete this;
 }
 
-void Animation::GetPhysData(
+void Animation::getPhysData(
 	int32_t * piShapeCount,
 	HITBOX_TYPE ** phTypes,
 	float3_t *** pppfData,
@@ -2299,7 +2299,7 @@ void Animation::GetPhysData(
 	}
 }
 
-void Animation::FreePhysData(
+void Animation::freePhysData(
 	int32_t iShapeCount,
 	HITBOX_TYPE * hTypes,
 	float3_t ** ppfData,
@@ -2320,7 +2320,7 @@ void Animation::FreePhysData(
 *
 */
 
-const ModelFile * AnimationManager::LoadModel(const char * name, bool newInst)
+const ModelFile * AnimationManager::loadModel(const char * name, bool newInst)
 {
 	if(!newInst && m_pModels.KeyExists(name))
 	{
@@ -2339,12 +2339,12 @@ const ModelFile * AnimationManager::LoadModel(const char * name, bool newInst)
 		{
 			mdl->LoadParts();
 			Animation tmp(this);
-			tmp.AddModel(mdl);
+			tmp.addModel(mdl);
 			for(uint32_t i = 0; i < mdl->m_hdr2.iDepsCount; ++i)
 			{
-				tmp.AddModel(&mdl->m_pParts[i]);
+				tmp.addModel(&mdl->m_pParts[i]);
 			}
-			tmp.Assembly();
+			tmp.assembly();
 			strcpy(tmp.m_pMdl->m_szFileName, mdl->m_szFileName);
 			ModelFile * tmpmdl = mdl;
 			mdl = tmp.m_pMdl;
@@ -2360,7 +2360,7 @@ const ModelFile * AnimationManager::LoadModel(const char * name, bool newInst)
 	}
 }
 
-void AnimationManager::UnloadModel(const ModelFile * mdl)
+void AnimationManager::unloadModel(const ModelFile * mdl)
 {
 	for(AssotiativeArray<String, ModelFile*>::Iterator i = m_pModels.begin(); i; i++)
 	{
@@ -2378,7 +2378,7 @@ m_pd3dDevice(dev),
 m_iVisID(0),
 m_iThreadNum(1)
 {
-	InitVertexDeclarations();
+	initVertexDeclarations();
 }
 
 AnimationManager::~AnimationManager()
@@ -2389,7 +2389,7 @@ AnimationManager::~AnimationManager()
 	}
 }
 
-void AnimationManager::InitVertexDeclarations()
+void AnimationManager::initVertexDeclarations()
 {
 	D3DVERTEXELEMENT9 layoutStatic[] =
 	{
@@ -2436,26 +2436,26 @@ void AnimationManager::InitVertexDeclarations()
 	m_pd3dDevice->CreateVertexDeclaration(layoutDynamicEx, &pVertexDeclaration[MVT_DYNAMIC_EX]);
 }
 
-void AnimationManager::SetVertexDeclaration(MODEL_VERTEX_TYPE nDecl)
+void AnimationManager::setVertexDeclaration(MODEL_VERTEX_TYPE nDecl)
 {
 	if(nDecl >= MVT_SIZE)
 	{
-		reportf(REPORT_MSG_LEVEL_ERROR, "Unknown vertex declaration %d in AnimationManager::SetVertexDeclaration()\n", nDecl);
+		reportf(REPORT_MSG_LEVEL_ERROR, "Unknown vertex declaration %d in AnimationManager::setVertexDeclaration()\n", nDecl);
 		return;
 	}
 	m_pd3dDevice->SetVertexDeclaration(pVertexDeclaration[nDecl]);
 }
 
-UINT AnimationManager::Register(Animation * pAnim)
+UINT AnimationManager::reg(Animation * pAnim)
 {
 	m_pAnimatedList.push_back(pAnim);
 	return(m_pAnimatedList.size() - 1);
 }
-void AnimationManager::UnRegister(UINT id)
+void AnimationManager::unreg(UINT id)
 {
 	m_pAnimatedList.erase(id);
 }
-void AnimationManager::Render(ID for_id)
+void AnimationManager::render(ID for_id)
 {
 #ifndef _SERVER
 	Animation * pAnim;
@@ -2464,12 +2464,12 @@ void AnimationManager::Render(ID for_id)
 		pAnim = m_pAnimatedList[i];
 		if(for_id < 0 || pAnim->m_vIsVisibleFor[for_id])
 		{
-			pAnim->Render();
+			pAnim->render();
 		}
 	}
 #endif
 }
-void AnimationManager::Update(int thread)
+void AnimationManager::update(int thread)
 {
 	if(thread >= m_iThreadNum)
 	{
@@ -2478,11 +2478,11 @@ void AnimationManager::Update(int thread)
 	}
 	for(uint32_t i = thread, l = m_pAnimatedList.size(); i < l; i += m_iThreadNum)
 	{
-		m_pAnimatedList[i]->Advance(GetTickCount());
+		m_pAnimatedList[i]->advance(GetTickCount());
 	}
 }
 
-void AnimationManager::Sync()
+void AnimationManager::sync()
 {
 	for(uint32_t i = 0, l = m_pAnimatedList.size(); i < l; ++i)
 	{
@@ -2490,14 +2490,14 @@ void AnimationManager::Sync()
 	}
 }
 
-UINT AnimationManager::GetMaterial(const char * mat, bool bStatic)
+UINT AnimationManager::getMaterial(const char * mat, bool bStatic)
 {
 	char * tmp = (char*)alloca(sizeof(char)* (strlen(mat) + 5));
 	sprintf(tmp, "%s.dds", mat);
 	return(SGCore_MtlLoad(tmp, bStatic ? MTL_TYPE_GEOM : MTL_TYPE_SKIN));
 }
 
-void AnimationManager::ComputeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr)
+void AnimationManager::computeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr)
 {
 	float3 jcenter;
 	float3 jradius;
@@ -2508,9 +2508,9 @@ void AnimationManager::ComputeVis(const ISXFrustum * frustum, const float3 * vie
 	for(uint32_t i = 0, l = m_pAnimatedList.size(); i < l; ++i)
 	{
 		pAnim = m_pAnimatedList[i];
-		pAnim->GetBound()->GetSphere(&jcenter, &jradius.x);
+		pAnim->getBound()->GetSphere(&jcenter, &jradius.x);
 
-		m = pAnim->GetWorldTM();
+		m = pAnim->getWorldTM();
 		m._11 = SMVector3Length(float3(m._11, m._21, m._31));
 		m._22 = SMVector3Length(float3(m._12, m._22, m._32));
 		m._33 = SMVector3Length(float3(m._13, m._23, m._33));
@@ -2523,7 +2523,7 @@ void AnimationManager::ComputeVis(const ISXFrustum * frustum, const float3 * vie
 	}
 }
 
-ID AnimationManager::GetNextVisId()
+ID AnimationManager::getNextVisId()
 {
 	if(m_vFreeVisIDs.size() > 0)
 	{
@@ -2534,7 +2534,7 @@ ID AnimationManager::GetNextVisId()
 	return(++m_iVisID);
 }
 
-void AnimationManager::FreeVisID(ID id)
+void AnimationManager::freeVisID(ID id)
 {
 	if(id <= m_iVisID)
 	{
@@ -2543,7 +2543,7 @@ void AnimationManager::FreeVisID(ID id)
 }
 
 
-void AnimationManager::SetThreadNum(int num)
+void AnimationManager::setThreadNum(int num)
 {
 	m_iThreadNum = num;
 }
\ No newline at end of file
diff --git a/source/anim/animated.h b/source/anim/animated.h
index 1e836d0c5c6f885ce49fe5af5e36a88a7703690f..16c0f3b787c456bd25ef5bf92b9a27971d9dd4e8 100644
--- a/source/anim/animated.h
+++ b/source/anim/animated.h
@@ -39,7 +39,7 @@ public:
 
 	bool Save(const char * name);
 #ifndef _SERVER
-	void Render(SMMATRIX * mWorld, UINT nSkin, UINT nLod=0, ID idOverrideMaterial=-1);
+	void render(SMMATRIX * mWorld, UINT nSkin, UINT nLod=0, ID idOverrideMaterial=-1);
 #endif
 
 	void BuildMeshBuffers();
@@ -47,27 +47,27 @@ public:
 	const ModelSequence * GetSequence(UINT id) const;
 	const ModelSequence * GetSequence(const char * name) const;
 	const ModelBoneController * GetController(UINT id) const;
-	UINT GetBoneCount() const;
+	UINT getBoneCount() const;
 	UINT GetSequenceCount() const;
 	UINT GetControllersCount() const;
 
 	UINT GetBoneID(const char * name);
-	void GetBoneName(UINT id, char * name, int len) const;
+	void getBoneName(UINT id, char * name, int len) const;
 
 	ModelMatrial ** m_iMaterials;
 	ModelLoD * m_pLods;
 	//SkyXEngine::Graphics::ThreeD::Bound BoundVol;
 
-	const ModelHitbox * GetHitbox(const char * name) const;
-	const ModelHitbox * GetHitbox(uint32_t id) const;
-	uint32_t GetHitboxCount() const;
+	const ModelHitbox * getHitbox(const char * name) const;
+	const ModelHitbox * getHitbox(uint32_t id) const;
+	uint32_t getHitboxCount() const;
 	void AddHitbox(const ModelHitbox * hb);
 	void DelHitbox(const char * name);
 	void DelHitbox(uint32_t id);
 
 	void LoadParts();
 
-	const ISXBound * GetBound() const;
+	const ISXBound * getBound() const;
 	
 protected:
 
@@ -127,89 +127,89 @@ public:
 
 	SX_ALIGNED_OP_MEM
 
-	void Advance(unsigned long int dt);
+	void advance(unsigned long int dt);
 
 #ifndef _SERVER
-	void Render();
+	void render();
 #endif
 
-	void SetModel(const char * file);
+	void setModel(const char * file);
 
-	void Play(const char * name, UINT iFadeTime = 0, UINT slot = 0, bool bReplaceActivity = true); // name: Animation name; changeTime: time to fade to this animation from previous
-	void Stop(UINT slot = 0);
-	void Resume(UINT slot = 0);
+	void play(const char * name, UINT iFadeTime = 0, UINT slot = 0, bool bReplaceActivity = true); // name: Animation name; changeTime: time to fade to this animation from previous
+	void stop(UINT slot = 0);
+	void resume(UINT slot = 0);
 
-	void SetProgress(float progress, UINT slot = 0);
-	void SetAdvance(bool set, UINT slot = 0);
+	void setProgress(float progress, UINT slot = 0);
+	void setAdvance(bool set, UINT slot = 0);
 
-	void StartActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0);
+	void startActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0);
 
-	void SetBoneController(const String & name, float value, MODEL_BONE_CTL what);
+	void setBoneController(const String & name, float value, MODEL_BONE_CTL what);
 
-	SMMATRIX GetBoneTransform(UINT id);
-	float3 GetBoneTransformPos(UINT id);
-	SMQuaternion GetBoneTransformRot(UINT id);
-	UINT GetBone(const char * str);
-	UINT GetBoneCount() const;
-	void GetBoneName(UINT id, char * name, int len) const;
+	SMMATRIX getBoneTransform(UINT id);
+	float3 getBoneTransformPos(UINT id);
+	SMQuaternion getBoneTransformRot(UINT id);
+	UINT getBone(const char * str);
+	UINT getBoneCount() const;
+	void getBoneName(UINT id, char * name, int len) const;
 
-	inline bool PlayingAnimations();
-	inline bool PlayingAnimations(const char* name);
-	void StopAll();
+	inline bool playingAnimations();
+	inline bool playingAnimations(const char* name);
+	void stopAll();
 
 
-	int GetActiveSkin();
-	void SetSkin(int n);
+	int getActiveSkin();
+	void setSkin(int n);
 
-	void SetPos(const float3 & pos);
-	float3 GetPos();
+	void setPos(const float3 & pos);
+	float3 getPos();
 
-	void SetOrient(const SMQuaternion & pos);
-	SMQuaternion GetOrient();
+	void setOrient(const SMQuaternion & pos);
+	SMQuaternion getOrient();
 
 
-	SMMATRIX GetWorldTM();
+	SMMATRIX getWorldTM();
 
-	AnimStateCB SetCallback(AnimStateCB cb);
-	AnimProgressCB SetProgressCB(AnimProgressCB cb);
+	AnimStateCB setCallback(AnimStateCB cb);
+	AnimProgressCB setProgressCB(AnimProgressCB cb);
 
-	ModelSequence const * GetCurAnim(int slot);
+	ModelSequence const * getCurAnim(int slot);
 
 	ModelFile * m_pMdl;
 
 	void SyncAnims();
 
-	const ModelFile * AddModel(const char * mdl, UINT flags = MI_ALL, char * name = "No name");
-	void AddModel(const ModelFile * mdl, UINT flags = MI_ALL, char * name="No name");
-	int AddModel(ModelPart * mp);
-	void DelModel(ModelPart * mp);
-	void Assembly();
+	const ModelFile * addModel(const char * mdl, UINT flags = MI_ALL, char * name = "No name");
+	void addModel(const ModelFile * mdl, UINT flags = MI_ALL, char * name="No name");
+	int addModel(ModelPart * mp);
+	void delModel(ModelPart * mp);
+	void assembly();
 	ModelPart * GetPart(UINT idx);
 	UINT GetPartCount();
 
-	const ISXBound * GetBound() const;
+	const ISXBound * getBound() const;
 
 	void SwapBoneBuffs();
 
 	void Release();
 
-	void SetScale(float fScale)
+	void setScale(float fScale)
 	{
 		m_fScale = fScale;
 	}
 
-	float GetScale()
+	float getScale()
 	{
 		return(m_fScale);
 	}
 
-	void GetPhysData(
+	void getPhysData(
 		int32_t * piShapeCount,
 		HITBOX_TYPE ** phTypes,
 		float3_t *** pppfData,
 		int32_t ** ppfDataLen);
 
-	void FreePhysData(
+	void freePhysData(
 		int32_t iShapeCount,
 		HITBOX_TYPE * hTypes,
 		float3_t ** ppfData,
@@ -217,8 +217,8 @@ public:
 
 	void RenderSkeleton(int hlBone=-1);
 
-	virtual const ModelHitbox * GetHitbox(uint32_t id) const;
-	virtual uint32_t GetHitboxCount() const;
+	virtual const ModelHitbox * getHitbox(uint32_t id) const;
+	virtual uint32_t getHitboxCount() const;
 
 	virtual void setOverrideMaterial(const char *name);
 	virtual void enable(bool enable);
@@ -314,32 +314,32 @@ class AnimationManager
 public:
 	AnimationManager(IDirect3DDevice9 * dev);
 	~AnimationManager();
-	const ModelFile * LoadModel(const char * name, bool newInst = false);
-	void UnloadModel(const ModelFile * mdl);
+	const ModelFile * loadModel(const char * name, bool newInst = false);
+	void unloadModel(const ModelFile * mdl);
 
-	UINT Register(Animation * pAnim);
-	void UnRegister(UINT id);
+	UINT reg(Animation * pAnim);
+	void unreg(UINT id);
 
-	void Render(ID for_id=-1);
-	void Update(int thread = 0);
-	void Sync();
+	void render(ID for_id=-1);
+	void update(int thread = 0);
+	void sync();
 
-	void SetVertexDeclaration(MODEL_VERTEX_TYPE nDecl);
+	void setVertexDeclaration(MODEL_VERTEX_TYPE nDecl);
 
-	UINT GetMaterial(const char * mat, bool bStatic = false);
+	UINT getMaterial(const char * mat, bool bStatic = false);
 
-	void ComputeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr);
+	void computeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr);
 
-	ID GetNextVisId();
-	void FreeVisID(ID id);
+	ID getNextVisId();
+	void freeVisID(ID id);
 
-	void SetThreadNum(int num);
+	void setThreadNum(int num);
 
 protected:
 	friend class ModelFile;
 	friend class Animation;
 	AssotiativeArray<String, ModelFile*> m_pModels;
-	void InitVertexDeclarations();
+	void initVertexDeclarations();
 
 	IDirect3DVertexDeclaration9 * pVertexDeclaration[MVT_SIZE];
 
diff --git a/source/anim/sxanim.h b/source/anim/sxanim.h
index f5341d9e305eb90c1c8617a4feed5b28a5a4c086..69a0422abecb6950fa9adf5b4240e6809ca25c25 100644
--- a/source/anim/sxanim.h
+++ b/source/anim/sxanim.h
@@ -92,47 +92,47 @@ public:
 	/*! Выполняет обновление состояния воспроизведения анимации
 		@param[in] dt Текущее абсолютное время в микросекундах
 	*/
-	virtual void Advance(unsigned long int dt) = 0;
+	virtual void advance(unsigned long int dt) = 0;
 
 #ifndef _SERVER
 	//! Выполняет отрисовку модели
-	virtual void Render() = 0;
+	virtual void render() = 0;
 #endif
 
 	/*! Загружает новую модель для воспроизведения
 		@param[in] file Имя файла модели
 	*/
-	virtual void SetModel(const char * file) = 0;
+	virtual void setModel(const char * file) = 0;
 
 	/*! Запускает воспроизведения анимации
 		@param[in] name Имя анимации
 		@param[in] iFadeTime Время перехода от предыдущей анимации к новой в ms
 		@param[in] slot Слот для воспроизведения. От 0 до BLEND_MAX
 	*/
-	virtual void Play(const char * name, UINT iFadeTime = 0, UINT slot = 0, bool bReplaceActivity=true) = 0;
+	virtual void play(const char * name, UINT iFadeTime = 0, UINT slot = 0, bool bReplaceActivity=true) = 0;
 
 	/*! Останавливает воспроизведения для указанного слота
 		@param[in] slot Слот для остановки. От 0 до BLEND_MAX
 	*/
-	virtual void Stop(UINT slot = 0) = 0;
+	virtual void stop(UINT slot = 0) = 0;
 
 	/*! Возобновляет воспроизведения для указанного слота
 		@param[in] slot Слот для возобновления. От 0 до BLEND_MAX
 	*/
-	virtual void Resume(UINT slot = 0) = 0;
+	virtual void resume(UINT slot = 0) = 0;
 
 	/*! Устанавливает прогресс воспроизведения в конкретном слоте
 		@warning Если в конкретном слоте не происходит воспроизведения, не будет эффекта
 		@param[in] progress Значение прогресса. От 0 до 1
 		@param[in] slot Слот. От 0 до BLEND_MAX
 	*/
-	virtual void SetProgress(float progress, UINT slot = 0) = 0;
+	virtual void setProgress(float progress, UINT slot = 0) = 0;
 
 	/*! Разрешает/запрещает обновление конкретного слота
 		@param[in] set разрешить/запретить
 		@param[in] slot Слот. От 0 до BLEND_MAX
 	*/
-	virtual void SetAdvance(bool set, UINT slot = 0) = 0;
+	virtual void setAdvance(bool set, UINT slot = 0) = 0;
 
 	/*! Запускает воспроизведение указанной активности в заданном слоте
 		@param[in] name Имя анимации
@@ -141,7 +141,7 @@ public:
 
 		@warning В данный момент не работат
 	*/
-	virtual void StartActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0) = 0;
+	virtual void startActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0) = 0;
 
 	/*! Устанавливает значение для заданного контроллера
 		@param[in] name Имя контроллера
@@ -150,103 +150,103 @@ public:
 
 		@warning В данный момент не работат
 	*/
-	virtual void SetBoneController(const String & name, float value, MODEL_BONE_CTL what) = 0;
+	virtual void setBoneController(const String & name, float value, MODEL_BONE_CTL what) = 0;
 
 	/*! Возвращает смещение указанной кости
 		@param[in] id Номер кости
 		@return Смещение кости
 	*/
-	virtual float3 GetBoneTransformPos(UINT id) = 0;
+	virtual float3 getBoneTransformPos(UINT id) = 0;
 
 	/*! Возвращает вращение указанной кости
 		@param[in] id Номер кости
 		@return Вращение кости
 	*/
-	virtual SMQuaternion GetBoneTransformRot(UINT id) = 0;
+	virtual SMQuaternion getBoneTransformRot(UINT id) = 0;
 
 	/*! Возвращает трансформацию указанной кости
 		@param[in] id Номер кости
 		@return Матрица трансформации кости
 	*/
-	virtual SMMATRIX GetBoneTransform(UINT id) = 0;
+	virtual SMMATRIX getBoneTransform(UINT id) = 0;
 
 	/*! Возвращает идентификатор указанной кости
 		@param[in] str Имя кости
 		@return Номер кости
 	*/
-	virtual UINT GetBone(const char * str) = 0;
+	virtual UINT getBone(const char * str) = 0;
 
 	/*! Возвращает количество костей
 		@return Количество костей
 	*/
-	virtual UINT GetBoneCount() const = 0;
+	virtual UINT getBoneCount() const = 0;
 
 	/*! Возвращает имя указанной кости
 		@param[in] id Номер кости
 		@param[out] name Буфер для записи имени
 		@param[out] len Размер буфера для записи
 	*/
-	virtual void GetBoneName(UINT id, char * name, int len) const = 0;
+	virtual void getBoneName(UINT id, char * name, int len) const = 0;
 
 	/*! Проверяет, воспроизводится ли анимация
 	*/
-	virtual inline bool PlayingAnimations() = 0;
+	virtual inline bool playingAnimations() = 0;
 
 	/*! Проверяет, воспроизводится ли анимация
 		@param[in] name Имя анимации
 	*/
-	virtual inline bool PlayingAnimations(const char* name) = 0;
+	virtual inline bool playingAnimations(const char* name) = 0;
 
 	/*! Останавливает воспроизведение всех анимаций
 	*/
-	virtual void StopAll() = 0;
+	virtual void stopAll() = 0;
 
 	/*! Возвращает номер текущего скина
 	*/
-	virtual int GetActiveSkin() = 0;
+	virtual int getActiveSkin() = 0;
 
 	/*! Устанавливает активный скин
 		@param[in] n Номер скина
 	*/
-	virtual void SetSkin(int n) = 0;
+	virtual void setSkin(int n) = 0;
 
 	/*! Устанавливает мировую позицию модели
 		@param[in] pos позиция
 	*/
-	virtual void SetPos(const float3 & pos) = 0;
+	virtual void setPos(const float3 & pos) = 0;
 
 	/*! Возвращает мировую позицию модели
 	*/
-	virtual float3 GetPos() = 0;
+	virtual float3 getPos() = 0;
 
 	/*! Устанавливает вращение модели
 		@param[in] pos позиция
 	*/
-	virtual void SetOrient(const SMQuaternion & pos) = 0;
+	virtual void setOrient(const SMQuaternion & pos) = 0;
 
 	/*! Возвращает вращение модели
 	*/
-	virtual SMQuaternion GetOrient() = 0;
+	virtual SMQuaternion getOrient() = 0;
 
 	/*! Получает мировую матрицу модели
 	*/
-	virtual SMMATRIX GetWorldTM() = 0;
+	virtual SMMATRIX getWorldTM() = 0;
 
 	/*! Устанавливает коллбэк на изменение состояния объекта
 	*/
-	virtual AnimStateCB SetCallback(AnimStateCB cb) = 0;
+	virtual AnimStateCB setCallback(AnimStateCB cb) = 0;
 
 	/*! Устанавливает коллбэк на изменение состояния воспроизведения
 	*/
-	virtual AnimProgressCB SetProgressCB(AnimProgressCB cb) = 0;
+	virtual AnimProgressCB setProgressCB(AnimProgressCB cb) = 0;
 
 	/*! Получает текущую воспроизводимую анимацию в слоте
 	*/
-	virtual ModelSequence const * GetCurAnim(int slot) = 0;
+	virtual ModelSequence const * getCurAnim(int slot) = 0;
 
 	/*! Получает ограничивающий объем модели
 	*/
-	virtual const ISXBound * GetBound() const = 0;
+	virtual const ISXBound * getBound() const = 0;
 
 	/*! Уничтожает объект
 	*/
@@ -254,17 +254,17 @@ public:
 
 	/*! Устанавливает масштаб
 	*/
-	virtual void SetScale(float fScale) = 0;
-	virtual float GetScale() = 0;
+	virtual void setScale(float fScale) = 0;
+	virtual float getScale() = 0;
 
-	virtual void GetPhysData(
+	virtual void getPhysData(
 		int32_t * piShapeCount,
 		HITBOX_TYPE ** phTypes,
 		float3_t *** pppfData,
 		int32_t ** ppfDataLen
 		) = 0;
 
-	virtual void FreePhysData(
+	virtual void freePhysData(
 		int32_t iShapeCount,
 		HITBOX_TYPE * hTypes,
 		float3_t ** ppfData,
@@ -272,14 +272,14 @@ public:
 		) = 0;
 
 
-	virtual const ModelFile * AddModel(const char * mdl, UINT flags = MI_ALL, char * name = "No name") = 0;
-	virtual void AddModel(const ModelFile * mdl, UINT flags = MI_ALL, char * name = "No name") = 0;
-	virtual int AddModel(ModelPart * mp) = 0;
-	virtual void DelModel(ModelPart * mp) = 0;
-	virtual void Assembly() = 0;
+	virtual const ModelFile * addModel(const char * mdl, UINT flags = MI_ALL, char * name = "No name") = 0;
+	virtual void addModel(const ModelFile * mdl, UINT flags = MI_ALL, char * name = "No name") = 0;
+	virtual int addModel(ModelPart * mp) = 0;
+	virtual void delModel(ModelPart * mp) = 0;
+	virtual void assembly() = 0;
 
-	virtual const ModelHitbox * GetHitbox(uint32_t id) const = 0;
-	virtual uint32_t GetHitboxCount() const = 0;
+	virtual const ModelHitbox * getHitbox(uint32_t id) const = 0;
+	virtual uint32_t getHitboxCount() const = 0;
 
 	virtual void setOverrideMaterial(const char * name) = 0;
 	virtual void enable(bool enable) = 0;
diff --git a/source/anim/sxanim_dll.cpp b/source/anim/sxanim_dll.cpp
index 2b8f7faa0f47555ea9881a1bf479b9bd0d153042..b519ba7ce514f4f2845faa7b5c80e8d5074ff3dc 100644
--- a/source/anim/sxanim_dll.cpp
+++ b/source/anim/sxanim_dll.cpp
@@ -54,22 +54,22 @@ SX_LIB_API void SXAnim_AKill()
 SX_LIB_API void SXAnim_Update(int thread)
 {
 	SA_PRECOND(_VOID);
-	g_mgr->Update(thread);
+	g_mgr->update(thread);
 }
 SX_LIB_API void SXAnim_UpdateSetThreadNum(int num)
 {
 	SA_PRECOND(_VOID);
-	g_mgr->SetThreadNum(num);
+	g_mgr->setThreadNum(num);
 }
 SX_LIB_API void SXAnim_Sync()
 {
 	SA_PRECOND(_VOID);
-	g_mgr->Sync();
+	g_mgr->sync();
 }
 SX_LIB_API void SXAnim_Render(ID for_id)
 {
 	SA_PRECOND(_VOID);
-	g_mgr->Render(for_id);
+	g_mgr->render(for_id);
 }
 
 SX_LIB_API IAnimPlayer * SXAnim_CreatePlayer(const char * mdl)
@@ -78,7 +78,7 @@ SX_LIB_API IAnimPlayer * SXAnim_CreatePlayer(const char * mdl)
 	Animation * anim = new Animation(g_mgr);
 	if(mdl)
 	{
-		anim->SetModel(mdl);
+		anim->setModel(mdl);
 	}
 	return(anim);
 }
@@ -86,18 +86,18 @@ SX_LIB_API IAnimPlayer * SXAnim_CreatePlayer(const char * mdl)
 SX_LIB_API void SXAnim_ModelsComVisible(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr)
 {
 	SA_PRECOND(_VOID);
-	g_mgr->ComputeVis(frustum, viewpos, id_arr);
+	g_mgr->computeVis(frustum, viewpos, id_arr);
 }
 
 SX_LIB_API ID SXAnim_ModelsAddArrForCom()
 {
 	SA_PRECOND(-1);
-	return(g_mgr->GetNextVisId());
+	return(g_mgr->getNextVisId());
 }
 SX_LIB_API void SXAnim_ModelsDelArrForCom(ID id_arr)
 {
 	SA_PRECOND(_VOID);
-	g_mgr->FreeVisID(id_arr);
+	g_mgr->freeVisID(id_arr);
 }
 
 SX_LIB_API void SXAnim_Dbg_Set(report_func rf)
diff --git a/source/common b/source/common
index 358f676071d7a332e43f43870e461e3882dab5fb..6d30eb4c6e806568c952dffbd90d3ae59ff01a43 160000
--- a/source/common
+++ b/source/common
@@ -1 +1 @@
-Subproject commit 358f676071d7a332e43f43870e461e3882dab5fb
+Subproject commit 6d30eb4c6e806568c952dffbd90d3ae59ff01a43
diff --git a/source/core/Config.cpp b/source/core/Config.cpp
index 481308860a16ea285ece0ee2b4ea656bc7195180..8760167988eb469a18636543ca0fbd848e46a863 100644
--- a/source/core/Config.cpp
+++ b/source/core/Config.cpp
@@ -90,7 +90,8 @@ int CConfig::parse(const char* file)
 
 	char c;
 	char cn = 0;
-	while(!feof(fp))
+	bool isRunning = true;
+	while(isRunning)
 	{
 		if(cn)
 		{
@@ -100,6 +101,11 @@ int CConfig::parse(const char* file)
 		else
 		{
 			c = fgetc(fp);
+			if(feof(fp))
+			{
+				c = '\n';
+				isRunning = false;
+			}
 		}
 		if(bSectionNameDone)
 		{
diff --git a/source/decals/DecalManager.cpp b/source/decals/DecalManager.cpp
index 588111e633186743682d1e61fc4c575ca3e6802b..6d9c91b04fcdb04db6ded0424c92ad665bd1bb83 100644
--- a/source/decals/DecalManager.cpp
+++ b/source/decals/DecalManager.cpp
@@ -92,19 +92,19 @@ DecalManager::~DecalManager()
 
 }
 
-int DecalManager::AddDecal(Decal * pDecal)
+int DecalManager::addDecal(Decal * pDecal)
 {
 	static const int * MAX_DECALS = GET_PCVAR_INT("r_maxdecals");
 	static const int * DECAL_MAX_OVERLAPPED = GET_PCVAR_INT("r_max_overlapped_decals");
 	int numdecal = 0;
-	//printf("AddDecal(); bgn; c = %d\n", m_vDecals.size());
+	//printf("addDecal(); bgn; c = %d\n", m_vDecals.size());
 	if(m_vDecals.size() >= (UINT)*MAX_DECALS)
 	{
 		for(UINT i = 0, l = m_vDecals.size(); i < l; ++i)
 		{
 			if(!(m_vDecals[i]->m_flags & DECAL_PERMANENT))
 			{
-				RemoveDecal(i);
+				removeDecal(i);
 				break;
 			}
 		}
@@ -112,7 +112,7 @@ int DecalManager::AddDecal(Decal * pDecal)
 
 	numdecal = m_vDecals.size();
 	m_vDecals.push_back(pDecal);
-	//ArrPerSound[numdecal]->Render();
+	//ArrPerSound[numdecal]->render();
 	static UINT iDecalId = 0;
 	_DecalMatItem dmi;
 	dmi.m_pDecal = pDecal;
@@ -131,22 +131,22 @@ int DecalManager::AddDecal(Decal * pDecal)
 			iOverlappedCount++;
 			if(iOverlappedCount > (UINT)*DECAL_MAX_OVERLAPPED)
 			{
-				//printf("AddDecal(); rmv\n");
-				RemoveDecal(iFirstOverlpd);
+				//printf("addDecal(); rmv\n");
+				removeDecal(iFirstOverlpd);
 				break;
 			}
 		}
 	}
 	//pDecal->iMatSortId = m_MaterialSort[pDecal->m_material].size();
 	m_MaterialSort[pDecal->m_material].push_back(dmi);
-	//printf("AddDecal(); end; c = %d\n", m_vDecals.size());
+	//printf("addDecal(); end; c = %d\n", m_vDecals.size());
 	m_bNeedUpdate = true;
 	return numdecal;
 }
 
-void DecalManager::RemoveDecal(UINT iDecal)
+void DecalManager::removeDecal(UINT iDecal)
 {
-	//printf("RemoveDecal(); bgn; c = %d\n", m_vDecals.size());
+	//printf("removeDecal(); bgn; c = %d\n", m_vDecals.size());
 	if(iDecal >= m_vDecals.size())
 	{
 		return;
@@ -164,10 +164,10 @@ void DecalManager::RemoveDecal(UINT iDecal)
 	m_aDecals.Delete(m_vDecals[iDecal]);
 	m_vDecals.erase(iDecal);
 	m_bNeedUpdate = true;
-	//printf("RemoveDecal(); end; c = %d\n", m_vDecals.size());
+	//printf("removeDecal(); end; c = %d\n", m_vDecals.size());
 }
 
-bool DecalManager::Inside(const float3_t * p, char axis, float coord)
+bool DecalManager::inside(const float3_t * p, char axis, float coord)
 {
 	switch(axis)
 	{
@@ -179,7 +179,7 @@ bool DecalManager::Inside(const float3_t * p, char axis, float coord)
 	return(false);
 }
 
-void DecalManager::Intersect(const float3_t * one, const float3_t * two, float3_t * out, char axis, float coord)
+void DecalManager::intersect(const float3_t * one, const float3_t * two, float3_t * out, char axis, float coord)
 {
 	float t;
 	switch(axis)
@@ -195,7 +195,7 @@ void DecalManager::Intersect(const float3_t * one, const float3_t * two, float3_
 	*out = (float3)SMVectorLerp(*two, *one, t);
 }
 
-void DecalManager::Clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVerts, char axis, float coord)
+void DecalManager::clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVerts, char axis, float coord)
 {
 	OutVerts.clear();
 	if(!InVerts.size())
@@ -214,16 +214,16 @@ void DecalManager::Clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVe
 	for(j = 0; j < vertCount; j++)
 	{
 		p = &InVerts[j];
-		if(Inside(p, axis, coord))
+		if(inside(p, axis, coord))
 		{
-			if(Inside(s, axis, coord))
+			if(inside(s, axis, coord))
 			{
 				OutVerts.push_back(*p);
 				outCount++;
 			}
 			else
 			{
-				Intersect(s, p, &out, axis, coord);
+				intersect(s, p, &out, axis, coord);
 				OutVerts.push_back(out);
 				outCount++;
 
@@ -233,9 +233,9 @@ void DecalManager::Clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVe
 		}
 		else
 		{
-			if(Inside(s, axis, coord))
+			if(inside(s, axis, coord))
 			{
-				Intersect(p, s, &out, axis, coord);
+				intersect(p, s, &out, axis, coord);
 				OutVerts.push_back(out);
 				outCount++;
 			}
@@ -246,7 +246,7 @@ void DecalManager::Clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVe
 	//return outCount;
 }
 
-const DecalType * DecalManager::GetDecalType(DECAL_TYPE type)
+const DecalType * DecalManager::getDecalType(DECAL_TYPE type)
 {
 	if(type < 0 || type >= DECAL_TYPE_LAST)
 	{
@@ -256,7 +256,7 @@ const DecalType * DecalManager::GetDecalType(DECAL_TYPE type)
 	return(&m_DecalTypes[type]);
 }
 
-void DecalManager::ShootDecal(DECAL_TYPE type, const float3 & position, ID iMaterial, int iEnt, const float3 * saxis, float scale, int flags, const float3 * _normal)
+void DecalManager::shootDecal(DECAL_TYPE type, const float3 & position, ID iMaterial, int iEnt, const float3 * saxis, float scale, int flags, const float3 * _normal)
 {
 	// g_dbgDraw.clear();
 	//m_dbgRender.push_back(position);
@@ -303,7 +303,7 @@ void DecalManager::ShootDecal(DECAL_TYPE type, const float3 & position, ID iMate
 	}
 	else
 	{
-		dt = GetDecalType(type);
+		dt = getDecalType(type);
 		if(!dt)
 		{
 			return;
@@ -475,7 +475,7 @@ void DecalManager::ShootDecal(DECAL_TYPE type, const float3 & position, ID iMate
 							}
 						}
 
-						ComputeBasis(n, (di.m_Flags & DECAL_USESAXIS) ? &(float3)di.m_SAxis : NULL, tsBasis);
+						computeBasis(n, (di.m_Flags & DECAL_USESAXIS) ? &(float3)di.m_SAxis : NULL, tsBasis);
 
 						mBasis.r[0] = float4(float3(tsBasis[0]), 0.0f);
 						mBasis.r[1] = float4(float3(tsBasis[1]), 0.0f);
@@ -497,10 +497,10 @@ void DecalManager::ShootDecal(DECAL_TYPE type, const float3 & position, ID iMate
 						float nn = vClippedVerts[0].z + 0.002f;
 
 						//Clip decal by triangle in {S, T} plane
-						Clip(vClippedVerts, vClippedVerts2, 's', sBound.y);
-						Clip(vClippedVerts2, vClippedVerts, 's', sBound.x);
-						Clip(vClippedVerts, vClippedVerts2, 't', tBound.y);
-						Clip(vClippedVerts2, vClippedVerts, 't', tBound.x);
+						clip(vClippedVerts, vClippedVerts2, 's', sBound.y);
+						clip(vClippedVerts2, vClippedVerts, 's', sBound.x);
+						clip(vClippedVerts, vClippedVerts2, 't', tBound.y);
+						clip(vClippedVerts2, vClippedVerts, 't', tBound.x);
 
 						/*for(int ijk = 0; ijk < 3; ijk++)
 						{
@@ -550,11 +550,11 @@ void DecalManager::ShootDecal(DECAL_TYPE type, const float3 & position, ID iMate
 		decal->m_pVerts = new DecalVertex[decal->iVertCount];
 		memcpy(decal->m_pVerts, &vDecalVerts[0], sizeof(DecalVertex) * vDecalVerts.size());
 
-		int numdecal = AddDecal(decal);
+		int numdecal = addDecal(decal);
 	}
 }
 
-void DecalManager::Render()
+void DecalManager::render()
 {
 	/*for(int i = 0, l = g_dbgDraw.size(); i < l; i += 3)
 	{
@@ -562,7 +562,7 @@ void DecalManager::Render()
 	}
 	SXPhysics_GetDynWorld()->getDebugDrawer()->drawSphere(F3_BTVEC(spherePos), spherePos.w, btVector3(1, 1, 1));
 	*/
-	UpdateBuffer();
+	updateBuffer();
 
 	if(!m_pVertexBuffer)
 	{
@@ -603,7 +603,7 @@ void DecalManager::Render()
 	dev->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
 }
 
-void DecalManager::UpdateBuffer()
+void DecalManager::updateBuffer()
 {
 	if(!m_bNeedUpdate)
 	{
@@ -669,12 +669,12 @@ void DecalManager::UpdateBuffer()
 }
 
 
-void DecalManager::Update()
+void DecalManager::update()
 {
 	//empty
 }
 
-void DecalManager::Sync()
+void DecalManager::sync()
 {
 	//empty
 }
diff --git a/source/decals/DecalManager.h b/source/decals/DecalManager.h
index 0354d3bc425ec06c6eb40afed335e89eed9706d0..3944f24be931de1f7293e802e515bf4d115f1be0 100644
--- a/source/decals/DecalManager.h
+++ b/source/decals/DecalManager.h
@@ -118,25 +118,25 @@ public:
 	DecalManager();
 	~DecalManager();
 
-	int AddDecal(Decal * pDecal);
+	int addDecal(Decal * pDecal);
 
-	void RemoveDecal(UINT iDecal);
+	void removeDecal(UINT iDecal);
 
-	const DecalType * GetDecalType(DECAL_TYPE type);
+	const DecalType * getDecalType(DECAL_TYPE type);
 
-	bool Inside(const float3_t * p, char axis, float coord);
+	bool inside(const float3_t * p, char axis, float coord);
 
-	void Render();
+	void render();
 
-	void Update();
-	void Sync();
+	void update();
+	void sync();
 
-	void Intersect(const float3_t * one, const float3_t * two, float3_t * out, char axis, float coord);
+	void intersect(const float3_t * one, const float3_t * two, float3_t * out, char axis, float coord);
 
 
-	void Clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVerts, char axis, float coord);
+	void clip(const Array<float3_t> & InVerts, Array<float3_t> & OutVerts, char axis, float coord);
 
-	void ComputeBasis(float3 const & surfaceNormal, float3 const * pSAxis, float3 * textureSpaceBasis)
+	void computeBasis(float3 const & surfaceNormal, float3 const * pSAxis, float3 * textureSpaceBasis)
 	{
 		// s, t, textureSpaceNormal (T cross S = textureSpaceNormal(N))
 		//   N     
@@ -204,9 +204,9 @@ public:
 		textureSpaceBasis[1] = SMVector3Normalize(textureSpaceBasis[1]);
 	}
 
-	void UpdateBuffer();
+	void updateBuffer();
 
-	void ShootDecal(DECAL_TYPE type, const float3 & position, ID iMaterial = -1, int iEnt = 0, const float3 * saxis = NULL, float scale = 1.0f, int flags = 0, const float3 * normal = NULL);
+	void shootDecal(DECAL_TYPE type, const float3 & position, ID iMaterial = -1, int iEnt = 0, const float3 * saxis = NULL, float scale = 1.0f, int flags = 0, const float3 * normal = NULL);
 };
 
 #endif
diff --git a/source/decals/sxdecals_dll.cpp b/source/decals/sxdecals_dll.cpp
index 77ee8f539131a59b4fe64a104fd67ed9e38f66dc..2b077d2f2abf6b0c3e73244e2ad8581ad7878906 100644
--- a/source/decals/sxdecals_dll.cpp
+++ b/source/decals/sxdecals_dll.cpp
@@ -67,13 +67,13 @@ SX_LIB_API void SXDecals_AKill()
 SX_LIB_API void SXDecals_Update()
 {
 	SP_PRECOND(_VOID);
-	g_pMgr->Update();
+	g_pMgr->update();
 }
 
 SX_LIB_API void SXDecals_Sync()
 {
 	SP_PRECOND(_VOID);
-	g_pMgr->Sync();
+	g_pMgr->sync();
 }
 
 SX_LIB_API void SXDecals_Dbg_Set(report_func rf)
@@ -84,7 +84,7 @@ SX_LIB_API void SXDecals_Dbg_Set(report_func rf)
 SX_LIB_API void SXDecals_Render()
 {
 	SP_PRECOND(_VOID);
-	g_pMgr->Render();
+	g_pMgr->render();
 }
 
 SX_LIB_API void SXDecals_ShootDecal(DECAL_TYPE type, const float3 & fWorldPos, const float3 & normal)
@@ -95,11 +95,11 @@ SX_LIB_API void SXDecals_ShootDecal(DECAL_TYPE type, const float3 & fWorldPos, c
 		reportf(REPORT_MSG_LEVEL_WARNING, "Unable to use DECAL_TYPE_CUSTOM with SXDecals_ShootDecal\n");
 		return;
 	}
-	g_pMgr->ShootDecal(type, fWorldPos, 0, 0, 0, 1.0f, 0, &normal);
+	g_pMgr->shootDecal(type, fWorldPos, 0, 0, 0, 1.0f, 0, &normal);
 }
 
 SX_LIB_API void SXDecals_ShootDecalEx(DECAL_TYPE type, const float3 & fWorldPos, const float3 & normal, int flags, ID material, float fScale, const float3 * saxis)
 {
 	SP_PRECOND(_VOID);
-	g_pMgr->ShootDecal(type, fWorldPos, material, 0, saxis, fScale, flags, &normal);
+	g_pMgr->shootDecal(type, fWorldPos, material, 0, saxis, fScale, flags, &normal);
 }
diff --git a/source/editors_utils/axes_helper.cpp b/source/editors_utils/axes_helper.cpp
index 2c9e6427eed31c835a21e4e421e344e2b89d0cef..6618e603524b4e5ef19fc038ae50592afb324251 100644
--- a/source/editors_utils/axes_helper.cpp
+++ b/source/editors_utils/axes_helper.cpp
@@ -60,7 +60,7 @@ const float3 & AxesHelper::GetRotation()
 	return Rotation;
 }
 
-const float3 & AxesHelper::GetScale()
+const float3 & AxesHelper::getScale()
 {
 	return Scale;
 }
diff --git a/source/editors_utils/axes_helper.h b/source/editors_utils/axes_helper.h
index 3deba7abba120c8a2ac2f505101fca5d12f9bca4..7521b323b6b1d315e0cf6c894a114d1537d544a6 100644
--- a/source/editors_utils/axes_helper.h
+++ b/source/editors_utils/axes_helper.h
@@ -63,7 +63,7 @@ public:
 
 	const float3 & GetPosition();
 	const float3 & GetRotation();
-	const float3 & GetScale();
+	const float3 & getScale();
 	const SMQuaternion & GetRotationQ();
 
 	void OnMouseMove(int x, int y);
diff --git a/source/game/SXbaseAmmo.cpp b/source/game/BaseAmmo.cpp
similarity index 81%
rename from source/game/SXbaseAmmo.cpp
rename to source/game/BaseAmmo.cpp
index cc588a00071943f254dcad7100c169c8d3edd79c..49de3f3b78639c53e75dd4c8980d29409150df54 100644
--- a/source/game/SXbaseAmmo.cpp
+++ b/source/game/BaseAmmo.cpp
@@ -1,10 +1,10 @@
-#include "SXbaseAmmo.h"
+#include "BaseAmmo.h"
 
 /*! \skydocent base_ammo
 Базовый класс для патронов
 */
 
-BEGIN_PROPTABLE(SXbaseAmmo)
+BEGIN_PROPTABLE(CBaseAmmo)
 	//! Начальная скорость пули
 	DEFINE_FIELD_FLOAT(m_fStartSpeed, PDFF_NOEDIT | PDFF_NOEXPORT, "start_speed", "", EDITOR_NONE)
 	//! Масса пули, кг
@@ -13,9 +13,9 @@ BEGIN_PROPTABLE(SXbaseAmmo)
 	DEFINE_FIELD_FLOAT(m_fArmorPiercing, PDFF_NOEDIT | PDFF_NOEXPORT, "armor_piercing", "", EDITOR_NONE)
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseAmmo, base_ammo);
+REGISTER_ENTITY_NOLISTING(CBaseAmmo, base_ammo);
 
-SXbaseAmmo::SXbaseAmmo(EntityManager * pMgr):
+CBaseAmmo::CBaseAmmo(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_fStartSpeed(0.0f),
 	m_fBulletMass(0.0f),
diff --git a/source/game/SXbaseAmmo.h b/source/game/BaseAmmo.h
similarity index 80%
rename from source/game/SXbaseAmmo.h
rename to source/game/BaseAmmo.h
index a289b1e683f2b6a71fe4a6996ddb3eee4e0c2b36..1ffa8be98fec833c66d0bef39a6bfc17a53f2bf3 100644
--- a/source/game/SXbaseAmmo.h
+++ b/source/game/BaseAmmo.h
@@ -8,17 +8,17 @@ See the license in LICENSE
 Патроны
 */
 
-#ifndef _SXbaseAmmo_H_
-#define _SXbaseAmmo_H_
+#ifndef _CBaseAmmo_H_
+#define _CBaseAmmo_H_
 
-#include "SXbaseSupply.h"
+#include "BaseSupply.h"
 
 /*! Базовый класс патронов
 \ingroup cbaseitem
 */
-class SXbaseAmmo: public SXbaseSupply
+class CBaseAmmo: public CBaseSupply
 {
-	DECLARE_CLASS(SXbaseAmmo, SXbaseSupply);
+	DECLARE_CLASS(CBaseAmmo, CBaseSupply);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
diff --git a/source/game/SXbaseAmmoBox.cpp b/source/game/BaseAmmoBox.cpp
similarity index 85%
rename from source/game/SXbaseAmmoBox.cpp
rename to source/game/BaseAmmoBox.cpp
index c2da6149e1dc25a4c7e7b9b643610f7c582e8ac2..5be0609c3dd4835a34facc832c6e9cf28d6a0627 100644
--- a/source/game/SXbaseAmmoBox.cpp
+++ b/source/game/BaseAmmoBox.cpp
@@ -1,10 +1,10 @@
-#include "SXbaseAmmoBox.h"
+#include "BaseAmmoBox.h"
 
 /*! \skydocent base_ammobox
 Базовый класс коробки с припасами. При использовании, выдает игроку items_per_use объектов item_class, если внутри содержится достаточно
 */
 
-BEGIN_PROPTABLE(SXbaseAmmoBox)
+BEGIN_PROPTABLE(CBaseAmmoBox)
 	//! Объем коробки в итемах
 	DEFINE_FIELD_INT(m_iMaxItems, PDFF_NOEDIT | PDFF_NOEXPORT, "max_items", "", EDITOR_NONE)
 	//! Текущее количество итемов внутри
@@ -15,9 +15,9 @@ BEGIN_PROPTABLE(SXbaseAmmoBox)
 	DEFINE_FIELD_STRING(m_szAmmoType, PDFF_NOEDIT | PDFF_NOEXPORT, "item_class", "", EDITOR_NONE)
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseAmmoBox, base_ammobox);
+REGISTER_ENTITY_NOLISTING(CBaseAmmoBox, base_ammobox);
 
-SXbaseAmmoBox::SXbaseAmmoBox(EntityManager * pMgr):
+CBaseAmmoBox::CBaseAmmoBox(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_iMaxItems(0),
 	m_iCurItems(0),
diff --git a/source/game/SXbaseAmmoBox.h b/source/game/BaseAmmoBox.h
similarity index 77%
rename from source/game/SXbaseAmmoBox.h
rename to source/game/BaseAmmoBox.h
index f9cc7a682eca76e980437d79e5d4e745217ee903..db3f28fd63a7536c12ed1c0ee6e3a3fedc52bd5f 100644
--- a/source/game/SXbaseAmmoBox.h
+++ b/source/game/BaseAmmoBox.h
@@ -8,20 +8,20 @@ See the license in LICENSE
 Аммобокс
 */
 
-#ifndef _SXbaseAmmoBox_H_
-#define _SXbaseAmmoBox_H_
+#ifndef _CBaseAmmoBox_H_
+#define _CBaseAmmoBox_H_
 
-#include "SXbaseItem.h"
+#include "BaseItem.h"
 
 /*! Аммобокс
 \ingroup cbaseitem
 */
-class SXbaseAmmoBox: public SXbaseItem
+class CBaseAmmoBox: public CBaseItem
 {
-	DECLARE_CLASS(SXbaseAmmoBox, SXbaseItem);
+	DECLARE_CLASS(CBaseAmmoBox, CBaseItem);
 	DECLARE_PROPTABLE();
 public:
-	ThisClass(EntityManager * pMgr);
+	ThisClass(CEntityManager * pMgr);
 
 	int m_iMaxItems; //!< Максимальное количество предметов, которые бокс может выдать
 	int m_iCurItems; //!< Сколько осталось
diff --git a/source/game/SXbaseAnimating.cpp b/source/game/BaseAnimating.cpp
similarity index 53%
rename from source/game/SXbaseAnimating.cpp
rename to source/game/BaseAnimating.cpp
index af7af8fb3ae7d42d722a78542ff853e467e9b0f1..84c15d366bd16de4f1a894a44b6ce9f69a55046a 100644
--- a/source/game/SXbaseAnimating.cpp
+++ b/source/game/BaseAnimating.cpp
@@ -1,11 +1,11 @@
-#include "SXbaseAnimating.h"
+#include "BaseAnimating.h"
 #include "gcore/sxgcore.h"
 
 /*! \skydocent base_animating
 Базовый класс для объектов, имеющих объем в игровом мире
 */
 
-BEGIN_PROPTABLE(SXbaseAnimating)
+BEGIN_PROPTABLE(CBaseAnimating)
 	//! Файл модели. Поддерживаются статические и анимированные модели
 	DEFINE_FIELD_STRING(m_szModelFile, 0, "model", "Model file", EDITOR_FILEFIELD)
 		FILE_OPTION("Model file (*.dse)", "*.dse")
@@ -15,9 +15,9 @@ BEGIN_PROPTABLE(SXbaseAnimating)
 	DEFINE_FIELD_FLOAT(m_fBaseScale, 0, "scale", "Scale", EDITOR_TEXTFIELD)
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseAnimating, base_animating);
+REGISTER_ENTITY_NOLISTING(CBaseAnimating, base_animating);
 
-SXbaseAnimating::SXbaseAnimating(EntityManager * pMgr):
+CBaseAnimating::CBaseAnimating(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_pAnimPlayer(NULL),
 	m_fBaseScale(1.0f),
@@ -26,53 +26,53 @@ SXbaseAnimating::SXbaseAnimating(EntityManager * pMgr):
 {
 }
 
-SXbaseAnimating::~SXbaseAnimating()
+CBaseAnimating::~CBaseAnimating()
 {
-	ReleasePhysics();
+	releasePhysics();
 	mem_release(m_pAnimPlayer);
 }
 
-void SXbaseAnimating::GetMinMax(float3 * min, float3 * max)
+void CBaseAnimating::getMinMax(float3 * min, float3 * max)
 {
 	if (m_pAnimPlayer)
 	{
-		const ISXBound * bound = m_pAnimPlayer->GetBound();
+		const ISXBound * bound = m_pAnimPlayer->getBound();
 		bound->GetMinMax(min, max);
 	}
 }
 
-void SXbaseAnimating::GetSphere(float3 * center, float * radius)
+void CBaseAnimating::getSphere(float3 * center, float * radius)
 {
-	if (m_pAnimPlayer)
+	if(m_pAnimPlayer)
 	{
-		const ISXBound * bound = m_pAnimPlayer->GetBound();
+		const ISXBound * bound = m_pAnimPlayer->getBound();
 		bound->GetSphere(center, radius);
 	}
 }
 
-bool SXbaseAnimating::SetKV(const char * name, const char * value)
+bool CBaseAnimating::setKV(const char * name, const char * value)
 {
-	if(!BaseClass::SetKV(name, value))
+	if(!BaseClass::setKV(name, value))
 	{
 		return(false);
 	}
 	if(!strcmp(name, "model"))
 	{
-		SetModel(value);
+		setModel(value);
 	}
 	else if(!strcmp(name, "scale"))
 	{
-		ReleasePhysics();
-		m_pAnimPlayer->SetScale(m_fBaseScale);
-		InitPhysics();
+		releasePhysics();
+		m_pAnimPlayer->setScale(m_fBaseScale);
+		initPhysics();
 	}
 	return(true);
 }
 
-void SXbaseAnimating::SetModel(const char * mdl)
+void CBaseAnimating::setModel(const char * mdl)
 {
-	_SetStrVal(&m_szModelFile, mdl);
-	ReleasePhysics();
+	_setStrVal(&m_szModelFile, mdl);
+	releasePhysics();
 	if(!mdl[0] && m_pAnimPlayer)
 	{
 		mem_release(m_pAnimPlayer);
@@ -84,80 +84,80 @@ void SXbaseAnimating::SetModel(const char * mdl)
 	}
 	else
 	{
-		m_pAnimPlayer->SetModel(mdl);
+		m_pAnimPlayer->setModel(mdl);
 	}
-	InitPhysics();
+	initPhysics();
 }
 
-float3 SXbaseAnimating::GetAttachmentPos(int id)
+float3 CBaseAnimating::getAttachmentPos(int id)
 {
 	float3 pos;
 	if(!m_pAnimPlayer && id >= 0)
 	{
-		pos = m_pAnimPlayer->GetBoneTransformPos(id);
+		pos = m_pAnimPlayer->getBoneTransformPos(id);
 	}
 
-	return(GetOrient() * pos + GetPos());
+	return(getOrient() * pos + getPos());
 }
 
-SMQuaternion SXbaseAnimating::GetAttachmentRot(int id)
+SMQuaternion CBaseAnimating::getAttachmentRot(int id)
 {
 	SMQuaternion rot;
 	if(!m_pAnimPlayer && id >= 0)
 	{
-		rot = m_pAnimPlayer->GetBoneTransformRot(id);
+		rot = m_pAnimPlayer->getBoneTransformRot(id);
 	}
 
-	return(GetOrient() * rot);
+	return(getOrient() * rot);
 }
 
-void SXbaseAnimating::OnSync()
+void CBaseAnimating::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 	if(!m_pParent && m_pRigidBody)
 	{
-		SetPos(BTVEC_F3(m_pRigidBody->getWorldTransform().getOrigin()));
-		SetOrient(BTQUAT_Q4(m_pRigidBody->getWorldTransform().getRotation()));
+		setPos(BTVEC_F3(m_pRigidBody->getWorldTransform().getOrigin()));
+		setOrient(BTQUAT_Q4(m_pRigidBody->getWorldTransform().getRotation()));
 	}
 	else if(m_pRigidBody)
 	{
-	//	m_pRigidBody->getWorldTransform().setOrigin(F3_BTVEC(GetPos()));
-	//	m_pRigidBody->getWorldTransform().setRotation(Q4_BTQUAT(GetOrient()));
+	//	m_pRigidBody->getWorldTransform().setOrigin(F3_BTVEC(getPos()));
+	//	m_pRigidBody->getWorldTransform().setRotation(Q4_BTQUAT(getOrient()));
 	}
 	if(m_pAnimPlayer)
 	{
-		m_pAnimPlayer->SetScale(m_fBaseScale);
-		m_pAnimPlayer->SetPos(GetPos());
-		m_pAnimPlayer->SetOrient(GetOrient());
+		m_pAnimPlayer->setScale(m_fBaseScale);
+		m_pAnimPlayer->setPos(getPos());
+		m_pAnimPlayer->setOrient(getOrient());
 	}
 }
 
-void SXbaseAnimating::PlayAnimation(const char * name, UINT iFadeTime, UINT slot)
+void CBaseAnimating::playAnimation(const char * name, UINT iFadeTime, UINT slot)
 {
 	if(m_pAnimPlayer)
 	{
-		m_pAnimPlayer->Play(name, iFadeTime, slot);
+		m_pAnimPlayer->play(name, iFadeTime, slot);
 	}
 }
 
-bool SXbaseAnimating::PlayingAnimations(const char* name)
+bool CBaseAnimating::playingAnimations(const char* name)
 {
 	if(m_pAnimPlayer)
 	{
-		return(m_pAnimPlayer->PlayingAnimations(name));
+		return(m_pAnimPlayer->playingAnimations(name));
 	}
 	return(false);
 }
 
-void SXbaseAnimating::PlayActivity(const char * name, UINT iFadeTime, UINT slot)
+void CBaseAnimating::playActivity(const char * name, UINT iFadeTime, UINT slot)
 {
 	if(m_pAnimPlayer)
 	{
-		m_pAnimPlayer->StartActivity(name, iFadeTime, slot);
+		m_pAnimPlayer->startActivity(name, iFadeTime, slot);
 	}
 }
 
-void SXbaseAnimating::InitPhysics()
+void CBaseAnimating::initPhysics()
 {
 	if(!m_pAnimPlayer)
 	{
@@ -168,9 +168,9 @@ void SXbaseAnimating::InitPhysics()
 	float3_t ** ppfData;
 	int32_t * pfDataLen;
 
-	//m_pAnimPlayer->SetScale(m_fBaseScale);
+	//m_pAnimPlayer->setScale(m_fBaseScale);
 
-	m_pAnimPlayer->GetPhysData(&iShapeCount, &phTypes, &ppfData, &pfDataLen);
+	m_pAnimPlayer->getPhysData(&iShapeCount, &phTypes, &ppfData, &pfDataLen);
 
 	for(int i = 0; i < iShapeCount; ++i)
 	{
@@ -181,13 +181,13 @@ void SXbaseAnimating::InitPhysics()
 		break;
 	}
 
-	m_pAnimPlayer->FreePhysData(iShapeCount, phTypes, ppfData, pfDataLen);
+	m_pAnimPlayer->freePhysData(iShapeCount, phTypes, ppfData, pfDataLen);
 
 
-	CreatePhysBody();
+	createPhysBody();
 }
 
-void SXbaseAnimating::CreatePhysBody()
+void CBaseAnimating::createPhysBody()
 {
 	if(m_pCollideShape)
 	{
@@ -211,30 +211,30 @@ void SXbaseAnimating::CreatePhysBody()
 	}
 }
 
-void SXbaseAnimating::RemovePhysBody()
+void CBaseAnimating::removePhysBody()
 {
 	SXPhysics_RemoveShape(m_pRigidBody);
 	mem_delete(m_pRigidBody);
 }
 
-void SXbaseAnimating::ReleasePhysics()
+void CBaseAnimating::releasePhysics()
 {
-	RemovePhysBody();
+	removePhysBody();
 	mem_delete(m_pCollideShape);
 }
 
-void SXbaseAnimating::SetPos(const float3 & pos)
+void CBaseAnimating::setPos(const float3 & pos)
 {
-	BaseClass::SetPos(pos);
+	BaseClass::setPos(pos);
 	if(m_pRigidBody)
 	{
 		m_pRigidBody->getWorldTransform().setOrigin(F3_BTVEC(pos));
 	}
 }
 
-void SXbaseAnimating::SetOrient(const SMQuaternion & q)
+void CBaseAnimating::setOrient(const SMQuaternion & q)
 {
-	BaseClass::SetOrient(q);
+	BaseClass::setOrient(q);
 	if(m_pRigidBody)
 	{
 		m_pRigidBody->getWorldTransform().setRotation(Q4_BTQUAT(q));
diff --git a/source/game/BaseAnimating.h b/source/game/BaseAnimating.h
new file mode 100644
index 0000000000000000000000000000000000000000..58f339125f67d325776cf89135bae727b30eb8a9
--- /dev/null
+++ b/source/game/BaseAnimating.h
@@ -0,0 +1,68 @@
+
+/******************************************************
+Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
+See the license in LICENSE
+******************************************************/
+
+/*!
+\file
+Анимированный игровой объект
+*/
+
+/*! \defgroup cbaseanimating Моделированные объекты
+\ingroup cbaseentity
+@{
+*/
+
+#ifndef _CBaseAnimating_H_
+#define _CBaseAnimating_H_
+
+#include "BaseEntity.h"
+#include <anim/sxanim.h>
+
+//! Анимированный игровой объект
+class CBaseAnimating: public CBaseEntity
+{
+	DECLARE_CLASS(CBaseAnimating, CBaseEntity);
+	DECLARE_PROPTABLE();
+public:
+	CBaseAnimating(CEntityManager * pMgr);
+	~CBaseAnimating();
+
+	void getMinMax(float3 * min, float3 * max);
+	void getSphere(float3 * center, float * radius);
+
+	bool setKV(const char * name, const char * value);
+
+	void setModel(const char * mdl);
+
+	float3 getAttachmentPos(int id);
+	SMQuaternion getAttachmentRot(int id);
+
+	void onSync();
+
+	void playAnimation(const char * name, UINT iFadeTime = 0, UINT slot = 0);
+	void playActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0);
+
+
+	bool playingAnimations(const char* name);
+	void setPos(const float3 & pos);
+	void setOrient(const SMQuaternion & q);
+
+protected:
+	IAnimPlayer * m_pAnimPlayer;
+	const char * m_szModelFile;
+	float m_fBaseScale;
+
+	virtual void initPhysics();
+	virtual void createPhysBody();
+	void releasePhysics();
+	virtual void removePhysBody();
+
+	btCollisionShape * m_pCollideShape;
+	btRigidBody * m_pRigidBody;
+};
+
+#endif
+
+/*! @} cbaseanimating */
diff --git a/source/game/BaseCharacter.cpp b/source/game/BaseCharacter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0ee51d3d0a981f9678a68c26a05190ffeb4a6465
--- /dev/null
+++ b/source/game/BaseCharacter.cpp
@@ -0,0 +1,246 @@
+
+#include "BaseCharacter.h"
+#include "GameData.h"
+#include "BaseTool.h"
+#include "BaseWeapon.h"
+
+/*! \skydocent base_character
+Базовый класс персонажа
+*/
+
+BEGIN_PROPTABLE(CBaseCharacter)
+	// empty
+END_PROPTABLE()
+
+REGISTER_ENTITY_NOLISTING(CBaseCharacter, base_character);
+
+class btKinematicClosestNotMeRayResultCallback: public btCollisionWorld::ClosestRayResultCallback
+{
+public:
+	btKinematicClosestNotMeRayResultCallback(btCollisionObject* me, const btVector3&	rayFromWorld, const btVector3&	rayToWorld): btCollisionWorld::ClosestRayResultCallback(rayFromWorld, rayToWorld)
+	{
+		m_me = me;
+		m_shapeInfo = {-1, -1};
+	}
+
+	virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace)
+	{
+		if(rayResult.m_collisionObject == m_me)
+			return 1.0;
+		if(rayResult.m_localShapeInfo)
+		{
+			m_shapeInfo = *rayResult.m_localShapeInfo;
+		}
+		return ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
+	}
+	btCollisionWorld::LocalShapeInfo m_shapeInfo;
+protected:
+	btCollisionObject* m_me;
+};
+
+CBaseCharacter::CBaseCharacter(CEntityManager * pMgr):
+	BaseClass(pMgr),
+	m_uMoveDir(PM_OBSERVER),
+	m_vPitchYawRoll(float3_t(0, 0, 0)),
+	m_pActiveTool(NULL),
+	m_fCurrentSpread(0.0f)
+{
+	btTransform startTransform;
+	startTransform.setIdentity();
+	startTransform.setOrigin(F3_BTVEC(m_vPosition));
+	//startTransform.setOrigin(btVector3(0, 12, 10));
+
+	m_pGhostObject = new btPairCachingGhostObject();
+	m_pGhostObject->setWorldTransform(startTransform);
+	//sweepBP->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
+	m_pCollideShape = new btCapsuleShape(0.4f, 1.0f);
+	m_pGhostObject->setCollisionShape(m_pCollideShape);
+	m_pGhostObject->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT);
+	m_pGhostObject->setUserPointer(this);
+
+	btScalar stepHeight = 0.4f;
+	m_pCharacter = new btKinematicCharacterController(m_pGhostObject, (btConvexShape*)m_pCollideShape, stepHeight, btVector3(0.0f, 1.0f, 0.0f));
+	m_pCharacter->setMaxJumpHeight(0.60f);
+	m_pCharacter->setJumpSpeed(3.50f);
+	//m_pCharacter->setJumpSpeed(3.5f);
+	m_pCharacter->setGravity(btVector3(0, -10.0f, 0));
+	//m_pCharacter->setGravity(1.0f);
+	m_pCharacter->setFallSpeed(300.0f);
+	//m_pCharacter->setFallSpeed(30.0f);
+
+	SXPhysics_GetDynWorld()->addCollisionObject(m_pGhostObject, btBroadphaseProxy::CharacterFilter, btBroadphaseProxy::AllFilter & ~btBroadphaseProxy::DebrisFilter);
+
+	m_pGhostObject->setCollisionFlags(m_pGhostObject->getCollisionFlags() | btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT);
+
+	SXPhysics_GetDynWorld()->addAction(m_pCharacter);
+
+
+	m_flashlight = (CLightDirectional*)CREATE_ENTITY("light_directional", m_pMgr);
+	//m_flashlight->setPos(getPos() + float3(0.f, 0.1f, 0.f));
+	m_flashlight->setPos(getPos() + float3(0.f, 0.2f, 0.1f));
+	m_flashlight->setOrient(getOrient() * SMQuaternion(SM_PIDIV2, 'x'));
+	m_flashlight->setParent(this);
+	m_flashlight->setDist(20.f);
+	m_flashlight->setAngle(SMToRadian(60));
+	m_flashlight->setColor(float3(3.5, 3.5, 3.5));
+	//m_flashlight->setShadowType(-1);
+	m_flashlight->setShadowType(1);
+
+	m_idTaskSpread = SET_INTERVAL(updateSpread, 1.0f / 30.0f);
+}
+
+CBaseCharacter::~CBaseCharacter()
+{
+	CLEAR_INTERVAL(m_idTaskSpread);
+	REMOVE_ENTITY(m_flashlight);
+}
+
+
+void CBaseCharacter::attack(BOOL state)
+{
+	if(m_uMoveDir & PM_OBSERVER)
+	{
+		return;
+	}
+	if(m_pActiveTool)
+	{
+		m_pActiveTool->primaryAction(state);
+	}
+}
+
+void CBaseCharacter::attack2(BOOL state)
+{
+	if(m_uMoveDir & PM_OBSERVER)
+	{
+		return;
+	}
+	if(m_pActiveTool)
+	{
+		m_pActiveTool->secondaryAction(state);
+	}
+}
+
+void CBaseCharacter::reload()
+{
+	if(m_uMoveDir & PM_OBSERVER)
+	{
+		return;
+	}
+	if(m_pActiveTool)
+	{
+		m_pActiveTool->reload();
+	}
+}
+
+void CBaseCharacter::toggleFlashlight()
+{
+	m_flashlight->toggleEnable();
+}
+
+void CBaseCharacter::nextFireMode()
+{
+	if(m_uMoveDir & PM_OBSERVER)
+	{
+		return;
+	}
+	if(m_pActiveTool)
+	{
+		//@FIXME: Add correct call
+		//m_pActiveTool->nextFireMode();
+	}
+}
+
+bool CBaseCharacter::onGround()
+{
+	return(m_pCharacter->onGround());
+}
+
+void CBaseCharacter::playFootstepsSound()
+{
+	if(!(m_uMoveDir & PM_OBSERVER))
+	{
+		if(onGround())
+		{
+			float3 start = getPos(),
+				end = start + float3(0.0f, -2.0f, 0.0f);
+			btKinematicClosestNotMeRayResultCallback cb(m_pGhostObject, F3_BTVEC(start), F3_BTVEC(end));
+			SXPhysics_GetDynWorld()->rayTest(F3_BTVEC(start), F3_BTVEC(end), cb);
+
+			if(cb.hasHit() && cb.m_shapeInfo.m_shapePart == 0 && cb.m_shapeInfo.m_triangleIndex >= 0)
+			{
+				MTLTYPE_PHYSIC type = (MTLTYPE_PHYSIC)SXPhysics_GetMtlType(cb.m_collisionObject, &cb.m_shapeInfo);
+				g_pGameData->playFootstepSound(type, BTVEC_F3(cb.m_hitPointWorld));
+			}
+		}
+	}
+}
+
+float CBaseCharacter::getMomentSpread()
+{
+	if(!m_pActiveTool || !m_pActiveTool->isWeapon())
+	{
+		return(0.0f);
+	}
+
+	CBaseWeapon *pWpn = (CBaseWeapon*)m_pActiveTool;
+
+	float fBaseSpread = pWpn->getBaseSpread();
+
+	const float fIdleSpreadBase = 1.0f, fIdleSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_IDLE), // стоя
+		fCrouchSpreadBase = 1.0f,       fCrouchSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_CROUCH), // пригувшись
+		fLaySpreadBase = 1.0f,          fLaySpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_CRAWL), // лежа
+
+		fWalkSpreadBase = 1.0f,         fWalkSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_WALK), // в ходьбе
+		fRunSpreadBase = 1.0f,          fRunSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_RUN), // в беге
+		fAirborneSpreadBase = 1.0f,     fAirborneSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_AIRBORNE), // в прыжке
+		fConditionSpreadBase = 1.0f,    fConditionSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_CONDITION), // состояние оружия
+		fArmSpreadBase = 1.0f,          fArmSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_ARM), // состояние рук
+		fIronSightSpreadBase = 1.0f,    fIronSightSpreadMult = pWpn->getSpreadCoeff(SPREAD_COEFF_IRONSIGHT); // в прицеливании
+
+
+
+	float fMomentSpread = fBaseSpread * 
+		(fIdleSpreadBase + (!(m_uMoveDir & (PM_CROUCH | PM_CRAWL)) ? fIdleSpreadMult : 0.0f)) *
+		(fWalkSpreadBase + (((m_uMoveDir & (PM_FORWARD | PM_BACKWARD | PM_LEFT | PM_RIGHT)) && !(m_uMoveDir & PM_RUN)) ? fWalkSpreadMult : 0.0f)) *
+		(fCrouchSpreadBase + ((m_uMoveDir & PM_CROUCH) ? fCrouchSpreadMult : 0.0f)) *
+		(fRunSpreadBase + ((m_uMoveDir & PM_RUN) ? fRunSpreadMult : 0.0f)) *
+		(fLaySpreadBase + ((m_uMoveDir & PM_CRAWL) ? fLaySpreadMult : 0.0f)) *
+		(fAirborneSpreadBase + (!onGround() ? fAirborneSpreadMult : 0.0f)) *
+		(fConditionSpreadBase + (fConditionSpreadMult * (1.0f - pWpn->getCondition()))) *
+		// (fArmSpreadBase + (fArmSpreadMult * (1.0f - getArmCondition()))) *
+		(fIronSightSpreadBase + (pWpn->isIronSight() ? fIronSightSpreadMult : 0.0f))
+	;
+
+	//printf("%5.3f => %5.3f\n", fMomentSpread, fBaseSpread);
+	if(fMomentSpread < fBaseSpread)
+	{
+		fMomentSpread = fBaseSpread;
+	}
+	return(fMomentSpread);
+}
+
+void CBaseCharacter::updateSpread(float dt)
+{
+	float fMomentSpread = getMomentSpread();
+	float fWeaponMass = m_pActiveTool ? m_pActiveTool->getWeight() : 0.0f;
+	//printf("%5.3f => %5.3f\n", fMomentSpread, m_fCurrentSpread);
+	if(m_fCurrentSpread < fMomentSpread)
+	{
+		m_fCurrentSpread += fMomentSpread * (3.0f * dt);
+	}
+	else
+	{
+		float fDivider = 5.0f;
+		float fCoeff = (3.0f * dt) * (fDivider / (fWeaponMass + (fDivider / 0.9f)) + 0.1f);
+		if(fCoeff > 1.0f)
+		{
+			fCoeff = 1.0f;
+		}
+		m_fCurrentSpread -= (m_fCurrentSpread - fMomentSpread) * fCoeff;
+	}
+}
+
+float CBaseCharacter::getCurrentSpread()
+{
+	return(m_fCurrentSpread);
+}
diff --git a/source/game/BaseCharacter.h b/source/game/BaseCharacter.h
new file mode 100644
index 0000000000000000000000000000000000000000..51609b515df0268e192de731d013c46e81a78925
--- /dev/null
+++ b/source/game/BaseCharacter.h
@@ -0,0 +1,106 @@
+
+/******************************************************
+Copyright � Vitaliy Buturlin, Evgeny Danilovich, 2017
+See the license in LICENSE
+******************************************************/
+
+/*!
+\file
+������� ����� ���������
+*/
+
+/*! \ingroup cbaseanimating
+@{
+*/
+
+#ifndef _CBaseCharacter_H_
+#define _CBaseCharacter_H_
+
+#include "BaseAnimating.h"
+#include "LightDirectional.h"
+
+class CBaseTool;
+
+//! ���� �������� ������
+enum PLAYER_MOVE
+{
+	PM_NONE = 0,
+	PM_FORWARD = 0x01,   //!< ������
+	PM_BACKWARD = 0x02,  //!< �����
+	PM_LEFT = 0x04,      //!< �����
+	PM_RIGHT = 0x08,     //!< ������
+	PM_CROUCH = 0x10,    //!< ��������
+	PM_JUMP = 0x20,      //!< ��������
+	PM_RUN = 0x40,       //!< ������
+	PM_CRAWL = 0x80,     //!< ������
+	PM_OBSERVER = 0x100, //!< �����������
+
+	PM_STOP = 0xFFFF
+};
+
+//! ����� ������  \ingroup cbaseanimating
+class CBaseCharacter: public CBaseAnimating
+{
+	DECLARE_CLASS(CBaseCharacter, CBaseAnimating);
+	DECLARE_PROPTABLE();
+public:
+	CBaseCharacter(CEntityManager * pMgr);
+	~CBaseCharacter();
+
+	//! ���������/������������� ��������� �����
+	void attack(BOOL state);
+	//! ���������/������������� ��������� �����
+	void attack2(BOOL state);
+	//! ��������� ����������� ��������� ������
+	void reload();
+	//! ��������/��������� ������
+	void toggleFlashlight();
+	//! ����������� ����� �������� ��������� ������
+	void nextFireMode();
+
+	//! ��������� �� ����� �� �����
+	bool onGround();
+
+	//! ������������� ���� ����� � ������ ��������� �� ������� ����� �����
+	void playFootstepsSound();
+
+
+	//! �������� ������������ ��� �������� ������ ����������� �������� (� ������ �������� ��������)
+	float getCurrentSpread();
+
+protected:
+	//! �������
+	CLightDirectional* m_flashlight;
+
+	//! ������� ��������
+	UINT m_uMoveDir;
+
+	//! ������� ���������� � �����
+	CBaseTool * m_pActiveTool;
+
+	//! ��� ������ @{
+	btCollisionShape * m_pCollideShape;
+	btRigidBody * m_pRigidBody;
+	btPairCachingGhostObject * m_pGhostObject;
+	btKinematicCharacterController * m_pCharacter;
+	//! @}
+
+	//! ���� �������� ������
+	float3_t m_vPitchYawRoll;
+
+	//! ���������� �������� ������������ ��������
+	float getMomentSpread();
+
+	//! ������ ���������� ��������
+	ID m_idTaskSpread;
+
+	//! ��������� �������� ��������
+	virtual void updateSpread(float dt);
+
+	//! ����������� �������� ��������
+	float m_fCurrentSpread;
+};
+
+#endif
+
+//! @}
diff --git a/source/game/SXbaseEntity.cpp b/source/game/BaseEntity.cpp
similarity index 76%
rename from source/game/SXbaseEntity.cpp
rename to source/game/BaseEntity.cpp
index 4cff430e8faf6eab1f6faa11edd46e1690c0cb11..a8f3613c12a964329050d09a49e8bf961f613742 100644
--- a/source/game/SXbaseEntity.cpp
+++ b/source/game/BaseEntity.cpp
@@ -1,6 +1,6 @@
 #include <stdio.h>
 
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 #include "EntityManager.h"
 
@@ -8,7 +8,7 @@
 Базовый объект. От него наследуются все остальные объекты
 */
 
-BEGIN_PROPTABLE_NOBASE(SXbaseEntity)
+BEGIN_PROPTABLE_NOBASE(CBaseEntity)
 	//! Имя объекта
 	DEFINE_FIELD_STRING(m_szName, 0, "name", "Name", EDITOR_TEXTFIELD)
 	//! Позиция в мире
@@ -29,11 +29,11 @@ BEGIN_PROPTABLE_NOBASE(SXbaseEntity)
 	//EDITOR_COMBO_END()
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseEntity, base_entity);
+REGISTER_ENTITY_NOLISTING(CBaseEntity, base_entity);
 
-void SXbaseEntity::SetDefaults()
+void CBaseEntity::setDefaults()
 {
-	proptable_t * pt = GetPropTable();
+	proptable_t * pt = getPropTable();
 	const char * estr = GetEmptyString();
 	while(pt)
 	{
@@ -48,7 +48,7 @@ void SXbaseEntity::SetDefaults()
 	}
 }
 
-SXbaseEntity::SXbaseEntity(EntityManager * pWorld):
+CBaseEntity::CBaseEntity(CEntityManager * pWorld):
 	m_iId(0),
 	m_iFlags(0),
 	m_pMgr(pWorld),
@@ -59,12 +59,12 @@ SXbaseEntity::SXbaseEntity(EntityManager * pWorld):
 	m_pOwner(NULL)/*,
 	m_vDiscreteLinearVelocity(float3_t(0.0f, 0.0f, 0.0f))*/
 {
-	m_iId = pWorld->Register(this);
+	m_iId = pWorld->reg(this);
 }
 
-/*void SXbaseEntity::SetDefaults()
+/*void CBaseEntity::setDefaults()
 {
-	proptable_t * pt = GetPropTable();
+	proptable_t * pt = getPropTable();
 	const char * estr = GetEmptyString();
 	const char * defstr = NULL;
 	while(pt)
@@ -80,11 +80,11 @@ SXbaseEntity::SXbaseEntity(EntityManager * pWorld):
 	}
 }*/
 
-SXbaseEntity::~SXbaseEntity()
+CBaseEntity::~CBaseEntity()
 {
-	m_pMgr->Unregister(m_iId);
+	m_pMgr->unreg(m_iId);
 
-	proptable_t * pt = GetPropTable();
+	proptable_t * pt = getPropTable();
 	const char * estr = GetEmptyString();
 	while(pt)
 	{
@@ -103,22 +103,22 @@ SXbaseEntity::~SXbaseEntity()
 	}
 }
 
-void SXbaseEntity::SetClassName(const char * name)
+void CBaseEntity::setClassName(const char * name)
 {
 	m_szClassName = name;
 }
 
-const char * SXbaseEntity::GetName()
+const char * CBaseEntity::getName()
 {
 	return(m_szName);
 }
 
-const char * SXbaseEntity::GetClassName()
+const char * CBaseEntity::getClassName()
 {
 	return(m_szClassName);
 }
 
-void SXbaseEntity::GetMinMax(float3 * min, float3 * max)
+void CBaseEntity::getMinMax(float3 * min, float3 * max)
 {
 	if (min)
 		min->x = min->y = min->z = 0;
@@ -127,7 +127,7 @@ void SXbaseEntity::GetMinMax(float3 * min, float3 * max)
 		max->x = max->y = max->z = 0;
 }
 
-void SXbaseEntity::GetSphere(float3 * center, float * radius)
+void CBaseEntity::getSphere(float3 * center, float * radius)
 {
 	if (center)
 		center->x = center->y = center->z = 0;
@@ -136,50 +136,50 @@ void SXbaseEntity::GetSphere(float3 * center, float * radius)
 		radius = 0;
 }
 
-void SXbaseEntity::SetPos(const float3 & pos)
+void CBaseEntity::setPos(const float3 & pos)
 {
 	m_vPosition = pos;
 }
 
-float3 SXbaseEntity::GetPos()
+float3 CBaseEntity::getPos()
 {
 	return(m_vPosition);
 }
 
-void SXbaseEntity::SetOrient(const SMQuaternion & q)
+void CBaseEntity::setOrient(const SMQuaternion & q)
 {
 	m_vOrientation = q;
 }
 
-SMQuaternion SXbaseEntity::GetOrient()
+SMQuaternion CBaseEntity::getOrient()
 {
 	return(m_vOrientation);
 }
 
 
-ID SXbaseEntity::GetId()
+ID CBaseEntity::getId()
 {
 	return(m_iId);
 }
 
-UINT SXbaseEntity::GetFlags()
+UINT CBaseEntity::getFlags()
 {
 	return(m_iFlags);
 }
 
-void SXbaseEntity::SetFlags(UINT f)
+void CBaseEntity::setFlags(UINT f)
 {
 	m_iFlags = f;
 }
 
-SMMATRIX SXbaseEntity::GetWorldTM()
+SMMATRIX CBaseEntity::getWorldTM()
 {
 	return(m_vOrientation.GetMatrix() * SMMatrixTranslation(m_vPosition));
 }
 
-bool SXbaseEntity::SetKV(const char * name, const char * value)
+bool CBaseEntity::setKV(const char * name, const char * value)
 {
-	propdata_t * field = GetField(name);
+	propdata_t * field = getField(name);
 	if(!field)
 	{
 		return(false);
@@ -188,7 +188,7 @@ bool SXbaseEntity::SetKV(const char * name, const char * value)
 	SMQuaternion q;
 	int d;
 	float f;
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	switch(field->type)
 	{
 	case PDF_INT:
@@ -220,7 +220,7 @@ bool SXbaseEntity::SetKV(const char * name, const char * value)
 		}
 		return(false);
 	case PDF_STRING:
-		_SetStrVal(&(this->*((const char * ThisClass::*)field->pField)), value);
+		_setStrVal(&(this->*((const char * ThisClass::*)field->pField)), value);
 		break;
 	case PDF_ANGLES:
 		if(4 == sscanf(value, "%f %f %f %f", &q.x, &q.y, &q.z, &q.w))
@@ -238,16 +238,16 @@ bool SXbaseEntity::SetKV(const char * name, const char * value)
 		return(false);
 	case PDF_ENTITY:
 	case PDF_PARENT:
-		pEnt = m_pMgr->FindEntityByName(value);
+		pEnt = m_pMgr->findEntityByName(value);
 		if(pEnt || !value[0])
 		{
 			if(field->type == PDF_PARENT)
 			{
-				SetParent(pEnt);
+				setParent(pEnt);
 			}
 			else
 			{
-				this->*((SXbaseEntity * ThisClass::*)field->pField) = pEnt;
+				this->*((CBaseEntity * ThisClass::*)field->pField) = pEnt;
 			}
 			return(true);
 		}
@@ -312,16 +312,16 @@ bool SXbaseEntity::SetKV(const char * name, const char * value)
 	}
 	return(true);
 }
-bool SXbaseEntity::GetKV(const char * name, char * out, int bufsize)
+bool CBaseEntity::getKV(const char * name, char * out, int bufsize)
 {
-	propdata_t * field = GetField(name);
+	propdata_t * field = getField(name);
 	if(!field)
 	{
 		return(false);
 	}
 	SMQuaternion q;
 	float3_t f3;
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	switch(field->type)
 	{
 	case PDF_INT:
@@ -334,7 +334,7 @@ bool SXbaseEntity::GetKV(const char * name, char * out, int bufsize)
 		sprintf_s(out, bufsize, "%f", this->*((float ThisClass::*)field->pField));
 		break;
 	case PDF_VECTOR:
-		sprintf_s(out, bufsize, "%f %f %f", (this->*((float3_t ThisClass::*)field->pField)).x, (this->*((float3_t SXbaseEntity::*)field->pField)).y, (this->*((float3_t SXbaseEntity::*)field->pField)).z);
+		sprintf_s(out, bufsize, "%f %f %f", (this->*((float3_t ThisClass::*)field->pField)).x, (this->*((float3_t CBaseEntity::*)field->pField)).y, (this->*((float3_t CBaseEntity::*)field->pField)).z);
 		break;
 	case PDF_BOOL:
 		sprintf_s(out, bufsize, "%d", this->*((bool ThisClass::*)field->pField) ? 1 : 0);
@@ -349,14 +349,14 @@ bool SXbaseEntity::GetKV(const char * name, char * out, int bufsize)
 		break;
 	case PDF_ENTITY:
 	case PDF_PARENT:
-		pEnt = this->*((SXbaseEntity * ThisClass::*)field->pField);
+		pEnt = this->*((CBaseEntity * ThisClass::*)field->pField);
 		if(!pEnt)
 		{
 			sprintf_s(out, bufsize, "");
 		}
 		else
 		{
-			sprintf_s(out, bufsize, "%s", pEnt->GetName());
+			sprintf_s(out, bufsize, "%s", pEnt->getName());
 		}
 		break;
 	case PDF_OUTPUT:
@@ -388,31 +388,31 @@ bool SXbaseEntity::GetKV(const char * name, char * out, int bufsize)
 	return(true);
 }
 
-void SXbaseEntity::SetParent(SXbaseEntity * pEnt, int attachment)
+void CBaseEntity::setParent(CBaseEntity * pEnt, int attachment)
 {
 	m_pParent = pEnt;
 	if(pEnt)
 	{
 		if(attachment >= 0)
 		{
-			m_vOffsetPos = (float3)(m_vPosition - m_pParent->GetAttachmentPos(attachment));
-			m_vOffsetOrient = m_vOrientation * m_pParent->GetAttachmentRot(attachment).Conjugate();
+			m_vOffsetPos = (float3)(m_vPosition - m_pParent->getAttachmentPos(attachment));
+			m_vOffsetOrient = m_vOrientation * m_pParent->getAttachmentRot(attachment).Conjugate();
 		}
 		else
 		{
-			m_vOffsetPos = m_pParent->GetOrient().Conjugate() * (float3)(m_vPosition - m_pParent->GetPos());
-			m_vOffsetOrient = m_vOrientation * m_pParent->GetOrient().Conjugate();
+			m_vOffsetPos = m_pParent->getOrient().Conjugate() * (float3)(m_vPosition - m_pParent->getPos());
+			m_vOffsetOrient = m_vOrientation * m_pParent->getOrient().Conjugate();
 		}
 		m_iParentAttachment = attachment;
 	}
 }
 
-SXbaseEntity * SXbaseEntity::GetParent()
+CBaseEntity * CBaseEntity::getParent()
 {
 	return(m_pParent);
 }
 
-/*void SXbaseEntity::updateDiscreteLinearVelocity(int step, float dt)
+/*void CBaseEntity::updateDiscreteLinearVelocity(int step, float dt)
 {
 	if(step == 0)
 	{
@@ -444,60 +444,60 @@ SXbaseEntity * SXbaseEntity::GetParent()
 	}
 }*/
 
-void SXbaseEntity::OnSync()
+void CBaseEntity::onSync()
 {
 	if(m_pParent)
 	{
-		m_pParent->OnSync();
+		m_pParent->onSync();
 		if(m_iParentAttachment >= 0)
 		{
-			m_vPosition = (float3)(m_pParent->GetAttachmentPos(m_iParentAttachment) + m_vOffsetPos);
-			m_vOrientation = m_pParent->GetAttachmentRot(m_iParentAttachment) * m_vOffsetOrient;
+			m_vPosition = (float3)(m_pParent->getAttachmentPos(m_iParentAttachment) + m_vOffsetPos);
+			m_vOrientation = m_pParent->getAttachmentRot(m_iParentAttachment) * m_vOffsetOrient;
 		}
 		else
 		{
-			m_vPosition = (float3)(m_pParent->GetPos() + m_pParent->GetOrient() * m_vOffsetPos);
-			m_vOrientation = m_vOffsetOrient * m_pParent->GetOrient();
+			m_vPosition = (float3)(m_pParent->getPos() + m_pParent->getOrient() * m_vOffsetPos);
+			m_vOrientation = m_vOffsetOrient * m_pParent->getOrient();
 		}
 		//if(m_pPhysObj)
 		//{
-		//	m_pPhysObj->SetPos(m_vPosition);
-		//	m_pPhysObj->SetOrient(m_vOrientation);
+		//	m_pPhysObj->setPos(m_vPosition);
+		//	m_pPhysObj->setOrient(m_vOrientation);
 		//}
 	}
 	//else if(m_pPhysObj)
 	//{
 	//	m_vPosition = m_pPhysObj->GetPos();
-	//	m_vOrientation = m_pPhysObj->GetOrient();
+	//	m_vOrientation = m_pPhysObj->getOrient();
 	//}
 }
 
-void SXbaseEntity::OnPostLoad()
+void CBaseEntity::onPostLoad()
 {
 	updateOutputs();
 }
 
-float3 SXbaseEntity::GetAttachmentPos(int id)
+float3 CBaseEntity::getAttachmentPos(int id)
 {
 	return(float3());
 }
 
-SMQuaternion SXbaseEntity::GetAttachmentRot(int id)
+SMQuaternion CBaseEntity::getAttachmentRot(int id)
 {
 	return(SMQuaternion());
 }
 
-void SXbaseEntity::SetOwner(SXbaseEntity * pEnt)
+void CBaseEntity::setOwner(CBaseEntity * pEnt)
 {
 	m_pOwner = pEnt;
 }
 
-SXbaseEntity * SXbaseEntity::GetOwner()
+CBaseEntity * CBaseEntity::getOwner()
 {
 	return(m_pOwner);
 }
 
-void SXbaseEntity::_SetStrVal(const char ** to, const char * value)
+void CBaseEntity::_setStrVal(const char ** to, const char * value)
 {
 	char * str = (char*)*to;
 	if(str && !fstrcmp(str, value))
@@ -528,19 +528,19 @@ void SXbaseEntity::_SetStrVal(const char ** to, const char * value)
 	}
 }
 
-EntityManager * SXbaseEntity::getManager()
+CEntityManager * CBaseEntity::getManager()
 {
 	return(m_pMgr);
 }
 
-/*const float3_t & SXbaseEntity::getDiscreteLinearVelocity() const
+/*const float3_t & CBaseEntity::getDiscreteLinearVelocity() const
 {
 	return(m_vDiscreteLinearVelocity);
 }*/
 
-void SXbaseEntity::updateOutputs()
+void CBaseEntity::updateOutputs()
 {
-	proptable_t * pt = GetPropTable();
+	proptable_t * pt = getPropTable();
 	while(pt)
 	{
 		for(int i = 0; i < pt->numFields; ++i)
@@ -554,22 +554,22 @@ void SXbaseEntity::updateOutputs()
 					named_output_t * pOut = &pOutput->pOutputs[j];
 					mem_delete_a(pOut->pOutputs);
 
-					pOut->iOutCount = m_pMgr->CountEntityByName(pOut->szTargetName);
+					pOut->iOutCount = m_pMgr->countEntityByName(pOut->szTargetName);
 					if(!pOut->iOutCount)
 					{
-						printf(COLOR_CYAN "Broken output target '%s' source '%s'.'%s'\n" COLOR_RESET, pOut->szTargetName, GetClassName(), m_szName);
+						printf(COLOR_CYAN "Broken output target '%s' source '%s'.'%s'\n" COLOR_RESET, pOut->szTargetName, getClassName(), m_szName);
 						continue;
 					}
 					pOut->pOutputs = new input_t[pOut->iOutCount];
 
-					SXbaseEntity * pEnt = NULL;
+					CBaseEntity * pEnt = NULL;
 					int c = 0;
-					while((pEnt = m_pMgr->FindEntityByName(pOut->szTargetName, pEnt)))
+					while((pEnt = m_pMgr->findEntityByName(pOut->szTargetName, pEnt)))
 					{
-						propdata_t * pField = pEnt->GetField(pOut->szTargetInput);
+						propdata_t * pField = pEnt->getField(pOut->szTargetInput);
 						if(!pField || !(pField->flags & PDFF_INPUT))
 						{
-							printf(COLOR_CYAN "Class '%s' has no input '%s', obj '%s'\n" COLOR_RESET, pEnt->GetClassName(), pOut->szTargetInput, pOut->szTargetName);
+							printf(COLOR_CYAN "Class '%s' has no input '%s', obj '%s'\n" COLOR_RESET, pEnt->getClassName(), pOut->szTargetInput, pOut->szTargetName);
 							--pOut->iOutCount;
 							continue;
 						}
@@ -618,14 +618,14 @@ void SXbaseEntity::updateOutputs()
 								}
 								break;
 							case PDF_STRING:
-								_SetStrVal(&pOut->pOutputs[c].data.parameter.str, value);
+								_setStrVal(&pOut->pOutputs[c].data.parameter.str, value);
 								bParsed = true;
 								break;
 							}
 
 							if(!bParsed)
 							{
-								printf(COLOR_CYAN "Cannot parse input parameter '%s', class '%s', input '%s', obj '%s'\n" COLOR_RESET, value, pEnt->GetClassName(), pOut->szTargetInput, pOut->szTargetName);
+								printf(COLOR_CYAN "Cannot parse input parameter '%s', class '%s', input '%s', obj '%s'\n" COLOR_RESET, value, pEnt->getClassName(), pOut->szTargetInput, pOut->szTargetName);
 								--pOut->iOutCount;
 								continue;
 							}
diff --git a/source/game/SXbaseEntity.h b/source/game/BaseEntity.h
similarity index 75%
rename from source/game/SXbaseEntity.h
rename to source/game/BaseEntity.h
index 765de460e966f5f884df5016cd5137591659d444..d926c8b9e50375c58b5a71461467f75fd9474d9a 100644
--- a/source/game/SXbaseEntity.h
+++ b/source/game/BaseEntity.h
@@ -15,8 +15,8 @@ See the license in LICENSE
 @{
 */
 
-#ifndef _SXbaseEntity_H_
-#define _SXbaseEntity_H_
+#ifndef _CBaseEntity_H_
+#define _CBaseEntity_H_
 
 #include <gdefines.h>
 #include <common/SXMath.h>
@@ -33,80 +33,80 @@ See the license in LICENSE
 #pragma warning(disable:4251)
 
 //! Базовый объект, от которого наследуются все остальные классы объектов.
-class SXGAME_EXPORT SXbaseEntity
+class SXGAME_EXPORT CBaseEntity
 {
-	DECLARE_CLASS_NOBASE(SXbaseEntity);
+	DECLARE_CLASS_NOBASE(CBaseEntity);
 	DECLARE_PROPTABLE();
 
-	friend class EntityManager;
+	friend class CEntityManager;
 
 public:
 	//! Конструктор
-	SXbaseEntity(EntityManager * pMgr);
-	virtual ~SXbaseEntity();
+	CBaseEntity(CEntityManager * pMgr);
+	virtual ~CBaseEntity();
 
 	//! Возвращает имя движкового класса объекта
-	const char * GetClassName();
+	const char * getClassName();
 	
 	//! Возвращает имя объекта
-	const char * GetName();
+	const char * getName();
 	
 	//! Возвращает баунд объекта
-	virtual void GetMinMax(float3 * min, float3 * max);
+	virtual void getMinMax(float3 * min, float3 * max);
 	
 	//! Возвращает баунд сферу объекта
-	virtual void GetSphere(float3 * center, float * radius);
+	virtual void getSphere(float3 * center, float * radius);
 
 	//! Устанавливает мировую позицию объекта
-	virtual void SetPos(const float3 & pos);
+	virtual void setPos(const float3 & pos);
 	//! Получает мировую позицию объекта
-	float3 GetPos();
+	float3 getPos();
 
 	//! Получает ID объекта в системе
-	ID GetId();
+	ID getId();
 
 	//! Получает флаги объекта
-	UINT GetFlags();
+	UINT getFlags();
 	//! Устанавливает флаги объекта
-	void SetFlags(UINT f);
+	void setFlags(UINT f);
 
 	//! Получает мировую матрицу трансформации для объекта
-	SMMATRIX GetWorldTM();
+	SMMATRIX getWorldTM();
 
 	//! Устанавливает вращение объекта
-	virtual void SetOrient(const SMQuaternion & q);
+	virtual void setOrient(const SMQuaternion & q);
 	//! Возвращает вращение объекта
-	SMQuaternion GetOrient();
+	SMQuaternion getOrient();
 
 	//! Устанавливает свойство объекта
-	virtual bool SetKV(const char * name, const char * value);
+	virtual bool setKV(const char * name, const char * value);
 	//! Получает свойство объекта
-	virtual bool GetKV(const char * name, char * out, int bufsize);
+	virtual bool getKV(const char * name, char * out, int bufsize);
 
 	//! Устанавливает родительский объект для объекта
-	void SetParent(SXbaseEntity * pEnt, int attachment = -1);
+	void setParent(CBaseEntity * pEnt, int attachment = -1);
 	//! Возвращает родительский объект объекта
-	SXbaseEntity * GetParent();
+	CBaseEntity * getParent();
 
 	//! Устанавливает владельца
-	void SetOwner(SXbaseEntity * pEnt);
+	void setOwner(CBaseEntity * pEnt);
 	//! Возвращает владельца объекта
-	SXbaseEntity * GetOwner();
+	CBaseEntity * getOwner();
 
 	//! Получает объект менеджера
-	EntityManager * getManager();
+	CEntityManager * getManager();
 
 	//void updateDiscreteLinearVelocity(int step, float dt);
 	//const float3_t & getDiscreteLinearVelocity() const;
 
 private:
-	void SetClassName(const char * name);
-	void SetDefaults();
+	void setClassName(const char * name);
+	void setDefaults();
 
 	const char * m_szClassName;
 
 protected:
-	EntityManager * m_pMgr;
+	CEntityManager * m_pMgr;
 
 	//! Позиция объекта
 	float3_t m_vPosition;
@@ -136,27 +136,27 @@ protected:
 	const char * m_szName;
 
 	//! Родитель
-	SXbaseEntity * m_pParent;
+	CBaseEntity * m_pParent;
 	//! Индекс кости родителя
 	int m_iParentAttachment;
 
 	//! Владелец
-	SXbaseEntity * m_pOwner;
+	CBaseEntity * m_pOwner;
 
 	//! Вызывается на стадии синхронизации
-	virtual void OnSync();
+	virtual void onSync();
 	//! Вызывается при создании после установки всех свойств
-	virtual void OnPostLoad();
+	virtual void onPostLoad();
 
 	//! Получает смещение для кости
-	virtual float3 GetAttachmentPos(int id);
+	virtual float3 getAttachmentPos(int id);
 	//! Получает вращение для кости
-	virtual SMQuaternion GetAttachmentRot(int id);
+	virtual SMQuaternion getAttachmentRot(int id);
 
 	/*! Устанавливает значение строкового свойства
 	\note только для внутреннего использования
 	*/
-	void _SetStrVal(const char ** to, const char * value);
+	void _setStrVal(const char ** to, const char * value);
 
 	/*! Обновляет выходы
 	\note только для внутреннего использования
diff --git a/source/game/BaseHandle.cpp b/source/game/BaseHandle.cpp
index 00623afd5ce8d7d59f4d17d814ac4b420c2cafa1..efb909328be71f41b62d6dc11e672e46608e7734 100644
--- a/source/game/BaseHandle.cpp
+++ b/source/game/BaseHandle.cpp
@@ -10,7 +10,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CBaseHandle, base_handle);
 
-CBaseHandle::CBaseHandle(EntityManager * pMgr):
+CBaseHandle::CBaseHandle(CEntityManager * pMgr):
 	BaseClass(pMgr)
 {
 	m_addonType = WPN_ADDON_HANDLE;
diff --git a/source/game/SXbaseItem.cpp b/source/game/BaseItem.cpp
similarity index 84%
rename from source/game/SXbaseItem.cpp
rename to source/game/BaseItem.cpp
index 2374bca2d7dd859eef66ba7fdb245bc10cb46969..513e651f96da41e41ec5145c9f901e908682c21d 100644
--- a/source/game/SXbaseItem.cpp
+++ b/source/game/BaseItem.cpp
@@ -1,10 +1,10 @@
-#include "SXbaseItem.h"
+#include "BaseItem.h"
 
 /*! \skydocent base_item
 Базовый объект элемента инвентаря игрока
 */
 
-BEGIN_PROPTABLE(SXbaseItem)
+BEGIN_PROPTABLE(CBaseItem)
 	//! Имя в инвентаре
 	DEFINE_FIELD_STRING(m_szInvName, PDFF_NOEDIT | PDFF_NOEXPORT, "inv_name", "", EDITOR_NONE)
 	//! Может ли стакаться
@@ -19,9 +19,9 @@ BEGIN_PROPTABLE(SXbaseItem)
 	DEFINE_FIELD_BOOL(m_bPickable, PDFF_NOEDIT | PDFF_NOEXPORT, "inv_pickable", "", EDITOR_NONE)
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseItem, base_item);
+REGISTER_ENTITY_NOLISTING(CBaseItem, base_item);
 
-SXbaseItem::SXbaseItem(EntityManager * pMgr):
+CBaseItem::CBaseItem(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_bInvStackable(true),
 	m_iInvStackCurSize(0),
@@ -30,3 +30,8 @@ SXbaseItem::SXbaseItem(EntityManager * pMgr):
 	m_bPickable(true)
 {
 }
+
+float CBaseItem::getWeight()
+{
+	return(m_iInvWeight);
+}
diff --git a/source/game/SXbaseItem.h b/source/game/BaseItem.h
similarity index 82%
rename from source/game/SXbaseItem.h
rename to source/game/BaseItem.h
index c0ce2ecd9700ff308ced164761e939461de8b8ce..dbe03a4d18a3730ce0dfc305faf3464a637625dc 100644
--- a/source/game/SXbaseItem.h
+++ b/source/game/BaseItem.h
@@ -13,15 +13,15 @@ See the license in LICENSE
 @{
 */
 
-#ifndef _SXbaseItem_H_
-#define _SXbaseItem_H_
+#ifndef _CBaseItem_H_
+#define _CBaseItem_H_
 
-#include "SXbaseAnimating.h"
+#include "BaseAnimating.h"
 
 //! Базовый класс предмета инвентаря
-class SXbaseItem: public SXbaseAnimating
+class CBaseItem: public CBaseAnimating
 {
-	DECLARE_CLASS(SXbaseItem, SXbaseAnimating);
+	DECLARE_CLASS(CBaseItem, CBaseAnimating);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
@@ -32,6 +32,10 @@ public:
 	int m_iInvStackMaxSize; //!< Максимальное количество итемов в стеке
 	float m_iInvWeight; //!< Масса объекта
 	bool m_bPickable; //!< Можно ли поднять объект
+
+
+	//! Масса объекта
+	virtual float getWeight();
 };
 
 #endif
diff --git a/source/game/BaseMag.cpp b/source/game/BaseMag.cpp
index 530ada6bdd0b57493a3877d12438512051d22010..b39261340bd5262e29bb1d172b69d9ae086f6cf2 100644
--- a/source/game/BaseMag.cpp
+++ b/source/game/BaseMag.cpp
@@ -13,7 +13,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CBaseMag, base_mag);
 
-CBaseMag::CBaseMag(EntityManager * pMgr):
+CBaseMag::CBaseMag(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_iCapacity(0),
 	m_iCurrentLoad(0)
diff --git a/source/game/SXbasePistol.h b/source/game/BasePistol.h
similarity index 68%
rename from source/game/SXbasePistol.h
rename to source/game/BasePistol.h
index 7f657933c7d5f50f0c57658e2106e634f7dc8af4..4cb5683d626435f88c556bcf196dc9cb604e2ac3 100644
--- a/source/game/SXbasePistol.h
+++ b/source/game/BasePistol.h
@@ -8,17 +8,17 @@ See the license in LICENSE
 Пистолеты
 */
 
-#ifndef _SXbasePistol_H_
-#define _SXbasePistol_H_
+#ifndef _CBasePistol_H_
+#define _CBasePistol_H_
 
 /*! Пистолеты
 \ingroup cbaseitem
 */
-#include "SXbaseWeapon.h"
+#include "BaseWeapon.h"
 
-class SXbasePistol: public SXbaseWeapon
+class CBasePistol: public CBaseWeapon
 {
-	DECLARE_CLASS(SXbasePistol, SXbaseWeapon);
+	DECLARE_CLASS(CBasePistol, CBaseWeapon);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
diff --git a/source/game/BaseRiffle.cpp b/source/game/BaseRiffle.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7a60a011dc32c57cdeb17f24078a59959a987ce9
--- /dev/null
+++ b/source/game/BaseRiffle.cpp
@@ -0,0 +1,12 @@
+#include "BaseRiffle.h"
+
+/*! \skydocent base_riffle
+Базовый класс винтовки
+*/
+
+BEGIN_PROPTABLE(CBaseRiffle)
+// empty
+END_PROPTABLE()
+
+REGISTER_ENTITY_NOLISTING(CBaseRiffle, base_riffle);
+
diff --git a/source/game/SXbaseRiffle.h b/source/game/BaseRiffle.h
similarity index 60%
rename from source/game/SXbaseRiffle.h
rename to source/game/BaseRiffle.h
index 5282cca659a7b5f3cd075f1b15edc0885c5255db..8be69ac536b64429b888cb52422fa69a867c9543 100644
--- a/source/game/SXbaseRiffle.h
+++ b/source/game/BaseRiffle.h
@@ -8,24 +8,24 @@ See the license in LICENSE
 Винтовки
 */
 
-#ifndef _SXbaseRiffle_H_
-#define _SXbaseRiffle_H_
+#ifndef _CBaseRiffle_H_
+#define _CBaseRiffle_H_
 
-#include "SXbaseWeapon.h"
+#include "BaseWeapon.h"
 
 /*! Винтовки
 \ingroup cbaseitem
 */
-class SXbaseRiffle: public SXbaseWeapon
+class CBaseRiffle: public CBaseWeapon
 {
-	DECLARE_CLASS(SXbaseRiffle, SXbaseWeapon);
+	DECLARE_CLASS(CBaseRiffle, CBaseWeapon);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
 
-	//void PrimaryAction(BOOL st);
-	//void SecondaryAction(BOOL st);
-	//void Reload();
+	//void primaryAction(BOOL st);
+	//void secondaryAction(BOOL st);
+	//void reload();
 
 	//void Deploy();
 };
diff --git a/source/game/BaseScope.cpp b/source/game/BaseScope.cpp
index dc77ba76b18fb0455761834f36564e6fa5531d7e..26e8b012e2b3f274e9a6d51782b06c9224d994a1 100644
--- a/source/game/BaseScope.cpp
+++ b/source/game/BaseScope.cpp
@@ -10,7 +10,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CBaseScope, base_scope);
 
-CBaseScope::CBaseScope(EntityManager * pMgr):
+CBaseScope::CBaseScope(CEntityManager * pMgr):
 	BaseClass(pMgr)
 {
 	m_addonType = WPN_ADDON_SCOPE;
diff --git a/source/game/BaseSilencer.cpp b/source/game/BaseSilencer.cpp
index 8854dc3661881b1454f0587748f8867aa128285d..e73175deffea836e4897eda91ec32c2b26cf25fc 100644
--- a/source/game/BaseSilencer.cpp
+++ b/source/game/BaseSilencer.cpp
@@ -10,7 +10,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CBaseSilencer, base_silencer);
 
-CBaseSilencer::CBaseSilencer(EntityManager * pMgr):
+CBaseSilencer::CBaseSilencer(CEntityManager * pMgr):
 	BaseClass(pMgr)
 {
 	m_addonType = WPN_ADDON_SILENCER;
diff --git a/source/game/SXbaseSupply.cpp b/source/game/BaseSupply.cpp
similarity index 56%
rename from source/game/SXbaseSupply.cpp
rename to source/game/BaseSupply.cpp
index 0a5429fec37ccd6bf3c100dbc519cd9264359e8d..e205da0e0e3bd0cf16b4f79a35fc51dfaf56f825 100644
--- a/source/game/SXbaseSupply.cpp
+++ b/source/game/BaseSupply.cpp
@@ -1,11 +1,11 @@
-#include "SXbaseSupply.h"
+#include "BaseSupply.h"
 
 /*! \skydocent base_supply
 Базовый класс припаса (патроны, батарейки, т.д)
 */
 
-BEGIN_PROPTABLE(SXbaseSupply)
+BEGIN_PROPTABLE(CBaseSupply)
 //empty
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseSupply, base_supply);
+REGISTER_ENTITY_NOLISTING(CBaseSupply, base_supply);
diff --git a/source/game/SXbaseSupply.h b/source/game/BaseSupply.h
similarity index 75%
rename from source/game/SXbaseSupply.h
rename to source/game/BaseSupply.h
index 5a2f0e19d23b8271973f0ebe316c4064679a53a3..7b25b940b86952eb5d089c08dd97f2fda53f3495 100644
--- a/source/game/SXbaseSupply.h
+++ b/source/game/BaseSupply.h
@@ -8,17 +8,17 @@ See the license in LICENSE
 Базовый класс припаса
 */
 
-#ifndef _SXbaseSupply_H_
-#define _SXbaseSupply_H_
+#ifndef _CBaseSupply_H_
+#define _CBaseSupply_H_
 
-#include "SXbaseItem.h"
+#include "BaseItem.h"
 
 /*! Базовый класс припаса (патроны, батарейки, прочие расходники)
 \ingroup cbaseitem
 */
-class SXbaseSupply: public SXbaseItem
+class CBaseSupply: public CBaseItem
 {
-	DECLARE_CLASS(SXbaseSupply, SXbaseItem);
+	DECLARE_CLASS(CBaseSupply, CBaseItem);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
diff --git a/source/game/SXbaseTool.cpp b/source/game/BaseTool.cpp
similarity index 77%
rename from source/game/SXbaseTool.cpp
rename to source/game/BaseTool.cpp
index 9b7ce26c3b5cb59a6fb5c68a97f1630d928c089b..f319ab17618f460c2d8e052eb5d9977ae0c32f60 100644
--- a/source/game/SXbaseTool.cpp
+++ b/source/game/BaseTool.cpp
@@ -1,15 +1,15 @@
-#include "SXbaseTool.h"
+#include "BaseTool.h"
 
 #include <particles/sxparticles.h>
 #include <decals/sxdecals.h>
-#include "SXplayer.h"
+#include "Player.h"
 
 /*! \skydocent base_tool
 Базовый класс для инструмента (в т.ч оружие). То, что игрок может взять в руки и использовать
 */
 
 
-BEGIN_PROPTABLE(SXbaseTool)
+BEGIN_PROPTABLE(CBaseTool)
 	//! Время перезарядки, с
 	DEFINE_FIELD_FLOAT(m_fReloadTime, PDFF_NOEDIT | PDFF_NOEXPORT, "reload_time", "", EDITOR_NONE)
 	//! Время прицеливания, с
@@ -43,9 +43,9 @@ BEGIN_PROPTABLE(SXbaseTool)
 
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseTool, base_tool);
+REGISTER_ENTITY_NOLISTING(CBaseTool, base_tool);
 
-SXbaseTool::SXbaseTool(EntityManager * pMgr):
+CBaseTool::CBaseTool(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_bInPrimaryAction(false),
 	m_bInSecondaryAction(false),
@@ -59,21 +59,22 @@ SXbaseTool::SXbaseTool(EntityManager * pMgr):
 	m_iSoundAction2(-1),
 	m_iMuzzleFlash(-1),
 	m_iMuzzleFlash2(-1),
-	m_fMaxDistance(1000.0f)
+	m_fMaxDistance(1000.0f),
+	m_bIsWeapon(false)
 {
 	m_bInvStackable = false;
 
-	m_iIvalUpdate = SET_INTERVAL(_Update, 0);
+	m_iIvalUpdate = SET_INTERVAL(_update, 0);
 }
 
-SXbaseTool::~SXbaseTool()
+CBaseTool::~CBaseTool()
 {
 	CLEAR_INTERVAL(m_iIvalUpdate);
 }
 
-void SXbaseTool::OnPostLoad()
+void CBaseTool::onPostLoad()
 {
-	BaseClass::OnPostLoad();
+	BaseClass::onPostLoad();
 
 	if(m_szPrimaryActionSound[0])
 	{
@@ -93,36 +94,36 @@ void SXbaseTool::OnPostLoad()
 	}
 }
 
-void SXbaseTool::SetNextUse(float time)
+void CBaseTool::setNextUse(float time)
 {
 	m_bCanUse = false;
-	SET_TIMEOUT(_AllowUse, time);
+	SET_TIMEOUT(_allowUse, time);
 }
-bool SXbaseTool::CanUse()
+bool CBaseTool::canUse()
 {
 	return(m_bCanUse);
 }
 
-void SXbaseTool::PrimaryAction(BOOL st)
+void CBaseTool::primaryAction(BOOL st)
 {
 	m_bInPrimaryAction = st != FALSE;
 	if(st)
 	{
-		PlayAnimation("shoot1");
+		playAnimation("shoot1");
 		if(ID_VALID(m_iMuzzleFlash))
 		{
 			SPE_EffectEnableSet(m_iMuzzleFlash, true);
 		}
 		if(ID_VALID(m_iSoundAction1))
 		{
-			SSCore_SndInstancePlay3d(m_iSoundAction1, &GetPos());
+			SSCore_SndInstancePlay3d(m_iSoundAction1, &getPos());
 		}
 
-		//((SXplayer*)m_pOwner)->is
+		//((CPlayer*)m_pOwner)->is
 
 		//trace line
-		float3 start = GetPos();
-		float3 dir = m_pParent->GetOrient() * float3(0.0f, 0.0f, 1.0f);
+		float3 start = getPos();
+		float3 dir = m_pParent->getOrient() * float3(0.0f, 0.0f, 1.0f);
 		float3 end = start + dir * m_fMaxDistance;
 		btCollisionWorld::ClosestRayResultCallback cb(F3_BTVEC(start), F3_BTVEC(end));
 		SXPhysics_GetDynWorld()->rayTest(F3_BTVEC(start), F3_BTVEC(end), cb);
@@ -141,39 +142,39 @@ void SXbaseTool::PrimaryAction(BOOL st)
 	}
 }
 
-void SXbaseTool::SecondaryAction(BOOL st)
+void CBaseTool::secondaryAction(BOOL st)
 {
 	m_bInSecondaryAction = st != FALSE;
 	if(m_iZoomable)
 	{
-		((SXplayer*)m_pOwner)->GetCrosshair()->Enable(!st);
+		((CPlayer*)m_pOwner)->getCrosshair()->enable(!st);
 	}
 }
 
-void SXbaseTool::SetIsWorldModel(bool b)
+void CBaseTool::setIsWorldModel(bool b)
 {
 	m_bWorldModel = b;
 }
 
-void SXbaseTool::Reload()
+void CBaseTool::reload()
 {
-	if(CanUse())
+	if(canUse())
 	{
-		SetNextUse(m_fReloadTime);
-		PlayAnimation("reload");
+		setNextUse(m_fReloadTime);
+		playAnimation("reload");
 	}
 }
 
-void SXbaseTool::AttachHands()
+void CBaseTool::attachHands()
 {
 	if(m_pAnimPlayer)
 	{
-		m_pAnimPlayer->AddModel("models/weapons/hands.dse");
-		m_pAnimPlayer->Assembly();
+		m_pAnimPlayer->addModel("models/weapons/hands.dse");
+		m_pAnimPlayer->assembly();
 	}
 }
 
-void SXbaseTool::DbgMove(int dir, float dy)
+void CBaseTool::dbgMove(int dir, float dy)
 {
 	switch(dir)
 	{
@@ -205,22 +206,22 @@ void SXbaseTool::DbgMove(int dir, float dy)
 	}
 }
 
-void SXbaseTool::OnSync()
+void CBaseTool::onSync()
 {
-	float3_t ang = ((SXplayer*)m_pOwner)->GetWeaponDeltaAngles();
+	float3_t ang = ((CPlayer*)m_pOwner)->getWeaponDeltaAngles();
 	m_vOffsetOrient = m_qSlotRotResult * SMQuaternion(ang.x, 'x') * SMQuaternion(ang.y, 'y') * SMQuaternion(ang.z, 'z');
-	BaseClass::OnSync();
+	BaseClass::onSync();
 	if(m_pAnimPlayer)
 	{
 		//SPE_EffectPlayByID
-		float3 pos = m_pAnimPlayer->GetBoneTransformPos(m_pAnimPlayer->GetBone("muzzle_rifle1"));
+		float3 pos = m_pAnimPlayer->getBoneTransformPos(m_pAnimPlayer->getBone("muzzle_rifle1"));
 		SPE_EffectPosSet(m_iMuzzleFlash, &pos);
 		//pos = m_vOrientation * float3(0, 0, 1);
 		SPE_EffectRotSetQ(m_iMuzzleFlash, m_vOrientation);
 	}
 }
 
-void SXbaseTool::_Update(float dt)
+void CBaseTool::_update(float dt)
 {
 	float speed = 1.0f / m_fZoomTime;
 	if(m_bInSecondaryAction && m_iZoomable)
@@ -232,7 +233,7 @@ void SXbaseTool::_Update(float dt)
 			{
 				m_fZoomProgress = 1.0f;
 			}
-			_Rezoom();
+			_rezoom();
 		}
 	}
 	else
@@ -244,19 +245,19 @@ void SXbaseTool::_Update(float dt)
 			{
 				m_fZoomProgress = 0.0f;
 			}
-			_Rezoom();
+			_rezoom();
 		}
 	}
 }
 
-void SXbaseTool::SetParent(SXbaseEntity * pEnt, int attachment)
+void CBaseTool::setParent(CBaseEntity * pEnt, int attachment)
 {
-	BaseClass::SetParent(pEnt, attachment);
+	BaseClass::setParent(pEnt, attachment);
 
-	_Rezoom();
+	_rezoom();
 }
 
-void SXbaseTool::_Rezoom()
+void CBaseTool::_rezoom()
 {
 	const float * r_default_fov = GET_PCVAR_FLOAT("r_default_fov");
 	m_vOffsetPos = (float3)vlerp(m_vSlotPos, m_vSlotPosAim, m_fZoomProgress);
@@ -264,6 +265,16 @@ void SXbaseTool::_Rezoom()
 	m_qSlotRotResult = SMquaternionSlerp(m_qSlotRot, m_qSlotRotAim, m_fZoomProgress);
 	if(m_pOwner)
 	{
-		((SXplayer*)m_pOwner)->GetCamera()->GetCamera()->SetFOV(SMToRadian(vlerp(*r_default_fov, *r_default_fov - 10.0f, m_fZoomProgress)));
+		((CPlayer*)m_pOwner)->getCamera()->getCamera()->SetFOV(SMToRadian(vlerp(*r_default_fov, *r_default_fov - 10.0f, m_fZoomProgress)));
 	}
 }
+
+bool CBaseTool::isWeapon() const
+{
+	return(m_bIsWeapon);
+}
+
+float CBaseTool::getCondition() const
+{
+	return(1.0f);
+}
diff --git a/source/game/SXbaseTool.h b/source/game/BaseTool.h
similarity index 60%
rename from source/game/SXbaseTool.h
rename to source/game/BaseTool.h
index 4a34d6f65b651506cd1bbcdb60ea80433e7a1d10..b443fe1a82ae7c9039f81341b1836299365041d6 100644
--- a/source/game/SXbaseTool.h
+++ b/source/game/BaseTool.h
@@ -8,10 +8,10 @@ See the license in LICENSE
 Базовый класс инструмента
 */
 
-#ifndef _SXbaseTool_H_
-#define _SXbaseTool_H_
+#ifndef _CBaseTool_H_
+#define _CBaseTool_H_
 
-#include "SXbaseItem.h"
+#include "BaseItem.h"
 #include <score/sxscore.h>
 
 enum
@@ -29,34 +29,40 @@ enum
 /*! Инструмент
 \ingroup cbaseitem
 */
-class SXbaseTool: public SXbaseItem
+class CBaseTool: public CBaseItem
 {
-	DECLARE_CLASS(SXbaseTool, SXbaseItem);
+	DECLARE_CLASS(CBaseTool, CBaseItem);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
-	~SXbaseTool();
+	~CBaseTool();
 
-	virtual void OnPostLoad();
+	virtual void onPostLoad();
 
-	virtual void PrimaryAction(BOOL st);
-	virtual void SecondaryAction(BOOL st);
-	virtual void Reload();
+	virtual void primaryAction(BOOL st);
+	virtual void secondaryAction(BOOL st);
+	virtual void reload();
 
 	//virtual void Deploy() = 0;
 
-	void SetNextUse(float time);
-	bool CanUse();
+	void setNextUse(float time);
+	bool canUse();
 
-	void SetIsWorldModel(bool b);
+	void setIsWorldModel(bool b);
 
-	void AttachHands();
+	void attachHands();
 
-	void DbgMove(int dir, float delta);
+	void dbgMove(int dir, float delta);
 
-	void OnSync();
+	void onSync();
 
-	void SetParent(SXbaseEntity * pEnt, int attachment = -1);
+	void setParent(CBaseEntity * pEnt, int attachment = -1);
+
+	//! Этот инструмент - оружие
+	bool isWeapon() const;
+
+	//! Состояние: 1 - целое; 0 - сломанное
+	float getCondition() const;
 
 protected:
 
@@ -71,13 +77,13 @@ protected:
 
 	float m_fZoomProgress;
 
-	void _AllowUse(float dt)
+	void _allowUse(float dt)
 	{
 		m_bCanUse = true;
 	}
 
-	void _Update(float dt);
-	void _Rezoom();
+	void _update(float dt);
+	void _rezoom();
 
 	float m_fReloadTime;
 
@@ -105,6 +111,9 @@ protected:
 	const char * m_szUsableAmmos;
 
 	float m_fMaxDistance;
+
+	//! Этот инструмент - оружие
+	bool m_bIsWeapon;
 };
 
 #endif
diff --git a/source/game/BaseTrigger.cpp b/source/game/BaseTrigger.cpp
index 31e083829f10c2838ed39f5355fe557f654b9137..7b7d8a89420492ee13242a90609743fc153257cf 100644
--- a/source/game/BaseTrigger.cpp
+++ b/source/game/BaseTrigger.cpp
@@ -24,7 +24,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY(CBaseTrigger, trigger);
 
-CBaseTrigger::CBaseTrigger(EntityManager * pMgr):
+CBaseTrigger::CBaseTrigger(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_bEnabled(true),
 	m_pGhostObject(NULL),
@@ -35,13 +35,13 @@ CBaseTrigger::CBaseTrigger(EntityManager * pMgr):
 
 CBaseTrigger::~CBaseTrigger()
 {
-	RemovePhysBody();
+	removePhysBody();
 	CLEAR_INTERVAL(m_idUpdateInterval);
 }
 
-void CBaseTrigger::OnPostLoad()
+void CBaseTrigger::onPostLoad()
 {
-	BaseClass::OnPostLoad();
+	BaseClass::onPostLoad();
 
 	if(m_pAnimPlayer)
 	{
@@ -99,7 +99,7 @@ void CBaseTrigger::inToggle(inputdata_t * pInputdata)
 	toggle();
 }
 
-void CBaseTrigger::CreatePhysBody()
+void CBaseTrigger::createPhysBody()
 {
 	if(m_pCollideShape)
 	{
@@ -113,7 +113,7 @@ void CBaseTrigger::CreatePhysBody()
 	}
 }
 
-void CBaseTrigger::RemovePhysBody()
+void CBaseTrigger::removePhysBody()
 {
 	if(m_pGhostObject)
 	{
@@ -122,22 +122,22 @@ void CBaseTrigger::RemovePhysBody()
 	}
 }
 
-void CBaseTrigger::onTouchStart(SXbaseEntity *pActivator)
+void CBaseTrigger::onTouchStart(CBaseEntity *pActivator)
 {
 	FIRE_OUTPUT(m_onTouchStart, pActivator);
 }
-void CBaseTrigger::onTouchEnd(SXbaseEntity *pActivator)
+void CBaseTrigger::onTouchEnd(CBaseEntity *pActivator)
 {
 	FIRE_OUTPUT(m_onTouchEnd, pActivator);
 }
-void CBaseTrigger::onTouchEndAll(SXbaseEntity *pActivator)
+void CBaseTrigger::onTouchEndAll(CBaseEntity *pActivator)
 {
 	FIRE_OUTPUT(m_onTouchEndAll, pActivator);
 }
 
-void CBaseTrigger::OnSync()
+void CBaseTrigger::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
 	if(!m_pGhostObject || !m_bEnabled)
 	{
@@ -175,11 +175,11 @@ void CBaseTrigger::OnSync()
 								? manifoldArray[0]->getBody1()
 								: manifoldArray[0]->getBody0();
 
-							SXbaseEntity * pEnt = (SXbaseEntity*)pObject->getUserPointer();
+							CBaseEntity * pEnt = (CBaseEntity*)pObject->getUserPointer();
 							if(pEnt)
 							{
 								m_aNewTouches.push_back(pEnt);
-								//printf("touched %s\n", pEnt->GetClassName());
+								//printf("touched %s\n", pEnt->getClassName());
 							}
 						}
 					}
@@ -218,7 +218,7 @@ void CBaseTrigger::update(float dt)
 			onTouchStart(m_aNewTouches[i]);
 		}
 	}
-	SXbaseEntity * pLastTouch = NULL;
+	CBaseEntity * pLastTouch = NULL;
 	for(int j = 0, jl = m_aTouches.size(); j < jl; ++j)
 	{
 		if(m_aTouches[j])
diff --git a/source/game/BaseTrigger.h b/source/game/BaseTrigger.h
index 672b1d9fb36df0b218c4555e771a2aea35284ecc..be7e9c5d568d50ab12616bf50eacbd0aeffb4d1c 100644
--- a/source/game/BaseTrigger.h
+++ b/source/game/BaseTrigger.h
@@ -17,19 +17,19 @@ See the license in LICENSE
 #ifndef _BaseTrigger_H_
 #define _BaseTrigger_H_
 
-#include "SXbaseAnimating.h"
+#include "BaseAnimating.h"
 
 //! Базовый класс триггера
-class CBaseTrigger: public SXbaseAnimating
+class CBaseTrigger: public CBaseAnimating
 {
-	DECLARE_CLASS(CBaseTrigger, SXbaseAnimating);
+	DECLARE_CLASS(CBaseTrigger, CBaseAnimating);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
 	~CBaseTrigger();
 
-	void OnSync();
-	void OnPostLoad();
+	void onSync();
+	void onPostLoad();
 
 	void enable();
 	void disable();
@@ -41,8 +41,8 @@ protected:
 
 	ID m_idDevMaterial;
 	
-	Array<SXbaseEntity*> m_aTouches;
-	Array<SXbaseEntity*> m_aNewTouches;
+	Array<CBaseEntity*> m_aTouches;
+	Array<CBaseEntity*> m_aNewTouches;
 	
 	output_t m_onTouchStart;
 	output_t m_onTouchEnd;
@@ -56,12 +56,12 @@ protected:
 	void inDisable(inputdata_t * pInputdata);
 	void inToggle(inputdata_t * pInputdata);
 
-	virtual void CreatePhysBody();
-	virtual void RemovePhysBody();
+	virtual void createPhysBody();
+	virtual void removePhysBody();
 
-	virtual void onTouchStart(SXbaseEntity *pActivator);
-	virtual void onTouchEnd(SXbaseEntity *pActivator);
-	virtual void onTouchEndAll(SXbaseEntity *pActivator);
+	virtual void onTouchStart(CBaseEntity *pActivator);
+	virtual void onTouchEnd(CBaseEntity *pActivator);
+	virtual void onTouchEndAll(CBaseEntity *pActivator);
 };
 
 #endif
diff --git a/source/game/SXbaseWeapon.cpp b/source/game/BaseWeapon.cpp
similarity index 61%
rename from source/game/SXbaseWeapon.cpp
rename to source/game/BaseWeapon.cpp
index f68fc039f0bca3aeb6e1c2240d5b9686c66cc79d..c69fa94b80cd653c60bc589250392915f8ceca6e 100644
--- a/source/game/SXbaseWeapon.cpp
+++ b/source/game/BaseWeapon.cpp
@@ -1,14 +1,14 @@
 
 #include <particles/sxparticles.h>
-#include "SXbaseWeapon.h"
-#include "SXplayer.h"
+#include "BaseWeapon.h"
+#include "Player.h"
 
 /*! \skydocent base_weapon
 Базовый класс для оружия
 */
 
 
-BEGIN_PROPTABLE(SXbaseWeapon)
+BEGIN_PROPTABLE(CBaseWeapon)
 	//! Совместимые прицелы, классы через запятую
 	DEFINE_FIELD_STRING(m_szAddonScopes, PDFF_NOEDIT | PDFF_NOEXPORT, "addon_scopes", "", EDITOR_NONE)
 	//! Совместимые глушители
@@ -51,11 +51,33 @@ BEGIN_PROPTABLE(SXbaseWeapon)
 	DEFINE_FIELD_INT(m_iCapacity, PDFF_NOEDIT | PDFF_NOEXPORT, "capacity", "", EDITOR_NONE)
 	//! Текущая загрузка без учета магазина
 	DEFINE_FIELD_INT(m_iCurrentLoad, PDFF_NOEDIT, "current_load", "", EDITOR_NONE)
+
+
+	//! угол (в градусах) базовой дисперсии оружия (оружия, зажатого в тисках)
+	DEFINE_FIELD_FLOAT(m_fBaseSpread, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_base", "", EDITOR_NONE)
+	//! коэффициент разброса в стоя
+	DEFINE_FIELD_FLOAT(m_fSpreadIdle, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_idle", "", EDITOR_NONE)
+	//! коэффициент разброса пригнувшись
+	DEFINE_FIELD_FLOAT(m_fSpreadCrouch, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_crouch", "", EDITOR_NONE)
+	//! коэффициент разброса лежа
+	DEFINE_FIELD_FLOAT(m_fSpreadCrawl, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_crawl", "", EDITOR_NONE)
+	//! коэффициент разброса в ходьбе
+	DEFINE_FIELD_FLOAT(m_fSpreadWalk, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_walk", "", EDITOR_NONE)
+	//! коэффициент разброса в беге
+	DEFINE_FIELD_FLOAT(m_fSpreadRun, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_run", "", EDITOR_NONE)
+	//! коэффициент разброса в полете (прыжок)
+	DEFINE_FIELD_FLOAT(m_fSpreadAirborne, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_airborne", "", EDITOR_NONE)
+	//! коэффициент разброса от состояния оружия
+	DEFINE_FIELD_FLOAT(m_fSpreadCondition, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_condition", "", EDITOR_NONE)
+	//! коэффициент разброса от состояния рук
+	DEFINE_FIELD_FLOAT(m_fSpreadArm, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_arm", "", EDITOR_NONE)
+	//! коэффициент разброса в прицеливании
+	DEFINE_FIELD_FLOAT(m_fSpreadIronSight, PDFF_NOEDIT | PDFF_NOEXPORT, "spread_ironsight", "", EDITOR_NONE)
 END_PROPTABLE()
 
-REGISTER_ENTITY_NOLISTING(SXbaseWeapon, base_weapon);
+REGISTER_ENTITY_NOLISTING(CBaseWeapon, base_weapon);
 
-SXbaseWeapon::SXbaseWeapon(EntityManager * pMgr):
+CBaseWeapon::CBaseWeapon(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_pSilencer(NULL),
 	m_pScope(NULL),
@@ -72,12 +94,25 @@ SXbaseWeapon::SXbaseWeapon(EntityManager * pMgr):
 	m_idSndSwitch(-1),
 
 	m_iCapacity(1),
-	m_iCurrentLoad(0)
-{}
+	m_iCurrentLoad(0),
+
+	m_fBaseSpread(0.33f),
+	m_fSpreadIdle(0.01f),
+	m_fSpreadCrouch(0.007f),
+	m_fSpreadCrawl(0.001f),
+	m_fSpreadWalk(1.0f),
+	m_fSpreadRun(4.0f),
+	m_fSpreadAirborne(5.0f),
+	m_fSpreadCondition(3.0f),
+	m_fSpreadArm(3.0f),
+	m_fSpreadIronSight(-0.8f)
+{
+	m_bIsWeapon = true;
+}
 
-void SXbaseWeapon::OnPostLoad()
+void CBaseWeapon::onPostLoad()
 {
-	BaseClass::OnPostLoad();
+	BaseClass::onPostLoad();
 
 	if(m_szSndDraw[0])
 	{
@@ -105,9 +140,9 @@ void SXbaseWeapon::OnPostLoad()
 	}
 }
 
-bool SXbaseWeapon::SetKV(const char * name, const char * value)
+bool CBaseWeapon::setKV(const char * name, const char * value)
 {
-	if(!BaseClass::SetKV(name, value))
+	if(!BaseClass::setKV(name, value))
 	{
 		return(false);
 	}
@@ -141,32 +176,32 @@ bool SXbaseWeapon::SetKV(const char * name, const char * value)
 		}
 		if(!m_iFireModes)
 		{
-			printf(COLOR_LRED "No firemodes defined for '%s'\n" COLOR_RESET, GetClassName());
+			printf(COLOR_LRED "No firemodes defined for '%s'\n" COLOR_RESET, getClassName());
 		}
 	}
 	return(true);
 }
 
-void SXbaseWeapon::PrimaryAction(BOOL st)
+void CBaseWeapon::primaryAction(BOOL st)
 {
 	m_bInPrimaryAction = st != FALSE;
 	if(st)
 	{
-		PlayAnimation("shoot1");
+		playAnimation("shoot1");
 		if(ID_VALID(m_iMuzzleFlash))
 		{
 			SPE_EffectEnableSet(m_iMuzzleFlash, true);
 		}
 		if(ID_VALID(m_iSoundAction1))
 		{
-			SSCore_SndInstancePlay3d(m_iSoundAction1, &GetPos());
+			SSCore_SndInstancePlay3d(m_iSoundAction1, &getPos());
 		}
 
-		//((SXplayer*)m_pOwner)->is
+		//((CPlayer*)m_pOwner)->is
 
 		//trace line
-		float3 start = GetPos();
-		float3 dir = m_pParent->GetOrient() * float3(0.0f, 0.0f, 1.0f);
+		float3 start = getPos();
+		float3 dir = m_pParent->getOrient() * float3(0.0f, 0.0f, 1.0f);
 		float3 end = start + dir * m_fMaxDistance;
 		btCollisionWorld::ClosestRayResultCallback cb(F3_BTVEC(start), F3_BTVEC(end));
 		SXPhysics_GetDynWorld()->rayTest(F3_BTVEC(start), F3_BTVEC(end), cb);
@@ -185,16 +220,16 @@ void SXbaseWeapon::PrimaryAction(BOOL st)
 	}
 }
 
-void SXbaseWeapon::SecondaryAction(BOOL st)
+void CBaseWeapon::secondaryAction(BOOL st)
 {
 	m_bInSecondaryAction = st != FALSE;
 	if(m_iZoomable)
 	{
-		((SXplayer*)m_pOwner)->GetCrosshair()->Enable(!st);
+		((CPlayer*)m_pOwner)->getCrosshair()->enable(!st);
 	}
 }
 
-void SXbaseWeapon::Reload()
+void CBaseWeapon::reload()
 {
 	if(!m_pMag)
 	{
@@ -206,7 +241,7 @@ void SXbaseWeapon::Reload()
 		printf(COLOR_MAGENTA "Cannot reload without owner!\n" COLOR_RESET);
 		return;
 	}
-	if(CanUse())
+	if(canUse())
 	{
 		//int count = m_pOwner->getInventory()->consumeItems("ammo_5.45x39ps", m_pMag->getCapacity() - m_pMag->getLoad() + m_iCapacity - m_iCurrentLoad);
 		//count += m_iCurrentLoad;
@@ -214,28 +249,28 @@ void SXbaseWeapon::Reload()
 		//count -= m_iCurrentLoad;
 		//m_pMag->load(count);
 
-		SetNextUse(m_fReloadTime);
-		PlayAnimation("reload");
+		setNextUse(m_fReloadTime);
+		playAnimation("reload");
 		if(ID_VALID(m_idSndReload))
 		{
-			SSCore_SndInstancePlay3d(m_idSndReload, &GetPos());
+			SSCore_SndInstancePlay3d(m_idSndReload, &getPos());
 		}
 	}
 }
 
-void SXbaseWeapon::setFireMode(FIRE_MODE mode)
+void CBaseWeapon::setFireMode(FIRE_MODE mode)
 {
 	if(!(m_iFireModes & mode))
 	{
 		m_fireMode = mode;
 		if(ID_VALID(m_idSndReload))
 		{
-			SSCore_SndInstancePlay3d(m_idSndSwitch, &GetPos());
+			SSCore_SndInstancePlay3d(m_idSndSwitch, &getPos());
 		}
 	}
 }
 
-void SXbaseWeapon::nextFireMode()
+void CBaseWeapon::nextFireMode()
 {
 	int cur = (int)log2f((float)m_fireMode);
 	int newMode = cur;
@@ -250,7 +285,53 @@ void SXbaseWeapon::nextFireMode()
 	}
 }
 
-bool SXbaseWeapon::canShoot()
+bool CBaseWeapon::canShoot()
 {
 	return(m_iCurrentLoad > 0 || (m_pMag && m_pMag->getLoad() > 0));
 }
+
+float CBaseWeapon::getWeight()
+{
+	return(m_iInvWeight +
+		(m_pHandle ? m_pHandle->getWeight() : 0.0f) +
+		(m_pScope ? m_pScope->getWeight() : 0.0f) +
+		(m_pMag ? m_pMag->getWeight() : 0.0f) +
+		(m_pSilencer ? m_pSilencer->getWeight() : 0.0f)
+	);
+}
+
+float CBaseWeapon::getBaseSpread() const
+{
+	return(m_fBaseSpread);
+}
+
+bool CBaseWeapon::isIronSight() const
+{
+	return(m_iZoomable && m_bInSecondaryAction);
+}
+
+float CBaseWeapon::getSpreadCoeff(SPREAD_COEFF what) const
+{
+	switch(what)
+	{
+	case SPREAD_COEFF_IDLE:
+		return(m_fSpreadIdle);
+	case SPREAD_COEFF_CROUCH:
+		return(m_fSpreadCrouch);
+	case SPREAD_COEFF_CRAWL:
+		return(m_fSpreadCrawl);
+	case SPREAD_COEFF_WALK:
+		return(m_fSpreadWalk);
+	case SPREAD_COEFF_RUN:
+		return(m_fSpreadRun);
+	case SPREAD_COEFF_AIRBORNE:
+		return(m_fSpreadAirborne);
+	case SPREAD_COEFF_CONDITION:
+		return(m_fSpreadCondition);
+	case SPREAD_COEFF_ARM:
+		return(m_fSpreadArm);
+	case SPREAD_COEFF_IRONSIGHT:
+		return(m_fSpreadIronSight);
+	}
+	return(1.0f);
+}
diff --git a/source/game/SXbaseWeapon.h b/source/game/BaseWeapon.h
similarity index 51%
rename from source/game/SXbaseWeapon.h
rename to source/game/BaseWeapon.h
index 7f46533db667e5cc88240bc179587c995b09183d..91ae59b8b1633d22c062f748d032372c49868257 100644
--- a/source/game/SXbaseWeapon.h
+++ b/source/game/BaseWeapon.h
@@ -8,10 +8,10 @@ See the license in LICENSE
 Базовый класс оружия
 */
 
-#ifndef _SXbaseWeapon_H_
-#define _SXbaseWeapon_H_
+#ifndef _CBaseWeapon_H_
+#define _CBaseWeapon_H_
 
-#include "SXbaseTool.h"
+#include "BaseTool.h"
 
 #include "BaseScope.h"
 #include "BaseHandle.h"
@@ -28,28 +28,55 @@ enum FIRE_MODE
 };
 #define FIRE_MODE_COUNT 3
 
+//! Идентификаторы для получения коэффициентов разброса
+enum SPREAD_COEFF
+{
+	SPREAD_COEFF_IDLE, //!< стоя
+	SPREAD_COEFF_CROUCH, //!< пригувшись
+	SPREAD_COEFF_CRAWL, //!< лежа
+	SPREAD_COEFF_WALK, //!< в ходьбе
+	SPREAD_COEFF_RUN, //!<  в беге
+	SPREAD_COEFF_AIRBORNE, //!< в прыжке
+	SPREAD_COEFF_CONDITION, //!< состояние оружия
+	SPREAD_COEFF_ARM, //!< состояние рук
+	SPREAD_COEFF_IRONSIGHT, //!< в прицеливании
+};
+
 /*! Оружие
 \ingroup cbaseitem
 */
-class SXbaseWeapon: public SXbaseTool
+class CBaseWeapon: public CBaseTool
 {
-	DECLARE_CLASS(SXbaseWeapon, SXbaseTool);
+	DECLARE_CLASS(CBaseWeapon, CBaseTool);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
-	virtual void OnPostLoad();
+	virtual void onPostLoad();
 
-	virtual void PrimaryAction(BOOL st);
-	virtual void SecondaryAction(BOOL st);
-	virtual void Reload();
+	virtual void primaryAction(BOOL st);
+	virtual void secondaryAction(BOOL st);
+	virtual void reload();
 
-	virtual bool SetKV(const char * name, const char * value);
+	virtual bool setKV(const char * name, const char * value);
 
 	void setFireMode(FIRE_MODE mode);
 	void nextFireMode();
 
 	bool canShoot();
 
+	//! Масса объекта
+	float getWeight();
+
+
+	//! угол (в градусах) базовой дисперсии оружия (оружия, зажатого в тисках)
+	float getBaseSpread() const;
+
+	//! в прицеливании
+	bool isIronSight() const;
+
+	//! Коэффициент разброса
+	float getSpreadCoeff(SPREAD_COEFF what) const;
+
 protected:
 
 	// Compatible addons
@@ -94,6 +121,18 @@ protected:
 	// Without mag
 	int m_iCapacity;
 	int m_iCurrentLoad;
+
+	// Spread
+	float m_fBaseSpread;
+	float m_fSpreadIdle;
+	float m_fSpreadCrouch;
+	float m_fSpreadCrawl;
+	float m_fSpreadWalk;
+	float m_fSpreadRun;
+	float m_fSpreadAirborne;
+	float m_fSpreadCondition;
+	float m_fSpreadArm;
+	float m_fSpreadIronSight;
 };
 
 #endif
diff --git a/source/game/BaseWeaponAddon.cpp b/source/game/BaseWeaponAddon.cpp
index d1dd2dc5e376c25bb39366bc044f6ad6d68c1750..26fe086f971fc15067a52fd317129d73586b2b26 100644
--- a/source/game/BaseWeaponAddon.cpp
+++ b/source/game/BaseWeaponAddon.cpp
@@ -10,7 +10,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CBaseWeaponAddon, base_wpn_addon);
 
-CBaseWeaponAddon::CBaseWeaponAddon(EntityManager * pMgr):
+CBaseWeaponAddon::CBaseWeaponAddon(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_addonType(WPN_ADDON_NONE)
 {
diff --git a/source/game/BaseWeaponAddon.h b/source/game/BaseWeaponAddon.h
index 3b466f61cacbbd975713a30447e703a4f39670fa..6521d8abcf9b5c0dbfb4aeeea5a310274908edee 100644
--- a/source/game/BaseWeaponAddon.h
+++ b/source/game/BaseWeaponAddon.h
@@ -11,7 +11,7 @@ See the license in LICENSE
 #ifndef _BaseWeaponAddon_H_
 #define _BaseWeaponAddon_H_
 
-#include "SXbaseItem.h"
+#include "BaseItem.h"
 
 /*! Тип навеса
 \ingroup cbaseitem
@@ -28,9 +28,9 @@ enum WPN_ADDON
 /*! Навесы на оружие
 \ingroup cbaseitem
 */
-class CBaseWeaponAddon: public SXbaseItem
+class CBaseWeaponAddon: public CBaseItem
 {
-	DECLARE_CLASS(CBaseWeaponAddon, SXbaseItem);
+	DECLARE_CLASS(CBaseWeaponAddon, CBaseItem);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
diff --git a/source/game/CrosshairManager.cpp b/source/game/CrosshairManager.cpp
index e1db15a8e4a1eba6789dcac026e1afa9dd8d318f..3275b81a1082952ff507950ad908789e651544a6 100644
--- a/source/game/CrosshairManager.cpp
+++ b/source/game/CrosshairManager.cpp
@@ -1,27 +1,27 @@
 
 #include "CrosshairManager.h"
 
-AssotiativeArray<AAString, ID> CrosshairManager::m_mIndex;
-Array<CrosshairManager::CrosshairDesc> CrosshairManager::m_vCrosshairList;
+AssotiativeArray<AAString, ID> CCrosshairManager::m_mIndex;
+Array<CCrosshairManager::CrosshairDesc> CCrosshairManager::m_vCrosshairList;
 
 extern report_func reportf;
 
-void CrosshairManager::loadCrosshair(ID id, Crosshair * pCrosshair)
+void CCrosshairManager::loadCrosshair(ID id, CCrosshair * pCCrosshair)
 {
 	if(id < 0 || id >= (ID)m_vCrosshairList.size())
 	{
 		return;
 	}
 	CrosshairDesc * desc = &m_vCrosshairList[id];
-	pCrosshair->SetAngle(desc->fAngle);
-	pCrosshair->SetFixedRadius(desc->fRadius);
-	pCrosshair->SetNumSegmens(desc->iNumSegments);
-	pCrosshair->SetStyle(desc->style);
-	pCrosshair->SetTexInfo(desc->f2TexOffset, desc->f2TexSize);
-	pCrosshair->SetTexture(desc->idTexture);
+	pCCrosshair->setAngle(desc->fAngle);
+	pCCrosshair->setFixedRadius(desc->fRadius);
+	pCCrosshair->setNumSegmens(desc->iNumSegments);
+	pCCrosshair->setStyle(desc->style);
+	pCCrosshair->setTexInfo(desc->f2TexOffset, desc->f2TexSize);
+	pCCrosshair->setTexture(desc->idTexture);
 }
 
-void CrosshairManager::loadConfig(const char * szFile)
+void CCrosshairManager::loadConfig(const char * szFile)
 {
 	ISXConfig * config = Core_OpConfig(szFile);
 	int sections = config->getSectionCount();
@@ -71,15 +71,15 @@ void CrosshairManager::loadConfig(const char * szFile)
 		}
 		if(strcmpi(str, "split_move") == 0)
 		{
-			cd.style = Crosshair::SPLIT_MOVE;
+			cd.style = CCrosshair::SPLIT_MOVE;
 		}
 		else if(strcmpi(str, "scaled") == 0)
 		{
-			cd.style = Crosshair::SCALED;
+			cd.style = CCrosshair::SCALED;
 		}
 		else
 		{
-			reportf(REPORT_MSG_LEVEL_WARNING, "Unknown crosshair style '%s' for '%s'\n", str, sect);
+			reportf(REPORT_MSG_LEVEL_WARNING, "Unknown CCrosshair style '%s' for '%s'\n", str, sect);
 			continue;
 		}
 
@@ -91,7 +91,7 @@ void CrosshairManager::loadConfig(const char * szFile)
 		}
 		else
 		{
-			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read crosshair tex '%s'\n", sect);
+			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read CCrosshair tex '%s'\n", sect);
 			continue;
 		}
 		int x, y;
@@ -101,7 +101,7 @@ void CrosshairManager::loadConfig(const char * szFile)
 		}
 		else
 		{
-			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read crosshair tex_offset '%s'. Expected format: '[x,y]'\n", sect);
+			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read CCrosshair tex_offset '%s'. Expected format: '[x,y]'\n", sect);
 			continue;
 		}
 		if(config->keyExists(sect, "tex_size") && sscanf(config->getKey(sect, "tex_size"), "[%d,%d]", &x, &y) == 2)
@@ -110,7 +110,7 @@ void CrosshairManager::loadConfig(const char * szFile)
 		}
 		else
 		{
-			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read crosshair tex_size '%s'. Expected format: '[x,y]'\n", sect);
+			reportf(REPORT_MSG_LEVEL_WARNING, "Unable to read CCrosshair tex_size '%s'. Expected format: '[x,y]'\n", sect);
 			continue;
 		}
 		AAString aas;
@@ -122,7 +122,7 @@ void CrosshairManager::loadConfig(const char * szFile)
 	mem_release(config);
 }
 
-ID CrosshairManager::getCrosshairID(const char * szName)
+ID CCrosshairManager::getCrosshairID(const char * szName)
 {
 	const AssotiativeArray<AAString, ID>::Node * pNode;
 	if(m_mIndex.KeyExists(AAString(szName), &pNode))
diff --git a/source/game/CrosshairManager.h b/source/game/CrosshairManager.h
index 4677423328a3ba10ff6e121d560afb551ed23a16..62a775e0c131874ec0efc7b7882b5c39a856c63b 100644
--- a/source/game/CrosshairManager.h
+++ b/source/game/CrosshairManager.h
@@ -6,10 +6,10 @@
 #include <common/AAString.h>
 #include "crosshair.h"
 
-class CrosshairManager
+class CCrosshairManager
 {
 public:
-	static void loadCrosshair(ID id, Crosshair * pCrosshair);
+	static void loadCrosshair(ID id, CCrosshair * pCrosshair);
 	static void loadConfig(const char * szFile);
 	static ID getCrosshairID(const char * szName);
 
@@ -19,7 +19,7 @@ protected:
 		float fAngle;
 		float fRadius;
 		int iNumSegments;
-		Crosshair::STYLE style;
+		CCrosshair::STYLE style;
 		float2_t f2TexOffset;
 		float2_t f2TexSize;
 		ID idTexture;
diff --git a/source/game/EntityFactory.cpp b/source/game/EntityFactory.cpp
index 0d1d446e7177474c84ccc462e6648d2cda8a192e..c0be706e360f81b950fd5875b7b982d6be2903a5 100644
--- a/source/game/EntityFactory.cpp
+++ b/source/game/EntityFactory.cpp
@@ -1,34 +1,34 @@
 #include "EntityFactory.h"
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 
-EntityFactoryMap::EntityFactoryMap():
+CEntityFactoryMap::CEntityFactoryMap():
 	m_iShowInListCount(0)
 {
 
 }
 
-void EntityFactoryMap::AddFactory(IEntityFactory * pFactory, const char * szName)
+void CEntityFactoryMap::addFactory(IEntityFactory * pFactory, const char * szName)
 {
-	if(!pFactory->IsEditorHidden())
+	if(!pFactory->isEditorHidden())
 	{
 		++m_iShowInListCount;
 	}
 	m_mFactories[AAString(szName)] = pFactory;
 }
-SXbaseEntity * EntityFactoryMap::Create(const char * szName, EntityManager * pWorld, bool bDelayPostLoad)
+CBaseEntity * CEntityFactoryMap::create(const char * szName, CEntityManager * pWorld, bool bDelayPostLoad)
 {
-	IEntityFactory * pFactory = GetFactory(szName);
+	IEntityFactory * pFactory = getFactory(szName);
 	if(pFactory)
 	{
-		EntDefaultsMap * defs = pFactory->GetDefaults();
-		SXbaseEntity * pEnt = pFactory->Create(pWorld);
-		pEnt->SetDefaults();
-		pEnt->SetClassName(pFactory->GetClassName());
+		EntDefaultsMap * defs = pFactory->getDefaults();
+		CBaseEntity * pEnt = pFactory->create(pWorld);
+		pEnt->setDefaults();
+		pEnt->setClassName(pFactory->getClassName());
 
 		if(defs->Size() > 0)
 		{
-			proptable_t * pt = pFactory->GetPropTable();
+			proptable_t * pt = pFactory->getPropTable();
 			const char * key;
 			const EntDefaultsMap::Node * pNode;
 			while(pt)
@@ -38,7 +38,7 @@ SXbaseEntity * EntityFactoryMap::Create(const char * szName, EntityManager * pWo
 					key = pt->pData[i].szKey;
 					if(defs->KeyExists(AAString(key), &pNode))
 					{
-						pEnt->SetKV(key, *(pNode->Val));
+						pEnt->setKV(key, *(pNode->Val));
 					}
 				}
 
@@ -47,25 +47,25 @@ SXbaseEntity * EntityFactoryMap::Create(const char * szName, EntityManager * pWo
 		}
 		if(!bDelayPostLoad)
 		{
-			pEnt->OnPostLoad();
+			pEnt->onPostLoad();
 		}
 		return(pEnt);
 	}
 	return(NULL);
 }
-void EntityFactoryMap::Destroy(SXbaseEntity * pEnt)
+void CEntityFactoryMap::destroy(CBaseEntity * pEnt)
 {
 	if(pEnt)
 	{
-		IEntityFactory * pFactory = GetFactory(pEnt->GetClassName());
+		IEntityFactory * pFactory = getFactory(pEnt->getClassName());
 		if(pFactory)
 		{
-			return(pFactory->Destroy(pEnt));
+			return(pFactory->destroy(pEnt));
 		}
 	}
 }
 
-IEntityFactory * EntityFactoryMap::GetFactory(const char * szName)
+IEntityFactory * CEntityFactoryMap::getFactory(const char * szName)
 {
 	AAString key(szName);
 	if(m_mFactories.KeyExists(key))
@@ -75,33 +75,33 @@ IEntityFactory * EntityFactoryMap::GetFactory(const char * szName)
 	return(NULL);
 }
 
-EntityFactoryMap * EntityFactoryMap::GetInstance()
+CEntityFactoryMap * CEntityFactoryMap::GetInstance()
 {
-	static EntityFactoryMap map;
+	static CEntityFactoryMap map;
 	return(&map);
 }
 
-proptable_t * EntityFactoryMap::GetPropTable(const char * szClass)
+proptable_t * CEntityFactoryMap::getPropTable(const char * szClass)
 {
-	return(GetFactory(szClass)->GetPropTable());
+	return(getFactory(szClass)->getPropTable());
 }
 
-bool EntityFactoryMap::IsEditorHidden(const char * szClass)
+bool CEntityFactoryMap::isEditorHidden(const char * szClass)
 {
-	return(GetFactory(szClass)->IsEditorHidden());
+	return(getFactory(szClass)->isEditorHidden());
 }
 
-EntDefaultsMap * EntityFactoryMap::GetDefaults(const char * szClass)
+EntDefaultsMap * CEntityFactoryMap::getDefaults(const char * szClass)
 {
-	return(GetFactory(szClass)->GetDefaults());
+	return(getFactory(szClass)->getDefaults());
 }
 
-int EntityFactoryMap::GetListCount()
+int CEntityFactoryMap::getListCount()
 {
 	return(m_iShowInListCount);
 }
 
-void EntityFactoryMap::GetListing(const char ** pszOut, int size)
+void CEntityFactoryMap::getListing(const char ** pszOut, int size)
 {
 	int j = 0;
 	if(size > m_iShowInListCount)
@@ -110,9 +110,9 @@ void EntityFactoryMap::GetListing(const char ** pszOut, int size)
 	}
 	for(AssotiativeArray<AAString, IEntityFactory*>::Iterator i = m_mFactories.begin(); i && j < size; i++)
 	{
-		if(!(*i.second)->IsEditorHidden())
+		if(!(*i.second)->isEditorHidden())
 		{
-			pszOut[j++] = i.first->GetName();
+			pszOut[j++] = i.first->getName();
 		}
 	}
 }
diff --git a/source/game/EntityFactory.h b/source/game/EntityFactory.h
index 8238488f3dba46a1f580ef20dc8f81b2b2ec0675..2ba5cd2282a395eb59a0002e8acaee67c8544140 100644
--- a/source/game/EntityFactory.h
+++ b/source/game/EntityFactory.h
@@ -1,5 +1,5 @@
-#ifndef _DSentityFactory_H_
-#define _DSentityFactory_H_
+#ifndef _CEntityFactory_H_
+#define _CEntityFactory_H_
 
 #include <gdefines.h>
 #include <common/AssotiativeArray.h>
@@ -9,62 +9,58 @@
 
 #include "proptable.h"
 
-#ifdef GetClassName
-#undef GetClassName
-#endif
-
 typedef AssotiativeArray<AAString, const char *> EntDefaultsMap;
 
-class SXbaseEntity;
-class EntityManager;
+class CBaseEntity;
+class CEntityManager;
 class IEntityFactory
 {
 public:
-	virtual SXbaseEntity * Create(EntityManager * pWorld) = 0;
-	virtual void Destroy(SXbaseEntity * pEnt) = 0;
-	virtual const char * GetClassName() = 0;
-	virtual proptable_t * GetPropTable() = 0;
-	virtual bool IsEditorHidden() = 0;
-	virtual EntDefaultsMap * GetDefaults() = 0;
-	virtual IEntityFactory * Copy(const char * szName, bool showInListing) = 0;
+	virtual CBaseEntity * create(CEntityManager * pWorld) = 0;
+	virtual void destroy(CBaseEntity * pEnt) = 0;
+	virtual const char * getClassName() = 0;
+	virtual proptable_t * getPropTable() = 0;
+	virtual bool isEditorHidden() = 0;
+	virtual EntDefaultsMap * getDefaults() = 0;
+	virtual IEntityFactory * copy(const char * szName, bool showInListing) = 0;
 };
 
-class EntityFactoryMap
+class CEntityFactoryMap
 {
-	friend class EntityManager;
+	friend class CEntityManager;
 public:
-	EntityFactoryMap();
+	CEntityFactoryMap();
 
-	void AddFactory(IEntityFactory * pFactory, const char * szName);
-	SXbaseEntity * Create(const char * szName, EntityManager * pMgr, bool bDelayPostLoad=false);
-	void Destroy(SXbaseEntity * pEnt);
+	void addFactory(IEntityFactory * pFactory, const char * szName);
+	CBaseEntity * create(const char * szName, CEntityManager * pMgr, bool bDelayPostLoad=false);
+	void destroy(CBaseEntity * pEnt);
 
-	static EntityFactoryMap * GetInstance();
-	proptable_t * GetPropTable(const char * szClass);
-	bool IsEditorHidden(const char * szClass);
-	EntDefaultsMap * GetDefaults(const char * szClass);
+	static CEntityFactoryMap * GetInstance();
+	proptable_t * getPropTable(const char * szClass);
+	bool isEditorHidden(const char * szClass);
+	EntDefaultsMap * getDefaults(const char * szClass);
 
-	int GetListCount();
-	void GetListing(const char ** pszOut, int size);
+	int getListCount();
+	void getListing(const char ** pszOut, int size);
 private:
-	IEntityFactory * GetFactory(const char * szName);
+	IEntityFactory * getFactory(const char * szName);
 	AssotiativeArray<AAString, IEntityFactory*> m_mFactories;
 	int m_iShowInListCount;
 };
 
 template <class T>
-class EntityFactory: public IEntityFactory
+class CEntityFactory: public IEntityFactory
 {
 public:
-	EntityFactory(const char * szName, bool showInListing)
+	CEntityFactory(const char * szName, bool showInListing)
 	{
 		m_bShowInListing = showInListing;
 		m_szClassName = szName;
 		m_pPropTable = T::SGetPropTable();
-		EntityFactoryMap::GetInstance()->AddFactory(this, szName);
+		CEntityFactoryMap::GetInstance()->addFactory(this, szName);
 	}
 
-	~EntityFactory()
+	~CEntityFactory()
 	{
 		T::ReleasePropData();
 		for(int i = 0, l = m_vDerivatives.size(); i < l; ++i)
@@ -73,21 +69,21 @@ public:
 		}
 	}
 
-	IEntityFactory * Copy(const char * szName, bool showInListing)
+	IEntityFactory * copy(const char * szName, bool showInListing)
 	{
-		EntityFactory<T> * newF = new EntityFactory<T>(*this);
+		CEntityFactory<T> * newF = new CEntityFactory<T>(*this);
 		newF->m_szClassName = szName;
 		newF->m_bShowInListing = showInListing;
 		m_vDerivatives.push_back(newF);
 		return(newF);
 	}
 
-	SXbaseEntity * Create(EntityManager * pWorld)
+	CBaseEntity * create(CEntityManager * pWorld)
 	{
 		return(new T(pWorld));
 	}
 
-	void Destroy(SXbaseEntity * pEnt)
+	void destroy(CBaseEntity * pEnt)
 	{
 		if(pEnt)
 		{
@@ -95,22 +91,22 @@ public:
 		}
 	}
 
-	const char * GetClassName()
+	const char * getClassName()
 	{
 		return(m_szClassName);
 	}
 
-	proptable_t * GetPropTable()
+	proptable_t * getPropTable()
 	{
 		return(m_pPropTable);
 	}
 
-	bool IsEditorHidden()
+	bool isEditorHidden()
 	{
 		return(!m_bShowInListing);
 	}
 
-	EntDefaultsMap * GetDefaults()
+	EntDefaultsMap * getDefaults()
 	{
 		return(&m_mDefaults);
 	}
@@ -120,17 +116,17 @@ private:
 	proptable_t * m_pPropTable;
 	bool m_bShowInListing;
 	EntDefaultsMap m_mDefaults;
-	Array<EntityFactory<T>*> m_vDerivatives;
+	Array<CEntityFactory<T>*> m_vDerivatives;
 };
 
 #define REGISTER_ENTITY(cls, name) \
-	EntityFactory<cls> ent_ ## name ## _factory(#name, 1)
+	CEntityFactory<cls> ent_ ## name ## _factory(#name, 1)
 
 #define REGISTER_ENTITY_NOLISTING(cls, name) \
-	EntityFactory<cls> ent_ ## name ## _factory(#name, 0)
+	CEntityFactory<cls> ent_ ## name ## _factory(#name, 0)
 
-#define CREATE_ENTITY(cls, mgr) EntityFactoryMap::GetInstance()->Create(cls, mgr)
-#define CREATE_ENTITY_NOPOST(cls, mgr) EntityFactoryMap::GetInstance()->Create(cls, mgr, 1)
-#define REMOVE_ENTITY(ent) EntityFactoryMap::GetInstance()->Destroy(ent)
+#define CREATE_ENTITY(cls, mgr) CEntityFactoryMap::GetInstance()->create(cls, mgr)
+#define CREATE_ENTITY_NOPOST(cls, mgr) CEntityFactoryMap::GetInstance()->create(cls, mgr, 1)
+#define REMOVE_ENTITY(ent) CEntityFactoryMap::GetInstance()->destroy(ent)
 
 #endif
diff --git a/source/game/EntityManager.cpp b/source/game/EntityManager.cpp
index 0ec7bc50803f166b36b0fca1697bf68f308f7ac4..dd55b14b9b27d9c2ce40352a4f5a7699e3a711b3 100644
--- a/source/game/EntityManager.cpp
+++ b/source/game/EntityManager.cpp
@@ -1,30 +1,30 @@
 #include "EntityManager.h"
 
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 #include <core/sxcore.h>
 
 #include <mutex>
 
-EntityManager::EntityManager():
+CEntityManager::CEntityManager():
 	m_iThreadNum(1),
 	m_pDefaultsConf(NULL),
 	m_pDynClassConf(NULL)
 {
-	LoadDefaults();
-	LoadDynClasses();
+	loadDefaults();
+	loadDynClasses();
 
-	Core_0RegisterConcmdClsArg("ent_dump", this, (SXCONCMDCLSARG)&EntityManager::DumpList);
-	Core_0RegisterConcmdClsArg("ent_kv", this, (SXCONCMDCLSARG)&EntityManager::EntKV);
+	Core_0RegisterConcmdClsArg("ent_dump", this, (SXCONCMDCLSARG)&CEntityManager::dumpList);
+	Core_0RegisterConcmdClsArg("ent_kv", this, (SXCONCMDCLSARG)&CEntityManager::entKV);
 }
 
-EntityManager::~EntityManager()
+CEntityManager::~CEntityManager()
 {
 	mem_release(m_pDynClassConf);
 	mem_release(m_pDefaultsConf);
 }
 
-void EntityManager::Update(int thread)
+void CEntityManager::update(int thread)
 {
 	time_point tNow = std::chrono::high_resolution_clock::now();
 	timeout_t * t;
@@ -74,7 +74,7 @@ void EntityManager::Update(int thread)
 	}
 }
 
-void EntityManager::SetThreadNum(int num)
+void CEntityManager::setThreadNum(int num)
 {
 	if(num > 0)
 	{
@@ -82,9 +82,9 @@ void EntityManager::SetThreadNum(int num)
 	}
 }
 
-void EntityManager::Sync()
+void CEntityManager::sync()
 {
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	for(int i = 0, l = m_vTimeout.size(); i < l; ++i)
 	{
 		if(m_vTimeout[i].status == TS_DONE)
@@ -119,27 +119,27 @@ void EntityManager::Sync()
 		if(pEnt)
 		{
 			//pEnt->updateDiscreteLinearVelocity(0, dt);
-			pEnt->OnSync();
+			pEnt->onSync();
 			//pEnt->updateDiscreteLinearVelocity(1, dt);
 		}
 	}
 	//tOld = std::chrono::high_resolution_clock::now();
 }
 
-void EntityManager::unloadObjLevel()
+void CEntityManager::unloadObjLevel()
 {
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	for (int i = 0, l = m_vEntList.size(); i < l; ++i)
 	{
 		pEnt = m_vEntList[i];
-		if (pEnt && (pEnt->GetFlags() & EF_LEVEL))
+		if (pEnt && (pEnt->getFlags() & EF_LEVEL))
 		{
 			REMOVE_ENTITY(pEnt);
 		}
 	}
 }
 
-ID EntityManager::Register(SXbaseEntity * pEnt)
+ID CEntityManager::reg(CBaseEntity * pEnt)
 {
 	ID ent;
 	if(!pEnt)
@@ -159,7 +159,7 @@ ID EntityManager::Register(SXbaseEntity * pEnt)
 	}
 	return(ent);
 }
-void EntityManager::Unregister(ID ent)
+void CEntityManager::unreg(ID ent)
 {
 	//@TODO: Clear all sheduled timeouts and outputs
 	if(m_vEntList.size() <= (UINT)ent || ent < 0)
@@ -170,7 +170,7 @@ void EntityManager::Unregister(ID ent)
 	m_vFreeIDs.push_back(ent);
 }
 
-ID EntityManager::SetTimeout(void(SXbaseEntity::*func)(float dt), SXbaseEntity * pEnt, float delay)
+ID CEntityManager::setTimeout(void(CBaseEntity::*func)(float dt), CBaseEntity * pEnt, float delay)
 {
 	timeout_t t;
 	t.status = TS_WAIT;
@@ -198,7 +198,7 @@ ID EntityManager::SetTimeout(void(SXbaseEntity::*func)(float dt), SXbaseEntity *
 	return(id);
 }
 
-ID EntityManager::SetInterval(void(SXbaseEntity::*func)(float dt), SXbaseEntity * pEnt, float delay)
+ID CEntityManager::setInterval(void(CBaseEntity::*func)(float dt), CBaseEntity * pEnt, float delay)
 {
 	timeout_t t;
 	t.status = TS_WAIT;
@@ -226,7 +226,7 @@ ID EntityManager::SetInterval(void(SXbaseEntity::*func)(float dt), SXbaseEntity
 	return(id);
 }
 
-void EntityManager::ClearInterval(ID id)
+void CEntityManager::clearInterval(ID id)
 {
 	if(id < 0 || (UINT)id >= m_vInterval.size())
 	{
@@ -237,7 +237,7 @@ void EntityManager::ClearInterval(ID id)
 		m_vInterval[id].status = TS_DONE;
 	}
 }
-void EntityManager::ClearTimeout(ID id)
+void CEntityManager::clearTimeout(ID id)
 {
 	if(id < 0 || (UINT)id >= m_vTimeout.size())
 	{
@@ -249,12 +249,12 @@ void EntityManager::ClearTimeout(ID id)
 	}
 }
 
-bool EntityManager::Export(const char * file)
+bool CEntityManager::exportList(const char * file)
 {
 	ISXConfig * conf = Core_CrConfig();
 	conf->New(file);
 	char buf[4096], sect[32];
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	proptable_t * pTbl;
 	int ic = 0;
 
@@ -265,20 +265,20 @@ bool EntityManager::Export(const char * file)
 		pEnt = m_vEntList[i];
 		sprintf(sect, "ent_%d", ic);
 
-		if(!(pEnt->GetFlags() & EF_EXPORT))
+		if(!(pEnt->getFlags() & EF_EXPORT))
 		{
 			continue;
 		}
 
-		conf->set(sect, "classname", pEnt->GetClassName());
-		pTbl = EntityFactoryMap::GetInstance()->GetPropTable(pEnt->GetClassName());
+		conf->set(sect, "classname", pEnt->getClassName());
+		pTbl = CEntityFactoryMap::GetInstance()->getPropTable(pEnt->getClassName());
 		do
 		{
 			for(int j = 0; j < pTbl->numFields; ++j)
 			{
 				if(pTbl->pData[j].szKey && !conf->keyExists(sect, pTbl->pData[j].szKey))
 				{
-					pEnt->GetKV(pTbl->pData[j].szKey, buf, sizeof(buf));
+					pEnt->getKV(pTbl->pData[j].szKey, buf, sizeof(buf));
 					conf->set(sect, pTbl->pData[j].szKey, buf);
 				}
 			}
@@ -295,12 +295,12 @@ bool EntityManager::Export(const char * file)
 	return(ret);
 }
 
-bool EntityManager::Import(const char * file)
+bool CEntityManager::import(const char * file)
 {
 	ISXConfig * conf = Core_CrConfig();
 	char sect[32];
-	SXbaseEntity * pEnt = NULL;
-	Array<SXbaseEntity*> tmpList;
+	CBaseEntity * pEnt = NULL;
+	Array<CBaseEntity*> tmpList;
 	if(conf->open(file))
 	{
 		goto err;
@@ -336,17 +336,17 @@ bool EntityManager::Import(const char * file)
 		}
 		if(conf->keyExists(sect, "name"))
 		{
-			pEnt->SetKV("name", conf->getKey(sect, "name"));
+			pEnt->setKV("name", conf->getKey(sect, "name"));
 		}
 		if(conf->keyExists(sect, "origin"))
 		{
-			pEnt->SetKV("origin", conf->getKey(sect, "origin"));
+			pEnt->setKV("origin", conf->getKey(sect, "origin"));
 		}
 		if(conf->keyExists(sect, "rotation"))
 		{
-			pEnt->SetKV("rotation", conf->getKey(sect, "rotation"));
+			pEnt->setKV("rotation", conf->getKey(sect, "rotation"));
 		}
-		pEnt->SetFlags(pEnt->GetFlags() | EF_EXPORT | EF_LEVEL);
+		pEnt->setFlags(pEnt->getFlags() | EF_EXPORT | EF_LEVEL);
 		tmpList[i] = pEnt;
 	}
 
@@ -364,10 +364,10 @@ bool EntityManager::Import(const char * file)
 			key = conf->getKeyName(sect, j);
  			if(strcmp(key, "classname") && strcmp(key, "origin") && strcmp(key, "name") && strcmp(key, "rotation"))
 			{
-				pEnt->SetKV(key, conf->getKey(sect, key));
+				pEnt->setKV(key, conf->getKey(sect, key));
 			}
 		}
-		pEnt->OnPostLoad();
+		pEnt->onPostLoad();
 	}
 
 	mem_release(conf);
@@ -379,20 +379,20 @@ err:
 }
 
 
-SXbaseEntity * EntityManager::FindEntityByName(const char * name, SXbaseEntity * pStart)
+CBaseEntity * CEntityManager::findEntityByName(const char * name, CBaseEntity * pStart)
 {
 	if(!name[0])
 	{
 		return(NULL);
 	}
 	bool bFound = !pStart;
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	for(int i = 0, l = m_vEntList.size(); i < l; ++i)
 	{
 		pEnt = m_vEntList[i];
 		if(bFound)
 		{
-			if(!strcmp(pEnt->GetName(), name))
+			if(!strcmp(pEnt->getName(), name))
 			{
 				return(pEnt);
 			}
@@ -408,7 +408,7 @@ SXbaseEntity * EntityManager::FindEntityByName(const char * name, SXbaseEntity *
 	return(NULL);
 }
 
-int EntityManager::CountEntityByName(const char * name)
+int CEntityManager::countEntityByName(const char * name)
 {
 	if(!name[0])
 	{
@@ -417,7 +417,7 @@ int EntityManager::CountEntityByName(const char * name)
 	int c = 0;
 	for(int i = 0, l = m_vEntList.size(); i < l; ++i)
 	{
-		if(!strcmp(m_vEntList[i]->GetName(), name))
+		if(!strcmp(m_vEntList[i]->getName(), name))
 		{
 			++c;
 		}
@@ -425,16 +425,16 @@ int EntityManager::CountEntityByName(const char * name)
 	return(c);
 }
 
-SXbaseEntity * EntityManager::FindEntityByClass(const char * name, SXbaseEntity * pStart)
+CBaseEntity * CEntityManager::findEntityByClass(const char * name, CBaseEntity * pStart)
 {
 	bool bFound = !pStart;
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	for(int i = 0, l = m_vEntList.size(); i < l; ++i)
 	{
 		pEnt = m_vEntList[i];
 		if(bFound)
 		{
-			if(!strcmp(pEnt->GetClassName(), name))
+			if(!strcmp(pEnt->getClassName(), name))
 			{
 				return(pEnt);
 			}
@@ -450,7 +450,7 @@ SXbaseEntity * EntityManager::FindEntityByClass(const char * name, SXbaseEntity
 	return(NULL);
 }
 
-void EntityManager::LoadDefaults()
+void CEntityManager::loadDefaults()
 {
 	m_pDefaultsConf = Core_CrConfig();
 	if(m_pDefaultsConf->open("config/entities/defaults.ent") < 0)
@@ -465,7 +465,7 @@ void EntityManager::LoadDefaults()
 	for(int i = 0, l = m_pDefaultsConf->getSectionCount(); i < l; ++i)
 	{
 		sect = m_pDefaultsConf->getSectionName(i);
-		if(!(defs = EntityFactoryMap::GetInstance()->GetDefaults(sect)))
+		if(!(defs = CEntityFactoryMap::GetInstance()->getDefaults(sect)))
 		{
 			continue;
 		}
@@ -477,7 +477,7 @@ void EntityManager::LoadDefaults()
 	}
 }
 
-void EntityManager::LoadDynClasses()
+void CEntityManager::loadDynClasses()
 {
 	m_pDynClassConf = Core_CrConfig();
 	if(m_pDynClassConf->open("config/entities/classes.ent") < 0)
@@ -498,7 +498,7 @@ void EntityManager::LoadDynClasses()
 			printf(COLOR_LRED "Couldn't create entity class '%s': Unknown base class\n" COLOR_RESET, newClass);
 			continue;
 		}
-		IEntityFactory * pOldFactory = EntityFactoryMap::GetInstance()->GetFactory(baseClass);
+		IEntityFactory * pOldFactory = CEntityFactoryMap::GetInstance()->getFactory(baseClass);
 		if(!pOldFactory)
 		{
 			printf(COLOR_LRED "Couldn't create entity class '%s': Base class '%s' is undefined\n" COLOR_RESET, newClass, baseClass);
@@ -508,14 +508,14 @@ void EntityManager::LoadDynClasses()
 		{
 			bShow = strcmp(key, "0") && strcmp(key, "false");
 		}
-		IEntityFactory * newFactory = pOldFactory->Copy(newClass, bShow);
-		EntityFactoryMap::GetInstance()->AddFactory(newFactory, newClass);
+		IEntityFactory * newFactory = pOldFactory->copy(newClass, bShow);
+		CEntityFactoryMap::GetInstance()->addFactory(newFactory, newClass);
 
-		if(!(defs = EntityFactoryMap::GetInstance()->GetDefaults(newClass)))
+		if(!(defs = CEntityFactoryMap::GetInstance()->getDefaults(newClass)))
 		{
 			continue;
 		}
-		if((baseDefs = EntityFactoryMap::GetInstance()->GetDefaults(baseClass)))
+		if((baseDefs = CEntityFactoryMap::GetInstance()->getDefaults(baseClass)))
 		{
 			for(EntDefaultsMap::Iterator i = baseDefs->begin(); i; i++)
 			{
@@ -530,7 +530,7 @@ void EntityManager::LoadDynClasses()
 	}
 }
 
-void EntityManager::DumpList(int argc, const char ** argv)
+void CEntityManager::dumpList(int argc, const char ** argv)
 {
 	const char * filter = "";
 	if(argc > 1)
@@ -548,21 +548,21 @@ void EntityManager::DumpList(int argc, const char ** argv)
 
 	for(int i = 0, l = m_vEntList.size(); i < l; ++i)
 	{
-		SXbaseEntity * pEnt = m_vEntList[i];
+		CBaseEntity * pEnt = m_vEntList[i];
 		if(!pEnt)
 		{
 			continue;
 		}
-		if(!filter[0] || strstr(pEnt->GetClassName(), filter))
+		if(!filter[0] || strstr(pEnt->getClassName(), filter))
 		{
-			printf(" " COLOR_LGREEN "%4d" COLOR_GREEN " | " COLOR_LGREEN "%24s" COLOR_GREEN " | " COLOR_LGREEN "%16s" COLOR_GREEN " |\n", i, pEnt->GetClassName(), pEnt->GetName());
+			printf(" " COLOR_LGREEN "%4d" COLOR_GREEN " | " COLOR_LGREEN "%24s" COLOR_GREEN " | " COLOR_LGREEN "%16s" COLOR_GREEN " |\n", i, pEnt->getClassName(), pEnt->getName());
 		}
 	}
 
 	printf("-----------------------------------------------------\n" COLOR_RESET);
 }
 
-void EntityManager::EntKV(int argc, const char ** argv)
+void CEntityManager::entKV(int argc, const char ** argv)
 {
 	int id = 0;
 	if(argc == 1)
@@ -575,7 +575,7 @@ void EntityManager::EntKV(int argc, const char ** argv)
 		printf("Usage: \n    ent_kv <entid> [keyname [new_value]]\n");
 		return;
 	}
-	SXbaseEntity * pEnt;
+	CBaseEntity * pEnt;
 	if(id < 0 || (UINT)id >= m_vEntList.size() || !(pEnt = m_vEntList[id]))
 	{
 		printf(COLOR_LRED "Invalid entity id\n" COLOR_RESET);
@@ -586,14 +586,14 @@ void EntityManager::EntKV(int argc, const char ** argv)
 	{
 	case 2: // dump all KVs
 		{
-			proptable_t * pt = EntityFactoryMap::GetInstance()->GetPropTable(pEnt->GetClassName());
+			proptable_t * pt = CEntityFactoryMap::GetInstance()->getPropTable(pEnt->getClassName());
 			while(pt)
 			{
 				for(int i = 0; i < pt->numFields; ++i)
 				{
 					if(pt->pData[i].szKey)
 					{
-						pEnt->GetKV(pt->pData[i].szKey, buf, sizeof(buf));
+						pEnt->getKV(pt->pData[i].szKey, buf, sizeof(buf));
 						printf("%s = %s\n", pt->pData[i].szKey, buf);
 					}
 				}
@@ -602,22 +602,22 @@ void EntityManager::EntKV(int argc, const char ** argv)
 		}
 		break;
 	case 3: // show KV
-		pEnt->GetKV(argv[2], buf, sizeof(buf));
+		pEnt->getKV(argv[2], buf, sizeof(buf));
 		printf("%s = %s\n", argv[2], buf);
 		break;
 
 	case 4: // set new KV
-		pEnt->SetKV(argv[2], argv[3]);
+		pEnt->setKV(argv[2], argv[3]);
 		break;
 	}
 }
 
-int EntityManager::GetCount()
+int CEntityManager::getCount()
 {
 	return(m_vEntList.size());
 }
 
-SXbaseEntity * EntityManager::GetById(ID id)
+CBaseEntity * CEntityManager::getById(ID id)
 {
 	if(id < 0 || (UINT)id >= m_vEntList.size())
 	{
@@ -626,7 +626,7 @@ SXbaseEntity * EntityManager::GetById(ID id)
 	return(m_vEntList[id]);
 }
 
-void EntityManager::setOutputTimeout(named_output_t * pOutput, inputdata_t * pData)
+void CEntityManager::setOutputTimeout(named_output_t * pOutput, inputdata_t * pData)
 {
 	timeout_output_t t;
 	t.status = TS_WAIT;
diff --git a/source/game/EntityManager.h b/source/game/EntityManager.h
index f2c7eb17ab078525bda52318d8aeae49e4b2c091..34671f774f1c35e6984e379f71bb29d26050e9fd 100644
--- a/source/game/EntityManager.h
+++ b/source/game/EntityManager.h
@@ -11,24 +11,24 @@
 
 typedef std::chrono::system_clock::time_point time_point;
 
-class SXbaseEntity;
+class CBaseEntity;
 struct ISXConfig;
 
 /*! Однократно запустить функцию fn через время time
 	\note Должно вызываться изнутри класса объекта
 */
-#define SET_TIMEOUT(fn, time) m_pMgr->SetTimeout((void(SXbaseEntity::*)(float))&ThisClass::fn, this, time)
+#define SET_TIMEOUT(fn, time) m_pMgr->setTimeout((void(CBaseEntity::*)(float))&ThisClass::fn, this, time)
 
 /*! Запускать функцию fn через каждые time секунд
 Возвращает идентификатор таймера
 \note Должно вызываться изнутри класса объекта
 */
-#define SET_INTERVAL(fn, time) m_pMgr->SetInterval((void(SXbaseEntity::*)(float))&ThisClass::fn, this, time)
+#define SET_INTERVAL(fn, time) m_pMgr->setInterval((void(CBaseEntity::*)(float))&ThisClass::fn, this, time)
 
 /*! Отменить интервал по идентификатору
 \note Должно вызываться изнутри класса объекта
 */
-#define CLEAR_INTERVAL(id) m_pMgr->ClearInterval(id)
+#define CLEAR_INTERVAL(id) m_pMgr->clearInterval(id)
 
 enum TIMEOUT_STATUS
 {
@@ -40,8 +40,8 @@ enum TIMEOUT_STATUS
 struct timeout_t
 {
 	TIMEOUT_STATUS status;
-	void(SXbaseEntity::*func)(float dt);
-	SXbaseEntity * pEnt;
+	void(CBaseEntity::*func)(float dt);
+	CBaseEntity * pEnt;
 	time_point fStartTime;
 	time_point fNextTime;
 };
@@ -55,47 +55,47 @@ struct timeout_output_t
 	inputdata_t data;
 };
 
-class EntityManager
+class CEntityManager
 {
-	friend class SXbaseEntity;
+	friend class CBaseEntity;
 public:
-	EntityManager();
-	~EntityManager();
+	CEntityManager();
+	~CEntityManager();
 
-	void Update(int thread);
-	void SetThreadNum(int num);
-	void Sync();
+	void update(int thread);
+	void setThreadNum(int num);
+	void sync();
 
 	void unloadObjLevel();
 
-	void LoadDefaults();
-	void LoadDynClasses();
+	void loadDefaults();
+	void loadDynClasses();
 
-	ID SetTimeout(void(SXbaseEntity::*func)(float dt), SXbaseEntity * pEnt, float delay);
-	ID SetInterval(void(SXbaseEntity::*func)(float dt), SXbaseEntity * pEnt, float delay);
+	ID setTimeout(void(CBaseEntity::*func)(float dt), CBaseEntity * pEnt, float delay);
+	ID setInterval(void(CBaseEntity::*func)(float dt), CBaseEntity * pEnt, float delay);
 	void setOutputTimeout(named_output_t * pOutput, inputdata_t * pData);
-	void ClearTimeout(ID id);
-	void ClearInterval(ID id);
+	void clearTimeout(ID id);
+	void clearInterval(ID id);
 
-	int CountEntityByName(const char * name);
-	SXbaseEntity * FindEntityByName(const char * name, SXbaseEntity * pStart = 0);
+	int countEntityByName(const char * name);
+	CBaseEntity * findEntityByName(const char * name, CBaseEntity * pStart = 0);
 
-	SXbaseEntity * FindEntityByClass(const char * name, SXbaseEntity * pStart = 0);
+	CBaseEntity * findEntityByClass(const char * name, CBaseEntity * pStart = 0);
 
-	bool Export(const char * file);
-	bool Import(const char * file);
+	bool exportList(const char * file);
+	bool import(const char * file);
 
-	void DumpList(int argc, const char ** argv);
-	void EntKV(int argc, const char ** argv);
+	void dumpList(int argc, const char ** argv);
+	void entKV(int argc, const char ** argv);
 
-	int GetCount();
-	SXbaseEntity * GetById(ID id);
+	int getCount();
+	CBaseEntity * getById(ID id);
 
 protected:
-	ID Register(SXbaseEntity * pEnt);
-	void Unregister(ID ent);
+	ID reg(CBaseEntity * pEnt);
+	void unreg(ID ent);
 
-	Array<SXbaseEntity*, 64> m_vEntList;
+	Array<CBaseEntity*, 64> m_vEntList;
 	Array<ID> m_vFreeIDs;
 
 	Array<timeout_t> m_vTimeout;
diff --git a/source/game/FuncTrain.cpp b/source/game/FuncTrain.cpp
index 819e9d77468464a6ce51af777b06b0816c04950a..4b238b01628615fcde604b9caad9fc3438a42e4a 100644
--- a/source/game/FuncTrain.cpp
+++ b/source/game/FuncTrain.cpp
@@ -5,7 +5,7 @@
 Поезд, движется по траектории, построенной из path_corner
 */
 
-BEGIN_PROPTABLE(FuncTrain)
+BEGIN_PROPTABLE(CFuncTrain)
 	//! Скорость движения
 	DEFINE_FIELD_FLOAT(m_fSpeed, 0, "speed", "Move speed", EDITOR_TEXTFIELD)
 
@@ -13,9 +13,9 @@ BEGIN_PROPTABLE(FuncTrain)
 	DEFINE_FIELD_ENTITY(m_pStartStop, 0, "start", "Start point", EDITOR_TEXTFIELD)
 END_PROPTABLE()
 
-REGISTER_ENTITY(FuncTrain, func_train);
+REGISTER_ENTITY(CFuncTrain, func_train);
 
-FuncTrain::FuncTrain(EntityManager * pMgr):
+CFuncTrain::CFuncTrain(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_fSpeed(0.0f),
 	m_pStartStop(NULL),
@@ -24,18 +24,18 @@ FuncTrain::FuncTrain(EntityManager * pMgr):
 {
 }
 
-void FuncTrain::OnPostLoad()
+void CFuncTrain::onPostLoad()
 {
-	BaseClass::OnPostLoad();
+	BaseClass::onPostLoad();
 	m_pCurStop = m_pStartStop;
 	if(m_pStartStop)
 	{
-	//	SetPos(m_pStartStop->GetPos());
-	//	SetOrient(m_pStartStop->GetOrient());
+	//	setPos(m_pStartStop->getPos());
+	//	setOrient(m_pStartStop->getOrient());
 	}
 }
 
-void FuncTrain::Stop()
+void CFuncTrain::stop()
 {
 	if(m_bRunning)
 	{
@@ -44,16 +44,16 @@ void FuncTrain::Stop()
 	}
 }
 
-void FuncTrain::Start()
+void CFuncTrain::start()
 {
 	if(!m_bRunning)
 	{
 		m_bRunning = true;
-		m_iPostIval = SET_INTERVAL(MoveFunc, 1.0f/60.0f);
+		m_iPostIval = SET_INTERVAL(moveFunc, 1.0f/60.0f);
 	}
 }
 
-void FuncTrain::MoveFunc(float dt)
+void CFuncTrain::moveFunc(float dt)
 {
 	m_fCurDist += m_fSpeed * dt;
 	while(m_pCurStop && (m_fCurDist > m_pCurStop->GetLength()))
@@ -63,8 +63,8 @@ void FuncTrain::MoveFunc(float dt)
 	}
 	if(m_pCurStop)
 	{
-		SetPos(m_pCurStop->GetPoint(m_fCurDist));
-		SetOrient(m_pCurStop->GetRot(m_fCurDist));
+		setPos(m_pCurStop->getPoint(m_fCurDist));
+		setOrient(m_pCurStop->getRot(m_fCurDist));
 	}
 	else
 	{
@@ -73,8 +73,8 @@ void FuncTrain::MoveFunc(float dt)
 		{
 			m_pCurStop = m_pCurStop->GetNext();
 		}
-		SetPos(m_pCurStop->GetPoint(m_fCurDist));
-		SetOrient(m_pCurStop->GetRot(m_fCurDist));
-		Stop();
+		setPos(m_pCurStop->getPoint(m_fCurDist));
+		setOrient(m_pCurStop->getRot(m_fCurDist));
+		stop();
 	}
 }
diff --git a/source/game/FuncTrain.h b/source/game/FuncTrain.h
index ae7a8aca90ab87178145bee427840180be9eb00f..57d1b32ceb11b4a4a622d35962e2964c26cd6345 100644
--- a/source/game/FuncTrain.h
+++ b/source/game/FuncTrain.h
@@ -7,36 +7,36 @@ See the license in LICENSE
 \file
 Поезда класс
 */
-#ifndef _FuncTrain_H_
-#define _FuncTrain_H_
+#ifndef _CFuncTrain_H_
+#define _CFuncTrain_H_
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
-class PathCorner;
+class CPathCorner;
 
 /*! Поезда класс
 \ingroup cpointentity
 */
-class FuncTrain: public SXpointEntity
+class CFuncTrain: public CPointEntity
 {
-	DECLARE_CLASS(FuncTrain, SXpointEntity);
+	DECLARE_CLASS(CFuncTrain, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
-	FuncTrain(EntityManager * pMgr);
+	CFuncTrain(CEntityManager * pMgr);
 
 	//! Остановить
-	void Stop();
+	void stop();
 	//! Запустить
-	void Start();
+	void start();
 
 protected:
-	void OnPostLoad();
-	void MoveFunc(float dt);
+	void onPostLoad();
+	void moveFunc(float dt);
 
 	//! Начальная точка движения
-	PathCorner * m_pStartStop;
+	CPathCorner * m_pStartStop;
 	//! Текущая точка
-	PathCorner * m_pCurStop;
+	CPathCorner * m_pCurStop;
 
 	//! Скорость
 	float m_fSpeed;
diff --git a/source/game/GameData.cpp b/source/game/GameData.cpp
index 89325701672b89a74e838e0744e16b9ac8b08441..14237499e62e8a5dc48a05d76ab818006af16862 100644
--- a/source/game/GameData.cpp
+++ b/source/game/GameData.cpp
@@ -6,9 +6,9 @@
 #include <score/sxscore.h>
 
 
-SXplayer * GameData::m_pPlayer;
-SXpointCamera * GameData::m_pActiveCamera;
-EntityManager * GameData::m_pMgr;
+CPlayer * GameData::m_pPlayer;
+CPointCamera * GameData::m_pActiveCamera;
+CEntityManager * GameData::m_pMgr;
 
 CRagdoll * g_pRagdoll;
 IAnimPlayer * pl;
@@ -17,7 +17,7 @@ GameData::GameData()
 {
 	loadFoostepsSounds();
 
-	m_pMgr = new EntityManager();
+	m_pMgr = new CEntityManager();
 
 	Core_0RegisterConcmd("+forward", ccmd_forward_on);
 	Core_0RegisterConcmd("-forward", ccmd_forward_off);
@@ -59,27 +59,27 @@ GameData::GameData()
 	Core_0RegisterCVarFloat("cl_bob_walk", 0.5f, "View bobbing walk period");
 	Core_0RegisterCVarFloat("cl_bob_run", 1.0f, "View bobbing run period");
 
-	CrosshairManager::loadConfig("config/game/crosshairs.cfg");
+	CCrosshairManager::loadConfig("config/game/crosshairs.cfg");
 
-	m_pPlayer = (SXplayer*)CREATE_ENTITY("player", m_pMgr);
-	m_pActiveCamera = m_pPlayer->GetCamera();
-	m_pCrosshair = m_pPlayer->GetCrosshair();
+	m_pPlayer = (CPlayer*)CREATE_ENTITY("player", m_pMgr);
+	m_pActiveCamera = m_pPlayer->getCamera();
+	m_pCrosshair = m_pPlayer->getCrosshair();
 
-	ID idCrosshairDefault = CrosshairManager::getCrosshairID("default");
+	ID idCrosshairDefault = CCrosshairManager::getCrosshairID("default");
 	if(ID_VALID(idCrosshairDefault))
 	{
-		CrosshairManager::loadCrosshair(idCrosshairDefault, m_pCrosshair);
+		CCrosshairManager::loadCrosshair(idCrosshairDefault, m_pCrosshair);
 	}
 
-	Core_0RegisterConcmdClsArg("+debug_slot_move", m_pPlayer, (SXCONCMDCLSARG)&SXplayer::_ccmd_slot_on);
-	Core_0RegisterConcmdCls("-debug_slot_move", m_pPlayer, (SXCONCMDCLS)&SXplayer::_ccmd_slot_off);
+	Core_0RegisterConcmdClsArg("+debug_slot_move", m_pPlayer, (SXCONCMDCLSARG)&CPlayer::_ccmd_slot_on);
+	Core_0RegisterConcmdCls("-debug_slot_move", m_pPlayer, (SXCONCMDCLS)&CPlayer::_ccmd_slot_off);
 
 
-	//m_pPlayer->SetModel("models/stalker_zombi/stalker_zombi_a.dse");
-	//m_pPlayer->PlayAnimation("reload");
+	//m_pPlayer->setModel("models/stalker_zombi/stalker_zombi_a.dse");
+	//m_pPlayer->playAnimation("reload");
 
 	//pl = SXAnim_CreatePlayer("models/stalker_zombi/stalker_zombi_a.dse");
-	//pl->SetPos(float3(0, 0, 0));
+	//pl->setPos(float3(0, 0, 0));
 	//g_pRagdoll = new CRagdoll(pl);
 	//pl->setRagdoll(g_pRagdoll);
 }
@@ -96,20 +96,20 @@ GameData::~GameData()
 	}
 }
 
-void GameData::Update()
+void GameData::update()
 {
-	m_pCrosshair->Update();
+	m_pCrosshair->update();
 }
-void GameData::Render()
+void GameData::render()
 {
 }
-void GameData::RenderHUD()
+void GameData::renderHUD()
 {
-	m_pCrosshair->Render();
+	m_pCrosshair->render();
 }
-void GameData::Sync()
+void GameData::sync()
 {
-	m_pCrosshair->OnSync();
+	m_pCrosshair->onSync();
 }
 
 void GameData::playFootstepSound(MTLTYPE_PHYSIC mtl_type, const float3 &f3Pos)
@@ -176,112 +176,112 @@ void GameData::loadFoostepsSounds()
 
 void GameData::ccmd_forward_on()
 {
-	m_pPlayer->Move(PM_FORWARD, TRUE);
+	m_pPlayer->move(PM_FORWARD, TRUE);
 }
 void GameData::ccmd_forward_off()
 {
-	m_pPlayer->Move(PM_FORWARD, FALSE);
+	m_pPlayer->move(PM_FORWARD, FALSE);
 }
 
 void GameData::ccmd_backward_on()
 {
-	m_pPlayer->Move(PM_BACKWARD, TRUE);
+	m_pPlayer->move(PM_BACKWARD, TRUE);
 }
 void GameData::ccmd_backward_off()
 {
-	m_pPlayer->Move(PM_BACKWARD, FALSE);
+	m_pPlayer->move(PM_BACKWARD, FALSE);
 }
 
 void GameData::ccmd_left_on()
 {
-	m_pPlayer->Move(PM_LEFT, TRUE);
+	m_pPlayer->move(PM_LEFT, TRUE);
 }
 void GameData::ccmd_left_off()
 {
-	m_pPlayer->Move(PM_LEFT, FALSE);
+	m_pPlayer->move(PM_LEFT, FALSE);
 }
 
 void GameData::ccmd_right_on()
 {
-	m_pPlayer->Move(PM_RIGHT, TRUE);
+	m_pPlayer->move(PM_RIGHT, TRUE);
 }
 void GameData::ccmd_right_off()
 {
-	m_pPlayer->Move(PM_RIGHT, FALSE);
+	m_pPlayer->move(PM_RIGHT, FALSE);
 }
 
 void GameData::ccmd_boost_on()
 {
-	m_pPlayer->Move(PM_RUN, TRUE);
+	m_pPlayer->move(PM_RUN, TRUE);
 }
 void GameData::ccmd_boost_off()
 {
-	m_pPlayer->Move(PM_RUN, FALSE);
+	m_pPlayer->move(PM_RUN, FALSE);
 }
 
 void GameData::ccmd_crouch_on()
 {
-	m_pPlayer->Move(PM_CROUCH, TRUE);
+	m_pPlayer->move(PM_CROUCH, TRUE);
 }
 void GameData::ccmd_crouch_off()
 {
-	m_pPlayer->Move(PM_CROUCH, FALSE);
+	m_pPlayer->move(PM_CROUCH, FALSE);
 }
 
 void GameData::ccmd_crawl_on()
 {
-	m_pPlayer->Move(PM_CRAWL, TRUE);
+	m_pPlayer->move(PM_CRAWL, TRUE);
 }
 void GameData::ccmd_crawl_off()
 {
-	m_pPlayer->Move(PM_CRAWL, FALSE);
+	m_pPlayer->move(PM_CRAWL, FALSE);
 }
 
 void GameData::ccmd_jump_on()
 {
-	m_pPlayer->Move(PM_JUMP, TRUE);
+	m_pPlayer->move(PM_JUMP, TRUE);
 }
 void GameData::ccmd_jump_off()
 {
-	m_pPlayer->Move(PM_JUMP, FALSE);
+	m_pPlayer->move(PM_JUMP, FALSE);
 }
 
 void GameData::ccmd_attack_on()
 {
-	m_pPlayer->Attack(TRUE);
+	m_pPlayer->attack(TRUE);
 }
 void GameData::ccmd_attack_off()
 {
-	m_pPlayer->Attack(FALSE);
+	m_pPlayer->attack(FALSE);
 }
 
 void GameData::ccmd_attack2_on()
 {
-	m_pPlayer->Attack2(TRUE);
+	m_pPlayer->attack2(TRUE);
 }
 void GameData::ccmd_attack2_off()
 {
-	m_pPlayer->Attack2(FALSE);
+	m_pPlayer->attack2(FALSE);
 }
 
 void GameData::ccmd_spawn()
 {
 	Core_0ConsoleExecCmd("cl_mode_editor 0");
-	m_pPlayer->Spawn();
+	m_pPlayer->spawn();
 }
 void GameData::ccmd_observe()
 {
-	m_pPlayer->Observe();
+	m_pPlayer->observe();
 }
 
 void GameData::ccmd_reload()
 {
-	m_pPlayer->Reload();
+	m_pPlayer->reload();
 }
 
 void GameData::ccmd_toggleflashlight()
 {
-	m_pPlayer->ToggleFlashlight();
+	m_pPlayer->toggleFlashlight();
 }
 
 void GameData::ccmd_switch_firemode()
diff --git a/source/game/GameData.h b/source/game/GameData.h
index de7a4ada20a11e8013dfb89a00d4eafc72dbcdf7..4f557c62427944ca0b79c5fff7ae756c2e3575e8 100644
--- a/source/game/GameData.h
+++ b/source/game/GameData.h
@@ -2,7 +2,7 @@
 #define _GameData_H_
 
 
-#include "SXplayer.h"
+#include "Player.h"
 #include "crosshair.h"
 #include <mtllight/sxmtllight.h>
 
@@ -13,16 +13,16 @@ public:
 	~GameData();
 
 
-	static SXplayer * m_pPlayer;
-	static SXpointCamera * m_pActiveCamera;
-	static EntityManager * m_pMgr;
+	static CPlayer * m_pPlayer;
+	static CPointCamera * m_pActiveCamera;
+	static CEntityManager * m_pMgr;
 
-	Crosshair * m_pCrosshair;
+	CCrosshair * m_pCrosshair;
 
-	void Update();
-	void Render();
-	void RenderHUD();
-	void Sync();
+	void update();
+	void render();
+	void renderHUD();
+	void sync();
 
 	void playFootstepSound(MTLTYPE_PHYSIC mtl_type, const float3 &f3Pos);
 
diff --git a/source/game/LightDirectional.cpp b/source/game/LightDirectional.cpp
index 0fbdb850bcc553fa9ff202b5aef9df9c829e752b..3bc2bfe14f1ead249392ddb28bb29818dfe714a9 100644
--- a/source/game/LightDirectional.cpp
+++ b/source/game/LightDirectional.cpp
@@ -31,7 +31,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY(CLightDirectional, light_directional);
 
-CLightDirectional::CLightDirectional(EntityManager *pMgr) :
+CLightDirectional::CLightDirectional(CEntityManager *pMgr) :
 BaseClass(pMgr)
 {
 	m_vColor = float3(1, 1, 1);
@@ -61,9 +61,9 @@ void CLightDirectional::toggleEnable()
 	SML_LigthsSetEnable(m_idLight, m_isEnable);
 }
 
-void CLightDirectional::OnSync()
+void CLightDirectional::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
 	if (SML_LigthsGetEnable(m_idLight) != m_isEnable)
 		SML_LigthsSetEnable(m_idLight, m_isEnable);
diff --git a/source/game/LightDirectional.h b/source/game/LightDirectional.h
index 362831664b652d0f17daa896011b9aa8129310bd..a40201e112b0dd82f8505817b5e6ea59a00ec454 100644
--- a/source/game/LightDirectional.h
+++ b/source/game/LightDirectional.h
@@ -12,14 +12,14 @@ See the license in LICENSE
 #ifndef __LIGHTDIRECTIONAL_H
 #define __LIGHTDIRECTIONAL_H
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
 /*! Направленный свет
 \ingroup clight
 */
-class CLightDirectional: public SXpointEntity
+class CLightDirectional: public CPointEntity
 {
-	DECLARE_CLASS(CLightDirectional, SXpointEntity);
+	DECLARE_CLASS(CLightDirectional, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
@@ -50,7 +50,7 @@ public:
 
 protected:
 
-	void OnSync();
+	void onSync();
 
 	ID m_idLight;
 
diff --git a/source/game/LightPoint.cpp b/source/game/LightPoint.cpp
index a5ca368ed6a870c738989e26246d6d878f5c4aa8..6bd55bbaaad228dcbced069163a78f3fcd2385f5 100644
--- a/source/game/LightPoint.cpp
+++ b/source/game/LightPoint.cpp
@@ -38,7 +38,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY(CLightPoint, light_point);
 
-CLightPoint::CLightPoint(EntityManager * pMgr) :
+CLightPoint::CLightPoint(CEntityManager * pMgr) :
 BaseClass(pMgr)
 {
 	m_vColor = float3(1, 1, 1);
@@ -59,9 +59,9 @@ void CLightPoint::toggleEnable()
 	SML_LigthsSetEnable(m_idLight, m_isEnable);
 }
 
-void CLightPoint::OnSync()
+void CLightPoint::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
 	if (SML_LigthsGetEnable(m_idLight) != m_isEnable)
 		SML_LigthsSetEnable(m_idLight, m_isEnable);
diff --git a/source/game/LightPoint.h b/source/game/LightPoint.h
index ed0a04c962fb7f108f8828d033c21f867e443702..ed7ecd223a62b9972cb8a4ee7c57455bb1f0478e 100644
--- a/source/game/LightPoint.h
+++ b/source/game/LightPoint.h
@@ -12,16 +12,16 @@ See the license in LICENSE
 #ifndef __LIGHTPOINT_H
 #define __LIGHTPOINT_H
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
 #define LIGHT_INITIALLY_DARK 0x00010000
 
 /*! Точечный источник света
 \ingroup clight
 */
-class CLightPoint : public SXpointEntity
+class CLightPoint : public CPointEntity
 {
-	DECLARE_CLASS(CLightPoint, SXpointEntity);
+	DECLARE_CLASS(CLightPoint, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_CONSTRUCTOR();
@@ -53,7 +53,7 @@ protected:
 	int m_iShadowType;
 	bool m_isEnable;
 
-	void OnSync();
+	void onSync();
 
 	void turnOn(inputdata_t * pInputdata);
 	void turnOff(inputdata_t * pInputdata);
diff --git a/source/game/NPCBase.cpp b/source/game/NPCBase.cpp
index 518dffa7e0b30dccea16186139647993a5b430dd..c2c35a64cc6effb3828f410d4f18d816af0c85d8 100644
--- a/source/game/NPCBase.cpp
+++ b/source/game/NPCBase.cpp
@@ -12,7 +12,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CNPCBase, npc_base);
 
-CNPCBase::CNPCBase(EntityManager * pMgr) :
+CNPCBase::CNPCBase(CEntityManager * pMgr) :
 	BaseClass(pMgr)
 {
 	m_fHealth = 1.f;
@@ -39,7 +39,7 @@ CNPCBase::~CNPCBase()
 
 }
 
-void CNPCBase::InitPhysics()
+void CNPCBase::initPhysics()
 {
 	btTransform startTransform;
 	startTransform.setIdentity();
@@ -62,7 +62,7 @@ void CNPCBase::InitPhysics()
 	SXPhysics_GetDynWorld()->addAction(m_pCharacter);
 }
 
-void CNPCBase::SetPos(const float3 &pos)
+void CNPCBase::setPos(const float3 &pos)
 {
 	float3 tpos = pos;
 	m_idCurrAiQuad = SAIG_QuadGet(&tpos, true);
@@ -72,51 +72,51 @@ void CNPCBase::SetPos(const float3 &pos)
 		if (SAIG_QuadGetState(m_idCurrAiQuad) == AIQUAD_STATE_FREE)
 		{
 			SAIG_QuadSetState(m_idCurrAiQuad, AIQUAD_STATE_BUSY);
-			SAIG_QuadSetStateWho(m_idCurrAiQuad, this->GetId());
+			SAIG_QuadSetStateWho(m_idCurrAiQuad, getId());
 		}
 		else
 		{
-			if (SAIG_QuadGetStateWho(m_idCurrAiQuad) != this->GetId())
+			if (SAIG_QuadGetStateWho(m_idCurrAiQuad) != getId())
 			{
 				ID idquad = SAIG_QuadGetNear(&(float3)m_vPosition, true, 2);
 				if (idquad >= 0)
 				{
 					m_idCurrAiQuad = idquad;
 					SAIG_QuadSetState(m_idCurrAiQuad, AIQUAD_STATE_BUSY);
-					SAIG_QuadSetStateWho(m_idCurrAiQuad, this->GetId());
+					SAIG_QuadSetStateWho(m_idCurrAiQuad, getId());
 					SAIG_QuadGetPos(m_idCurrAiQuad, &tpos);
 					tpos.y += 0.7f;
-					SetPos(tpos);
+					setPos(tpos);
 				}
 			}
 		}
 	}
 
-	BaseClass::SetPos(tpos);
+	BaseClass::setPos(tpos);
 	m_pGhostObject->getWorldTransform().setOrigin(F3_BTVEC(tpos));
 }
 
-bool CNPCBase::SetKV(const char *name, const char *value)
+bool CNPCBase::setKV(const char *name, const char *value)
 {
-	if (stricmp("origin", name) == 0)
+	if(stricmp("origin", name) == 0)
 	{
-		propdata_t * field = GetField(name);
+		propdata_t * field = getField(name);
 		if (!field)
 		{
 			return(false);
 		}
 		float3_t f3;
 
-		if (3 == sscanf(value, "%f %f %f", &f3.x, &f3.y, &f3.z))
+		if(3 == sscanf(value, "%f %f %f", &f3.x, &f3.y, &f3.z))
 		{
-			SetPos(f3);
+			setPos(f3);
 			return true;
 		}
 		else
 			return false;
 	}
 
-	return BaseClass::SetKV(name, value);
+	return BaseClass::setKV(name, value);
 }
 
 ID CNPCBase::getAIQuad()
@@ -142,14 +142,14 @@ bool CNPCBase::pathFind(ID endq)
 	return false;
 }
 
-void CNPCBase::OnSync()
+void CNPCBase::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
 	btTransform trans;
 	trans = m_pGhostObject->getWorldTransform();
 
-	m_vPosition = (float3)(float3(trans.getOrigin().x(), trans.getOrigin().y()-0.9, trans.getOrigin().z()));
+	m_vPosition = (float3)(float3(trans.getOrigin().x(), trans.getOrigin().y()-0.9f, trans.getOrigin().z()));
 
 	if (m_fHealth <= 0.f)
 		return;
@@ -277,7 +277,7 @@ void CNPCBase::pathWalk()
 	}
 
 	//если следующий квад аи сетки несвободен и занят не текущим нпс
-	if (SAIG_QuadGetState(m_aPathQuads[m_idCurrQuaidInPath]) != AIQUAD_STATE_FREE && SAIG_QuadGetStateWho(m_aPathQuads[m_idCurrQuaidInPath]) != GetId())
+	if (SAIG_QuadGetState(m_aPathQuads[m_idCurrQuaidInPath]) != AIQUAD_STATE_FREE && SAIG_QuadGetStateWho(m_aPathQuads[m_idCurrQuaidInPath]) != getId())
 	{
 		//значит он преградил путь и текущий нпс сбился с пути
 		m_statePath = NPC_STATE_PATH_LOST;
@@ -287,7 +287,7 @@ void CNPCBase::pathWalk()
 
 	//занимаем следующий квад аи сетки за текущим нпс
 	SAIG_QuadSetState(m_aPathQuads[m_idCurrQuaidInPath], AIQUAD_STATE_TEMPBUSY);
-	SAIG_QuadSetStateWho(m_aPathQuads[m_idCurrQuaidInPath], GetId());
+	SAIG_QuadSetStateWho(m_aPathQuads[m_idCurrQuaidInPath], getId());
 
 	SAIG_QuadGetPos(m_aPathQuads[m_idCurrQuaidInPath], &m_vPosQuadInPathNext);
 
@@ -346,7 +346,7 @@ void CNPCBase::pathWalk()
 
 void CNPCBase::orientAtPoint(const float3 * pos, DWORD ttime)
 {
-	float3 curr_pos = GetPos();
+	float3 curr_pos = getPos();
 	curr_pos.y = 0;
 	float3 poscam = float3(pos->x, 0, pos->z);
 	float3 dircam = poscam - curr_pos;
@@ -376,7 +376,7 @@ void CNPCBase::orientAtPoint(const float3 * pos, DWORD ttime)
 		m_fAngleYNext = angle;
 		m_ulTimeAllRot = 0;
 		m_ulTimeRot = 0;
-		SetOrient(SMQuaternion(angle, 'y'));
+		setOrient(SMQuaternion(angle, 'y'));
 	}
 }
 
@@ -388,7 +388,7 @@ void CNPCBase::updateOrientLerp()
 	int iTimeDelta = Core_RIntGet(G_RI_INT_TIME_DELTA);
 	m_ulTimeAllRot += iTimeDelta;
 	float fCurrAngle = lerpf(m_fAngleYLast, m_fAngleYNext, saturatef(float(m_ulTimeAllRot) / float(m_ulTimeRot)));
-	SetOrient(SMQuaternion(fCurrAngle, 'y'));
+	setOrient(SMQuaternion(fCurrAngle, 'y'));
 
 	if (m_ulTimeAllRot >= m_ulTimeRot)
 	{
diff --git a/source/game/NPCBase.h b/source/game/NPCBase.h
index 20196b0bb30d3cbe46f5e02539f4b5de5b79f298..5697f8d509e66d0aaf191a7f745bf2d442fdac5f 100644
--- a/source/game/NPCBase.h
+++ b/source/game/NPCBase.h
@@ -15,7 +15,7 @@ See the license in LICENSE
 #ifndef __NPCBASE_H_
 #define __NPCBASE_H_
 
-#include "SXbaseAnimating.h"
+#include "BaseAnimating.h"
 #include <aigrid/sxaigrid.h>
 
 //! базовое направление для нпс
@@ -57,28 +57,28 @@ enum NPC_STATE_PATH
 };
 
 //! Базовый класс npc
-class CNPCBase: public SXbaseAnimating
+class CNPCBase: public CBaseAnimating
 {
-	DECLARE_CLASS(CNPCBase, SXbaseAnimating);
+	DECLARE_CLASS(CNPCBase, CBaseAnimating);
 	DECLARE_PROPTABLE();
 
 public:
 
 	SX_ALIGNED_OP_MEM
 
-	CNPCBase(EntityManager * pMgr);
+	CNPCBase(CEntityManager * pMgr);
 	~CNPCBase();
 
 	ID getAIQuad();	//!< id квада аи сетки на котором стоит нпс
 
 	//! установка позиции сопровождается ориентацией на аи сетке
-	void SetPos(const float3 &pos);
-	bool SetKV(const char *name, const char *value);
-	void OnSync();
+	void setPos(const float3 &pos);
+	bool setKV(const char *name, const char *value);
+	void onSync();
 
 protected:
 
-	virtual void InitPhysics();
+	virtual void initPhysics();
 
 	btPairCachingGhostObject * m_pGhostObject;
 	btKinematicCharacterController * m_pCharacter;
diff --git a/source/game/NPCZombie.cpp b/source/game/NPCZombie.cpp
index f87dfa18ec8bdb45012508c88e0e6b280ddfc935..8cbd269b712af541fa30843f205fb83f2ef6531d 100644
--- a/source/game/NPCZombie.cpp
+++ b/source/game/NPCZombie.cpp
@@ -13,7 +13,7 @@ END_PROPTABLE()
 
 REGISTER_ENTITY_NOLISTING(CNPCZombie, npc_zombie);
 
-CNPCZombie::CNPCZombie(EntityManager * pMgr) :
+CNPCZombie::CNPCZombie(CEntityManager * pMgr) :
 	BaseClass(pMgr)
 {
 	m_fSpeedWalk = 0.07f;
@@ -29,19 +29,19 @@ CNPCZombie::~CNPCZombie()
 
 }
 
-void CNPCZombie::OnSync()
+void CNPCZombie::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
-	SSCore_SndPosWSet(m_idSndIdle,&GetPos());
-	SSCore_SndPosWSet(m_idSndIdle2, &GetPos());
-	SSCore_SndPosWSet(m_idSndDeath, &GetPos());
+	SSCore_SndPosWSet(m_idSndIdle, &getPos());
+	SSCore_SndPosWSet(m_idSndIdle2, &getPos());
+	SSCore_SndPosWSet(m_idSndDeath, &getPos());
 
 	//если здоровье меньше нуля
 	if (m_fHealth < 0.0f)
 	{
 		//то воспроизводим анимацию смерти
-		this->PlayAnimation("fake_death0");
+		playAnimation("fake_death0");
 		SSCore_SndPlay(m_idSndDeath);
 		m_fHealth = 0.f;	//обнуляем здоровье говоря что больше проигрывать анимацию не надо
 		return;
@@ -85,25 +85,25 @@ void CNPCZombie::randWalk()
 		if (pathFind(SAIG_QuadGetNear(&rndpos,true)))
 		{
 			m_idCurrQuaidInPath = 0;
-			m_vLastPathPos = GetPos();
+			m_vLastPathPos = getPos();
 		}
 
 		return;
 	}
 
-	if (m_stateMove == NPC_STATE_MOVE_IDLE_START && !this->PlayingAnimations("idle0"))
+	if (m_stateMove == NPC_STATE_MOVE_IDLE_START && !playingAnimations("idle0"))
 	{
 		m_stateMove = NPC_STATE_MOVE_IDLE;
-		this->PlayAnimation("idle0");
+		playAnimation("idle0");
 		SSCore_SndPlay(m_idSndIdle);
 	}
-	else if (m_stateMove == NPC_STATE_MOVE_IDLE && !this->PlayingAnimations("idle0"))
+	else if (m_stateMove == NPC_STATE_MOVE_IDLE && !playingAnimations("idle0"))
 		m_stateMove = NPC_STATE_MOVE_WALK;
 	else if (m_stateMove != NPC_STATE_MOVE_IDLE)
 	{
-		if (!this->PlayingAnimations("walk0"))
+		if (!playingAnimations("walk0"))
 		{
-			this->PlayAnimation("walk0");
+			playAnimation("walk0");
 			SSCore_SndPlay(m_idSndIdle2);
 		}
 
diff --git a/source/game/NPCZombie.h b/source/game/NPCZombie.h
index 3b29039b917fdd4a6cdb8eabbfa000d49ec44bb3..6e2fda4a6240a79b1a845300445a3449726ff73f 100644
--- a/source/game/NPCZombie.h
+++ b/source/game/NPCZombie.h
@@ -24,14 +24,14 @@ class CNPCZombie : public CNPCBase
 	DECLARE_PROPTABLE();
 
 public:
-	CNPCZombie(EntityManager * pMgr);
+	CNPCZombie(CEntityManager * pMgr);
 	~CNPCZombie();
 
-	void OnSync();
+	void onSync();
 
 protected:
 
-	//virtual void InitPhysics();
+	//virtual void initPhysics();
 
 	void randWalk();
 	ID m_idSndIdle;
diff --git a/source/game/PathCorner.cpp b/source/game/PathCorner.cpp
index f0a7a742616d1d542efb6e446bfeb98c594693cc..04127ad6c146cf24fa95bcc47111ed5b1268b7ed 100644
--- a/source/game/PathCorner.cpp
+++ b/source/game/PathCorner.cpp
@@ -4,7 +4,7 @@
 Точка для формирования пути для #func_train
 */
 
-BEGIN_PROPTABLE(PathCorner)
+BEGIN_PROPTABLE(CPathCorner)
 	//! Тип сглаживания пути
 	DEFINE_FIELD_INT(m_type, 0, "type", "Type", EDITOR_COMBOBOX)
 		COMBO_OPTION("Corner", "0") //!< Нет сглаживания
@@ -19,9 +19,9 @@ BEGIN_PROPTABLE(PathCorner)
 
 END_PROPTABLE()
 
-REGISTER_ENTITY(PathCorner, path_corner);
+REGISTER_ENTITY(CPathCorner, path_corner);
 
-PathCorner::PathCorner(EntityManager * pMgr):
+CPathCorner::CPathCorner(CEntityManager * pMgr):
 	BaseClass(pMgr),
 	m_type(PCT_CORNER),
 	m_fNewSpeed(0.0f),
@@ -31,13 +31,13 @@ PathCorner::PathCorner(EntityManager * pMgr):
 {
 }
 
-void PathCorner::OnPostLoad()
+void CPathCorner::onPostLoad()
 {
-	BaseClass::OnPostLoad();
+	BaseClass::onPostLoad();
 
 	if(m_pNextStop)
 	{
-		((PathCorner*)m_pNextStop)->m_pPrevStop = this;
+		((CPathCorner*)m_pNextStop)->m_pPrevStop = this;
 	}
 
 	if(!m_pPrevStop)
@@ -46,10 +46,10 @@ void PathCorner::OnPostLoad()
 	}
 }
 
-void PathCorner::RecalcPath(float t)
+void CPathCorner::RecalcPath(float t)
 {
-	PathCorner * pNext;
-	PathCorner * pCur = this;
+	CPathCorner * pNext;
+	CPathCorner * pCur = this;
 	if(m_pPrevStop)
 	{
 		while(pCur->m_pPrevStop)
@@ -64,7 +64,7 @@ void PathCorner::RecalcPath(float t)
 	{
 		pNext = pCur->m_pNextStop;
 
-		float3 vec = pNext->GetPos() - pCur->GetPos();
+		float3 vec = pNext->getPos() - pCur->getPos();
 		pCur->m_fLength = SMVector3Length(vec);
 		//pCur->m_fLength = 1.0f;
 		pCur->m_fH = (float3)(vec / pCur->m_fLength);
@@ -131,18 +131,18 @@ void PathCorner::RecalcPath(float t)
 	int a = 0;
 }
 
-float PathCorner::GetLength()
+float CPathCorner::GetLength()
 {
 	return(m_fLength);
 }
 
-float3 PathCorner::GetPoint(float dist)
+float3 CPathCorner::getPoint(float dist)
 {
 	if(dist < 0)
 	{
 		if(m_pPrevStop)
 		{
-			return(m_pPrevStop->GetPoint(dist + m_pPrevStop->m_fLength));
+			return(m_pPrevStop->getPoint(dist + m_pPrevStop->m_fLength));
 		}
 		else
 		{
@@ -153,7 +153,7 @@ float3 PathCorner::GetPoint(float dist)
 	{
 		if(m_pNextStop)
 		{
-			return(m_pNextStop->GetPoint(dist - m_fLength));
+			return(m_pNextStop->getPoint(dist - m_fLength));
 		}
 		else
 		{
@@ -164,13 +164,13 @@ float3 PathCorner::GetPoint(float dist)
 	return(m_fCoeffsA + m_fCoeffsB * dist + m_fCoeffsC * dist * dist + m_fCoeffsD * dist * dist * dist);
 }
 
-SMQuaternion PathCorner::GetRot(float dist)
+SMQuaternion CPathCorner::getRot(float dist)
 {
 	if(dist < 0)
 	{
 		if(m_pPrevStop)
 		{
-			return(m_pPrevStop->GetRot(dist + m_pPrevStop->m_fLength));
+			return(m_pPrevStop->getRot(dist + m_pPrevStop->m_fLength));
 		}
 		else
 		{
@@ -181,7 +181,7 @@ SMQuaternion PathCorner::GetRot(float dist)
 	{
 		if(m_pNextStop)
 		{
-			return(m_pNextStop->GetRot(dist - m_fLength));
+			return(m_pNextStop->getRot(dist - m_fLength));
 		}
 		else
 		{
@@ -198,12 +198,12 @@ SMQuaternion PathCorner::GetRot(float dist)
 	}
 }
 
-PathCorner * PathCorner::GetNext()
+CPathCorner * CPathCorner::GetNext()
 {
 	return(m_pNextStop);
 }
 
-PathCorner * PathCorner::GetPrev()
+CPathCorner * CPathCorner::GetPrev()
 {
 	return(m_pPrevStop);
 }
diff --git a/source/game/PathCorner.h b/source/game/PathCorner.h
index b32a5ef8ca9a63856b124f714efa615829386793..4841a8624d33421d3f4aefc4835155f3533f1dc1 100644
--- a/source/game/PathCorner.h
+++ b/source/game/PathCorner.h
@@ -13,10 +13,10 @@ See the license in LICENSE
 @{
 */
 
-#ifndef _PathCorner_H_
-#define _PathCorner_H_
+#ifndef _CPathCorner_H_
+#define _CPathCorner_H_
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
 //! тип сглаживания пути
 enum PATH_CORNER_TYPE
@@ -25,30 +25,30 @@ enum PATH_CORNER_TYPE
 	PCT_SPLINE = 1 //!< сплайном
 };
 
-//! Точка пути для #FuncTrain
-class PathCorner: public SXpointEntity
+//! Точка пути для #CFuncTrain
+class CPathCorner: public CPointEntity
 {
-	DECLARE_CLASS(PathCorner, SXpointEntity);
+	DECLARE_CLASS(CPathCorner, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
-	PathCorner(EntityManager * pMgr);
+	CPathCorner(CEntityManager * pMgr);
 
 	//! получает координаты точки на пути на расстоянии dist от начала
-	float3 GetPoint(float dist);
+	float3 getPoint(float dist);
 	//! получает вращение точки на пути на расстоянии dist от начала
-	SMQuaternion GetRot(float dist);
+	SMQuaternion getRot(float dist);
 	//! получает длину пути
 	float GetLength();
 
 	//! Получает следующую точку на пути
-	PathCorner * GetNext();
+	CPathCorner * GetNext();
 	//! Получает предыдущую точку на пути
-	PathCorner * GetPrev();
+	CPathCorner * GetPrev();
 
 protected:
 	//! Пересчитывает путь
 	void RecalcPath(float t);
-	void OnPostLoad();
+	void onPostLoad();
 
 	//! Тип сглаживания
 	int m_type;
@@ -71,9 +71,9 @@ protected:
 	//! @}
 
 	//! Следующая точка
-	PathCorner * m_pNextStop;
+	CPathCorner * m_pNextStop;
 	//! Предыдущая точка
-	PathCorner * m_pPrevStop;
+	CPathCorner * m_pPrevStop;
 };
 
 #endif
diff --git a/source/game/SXplayer.cpp b/source/game/Player.cpp
similarity index 57%
rename from source/game/SXplayer.cpp
rename to source/game/Player.cpp
index 40a8d7bc9c480829c41e6c45814b38223a342252..295d999ff881f7fda6224cb767b37aaef72520ba 100644
--- a/source/game/SXplayer.cpp
+++ b/source/game/Player.cpp
@@ -1,8 +1,8 @@
 #include <input/sxinput.h>
 #include <mtllight/sxmtllight.h>
-#include "SXplayer.h"
+#include "Player.h"
 #include "LightDirectional.h"
-#include "SXbaseTool.h"
+#include "BaseTool.h"
 #include <aigrid/sxaigrid.h>
 
 #include "GameData.h"
@@ -11,139 +11,48 @@
 Объект игрока в мире
 */
 
-BEGIN_PROPTABLE(SXplayer)
+BEGIN_PROPTABLE(CPlayer)
 // empty
 END_PROPTABLE()
 
-REGISTER_ENTITY(SXplayer, player);
+REGISTER_ENTITY(CPlayer, player);
 
-class btKinematicClosestNotMeRayResultCallback: public btCollisionWorld::ClosestRayResultCallback
-{
-public:
-	btKinematicClosestNotMeRayResultCallback(btCollisionObject* me, const btVector3&	rayFromWorld, const btVector3&	rayToWorld): btCollisionWorld::ClosestRayResultCallback(rayFromWorld, rayToWorld)
-	{
-		m_me = me;
-		m_shapeInfo = {-1, -1};
-	}
-
-	virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace)
-	{
-		if(rayResult.m_collisionObject == m_me)
-			return 1.0;
-		if(rayResult.m_localShapeInfo)
-		{
-			m_shapeInfo = *rayResult.m_localShapeInfo;
-		}
-		return ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
-	}
-	btCollisionWorld::LocalShapeInfo m_shapeInfo;
-protected:
-	btCollisionObject* m_me;
-};
-
-SXplayer::SXplayer(EntityManager * pMgr):
+CPlayer::CPlayer(CEntityManager * pMgr):
 	BaseClass(pMgr),
-	m_uMoveDir(PM_OBSERVER),
-	m_vPitchYawRoll(float3_t(0, 0, 0)),
 	m_canJump(true),
 	m_fViewbobStep(0.0f),
 	m_fViewbobY(0.0f),
 	m_fViewbobStrafe(float3_t(0, 0, 0)),
 	m_vWpnShakeAngles(float3_t(0.0f, 0.0f, 0.0f)),
-	m_pActiveTool(NULL),
 	m_iDSM(DSM_NONE)
 {
-	m_pCamera = (SXpointCamera*)CREATE_ENTITY("point_camera", pMgr);
-	m_pCamera->SetParent(this);
-
-	m_iUpdIval = SET_INTERVAL(UpdateInput, 0);
-
-	btTransform startTransform;
-	startTransform.setIdentity();
-	startTransform.setOrigin(F3_BTVEC(m_vPosition));
-	//startTransform.setOrigin(btVector3(0, 12, 10));
-
-	m_pGhostObject = new btPairCachingGhostObject();
-	m_pGhostObject->setWorldTransform(startTransform);
-	//sweepBP->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
-	m_pCollideShape = new btCapsuleShape(0.4f, 1.0f);
-	m_pGhostObject->setCollisionShape(m_pCollideShape);
-	m_pGhostObject->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT);
-	m_pGhostObject->setUserPointer(this);
-
-	btScalar stepHeight = 0.4f;
-	m_pCharacter = new btKinematicCharacterController(m_pGhostObject, (btConvexShape*)m_pCollideShape, stepHeight, btVector3(0.0f, 1.0f, 0.0f));
-	m_pCharacter->setMaxJumpHeight(0.60f);
-	m_pCharacter->setJumpSpeed(3.50f);
-	//m_pCharacter->setJumpSpeed(3.5f);
-	m_pCharacter->setGravity(btVector3(0, -10.0f, 0));
-	//m_pCharacter->setGravity(1.0f);
-	m_pCharacter->setFallSpeed(300.0f);
-	//m_pCharacter->setFallSpeed(30.0f);
-
-	SXPhysics_GetDynWorld()->addCollisionObject(m_pGhostObject, btBroadphaseProxy::CharacterFilter, btBroadphaseProxy::AllFilter & ~btBroadphaseProxy::DebrisFilter);
-
-	m_pGhostObject->setCollisionFlags(m_pGhostObject->getCollisionFlags() | btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT);
-
-	SXPhysics_GetDynWorld()->addAction(m_pCharacter);
-
-
-
-/*
-	m_pActiveTool = (SXbaseTool*)CREATE_ENTITY("weapon_ak74", m_pMgr);
-	m_pActiveTool->SetOwner(this);
-	m_pActiveTool->AttachHands();
-	m_pActiveTool->PlayAnimation("idle");
-	m_pActiveTool->SetPos(GetPos() + float3(1.0f, 0.0f, 1.0f));
-	m_pActiveTool->SetOrient(GetOrient());
-	m_pActiveTool->SetParent(this);
-	*/
-
-
-	m_flashlight = (CLightDirectional*)CREATE_ENTITY("light_directional", m_pMgr);
-	//m_flashlight->SetPos(GetPos() + float3(0.f, 0.1f, 0.f));
-	m_flashlight->SetPos(GetPos() + float3(0.f, 0.2f, 0.1f));
-	m_flashlight->SetOrient(GetOrient() * SMQuaternion(SM_PIDIV2, 'x'));
-	m_flashlight->SetParent(this);
-	m_flashlight->setDist(20.f);
-	m_flashlight->setAngle(SMToRadian(60));
-	m_flashlight->setColor(float3(3.5, 3.5, 3.5));
-	//m_flashlight->setShadowType(-1);
-	m_flashlight->setShadowType(1);
+	m_pCamera = (CPointCamera*)CREATE_ENTITY("point_camera", pMgr);
+	m_pCamera->setParent(this);
+
+	m_iUpdIval = SET_INTERVAL(updateInput, 0);
+
+
+	m_pActiveTool = (CBaseTool*)CREATE_ENTITY("weapon_ak74", m_pMgr);
+	m_pActiveTool->setOwner(this);
+	m_pActiveTool->attachHands();
+	m_pActiveTool->playAnimation("idle");
+	m_pActiveTool->setPos(getPos() + float3(1.0f, 0.0f, 1.0f));
+	m_pActiveTool->setOrient(getOrient());
+	m_pActiveTool->setParent(this);
 
 	m_idQuadCurr = -1;
 
-	m_pCrosshair = new Crosshair();
+	m_pCrosshair = new CCrosshair();
 }
 
-SXplayer::~SXplayer()
+CPlayer::~CPlayer()
 {
 	mem_delete(m_pCrosshair);
 	CLEAR_INTERVAL(m_iUpdIval);
 	REMOVE_ENTITY(m_pCamera);
 }
 
-void SXplayer::playFootstepsSound()
-{
-	if(!(m_uMoveDir & PM_OBSERVER))
-	{
-		if(onGround())
-		{
-			float3 start = GetPos(),
-				end = start + float3(0.0f, -2.0f, 0.0f);
-			btKinematicClosestNotMeRayResultCallback cb(m_pGhostObject, F3_BTVEC(start), F3_BTVEC(end));
-			SXPhysics_GetDynWorld()->rayTest(F3_BTVEC(start), F3_BTVEC(end), cb);
-
-			if(cb.hasHit() && cb.m_shapeInfo.m_shapePart == 0 && cb.m_shapeInfo.m_triangleIndex >= 0)
-			{
-				MTLTYPE_PHYSIC type = (MTLTYPE_PHYSIC)SXPhysics_GetMtlType(cb.m_collisionObject, &cb.m_shapeInfo);
-				g_pGameData->playFootstepSound(type, BTVEC_F3(cb.m_hitPointWorld));
-			}
-		}
-	}
-}
-
-void SXplayer::UpdateInput(float dt)
+void CPlayer::updateInput(float dt)
 {
 	int x, y;
 	static const float * sense = GET_PCVAR_FLOAT("cl_mousesense");
@@ -166,7 +75,7 @@ void SXplayer::UpdateInput(float dt)
 		float dy = (float)y * *sense * 10.0f /* / dt */;
 		if(m_iDSM && m_pActiveTool)
 		{
-			m_pActiveTool->DbgMove(m_iDSM, dy);
+			m_pActiveTool->dbgMove(m_iDSM, dy);
 			if(m_iDSM == DSM_PRINT)
 			{
 				m_iDSM = DSM_NONE;
@@ -350,12 +259,12 @@ void SXplayer::UpdateInput(float dt)
 #endif
 }
 
-Crosshair * SXplayer::GetCrosshair()
+CCrosshair * CPlayer::getCrosshair()
 {
 	return(m_pCrosshair);
 }
 
-void SXplayer::Move(UINT dir, bool start)
+void CPlayer::move(UINT dir, bool start)
 {
 	if(start)
 	{
@@ -367,14 +276,14 @@ void SXplayer::Move(UINT dir, bool start)
 	}
 }
 
-SXpointCamera * SXplayer::GetCamera()
+CPointCamera * CPlayer::getCamera()
 {
 	return(m_pCamera);
 }
 
-void SXplayer::OnSync()
+void CPlayer::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 	if(m_uMoveDir & PM_OBSERVER)
 	{
 		return;
@@ -392,7 +301,7 @@ void SXplayer::OnSync()
 	{
 		//занимаем этот квад
 		SAIG_QuadSetState(idq, AIQUAD_STATE_TEMPBUSY);
-		SAIG_QuadSetStateWho(idq, GetId());
+		SAIG_QuadSetStateWho(idq, getId());
 	}
 
 	//если предыдущий и текущие квады не идентичны
@@ -406,23 +315,17 @@ void SXplayer::OnSync()
 	}
 }
 
-float3 SXplayer::GetWeaponOrigin()
-{
-	//@TODO: Implement me
-	return(m_vPosition);
-}
-
-void SXplayer::Spawn()
+void CPlayer::spawn()
 {
-	SXbaseEntity * pEnt = NULL;
-	while((pEnt = m_pMgr->FindEntityByClass("info_player_spawn", pEnt)))
+	CBaseEntity * pEnt = NULL;
+	while((pEnt = m_pMgr->findEntityByClass("info_player_spawn", pEnt)))
 	{
 		//if(CanSpawn(pEnt))
 		{
-		SetPos(pEnt->GetPos());
-		SetOrient(pEnt->GetOrient());
+		setPos(pEnt->getPos());
+		setOrient(pEnt->getOrient());
 		m_uMoveDir &= ~PM_OBSERVER;
-			m_pCrosshair->Enable();
+			m_pCrosshair->enable();
 			return;
 		}
 	}
@@ -430,67 +333,13 @@ void SXplayer::Spawn()
 		printf(COLOR_RED "Cannot find valid spawnpoint\n" COLOR_RESET);
 	}
 
-void SXplayer::SetPos(const float3 & pos)
+void CPlayer::setPos(const float3 & pos)
 {
-	BaseClass::SetPos(pos);
+	BaseClass::setPos(pos);
 	m_pGhostObject->getWorldTransform().setOrigin(F3_BTVEC(pos));
 }
 
-void SXplayer::Attack(BOOL state)
-{
-	if(m_uMoveDir & PM_OBSERVER)
-	{
-		return;
-	}
-	if(m_pActiveTool)
-	{
-		m_pActiveTool->PrimaryAction(state);
-	}
-}
-
-void SXplayer::Attack2(BOOL state)
-{
-	if(m_uMoveDir & PM_OBSERVER)
-	{
-		return;
-	}
-	if(m_pActiveTool)
-	{
-		m_pActiveTool->SecondaryAction(state);
-	}
-}
-
-void SXplayer::Reload()
-{
-	if(m_uMoveDir & PM_OBSERVER)
-	{
-		return;
-	}
-	if(m_pActiveTool)
-	{
-		m_pActiveTool->Reload();
-	}
-}
-
-void SXplayer::ToggleFlashlight()
-{
-	m_flashlight->toggleEnable();
-}
-
-void SXplayer::nextFireMode()
-{
-	if(m_uMoveDir & PM_OBSERVER)
-	{
-		return;
-	}
-	if(m_pActiveTool)
-	{
-		//@FIXME: Add correct call
-		//m_pActiveTool->nextFireMode();
-	}
-}
-
-void SXplayer::_ccmd_slot_on(int argc, const char ** argv)
+void CPlayer::_ccmd_slot_on(int argc, const char ** argv)
 {
 	if(argc != 2)
 	{
@@ -520,17 +369,21 @@ void SXplayer::_ccmd_slot_on(int argc, const char ** argv)
 	}
 }
 
-void SXplayer::_ccmd_slot_off()
+void CPlayer::_ccmd_slot_off()
 {
 	m_iDSM = DSM_NONE;
 }
 
-float3_t & SXplayer::GetWeaponDeltaAngles()
+float3_t & CPlayer::getWeaponDeltaAngles()
 {
 	return(m_vWpnShakeAngles);
 }
 
-bool SXplayer::onGround()
+void CPlayer::updateSpread(float dt)
 {
-	return(m_pCharacter->onGround());
+	BaseClass::updateSpread(dt);
+	if(m_pCrosshair)
+	{
+		m_pCrosshair->setSize(getCurrentSpread() * 0.1f);
+	}
 }
diff --git a/source/game/Player.h b/source/game/Player.h
new file mode 100644
index 0000000000000000000000000000000000000000..4491cb904368ef20dc46dedd7aed1659edb08cf8
--- /dev/null
+++ b/source/game/Player.h
@@ -0,0 +1,97 @@
+
+/******************************************************
+Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
+See the license in LICENSE
+******************************************************/
+
+/*!
+\file
+Класс игрока
+*/
+
+/*! \ingroup cbaseanimating
+@{
+*/
+
+#ifndef _CPlayer_H_
+#define _CPlayer_H_
+
+#include "BaseCharacter.h"
+#include "PointCamera.h"
+#include "crosshair.h"
+
+//! Класс игрока  \ingroup cbaseanimating
+class CPlayer: public CBaseCharacter
+{
+	DECLARE_CLASS(CPlayer, CBaseCharacter);
+	DECLARE_PROPTABLE();
+public:
+	CPlayer(CEntityManager * pMgr);
+	~CPlayer();
+	
+	//! Возвращает камеру игрока
+	CPointCamera * getCamera();
+
+	//! Переключает в режим наблюдателя
+	void observe()
+	{
+		m_uMoveDir |= PM_OBSERVER;
+		m_pCrosshair->enable(false);
+	}
+	//! Помещает игрока в мир
+	void spawn();
+
+	/*! Запускает/останавливает движение в заданном направлении
+		@param [in] dir направление движения из #PLAYER_MOVE
+	*/
+	void move(UINT dir, bool start);
+
+	//! Обновляет инпут от игрока
+	virtual void updateInput(float dt);
+
+	void onSync();
+
+	//! Устанавливает положение в мире
+	void setPos(const float3 & pos);
+	
+	//! Получает смещения для задержки движения модели оружия при вращении игрока
+	float3_t & getWeaponDeltaAngles();
+
+	//! Команды для подбора положения визуальной модели оружия на экране
+	void _ccmd_slot_on(int argc, const char ** argv);
+	void _ccmd_slot_off();
+
+	//! Получает объект перекрестия
+	CCrosshair * getCrosshair();
+
+protected:
+	//! Камера
+	CPointCamera * m_pCamera;
+
+	//! ID интервала обновления
+	ID m_iUpdIval;
+
+	//! Может ли прыгать
+	bool m_canJump;
+
+	//! Для качания камеры @{
+	float m_fViewbobStep;
+	float m_fViewbobY;
+	float3_t m_fViewbobStrafe;
+	float3_t m_vWpnShakeAngles;
+	//! @}
+
+	int m_iDSM;
+
+	//! Перекрестие
+	CCrosshair * m_pCrosshair;
+
+	ID m_idQuadCurr;	//!< текущий квад аи сетки на котором стоит игрок
+
+	//! Обновляет разброса значение
+	virtual void updateSpread(float dt);
+};
+
+#endif
+
+//! @}
diff --git a/source/game/SXplayerSpawn.cpp b/source/game/PlayerSpawn.cpp
similarity index 80%
rename from source/game/SXplayerSpawn.cpp
rename to source/game/PlayerSpawn.cpp
index 19cf04d906a1789efd125d2981c711850f289a94..088b72a8a5eddc98cfa4b93161706d42a74fc7d4 100644
--- a/source/game/SXplayerSpawn.cpp
+++ b/source/game/PlayerSpawn.cpp
@@ -1,10 +1,10 @@
-#include "SXplayerSpawn.h"
+#include "PlayerSpawn.h"
 
 /*! \skydocent info_player_spawn
 Камера
 */
 
-BEGIN_PROPTABLE(SXplayerSpawn)
+BEGIN_PROPTABLE(CPlayerSpawn)
 	/*! Команда игроков, для которой работает спавн. 
 	\note Только для многопользовательского режима
 	*/
@@ -17,4 +17,4 @@ BEGIN_PROPTABLE(SXplayerSpawn)
 
 END_PROPTABLE()
 
-REGISTER_ENTITY(SXplayerSpawn, info_player_spawn);
+REGISTER_ENTITY(CPlayerSpawn, info_player_spawn);
diff --git a/source/game/SXplayerSpawn.h b/source/game/PlayerSpawn.h
similarity index 71%
rename from source/game/SXplayerSpawn.h
rename to source/game/PlayerSpawn.h
index 54754dc82944bcd84f94559e5e1956302e6f0d2c..1f8c484385aca3f5e1efdeecf9d6495872b12abe 100644
--- a/source/game/SXplayerSpawn.h
+++ b/source/game/PlayerSpawn.h
@@ -13,15 +13,15 @@ See the license in LICENSE
 @{
 */
 
-#ifndef _SXplayerSpawn_H_
-#define _SXplayerSpawn_H_
+#ifndef _CPlayerSpawn_H_
+#define _CPlayerSpawn_H_
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
 //! Точка респауна игрока
-class SXplayerSpawn: public SXpointEntity
+class CPlayerSpawn: public CPointEntity
 {
-	DECLARE_CLASS(SXplayerSpawn, SXpointEntity);
+	DECLARE_CLASS(CPlayerSpawn, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
diff --git a/source/game/SXpointCamera.cpp b/source/game/PointCamera.cpp
similarity index 57%
rename from source/game/SXpointCamera.cpp
rename to source/game/PointCamera.cpp
index 09456528ed3f0d9249fe636c22f217eb411e2e12..46a5c84181bba97a9a8381d4297ed6b0c6641ea9 100644
--- a/source/game/SXpointCamera.cpp
+++ b/source/game/PointCamera.cpp
@@ -1,16 +1,16 @@
-#include "SXpointCamera.h"
+#include "PointCamera.h"
 
 /*! \skydocent point_camera
 Камера
 */
 
-BEGIN_PROPTABLE(SXpointCamera)
+BEGIN_PROPTABLE(CPointCamera)
 // empty
 END_PROPTABLE()
 
-REGISTER_ENTITY(SXpointCamera, point_camera);
+REGISTER_ENTITY(CPointCamera, point_camera);
 
-SXpointCamera::SXpointCamera(EntityManager * pMgr):
+CPointCamera::CPointCamera(CEntityManager * pMgr):
 	BaseClass(pMgr)
 {
 	const float * r_default_fov = GET_PCVAR_FLOAT("r_default_fov");
@@ -18,19 +18,19 @@ SXpointCamera::SXpointCamera(EntityManager * pMgr):
 	m_pSXC->SetFOV(SMToRadian(*r_default_fov));
 }
 
-SXpointCamera::~SXpointCamera()
+CPointCamera::~CPointCamera()
 {
 	mem_release(m_pSXC);
 }
 
-ISXCamera * SXpointCamera::GetCamera()
+ISXCamera * CPointCamera::getCamera()
 {
 	return(m_pSXC);
 }
 
-void SXpointCamera::OnSync()
+void CPointCamera::onSync()
 {
-	BaseClass::OnSync();
+	BaseClass::onSync();
 
 	m_pSXC->SetPosition(&(float3)m_vPosition);
 	m_pSXC->SetOrientation(m_vOrientation);
diff --git a/source/game/SXpointCamera.h b/source/game/PointCamera.h
similarity index 65%
rename from source/game/SXpointCamera.h
rename to source/game/PointCamera.h
index e6419c7c48b1d3b8623db0044c815c8301f221d2..c699dcf13e6ee3e7067a2924f96c3b4d95b71e25 100644
--- a/source/game/SXpointCamera.h
+++ b/source/game/PointCamera.h
@@ -13,29 +13,29 @@ See the license in LICENSE
 @{
 */
 
-#ifndef _SXpointCamera_H_
-#define _SXpointCamera_H_
+#ifndef _CPointCamera_H_
+#define _CPointCamera_H_
 
 #include <gcore/sxgcore.h>
 
-#include "SXpointEntity.h"
+#include "PointEntity.h"
 
 //! Класс камеры
-class SXpointCamera: public SXpointEntity
+class CPointCamera: public CPointEntity
 {
-	DECLARE_CLASS(SXpointCamera, SXpointEntity);
+	DECLARE_CLASS(CPointCamera, CPointEntity);
 	DECLARE_PROPTABLE();
 public:
-	SXpointCamera(EntityManager * pMgr);
-	~SXpointCamera();
+	CPointCamera(CEntityManager * pMgr);
+	~CPointCamera();
 
 	//! Возвращает объект камеры из графической либы
-	ISXCamera * GetCamera();
+	ISXCamera * getCamera();
 
 protected:
 	ISXCamera * m_pSXC;
 
-	void OnSync();
+	void onSync();
 };
 
 #endif
diff --git a/source/game/PointEntity.cpp b/source/game/PointEntity.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..59b384966d13e8b799c450a8fe618acde38928d9
--- /dev/null
+++ b/source/game/PointEntity.cpp
@@ -0,0 +1,11 @@
+#include "PointEntity.h"
+
+/*! \skydocent base_point
+Базовый точечный объект
+*/
+
+BEGIN_PROPTABLE(CPointEntity)
+ // empty
+END_PROPTABLE()
+
+REGISTER_ENTITY_NOLISTING(CPointEntity, base_point);
diff --git a/source/game/SXpointEntity.h b/source/game/PointEntity.h
similarity index 75%
rename from source/game/SXpointEntity.h
rename to source/game/PointEntity.h
index cd8ddccbd9de524047e622cd8efa215a851276de..685e375bdedc8092dabdae557051c64500def7ab 100644
--- a/source/game/SXpointEntity.h
+++ b/source/game/PointEntity.h
@@ -16,15 +16,15 @@ See the license in LICENSE
 
 //! \defgroup clight Свет
 
-#ifndef _SXpointEntity_H_
-#define _SXpointEntity_H_
+#ifndef _CPointEntity_H_
+#define _CPointEntity_H_
 
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 //! Класс точечного объекта
-class SXpointEntity: public SXbaseEntity
+class CPointEntity: public CBaseEntity
 {
-	DECLARE_CLASS(SXpointEntity, SXbaseEntity);
+	DECLARE_CLASS(CPointEntity, CBaseEntity);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
diff --git a/source/game/Ragdoll.cpp b/source/game/Ragdoll.cpp
index bf70d49b26e81c8f40b58b7bea0e09d10e15995b..e192f0280f1f49b0713cfe9f37577d472e7bd3b6 100644
--- a/source/game/Ragdoll.cpp
+++ b/source/game/Ragdoll.cpp
@@ -7,7 +7,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 	HITBOX_TYPE * phTypes;
 	float3_t ** ppfData;
 	int32_t * pDataLen;
-	pAnimPlayer->GetPhysData(&iShapeCount, &phTypes, &ppfData, &pDataLen);
+	pAnimPlayer->getPhysData(&iShapeCount, &phTypes, &ppfData, &pDataLen);
 */
 
 	enum JointType
@@ -69,13 +69,13 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		{"bip01_neck", 1, 0, JOINT_CONETWIST, float3_t(SM_PIDIV4, SM_PIDIV4, SM_PIDIV2)}
 	};
 	btTransform offset; offset.setIdentity();
-	offset.setOrigin(F3_BTVEC(pAnimPlayer->GetPos()));
+	offset.setOrigin(F3_BTVEC(pAnimPlayer->getPos()));
 
 	m_shapes = new btCollisionShape*[m_iBodiesCount];
 	m_bodies = new btRigidBody*[m_iBodiesCount];
 
-	m_pidBones = new ID[pAnimPlayer->GetBoneCount()];
-	for(int i = 0, l = pAnimPlayer->GetBoneCount(); i < l; ++i)
+	m_pidBones = new ID[pAnimPlayer->getBoneCount()];
+	for(int i = 0, l = pAnimPlayer->getBoneCount(); i < l; ++i)
 	{
 		m_pidBones[i] = -1;
 	}
@@ -84,7 +84,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 	{
 		if(bones[i].szBone[0])
 		{
-			m_pidBones[pAnimPlayer->GetBone(bones[i].szBone)] = i;
+			m_pidBones[pAnimPlayer->getBone(bones[i].szBone)] = i;
 		}
 
 		m_shapes[i] = new btCapsuleShape(bones[i].fCapsRadius * 0.5f, (bones[i].fCapsLength + bones[i].fCapsRadius) * 0.5f);
@@ -104,11 +104,11 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 	m_ppJoints = new btTypedConstraint*[m_iJointsCount];
 
 	/*const ModelHitbox * hb;
-	uint32_t iHitboxes = pAnimPlayer->GetHitboxCount();
-	float fScale = pAnimPlayer->GetScale();
+	uint32_t iHitboxes = pAnimPlayer->getHitboxCount();
+	float fScale = pAnimPlayer->getScale();
 	for(uint32_t i = 0; i < iHitboxes; ++i)
 	{
-		hb = pAnimPlayer->GetHitbox(i);
+		hb = pAnimPlayer->getHitbox(i);
 		switch(hb->type)
 		{
 		case HT_BOX:
@@ -156,12 +156,12 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 	}
 	//m_bodies[1]->setAngularFactor(0.0f);
 	//m_bodies[1]->setLinearFactor(btVector3(0.0f, 0.0f, 0.0f));
-	//UINT bone = pAnimPlayer->GetBone("bip01_head");
+	//UINT bone = pAnimPlayer->getBone("bip01_head");
 	{
 		btTransform localA, localB;
 		btConeTwistConstraint * pCTC;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_neck"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_neck"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setEulerZYX(SM_PIDIV2, 0, SM_PIDIV2);
@@ -181,7 +181,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btConeTwistConstraint * pCTC;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_l_upperarm"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_l_upperarm"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -202,7 +202,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btConeTwistConstraint * pCTC;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_r_upperarm"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_r_upperarm"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -224,7 +224,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btHingeConstraint * pHinge;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_l_forearm"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_l_forearm"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -247,7 +247,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btHingeConstraint * pHinge;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_r_forearm"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_r_forearm"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -270,7 +270,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btFixedConstraint * joint6DOF;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_spine1"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_spine1"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -293,7 +293,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btGeneric6DofConstraint * joint6DOF;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_spine1"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_spine1"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -317,7 +317,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btConeTwistConstraint * pCTC;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_l_thigh"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_l_thigh"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		//localA.getBasis().setIdentity();
@@ -338,7 +338,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btConeTwistConstraint * pCTC;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_r_thigh"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_r_thigh"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		//localA.getBasis().setIdentity();
@@ -359,7 +359,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btHingeConstraint * pHinge;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_l_calf"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_l_calf"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
@@ -382,7 +382,7 @@ CRagdoll::CRagdoll(IAnimPlayer *pAnimPlayer)
 		btTransform localA, localB;
 		btHingeConstraint * pHinge;
 
-		float3 pos = pAnimPlayer->GetBoneTransformPos(pAnimPlayer->GetBone("bip01_r_calf"));
+		float3 pos = pAnimPlayer->getBoneTransformPos(pAnimPlayer->getBone("bip01_r_calf"));
 
 		localA.setOrigin(F3_BTVEC(pos));
 		localA.getBasis().setIdentity();
diff --git a/source/game/SXbaseAnimating.h b/source/game/SXbaseAnimating.h
deleted file mode 100644
index ed12d730c1090ae1c450dbd45b2c31c5c18c4574..0000000000000000000000000000000000000000
--- a/source/game/SXbaseAnimating.h
+++ /dev/null
@@ -1,68 +0,0 @@
-
-/******************************************************
-Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
-See the license in LICENSE
-******************************************************/
-
-/*!
-\file
-Анимированный игровой объект
-*/
-
-/*! \defgroup cbaseanimating Моделированные объекты
-\ingroup cbaseentity
-@{
-*/
-
-#ifndef _SXbaseAnimating_H_
-#define _SXbaseAnimating_H_
-
-#include "SXbaseEntity.h"
-#include <anim/sxanim.h>
-
-//! Анимированный игровой объект
-class SXbaseAnimating: public SXbaseEntity
-{
-	DECLARE_CLASS(SXbaseAnimating, SXbaseEntity);
-	DECLARE_PROPTABLE();
-public:
-	SXbaseAnimating(EntityManager * pMgr);
-	~SXbaseAnimating();
-
-	void GetMinMax(float3 * min, float3 * max);
-	void GetSphere(float3 * center, float * radius);
-
-	bool SetKV(const char * name, const char * value);
-
-	void SetModel(const char * mdl);
-
-	float3 GetAttachmentPos(int id);
-	SMQuaternion GetAttachmentRot(int id);
-
-	void OnSync();
-
-	void PlayAnimation(const char * name, UINT iFadeTime = 0, UINT slot = 0);
-	void PlayActivity(const char * name, UINT iFadeTime = 0, UINT slot = 0);
-
-
-	bool PlayingAnimations(const char* name);
-	void SetPos(const float3 & pos);
-	void SetOrient(const SMQuaternion & q);
-
-protected:
-	IAnimPlayer * m_pAnimPlayer;
-	const char * m_szModelFile;
-	float m_fBaseScale;
-
-	virtual void InitPhysics();
-	virtual void CreatePhysBody();
-	void ReleasePhysics();
-	virtual void RemovePhysBody();
-
-	btCollisionShape * m_pCollideShape;
-	btRigidBody * m_pRigidBody;
-};
-
-#endif
-
-/*! @} cbaseanimating */
diff --git a/source/game/SXbaseRiffle.cpp b/source/game/SXbaseRiffle.cpp
deleted file mode 100644
index 1b3c1fc2fc2c82abd066786b347938d7f8b31b03..0000000000000000000000000000000000000000
--- a/source/game/SXbaseRiffle.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "SXbaseRiffle.h"
-
-/*! \skydocent base_riffle
-Базовый класс винтовки
-*/
-
-BEGIN_PROPTABLE(SXbaseRiffle)
-// empty
-END_PROPTABLE()
-
-REGISTER_ENTITY_NOLISTING(SXbaseRiffle, base_riffle);
-
diff --git a/source/game/SXbaseSnipe.h b/source/game/SXbaseSnipe.h
index 5345d453fc1a43674434db8f43926f825c232982..e7c983d51b44b29fe25896851369b7ced11e0efb 100644
--- a/source/game/SXbaseSnipe.h
+++ b/source/game/SXbaseSnipe.h
@@ -11,14 +11,14 @@ See the license in LICENSE
 #ifndef _SXbaseSnipe_H_
 #define _SXbaseSnipe_H_
 
-#include "SXbaseWeapon.h"
+#include "BaseWeapon.h"
 
 /*! Снайперские
 \ingroup cbaseitem
 */
-class SXbaseSnipe: public SXbaseWeapon
+class SXbaseSnipe: public CBaseWeapon
 {
-	DECLARE_CLASS(SXbaseSnipe, SXbaseWeapon);
+	DECLARE_CLASS(SXbaseSnipe, CBaseWeapon);
 	DECLARE_PROPTABLE();
 public:
 	DECLARE_TRIVIAL_CONSTRUCTOR();
diff --git a/source/game/SXplayer.h b/source/game/SXplayer.h
deleted file mode 100644
index 1abb17615b552b993a3380c520fbe3cb3aa8438f..0000000000000000000000000000000000000000
--- a/source/game/SXplayer.h
+++ /dev/null
@@ -1,153 +0,0 @@
-
-/******************************************************
-Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
-See the license in LICENSE
-******************************************************/
-
-/*!
-\file
-Класс игрока
-*/
-
-/*! \ingroup cbaseanimating
-@{
-*/
-
-#ifndef _SXplayer_H_
-#define _SXplayer_H_
-
-#include "SXbaseAnimating.h"
-#include "SXpointCamera.h"
-#include "LightDirectional.h"
-#include "crosshair.h"
-
-//! Типы движения игрока
-enum PLAYER_MOVE
-{
-	PM_NONE = 0,
-	PM_FORWARD = 0x01,   //!< вперед
-	PM_BACKWARD = 0x02,  //!< назад
-	PM_LEFT = 0x04,      //!< влево
-	PM_RIGHT = 0x08,     //!< вправо
-	PM_CROUCH = 0x10,    //!< присесть
-	PM_JUMP = 0x20,      //!< прыгнуть
-	PM_RUN = 0x40,       //!< бежать
-	PM_CRAWL = 0x80,     //!< лежать
-	PM_OBSERVER = 0x100, //!< наблюдатель
-
-	PM_STOP = 0xFFFF
-};
-
-class SXbaseTool;
-
-//! Класс игрока  \ingroup cbaseanimating
-class SXplayer: public SXbaseAnimating
-{
-	DECLARE_CLASS(SXplayer, SXbaseAnimating);
-	DECLARE_PROPTABLE();
-public:
-	SXplayer(EntityManager * pMgr);
-	~SXplayer();
-	
-	//! Возвращает камеру игрока
-	SXpointCamera * GetCamera();
-
-	//! Переключает в режим наблюдателя
-	void Observe()
-	{
-		m_uMoveDir |= PM_OBSERVER;
-		m_pCrosshair->Enable(false);
-	}
-	//! Помещает игрока в мир
-	void Spawn();
-
-	/*! Запускает/останавливает движение в заданном направлении
-		@param [in] dir направление движения из #PLAYER_MOVE
-	*/
-	void Move(UINT dir, bool start);
-
-	//! Обновляет инпут от игрока
-	virtual void UpdateInput(float dt);
-
-	void OnSync();
-
-	//! Устанавливает положение в мире
-	void SetPos(const float3 & pos);
-
-	//! Запускает/останавливает первичную атаку
-	void Attack(BOOL state);
-	//! Запускает/останавливает вторичную атаку
-	void Attack2(BOOL state);
-	//! Запускает перезарядку активного оружия
-	void Reload();
-	//! Включает/выключает фонарь
-	void ToggleFlashlight();
-	//! Переключает режим стрельбы активного оружия
-	void nextFireMode();
-
-	/*! Возаращает мировую позицию для модели оружия
-		\note Устарело?
-	*/
-	float3 GetWeaponOrigin();
-	//! Получает смещения для задержки движения модели оружия при вращении игрока
-	float3_t & GetWeaponDeltaAngles();
-
-	//! Команды для подбора положения визуальной модели оружия на экране
-	void _ccmd_slot_on(int argc, const char ** argv);
-	void _ccmd_slot_off();
-
-	//! Получает объект перекрестия
-	Crosshair * GetCrosshair();
-
-	//! Находится ли игрок на земле
-	bool onGround();
-
-	//! Воспроизводит звук шагов с учетом материала на котором стоит игрок
-	void playFootstepsSound();
-
-protected:
-	//! Фонарик
-	CLightDirectional* m_flashlight;
-	//! Камера
-	SXpointCamera * m_pCamera;
-
-	//! Текущее движение
-	UINT m_uMoveDir;
-
-	//! ID интервала обновления
-	ID m_iUpdIval;
-
-	//! Углы вращения игрока
-	float3_t m_vPitchYawRoll;
-
-	//! Для физики @{
-	btCollisionShape * m_pCollideShape;
-	btRigidBody * m_pRigidBody;
-	btPairCachingGhostObject * m_pGhostObject;
-	btKinematicCharacterController * m_pCharacter;
-	//! @}
-
-	//! Текущий инструмент в руках
-	SXbaseTool * m_pActiveTool;
-
-	//! Может ли прыгать
-	bool m_canJump;
-
-	//! Для качания камеры @{
-	float m_fViewbobStep;
-	float m_fViewbobY;
-	float3_t m_fViewbobStrafe;
-	float3_t m_vWpnShakeAngles;
-	//! @}
-
-	int m_iDSM;
-
-	//! Перекрестие
-	Crosshair * m_pCrosshair;
-
-	ID m_idQuadCurr;	//!< текущий квад аи сетки на котором стоит игрок
-};
-
-#endif
-
-//! @}
diff --git a/source/game/SXpointEntity.cpp b/source/game/SXpointEntity.cpp
deleted file mode 100644
index 426563818654bf666bdef6aa4c82dce23348235d..0000000000000000000000000000000000000000
--- a/source/game/SXpointEntity.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "SXpointEntity.h"
-
-/*! \skydocent base_point
-Базовый точечный объект
-*/
-
-BEGIN_PROPTABLE(SXpointEntity)
- // empty
-END_PROPTABLE()
-
-REGISTER_ENTITY_NOLISTING(SXpointEntity, base_point);
diff --git a/source/game/crosshair.cpp b/source/game/crosshair.cpp
index aa3abddf47051d9b96f8a0897bc2d038fa7dcc7f..645773dfc3d64a74f82399335e847089ebf2090e 100644
--- a/source/game/crosshair.cpp
+++ b/source/game/crosshair.cpp
@@ -4,7 +4,7 @@
 #include <common/SXMath.h>
 #include "GameData.h"
 
-Crosshair::Crosshair():
+CCrosshair::CCrosshair():
 	m_bDirty(true),
 	m_bBuildBuff(false),
 	m_fSize(0),
@@ -37,12 +37,12 @@ Crosshair::Crosshair():
 	m_pDev->CreateIndexBuffer(sizeof(UINT)* iIC, D3DUSAGE_WRITEONLY, D3DFMT_INDEX32, D3DPOOL_MANAGED, &m_pIndexBuffer, NULL);
 }
 
-Crosshair::~Crosshair()
+CCrosshair::~CCrosshair()
 {
 	mem_delete_a(m_pMemoryBlob);
 }
 
-void Crosshair::SetTexInfo(const float2_t & offs, const float2_t & size)
+void CCrosshair::setTexInfo(const float2_t & offs, const float2_t & size)
 {
 	m_bDirty = true;
 	m_f2TexOffs = offs;
@@ -50,7 +50,7 @@ void Crosshair::SetTexInfo(const float2_t & offs, const float2_t & size)
 }
 
 
-void Crosshair::Update()
+void CCrosshair::update()
 {
 	if(m_bDirty && m_idTexture >= 0)
 	{
@@ -67,8 +67,8 @@ void Crosshair::Update()
 		static const int *r_win_height = GET_PCVAR_INT("r_win_height");
 
 		//build new buffer
-		float fScreenWidth = *r_win_width;
-		float fScreenHeight = *r_win_height;
+		float fScreenWidth = (float)*r_win_width;
+		float fScreenHeight = (float)*r_win_height;
 		float fTexWidth = m_f2TexSize.x;
 		float fTexHeight = m_f2TexSize.y;
 		float fXradius = fTexWidth / fScreenWidth * 0.5f;
@@ -325,7 +325,7 @@ void Crosshair::Update()
 		m_iIndexCount[m_u8ActiveBuffer ? 0 : 1] = iCurIdx;
 	}
 }
-void Crosshair::Render()
+void CCrosshair::render()
 {
 	if(m_bHidden || !m_pTexture)
 	{
@@ -359,6 +359,15 @@ void Crosshair::Render()
 	SGCore_ShaderUnBind();
 	m_pDev->SetTexture(0, m_pTexture);
 	m_pDev->SetRenderState(D3DRS_ZWRITEENABLE, D3DZB_FALSE);
+
+	// Использовать альфа-канал в качестве источника альфа-компонент
+	m_pDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+	m_pDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
+
+	// Устанавливаем коэффициенты смешивания таким образом,
+	// чтобы альфа-компонента определяла прозрачность
+	m_pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
+	m_pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
 	
 	//m_pDev->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
 	//m_pDev->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);
@@ -368,7 +377,7 @@ void Crosshair::Render()
 	SGCore_DIP(D3DPT_TRIANGLELIST, 0, 0, m_iVertexCount[m_u8ActiveBuffer], 0, m_iIndexCount[m_u8ActiveBuffer] / 3);
 	//render
 }
-void Crosshair::OnSync()
+void CCrosshair::onSync()
 {
 	if(m_bDirty)
 	{
@@ -381,12 +390,12 @@ void Crosshair::OnSync()
 	}
 }
 
-void Crosshair::Enable(bool en)
+void CCrosshair::enable(bool en)
 {
 	m_bHidden = !en;
 }
 
-void Crosshair::SetNumSegmens(int num)
+void CCrosshair::setNumSegmens(int num)
 {
 	if(num < 1)
 	{
@@ -402,7 +411,7 @@ void Crosshair::SetNumSegmens(int num)
 		m_iNumSegs = num;
 	}
 }
-void Crosshair::SetAngle(float a)
+void CCrosshair::setAngle(float a)
 {
 	if(m_fAngle != a)
 	{
@@ -410,7 +419,7 @@ void Crosshair::SetAngle(float a)
 		m_fAngle = a;
 	}
 }
-void Crosshair::SetFixedRadius(float r)
+void CCrosshair::setFixedRadius(float r)
 {
 	if(m_fFixedRadius != r)
 	{
@@ -418,7 +427,7 @@ void Crosshair::SetFixedRadius(float r)
 		m_fFixedRadius = r;
 	}
 }
-void Crosshair::SetStyle(STYLE style)
+void CCrosshair::setStyle(STYLE style)
 {
 	if(m_style != style)
 	{
@@ -426,12 +435,12 @@ void Crosshair::SetStyle(STYLE style)
 		m_style = style;
 	}
 }
-void Crosshair::SetMaxSize(float size)
+void CCrosshair::setMaxSize(float size)
 {
 	m_bDirty = true;
 	m_fMaxSize = size;
 }
-void Crosshair::SetTexture(ID id)
+void CCrosshair::setTexture(ID id)
 {
 	if(m_idTexture != id)
 	{
@@ -448,7 +457,7 @@ void Crosshair::SetTexture(ID id)
 	}
 }
 
-void Crosshair::SetSize(float size)
+void CCrosshair::setSize(float size)
 {
 	if(m_fSize != size)
 	{
diff --git a/source/game/crosshair.h b/source/game/crosshair.h
index 11a473869337ae1a2d483a73f5d45a47f4a1a2f4..baf95f3371b6cf11622ef625ae049bfe7f7f7a2e 100644
--- a/source/game/crosshair.h
+++ b/source/game/crosshair.h
@@ -10,7 +10,7 @@
 
 static_assert(CROSSHAIR_MINSEGS <= CROSSHAIR_MAXSEGS, "Maxsegs cannot be lesser than minsegs!");
 
-class Crosshair
+class CCrosshair
 {
 public:
 	enum STYLE
@@ -19,25 +19,25 @@ public:
 		SCALED
 	};
 
-	Crosshair();
-	~Crosshair();
+	CCrosshair();
+	~CCrosshair();
 
-	void Update();
-	void Render();
-	void OnSync();
+	void update();
+	void render();
+	void onSync();
 
-	void Enable(bool en = true);
+	void enable(bool en = true);
 
-	void SetNumSegmens(int num);
-	void SetAngle(float a);
-	void SetFixedRadius(float r);
-	void SetStyle(STYLE style);
-	void SetMaxSize(float size);
-	void SetTexture(ID id);
+	void setNumSegmens(int num);
+	void setAngle(float a);
+	void setFixedRadius(float r);
+	void setStyle(STYLE style);
+	void setMaxSize(float size);
+	void setTexture(ID id);
 	
-	void SetSize(float size);
+	void setSize(float size);
 
-	void SetTexInfo(const float2_t & offs, const float2_t & size);
+	void setTexInfo(const float2_t & offs, const float2_t & size);
 
 protected:
 
@@ -47,8 +47,6 @@ protected:
 		float2_t tex;
 	} Vertex;
 
-	void _BuildBuffer();
-
 	bool m_bDirty;
 	bool m_bBuildBuff;
 	float m_fSize;
diff --git a/source/game/proptable.cpp b/source/game/proptable.cpp
index 27c42635668036e043599eb982ac050b3f72f182..72461ca83fb281030e314c726860671907937496 100644
--- a/source/game/proptable.cpp
+++ b/source/game/proptable.cpp
@@ -3,7 +3,7 @@
 
 #include "proptable.h"
 
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 prop_editor_t _GetEditorCombobox(int start, ...)
 {
@@ -81,7 +81,7 @@ const char * GetEmptyString()
 	return(str);
 }
 
-void output_t::fire(SXbaseEntity *pInflictor, SXbaseEntity *pActivator)
+void output_t::fire(CBaseEntity *pInflictor, CBaseEntity *pActivator)
 {
 	inputdata_t data = {0};
 	data.pActivator = pActivator;
diff --git a/source/game/proptable.h b/source/game/proptable.h
index 19ab24e41e5977199b93bf25b9d6a813f15b2432..d1d409e584caec7c0134e9f40a63c53627921f36 100644
--- a/source/game/proptable.h
+++ b/source/game/proptable.h
@@ -3,9 +3,9 @@
 
 #include <common/SXmath.h>
 
-class SXbaseEntity;
+class CBaseEntity;
 
-//! ���� ����� ������
+//! типы полей данных
 enum PDF_TYPE
 {
 	PDF_NONE,
@@ -24,7 +24,7 @@ enum PDF_TYPE
 	PDF_OUTPUT
 };
 
-//! ���� ���������� �����
+//! типы редакторов полей
 enum PDE_TYPE
 {
 	PDE_NONE = 0,
@@ -37,10 +37,10 @@ enum PDE_TYPE
 enum PDF_FLAG
 {
 	PDFF_NONE       = 0x00,
-	PDFF_NOEXPORT   = 0x01, //!< �� �������������� ���� � ����
-	PDFF_NOEDIT     = 0x02, //!< �� ���������� ���� � ���������
-	PDFF_INPUT      = 0x04, //!< ���� �����
-	PDFF_OUTPUT     = 0x08, //!< ���� ������
+	PDFF_NOEXPORT   = 0x01, //!< Не экспортировать поле в файл
+	PDFF_NOEDIT     = 0x02, //!< Не отображать поле в редакторе
+	PDFF_INPUT      = 0x04, //!< Поле входа
+	PDFF_OUTPUT     = 0x08, //!< Поле выхода
 };
 
 enum ENT_FLAG
@@ -52,7 +52,7 @@ enum ENT_FLAG
 	EF_LAST           = 0x8000
 };
 
-typedef int SXbaseEntity::*fieldtype;
+typedef int CBaseEntity::*fieldtype;
 
 struct editor_kv
 {
@@ -69,9 +69,9 @@ struct prop_editor_t
 
 struct inputdata_t
 {
-	SXbaseEntity *pInflictor; //!< ��������� ��������� (��������� ��� ������� ���������)
-	SXbaseEntity *pActivator; //!< ���������������� ���������
-	PDF_TYPE type; //!< ��� ���������
+	CBaseEntity *pInflictor; //!< Косвенный активатор (вызвавший эту цепочку активаций)
+	CBaseEntity *pActivator; //!< Непосредственный активатор
+	PDF_TYPE type; //!< Тип аргумента
 	union
 	{
 		int i;
@@ -83,7 +83,7 @@ struct inputdata_t
 	float3_t v3Parameter;
 };
 
-typedef void(SXbaseEntity::*input_func)(inputdata_t * pInputData);
+typedef void(CBaseEntity::*input_func)(inputdata_t * pInputData);
 
 struct propdata_t
 {
@@ -127,7 +127,7 @@ struct propdata_t
 struct input_t
 {
 	input_func fnInput;
-	SXbaseEntity *pTarget;
+	CBaseEntity *pTarget;
 	inputdata_t data;
 };
 
@@ -157,7 +157,7 @@ struct output_t
 		bDirty(false)
 	{
 	}
-	void fire(SXbaseEntity *pInflictor, SXbaseEntity *pActivator);
+	void fire(CBaseEntity *pInflictor, CBaseEntity *pActivator);
 
 	bool bDirty;
 	int iOutCount;
@@ -181,17 +181,17 @@ prop_editor_t _GetEditorFilefield(int start, ...);
 
 #define DECLARE_PROPTABLE() \
 	\
-	friend class EntityFactoryMap; \
-	friend class EntityFactory<ThisClass>; \
+	friend class CEntityFactoryMap; \
+	friend class CEntityFactory<ThisClass>; \
 	static proptable_t m_pPropTable; \
 	\
 protected:\
 	static void InitPropData(); \
-	virtual proptable_t * GetPropTable(); \
+	virtual proptable_t * getPropTable(); \
 	static proptable_t * SGetPropTable(); \
 	static void ReleasePropData();\
 public:\
-	virtual propdata_t * GetField(const char * name);\
+	virtual propdata_t * getField(const char * name);\
 private:
 
 #define _BEGIN_PROPTABLE(cls, bclpt) \
@@ -210,15 +210,15 @@ proptable_t * cls::SGetPropTable()\
 	return(&m_pPropTable);\
 }\
 \
-proptable_t * cls::GetPropTable()\
+proptable_t * cls::getPropTable()\
 {\
 	if(!m_pPropTable.numFields)\
 		InitPropData(); \
 	return(&m_pPropTable); \
 }\
-propdata_t * cls::GetField(const char * name)\
+propdata_t * cls::getField(const char * name)\
 {\
-	proptable_t * pt = GetPropTable();\
+	proptable_t * pt = getPropTable();\
 	while(pt)\
 	{\
 		for(int i = 0; i < pt->numFields; ++i)\
@@ -258,8 +258,8 @@ void cls::InitPropData() \
 	} \
 } 
 
-#define DECLARE_TRIVIAL_CONSTRUCTOR() ThisClass(EntityManager * pMgr):BaseClass(pMgr){}
-#define DECLARE_CONSTRUCTOR() ThisClass(EntityManager * pMgr);
+#define DECLARE_TRIVIAL_CONSTRUCTOR() ThisClass(CEntityManager * pMgr):BaseClass(pMgr){}
+#define DECLARE_CONSTRUCTOR() ThisClass(CEntityManager * pMgr);
 
 const char * GetEmptyString();
 
diff --git a/source/game/sxgame.h b/source/game/sxgame.h
index bda10081e47b16a5a79a416ad307a045efdc404e..78270cb209934150e09abb1c0794863cce571e83 100644
--- a/source/game/sxgame.h
+++ b/source/game/sxgame.h
@@ -167,7 +167,7 @@ See the license in LICENSE
 #define SX_LIB_API extern "C" __declspec (dllexport)
 #endif
 
-#include "SXbaseEntity.h"
+#include "BaseEntity.h"
 
 
 /*! Инициализирует библиотеку
@@ -228,11 +228,11 @@ SX_LIB_API void SXGame_EntGetClassList(const char ** pszClassList, int count);
 
 /*! Создает entity заданного класса
 */
-SX_LIB_API SXbaseEntity * SXGame_CreateEntity(const char * classname);
+SX_LIB_API CBaseEntity * SXGame_CreateEntity(const char * classname);
 
 /*! Уничтожает entity
 */
-SX_LIB_API void SXGame_RemoveEntity(SXbaseEntity * pEnt);
+SX_LIB_API void SXGame_RemoveEntity(CBaseEntity * pEnt);
 
 /*! Получает таблицу свойств для заданного класса
 */
@@ -248,9 +248,9 @@ SX_LIB_API int SXGame_EntGetCount();
 
 /*! Возвращает entity по его id
 */
-SX_LIB_API SXbaseEntity *SXGame_EntGet(ID id);
+SX_LIB_API CBaseEntity *SXGame_EntGet(ID id);
 
-SX_LIB_API SXbaseEntity *SXGame_EntGetByName(const char *szName, ID idStart = 0);
+SX_LIB_API CBaseEntity *SXGame_EntGetByName(const char *szName, ID idStart = 0);
 
 
 
diff --git a/source/game/sxgame_dll.cpp b/source/game/sxgame_dll.cpp
index 882aa4c1b4eff8ceb8bc230fc320cabf495602da..e71fa4d6ba93c10f5e4779e81b48d8c3e8d4795e 100644
--- a/source/game/sxgame_dll.cpp
+++ b/source/game/sxgame_dll.cpp
@@ -75,15 +75,15 @@ void ccmd_cam_pt()
 	static int count = 0;
 	char buf[64];
 	sprintf(buf, "cam_pt_%d", count);
-	PathCorner * pc = (PathCorner*)CREATE_ENTITY("path_corner", GameData::m_pMgr);
-	pc->SetKV("name", buf);
-	pc->SetPos(GameData::m_pActiveCamera->GetPos());
-	pc->SetOrient(GameData::m_pActiveCamera->GetOrient());
+	CPathCorner * pc = (CPathCorner*)CREATE_ENTITY("path_corner", GameData::m_pMgr);
+	pc->setKV("name", buf);
+	pc->setPos(GameData::m_pActiveCamera->getPos());
+	pc->setOrient(GameData::m_pActiveCamera->getOrient());
 
 	sprintf(buf, "cam_pt_%d", count - 1);
-	pc = (PathCorner*)GameData::m_pMgr->FindEntityByName(buf);
+	pc = (CPathCorner*)GameData::m_pMgr->findEntityByName(buf);
 	sprintf(buf, "cam_pt_%d", count);
-	pc->SetKV("next", buf);
+	pc->setKV("next", buf);
 	
 	++count;
 }
@@ -92,14 +92,14 @@ void ccmd_save_as(int argc, const char ** argv)
 {
 	if(argc > 1)
 	{
-		GameData::m_pMgr->Export(argv[1]);
+		GameData::m_pMgr->exportList(argv[1]);
 	}
 }
 
 SX_LIB_API ISXCamera * SXGame_GetActiveCamera()
 {
 	SG_PRECOND(NULL);
-	return(GameData::m_pActiveCamera->GetCamera());
+	return(GameData::m_pActiveCamera->getCamera());
 }
 
 SX_LIB_API void SXGame_0Create()
@@ -113,7 +113,7 @@ SX_LIB_API void SXGame_0Create()
 
 	g_pGameData = new GameData();
 
-	//g_pPlayer->Spawn();
+	//g_pPlayer->spawn();
 	D3DXCreateBox(SGCore_GetDXDevice(), 1, 1, 1, &g_pFigureBox, 0);
 
 	Core_0RegisterConcmd("add_corner", ccmd_cam_pt);
@@ -129,32 +129,32 @@ SX_LIB_API void SXGame_AKill()
 SX_LIB_API void SXGame_Update(int thread)
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pMgr->Update(thread);
-	g_pGameData->Update();
+	GameData::m_pMgr->update(thread);
+	g_pGameData->update();
 }
 SX_LIB_API void SXGame_UpdateSetThreadNum(int num)
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pMgr->SetThreadNum(num);
+	GameData::m_pMgr->setThreadNum(num);
 }
 SX_LIB_API void SXGame_Sync()
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pMgr->Sync();
-	g_pGameData->Sync();
+	GameData::m_pMgr->sync();
+	g_pGameData->sync();
 }
 
 SX_LIB_API void SXGame_Render()
 {
 	SG_PRECOND(_VOID);
-	//GameData::m_pMgr->Render();
-	g_pGameData->Render();
+	//GameData::m_pMgr->render();
+	g_pGameData->render();
 }
 
 SX_LIB_API void SXGame_RenderHUD()
 {
 	SG_PRECOND(_VOID);
-	g_pGameData->RenderHUD();
+	g_pGameData->renderHUD();
 }
 
 
@@ -166,7 +166,7 @@ SX_LIB_API void SXGame_Dbg_Set(report_func rf)
 SX_LIB_API void SXGame_LoadEnts(const char * file)
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pMgr->Import(file);
+	GameData::m_pMgr->import(file);
 }
 
 SX_LIB_API void SXGame_UnloadObjLevel()
@@ -178,20 +178,20 @@ SX_LIB_API void SXGame_UnloadObjLevel()
 SX_LIB_API void SXGame_SaveEnts(const char * file)
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pMgr->Export(file);
+	GameData::m_pMgr->exportList(file);
 }
 
 SX_LIB_API void SXGame_PlayerSpawn()
 {
 	SG_PRECOND(_VOID);
-	GameData::m_pPlayer->Spawn();
+	GameData::m_pPlayer->spawn();
 }
 
 SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 {
 	SG_PRECOND(_VOID);
 
-	SXbaseEntity* bEnt = SXGame_EntGet(id);
+	CBaseEntity* bEnt = SXGame_EntGet(id);
 	if (!bEnt)
 		return;
 
@@ -202,26 +202,26 @@ SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 	SGCore_GetDXDevice()->SetTransform(D3DTS_VIEW, (D3DMATRIX*)&mView);
 	SGCore_GetDXDevice()->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)&mProj);
 
-	if (strcmp(bEnt->GetClassName(), "path_corner") == 0)
+	if (strcmp(bEnt->getClassName(), "path_corner") == 0)
 	{
-		PathCorner * pStartPoint = (PathCorner*)bEnt;
+		CPathCorner * pStartPoint = (CPathCorner*)bEnt;
 		if (!pStartPoint)
 			return;
 
-		/*FuncTrain * pTrain = (FuncTrain*)(GameData::m_pMgr->FindEntityByClass("func_train"));
+		/*CFuncTrain * pTrain = (CFuncTrain*)(GameData::m_pMgr->findEntityByClass("func_train"));
 		if (pTrain)
 		{
-			pTrain->Start();
+			pTrain->start();
 		}
 
-		SXpointCamera * cam = (SXpointCamera*)(GameData::m_pMgr->FindEntityByName("train_camera"));
+		CPointCamera * cam = (CPointCamera*)(GameData::m_pMgr->findEntityByName("train_camera"));
 		if (cam)
 		{
 			GameData::m_pActiveCamera = cam;
-			cam->SetParent();
+			cam->setParent();
 		}*/
 
-		PathCorner * pCur = pStartPoint;
+		CPathCorner * pCur = pStartPoint;
 		while ((pCur = pCur->GetPrev()))
 		{
 			pStartPoint = pCur;
@@ -234,9 +234,9 @@ SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 		{
 			len += pCur->GetLength();
 			++count;
-			SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&SMMatrixTranslation(pCur->GetPos()));
+			SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&SMMatrixTranslation(pCur->getPos()));
 
-			if (id == pCur->GetId())
+			if (id == pCur->getId())
 				SGCore_GetDXDevice()->SetTexture(0, SGCore_LoadTexGetTex(id_sel_tex));
 			else
 				SGCore_GetDXDevice()->SetTexture(0, 0);
@@ -256,16 +256,16 @@ SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 		
 		for (int i = 0; i < npoints; ++i)
 		{
-			pts[i * 2] = pStartPoint->GetPoint((float)i * (len / (float)npoints));
+			pts[i * 2] = pStartPoint->getPoint((float)i * (len / (float)npoints));
 		}
 		for (int i = 0; i < npoints - 1; ++i)
 		{
 			pts[i * 2 + 1] = pts[(i + 1) * 2];
 		}
-		pts[npoints * 2 - 1] = pStartPoint->GetPoint(len);
+		pts[npoints * 2 - 1] = pStartPoint->getPoint(len);
 
-		//pts[npoints * 2] = pTrain->GetPos();
-		//pts[npoints * 2 + 1] = (float3)(pTrain->GetPos() + (pTrain->GetOrient() * float3(0.0f, 1.0f, 0.0f)));
+		//pts[npoints * 2] = pTrain->getPos();
+		//pts[npoints * 2 + 1] = (float3)(pTrain->getPos() + (pTrain->getOrient() * float3(0.0f, 1.0f, 0.0f)));
 
 		SGCore_ShaderUnBind();
 
@@ -278,7 +278,7 @@ SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 	else
 	{
 		float3 min, max;
-		bEnt->GetMinMax(&min, &max);
+		bEnt->getMinMax(&min, &max);
 
 		if (min.x == 0.0f && min.y == 0.0f && min.z == 0.0f && max.x == 0.0f && max.y == 0.0f && max.z == 0.0f)
 			max.x = max.y = max.z = 0.5f;
@@ -288,8 +288,8 @@ SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex)
 
 		SGCore_GetDXDevice()->SetTransform(D3DTS_VIEW, (D3DMATRIX*)&mView);
 		SGCore_GetDXDevice()->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)&mProj);
-		SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&(SMMatrixScaling((max.x - min.x), (max.y - min.y), (max.z - min.z)) * SMMatrixTranslation(bEnt->GetPos())));
-		//SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&bEnt->GetWorldTM());
+		SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&(SMMatrixScaling((max.x - min.x), (max.y - min.y), (max.z - min.z)) * SMMatrixTranslation(bEnt->getPos())));
+		//SGCore_GetDXDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&bEnt->getWorldTM());
 
 		SGCore_GetDXDevice()->SetTexture(0, SGCore_LoadTexGetTex(id_sel_tex));
 		g_pFigureBox->DrawSubset(0);
@@ -300,24 +300,24 @@ SX_LIB_API int SXGame_EntGetClassListCount()
 {
 	SG_PRECOND(-1);
 
-	return(EntityFactoryMap::GetInstance()->GetListCount());
+	return(CEntityFactoryMap::GetInstance()->getListCount());
 }
 
 SX_LIB_API void SXGame_EntGetClassList(const char ** pszClassList, int count)
 {
 	SG_PRECOND(_VOID);
 
-	EntityFactoryMap::GetInstance()->GetListing(pszClassList, count);
+	CEntityFactoryMap::GetInstance()->getListing(pszClassList, count);
 }
 
-SX_LIB_API SXbaseEntity * SXGame_CreateEntity(const char * classname)
+SX_LIB_API CBaseEntity * SXGame_CreateEntity(const char * classname)
 {
 	SG_PRECOND(NULL);
 
 	return(CREATE_ENTITY(classname, GameData::m_pMgr));
 }
 
-SX_LIB_API void SXGame_RemoveEntity(SXbaseEntity * pEnt)
+SX_LIB_API void SXGame_RemoveEntity(CBaseEntity * pEnt)
 {
 	SG_PRECOND(_VOID);
 
@@ -328,14 +328,14 @@ SX_LIB_API proptable_t * SXGame_EntGetProptable(const char * classname)
 {
 	SG_PRECOND(NULL);
 
-	return(EntityFactoryMap::GetInstance()->GetPropTable(classname));
+	return(CEntityFactoryMap::GetInstance()->getPropTable(classname));
 }
 
 SX_LIB_API const char * SXGame_EntGetDefault(const char * classname, const char * key)
 {
 	SG_PRECOND(NULL);
 
-	EntDefaultsMap * pMap = EntityFactoryMap::GetInstance()->GetDefaults(classname);
+	EntDefaultsMap * pMap = CEntityFactoryMap::GetInstance()->getDefaults(classname);
 	if(!pMap)
 	{
 		return(NULL);
@@ -352,25 +352,25 @@ SX_LIB_API const char * SXGame_EntGetDefault(const char * classname, const char
 SX_LIB_API int SXGame_EntGetCount()
 {
 	SG_PRECOND(0);
-	return(GameData::m_pMgr->GetCount());
+	return(GameData::m_pMgr->getCount());
 }
 
-SX_LIB_API SXbaseEntity *SXGame_EntGet(ID id)
+SX_LIB_API CBaseEntity *SXGame_EntGet(ID id)
 {
 	SG_PRECOND(NULL);
-	return(GameData::m_pMgr->GetById(id));
+	return(GameData::m_pMgr->getById(id));
 }
 
-SX_LIB_API SXbaseEntity *SXGame_EntGetByName(const char *szName, ID idStart)
+SX_LIB_API CBaseEntity *SXGame_EntGetByName(const char *szName, ID idStart)
 {
 	SG_PRECOND(NULL);
 
-	SXbaseEntity *pEnt = 0;
+	CBaseEntity *pEnt = 0;
 
 	for (int i = 0, il = SXGame_EntGetCount(); i < il; ++i)
 	{
 		pEnt = SXGame_EntGet(i);
-		if (pEnt && strcmp(szName, pEnt->GetName()) == 0)
+		if (pEnt && strcmp(szName, pEnt->getName()) == 0)
 		{
 			return pEnt;
 		}
diff --git a/source/gcore/LoaderTextures.cpp b/source/gcore/LoaderTextures.cpp
index b0672b5824e7a96647889f7c92b3bff65afb6a76..e725a720a754c64322466bc68996d37681c6a79c 100644
--- a/source/gcore/LoaderTextures.cpp
+++ b/source/gcore/LoaderTextures.cpp
@@ -282,16 +282,16 @@ ID LoaderTextures::Update(const char* name, LoadTexType type)
 	IDirect3DTexture9* tex=0;
 		if(FAILED(D3DXCreateTextureFromFileEx(
 			g_pDXDevice,
-			tmpPath,
-			D3DX_DEFAULT,
-			D3DX_DEFAULT,
-			SXGC_LOADTEX_COUNT_MIPMAP,
-			0,
-			SXGC_LOADTEX_FORMAT_TEX,
-			D3DPOOL_MANAGED, 
-			D3DX_FILTER_BOX, 
-			D3DX_FILTER_BOX,  0, 0, 0, &tex
-			)
+											tmpPath,
+											D3DX_DEFAULT,
+											D3DX_DEFAULT,
+											SXGC_LOADTEX_COUNT_MIPMAP,
+											0,
+											SXGC_LOADTEX_FORMAT_TEX,
+											D3DPOOL_MANAGED, 
+											D3DX_FILTER_BOX, 
+											D3DX_FILTER_BOX,  0, 0, 0, &tex
+											)
 			)
 		)
 		{
@@ -310,10 +310,11 @@ void LoaderTextures::LoadTextures()
 {
 	if (ArrIDsLoad.size() <= 0)
 		return;
-	//g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: load textures ...\n", SX_LIB_NAME);
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: load textures ...\n", SX_LIB_NAME);
 
 	char tmpPath[SXGC_LOADTEX_MAX_SIZE_FULLPATH];
 	ID tmpiddir;
+	int iCountLoaded = 0;
 	for (int i = 0; i<ArrIDsLoad.size(); i++)
 	{
 		tmpiddir = ArrTextures[ArrIDsLoad[i]]->IDDir;
@@ -335,12 +336,13 @@ void LoaderTextures::LoadTextures()
 			)))
 		{
 			ArrTextures[ArrIDsLoad[i]]->tex = 0;
-			g_fnReportf(REPORT_MSG_LEVEL_WARNING, "%s: - not found texture [%s]\n", SX_LIB_NAME, ArrTextures[ArrIDsLoad[i]]->name.c_str());
+			g_fnReportf(REPORT_MSG_LEVEL_WARNING, "%s: - not found [%s]\n", SX_LIB_NAME, ArrTextures[ArrIDsLoad[i]]->name.c_str());
 		}
 		else
 		{
 			ArrTextures[ArrIDsLoad[i]]->tex = tex;
-			//g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  texture loaded [%s], id = %d\n", ArrTextures[ArrIDsLoad[i]]->name.c_str(), ArrIDsLoad[i]);
+			g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  texture id [%d], [%s]\n", ArrIDsLoad[i], ArrTextures[ArrIDsLoad[i]]->name.c_str());
+			++iCountLoaded;
 		}
 	}
 
diff --git a/source/gcore/shader.cpp b/source/gcore/shader.cpp
index 851f1efd29d6a0bbf0aebde2c7a8c41b7bc1e81b..945f0c85a14e48d88c4acf5b388af643645de7c2 100644
--- a/source/gcore/shader.cpp
+++ b/source/gcore/shader.cpp
@@ -219,7 +219,7 @@ void LoadVertexShader(const char *szPath, CShaderVS *pShader, D3DXMACRO *aMacro)
 			);
 		if (FAILED(hr))
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating vertex shader [%s]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating vertex shader [%s]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
 			return;
 		}
 
@@ -255,7 +255,7 @@ void LoadVertexShader(const char *szPath, CShaderVS *pShader, D3DXMACRO *aMacro)
 		//!!!����������������
 		if (FAILED(hr))
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - download function vertex shader fails, path [%s]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - download function vertex shader fails, path [%s]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
 			return;
 		}
 
@@ -266,7 +266,7 @@ void LoadVertexShader(const char *szPath, CShaderVS *pShader, D3DXMACRO *aMacro)
 
 		if (FAILED(hr))
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating vertex shader [%s]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating vertex shader [%s]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
 			return;
 		}
 
@@ -275,7 +275,7 @@ void LoadVertexShader(const char *szPath, CShaderVS *pShader, D3DXMACRO *aMacro)
 
 		if (desc.Constants > SXGC_SHADER_VAR_MAX_COUNT)
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count variable in vertex shader [%s] more standart [%d]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_VAR_MAX_COUNT);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count variable in vertex shader [%s] more standart [%d]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_VAR_MAX_COUNT);
 			return;
 		}
 
@@ -290,47 +290,12 @@ void LoadVertexShader(const char *szPath, CShaderVS *pShader, D3DXMACRO *aMacro)
 
 		pShader->m_pCode = pBufShader;
 		pShader->m_iCountVar = desc.Constants;
-		//pShader->m_pConstTable = tmpConstTable;
 		pShader->m_pVertexShader = pVertexShader;
 
-		if (aMacro)
-		{
-			int tmpCountArrM = 0;
-
-			for (int i = 0; i < SXGC_SHADER_COUNT_MACRO; i++)
-			{
-				if (i >= SXGC_SHADER_COUNT_MACRO)
-				{
-					g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count macro in vertex shader [%s] more standart [%d]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_COUNT_MACRO);
-					return;
-				}
-
-				if (aMacro[i].Name == 0)
-				{
-					tmpCountArrM = i;
-					break;
-				}
-			}
-
-			for (int i = 0; i < tmpCountArrM; i++)
-			{
-				pShader->m_aMacros[i] = aMacro[i];
-			}
-
-			pShader->m_aMacros[tmpCountArrM].Name = 0;
-			pShader->m_aMacros[tmpCountArrM].Definition = 0;
-		}
-		else
-		{
-			pShader->m_aMacros[0].Name = 0;
-			pShader->m_aMacros[0].Definition = 0;
-		}
-
+#ifndef _DEBUG
 		CShaderFileCache *pSFC = CreateShaderFileCacheFormShader(pShader);
 		SaveShaderFileCache(pSFC);
 		mem_delete(pSFC);
-
-#ifndef _DEBUG
 	}
 #endif
 }
@@ -407,7 +372,7 @@ void LoadPixelShader(const char *szPath, CShaderPS *pShader,D3DXMACRO *aMacro)
 		//!!!����������������
 		if (FAILED(hr))
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - download function pixel shader fails, path [%s]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - download function pixel shader fails, path [%s]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
 			return;
 		}
 
@@ -418,7 +383,7 @@ void LoadPixelShader(const char *szPath, CShaderPS *pShader,D3DXMACRO *aMacro)
 
 		if (FAILED(hr))
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating pixel shader [%s]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error creating pixel shader [%s]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath);
 			return;
 		}
 
@@ -427,7 +392,7 @@ void LoadPixelShader(const char *szPath, CShaderPS *pShader,D3DXMACRO *aMacro)
 
 		if (desc.Constants > SXGC_SHADER_VAR_MAX_COUNT)
 		{
-			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count variable in pixel shader [%s] more standart [%d]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_VAR_MAX_COUNT);
+			g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count variable in pixel shader [%s] more standart [%d]\n", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_VAR_MAX_COUNT);
 			return;
 		}
 
@@ -442,47 +407,12 @@ void LoadPixelShader(const char *szPath, CShaderPS *pShader,D3DXMACRO *aMacro)
 
 		pShader->m_pCode = pBufShader;
 		pShader->m_iCountVar = desc.Constants;
-		//pShader->m_pConstTable = tmpConstTable;
 		pShader->m_pPixelShader = pPixelShader;
 
-		if (aMacro)
-		{
-			int tmpCountArrM = 0;
-
-			for (int i = 0; i < SXGC_SHADER_COUNT_MACRO; i++)
-			{
-				if (i >= SXGC_SHADER_COUNT_MACRO)
-				{
-					g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - error, count macro in pixel shader [%s] more standart [%d]", SX_LIB_NAME, GEN_MSG_LOCATION, szPath, SXGC_SHADER_COUNT_MACRO);
-					return;
-				}
-
-				if (aMacro[i].Name == 0)
-				{
-					tmpCountArrM = i;
-					break;
-				}
-			}
-
-			for (int i = 0; i < tmpCountArrM; i++)
-			{
-				pShader->m_aMacros[i] = aMacro[i];
-			}
-
-			pShader->m_aMacros[tmpCountArrM].Name = 0;
-			pShader->m_aMacros[tmpCountArrM].Definition = 0;
-		}
-		else
-		{
-			pShader->m_aMacros[0].Name = 0;
-			pShader->m_aMacros[0].Definition = 0;
-		}
-
+#ifndef _DEBUG
 		CShaderFileCache *pSFC = CreateShaderFileCacheFormShader(pShader);
 		SaveShaderFileCache(pSFC);
 		mem_delete(pSFC);
-
-#ifndef _DEBUG
 	}
 #endif
 }
@@ -491,7 +421,8 @@ void LoadPixelShader(const char *szPath, CShaderPS *pShader,D3DXMACRO *aMacro)
 
 CShaderManager::CShaderManager()
 {
-	
+	m_iLastAllLoadVS = 0;
+	m_iLastAllLoadPS = 0;
 }
 
 CShaderManager::~CShaderManager()
@@ -513,31 +444,25 @@ CShaderManager::~CShaderManager()
 
 void CShaderManager::reloadAll()
 {
-	Array<CShaderVS*> aVS;
-	Array<CShaderPS*> aPS;
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: reload shaders ...\n", SX_LIB_NAME);
 
-	for (int i = 0; i < m_aVS.size(); i++)
+	for (int i = 0; i<m_aVS.size(); i++)
 	{
-		aVS.push_back(m_aVS[i]);
+		CShaderVS *pShader = m_aVS[i];
+		LoadVertexShader(pShader->m_szPath, pShader, pShader->m_aMacros);
+		g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  VS id [%d], file [%s], name [%s], \n", i, pShader->m_szPath, pShader->m_szName);
 	}
 
-	for (int i = 0; i<m_aPS.size(); i++)
-	{
-		aPS.push_back(m_aPS[i]);
-	}
-
-	m_aVS.clear();
-	m_aPS.clear();
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  -------\n");
 
-	for (int i = 0; i<aVS.size(); i++)
+	for (int i = 0; i<m_aPS.size(); i++)
 	{
-		load(SHADER_TYPE_VERTEX, aVS[i]->m_szPath, aVS[i]->m_szName, SHADER_CHECKDOUBLE_NONE, aVS[i]->m_aMacros);
+		CShaderPS *pShader = m_aPS[i];
+		LoadPixelShader(m_aPS[i]->m_szPath, m_aPS[i], m_aPS[i]->m_aMacros);
+		g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  PS id [%d], file[%s], name[%s], \n", i, pShader->m_szPath, pShader->m_szName);
 	}
 
-	for (int i = 0; i<aPS.size(); i++)
-	{
-		load(SHADER_TYPE_PIXEL, aPS[i]->m_szPath, aPS[i]->m_szName, SHADER_CHECKDOUBLE_NONE, aPS[i]->m_aMacros);
-	}
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: all reloaded shaders\n", SX_LIB_NAME);
 }
 
 ID CShaderManager::existsPath(SHADER_TYPE type, const char *szPath)
@@ -613,68 +538,103 @@ bool CShaderManager::existsFile(const char *szPath)
 	return Core_0FileExists(tmppath);
 }
 
-ID CShaderManager::load(SHADER_TYPE type_shader, const char *szPath, const char *szName, SHADER_CHECKDOUBLE check_double, D3DXMACRO *aMacro)
+ID CShaderManager::preLoad(SHADER_TYPE type, const char *szPath, const char *szName, SHADER_CHECKDOUBLE check_double, D3DXMACRO *aMacros)
 {
-	if (!isValidateTypeName(type_shader, szName))
+	if (!isValidateTypeName(type, szName))
 	{
 		g_fnReportf(REPORT_MSG_LEVEL_ERROR, "%s: %s - name of shader [%s] is invalid", SX_LIB_NAME, GEN_MSG_LOCATION, szName);
 		return -1;
 	}
 
-	if (type_shader == SHADER_TYPE_VERTEX)
-	{
-		ID id = -1;
+	ID id = -1;
 
-		if (check_double == SHADER_CHECKDOUBLE_PATH)
-			id = existsPath(type_shader, szPath);
-		else if (check_double == SHADER_CHECKDOUBLE_NAME)
-			id = existsName(type_shader, szName);
+	if (check_double == SHADER_CHECKDOUBLE_PATH)
+		id = existsPath(type, szPath);
+	else if (check_double == SHADER_CHECKDOUBLE_NAME)
+		id = existsName(type, szName);
 
+	CShader *pShader = 0;
+
+	if (type == SHADER_TYPE_VERTEX)
+	{
 		if (id == -1)
 		{
-			CShaderVS *pShader = new CShaderVS();
-			sprintf(pShader->m_szName, "%s", szName);
-			sprintf(pShader->m_szPath, "%s", szPath);
-			LoadVertexShader(szPath, pShader, aMacro);
-			
-			m_aVS.push_back(pShader);
-			id = m_aVS.size() - 1;
-			//g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: shader [%s] is loaded, name[%s], id = [%d]\n", SX_LIB_NAME, path, m_aVS[id]->m_szName, id);
-			return id;
-		}
-		else
-		{
-			//g_fnReportf(REPORT_MSG_LEVEL_WARNING, "%s: shader [%s] is detected, name[%s], id = [%d]\n", SX_LIB_NAME, path, m_aVS[id]->m_szName, id);
-			return id;
+			CShaderVS *pVS = new CShaderVS();
+			sprintf(pVS->m_szName, "%s", szName);
+			sprintf(pVS->m_szPath, "%s", szPath);
+			//sprintf(pVS->m_szFrom, "%s", szFrom);
+			m_aVS.push_back(pVS);
+			id = m_aVS.size() -1;
+			pShader = pVS;
 		}
 	}
-	else if (type_shader == SHADER_TYPE_PIXEL)
+	else if (type == SHADER_TYPE_PIXEL)
 	{
-		ID id = -1;
-		if (check_double == SHADER_CHECKDOUBLE_PATH)
-			id = existsPath(type_shader, szPath);
-		else if (check_double == SHADER_CHECKDOUBLE_NAME)
-			id = existsName(type_shader, szName);
-
 		if (id == -1)
 		{
-			CShaderPS *pShader = new CShaderPS();
-			sprintf(pShader->m_szName, "%s", szName);
-			sprintf(pShader->m_szPath, "%s", szPath);
-			LoadPixelShader(szPath, pShader, aMacro);
-			
-			m_aPS.push_back(pShader);
+			CShaderPS *pPS = new CShaderPS();
+			sprintf(pPS->m_szName, "%s", szName);
+			sprintf(pPS->m_szPath, "%s", szPath);
+			//sprintf(pPS->m_szFrom, "%s", szFrom);
+			m_aPS.push_back(pPS);
 			id = m_aPS.size() - 1;
-			//g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: shader [%s] is loaded, name[%s], id [%d]\n", SX_LIB_NAME, path, m_aPS[id]->m_szName, id);
-			return id;
+			pShader = pPS;
 		}
-		else
+	}
+
+	if (aMacros)
+	{
+		int iCountMacros = 0;
+		for (int i = 0; i < SXGC_SHADER_COUNT_MACRO; i++)
+		{
+			if (aMacros[i].Name == 0)
+			{
+				iCountMacros = i;
+				break;
+			}
+		}
+
+		for (int i = 0; i < iCountMacros; i++)
 		{
-			//g_fnReportf(REPORT_MSG_LEVEL_WARNING, "%s: shader [%s] is detected, name[%s], id [%d]\n", SX_LIB_NAME, path, m_aPS[id]->m_szName, id);
-			return id;
+			pShader->m_aMacros[i] = aMacros[i];
 		}
+
+		pShader->m_aMacros[iCountMacros].Name = 0;
+		pShader->m_aMacros[iCountMacros].Definition = 0;
 	}
-	return -1;
+
+	return id;
+}
+
+void CShaderManager::allLoad()
+{
+	if (m_aVS.size() == m_iLastAllLoadVS || m_aPS.size() == m_iLastAllLoadPS)
+		return;
+
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: load shaders ...\n", SX_LIB_NAME);
+	
+	for (int i = 0, il = m_aVS.size(); i < il; ++i)
+	{
+		CShaderVS *pShader = m_aVS[i];
+		LoadVertexShader(pShader->m_szPath, pShader, pShader->m_aMacros);
+
+		g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  VS id [%d], file [%s], name [%s], \n", i, pShader->m_szPath, pShader->m_szName);
+	}
+
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  -------\n");
+
+	for (int i = 0, il = m_aPS.size(); i < il; ++i)
+	{
+		CShaderPS *pShader = m_aPS[i];
+		LoadPixelShader(pShader->m_szPath, pShader, pShader->m_aMacros);
+
+		g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "  PS id [%d], file[%s], name[%s], \n", i, pShader->m_szPath, pShader->m_szName);
+	}
+
+	m_iLastAllLoadVS = m_aVS.size();
+	m_iLastAllLoadPS = m_aPS.size();
+
+	g_fnReportf(REPORT_MSG_LEVEL_NOTICE, "%s: all loaded shaders\n", SX_LIB_NAME);
 }
 
 void CShaderManager::update(SHADER_TYPE type_shader, const char *szName)
@@ -692,14 +652,9 @@ void CShaderManager::update(SHADER_TYPE type_shader, const char *szName)
 		{
 			if (strcmp(m_aVS[i]->m_szName, szName) == 0)
 			{
-				CShaderVS *pShader = new CShaderVS();
-				LoadVertexShader(m_aVS[i]->m_szPath, pShader, m_aVS[i]->m_aMacros);
-
+				CShaderVS *pShader = m_aVS[i];
 				mem_release(m_aVS[i]->m_pVertexShader);
-				//mem_release(m_aVS[i]->m_pConstTable);
-
-				mem_delete(m_aVS[i]);
-				m_aVS[i] = pShader;
+				LoadVertexShader(m_aVS[i]->m_szPath, pShader, m_aVS[i]->m_aMacros);
 				isUpdate = true;
 			}
 		}
@@ -710,14 +665,9 @@ void CShaderManager::update(SHADER_TYPE type_shader, const char *szName)
 		{
 			if (strcmp(m_aPS[i]->m_szName, szName) == 0)
 			{
-				CShaderPS *pShader = new CShaderPS();
-				LoadPixelShader(m_aPS[i]->m_szPath, pShader, m_aPS[i]->m_aMacros);
-
+				CShaderPS *pShader = m_aPS[i];
 				mem_release(m_aPS[i]->m_pPixelShader);
-				//mem_release(m_aPS[i]->m_pConstTable);
-
-				mem_delete(m_aPS[i]);
-				m_aPS[i] = pShader;
+				LoadPixelShader(m_aPS[i]->m_szPath, pShader, m_aPS[i]->m_aMacros);
 				isUpdate = true;
 			}
 		}
@@ -736,36 +686,19 @@ void CShaderManager::update(SHADER_TYPE type_shader, ID id)
 	{
 		if (m_aVS.size() > id && m_aVS[id])
 		{
-			CShaderVS *pShader = new CShaderVS();
-			
+			CShaderVS *pShader = m_aVS[id];
+			mem_release(m_aVS[id]->m_pVertexShader);
 			LoadVertexShader(m_aVS[id]->m_szPath, pShader, pShader->m_aMacros);
-			sprintf(pShader->m_szName, "%s", m_aVS[id]->m_szName);
-			sprintf(pShader->m_szPath, "%s", m_aVS[id]->m_szPath);
-
-			//mem_release(m_aVS[id]->m_pVertexShader);
-			//mem_release(m_aVS[id]->m_pConstTable);
-
-			mem_delete(m_aVS[id]);
-			m_aVS[id] = pShader;
 			isUpdate = true;
 		}
 	}
 	else if (type_shader == SHADER_TYPE_PIXEL)
 	{
-		if (m_aPS.size() > id  && m_aVS[id])
+		if (m_aPS.size() > id  && m_aPS[id])
 		{
-			CShaderPS *pShader = new CShaderPS();
-
+			CShaderPS *pShader = m_aPS[id];
+			mem_release(m_aPS[id]->m_pPixelShader);
 			LoadPixelShader(m_aPS[id]->m_szPath, pShader, m_aPS[id]->m_aMacros);
-
-			sprintf(pShader->m_szName, "%s", m_aPS[id]->m_szName);
-			sprintf(pShader->m_szPath, "%s", m_aPS[id]->m_szPath);
-
-			//mem_release(m_aPS[id]->m_pPixelShader);
-			//mem_release(m_aPS[id]->m_pConstTable);
-
-			mem_delete(m_aPS[id]);
-			m_aPS[id] = pShader;
 			isUpdate = true;
 		}
 	}
diff --git a/source/gcore/shader.h b/source/gcore/shader.h
index b0e2971d9bb2fe5cff2cbb1ad059ccf5a3a23d40..bcc5c739065f1623f548a28e19ffb2a1183be433 100644
--- a/source/gcore/shader.h
+++ b/source/gcore/shader.h
@@ -41,6 +41,9 @@ struct CShader
 	//! ��� ����� �������
 	char m_szPath[SXGC_SHADER_MAX_SIZE_DIR];
 
+	//! ��� ��� �������� ���� ������ (�������)
+	//char m_szFrom[SXGC_SHADER_MAX_SIZE_FULLPATH];
+
 	//! ���������� ����������
 	int m_iCountVar;
 
@@ -138,8 +141,11 @@ public:
 	//! ���������� �� ���� name � ����� � ���������
 	bool existsFile(const char *szPath);
 
-	//! �������� �������
-	ID load(SHADER_TYPE type, const char *szPath, const char *szName, SHADER_CHECKDOUBLE check_double, D3DXMACRO *aMacros = 0);
+	//! ���������� ������� � �������
+	ID preLoad(SHADER_TYPE type, const char *szPath, const char *szName, SHADER_CHECKDOUBLE check_double, D3DXMACRO *aMacros = 0);
+
+	//! �������� ���� ��������
+	void allLoad();
 
 	//! ���������� ������� �� �����
 	void update(SHADER_TYPE type, const char *szName);
@@ -191,6 +197,7 @@ public:
 	//! �������� �� ������ � ������ id
 	bool isValidated(SHADER_TYPE type, ID id);
 
+	//! �������� �� ��� � ������� (���������� ������ ��������� � �����)
 	bool isValidateTypeName(SHADER_TYPE type, const char *szName);
 
 
@@ -203,6 +210,9 @@ public:
 protected:
 	Array<CShaderVS*> m_aVS;
 	Array<CShaderPS*> m_aPS;
+
+	int m_iLastAllLoadVS;
+	int m_iLastAllLoadPS;
 };
 
 #endif
\ No newline at end of file
diff --git a/source/gcore/sxgcore.cpp b/source/gcore/sxgcore.cpp
index 2020c7fc82f05e8361b36dd8466c4aa71fbdaa80..6a7b66c7d8dd7bbb8e27dc10c0e3c91a3ce648b9 100644
--- a/source/gcore/sxgcore.cpp
+++ b/source/gcore/sxgcore.cpp
@@ -442,7 +442,14 @@ SX_LIB_API ID SGCore_ShaderLoad(SHADER_TYPE type_shader, const char* path, const
 {
 	SG_PRECOND(-1);
 
-	return g_pManagerShaders->load(type_shader, path, name, is_check_double, macro);
+	return g_pManagerShaders->preLoad(type_shader, path, name, is_check_double, macro);
+}
+
+SX_LIB_API void SGCore_ShaderAllLoad()
+{
+	SG_PRECOND();
+
+	return g_pManagerShaders->allLoad();
 }
 
 SX_LIB_API void SGCore_ShaderUpdateN(SHADER_TYPE type_shader, const char* name)
@@ -638,7 +645,7 @@ SX_LIB_API IDirect3DTexture9* SGCore_LoadTexGetTex(ID id)
 	return g_pManagerTextures->GetTexture(id);
 }
 
-SX_LIB_API void SGCore_LoadTexLoadTextures()
+SX_LIB_API void SGCore_LoadTexAllLoad()
 {
 	SG_PRECOND(_VOID);
 
diff --git a/source/gcore/sxgcore.h b/source/gcore/sxgcore.h
index 1f4a94d429d5a308a2a204e90803522515260e00..bc8a394710fae4b1e3becb5f8b1716876978f30f 100644
--- a/source/gcore/sxgcore.h
+++ b/source/gcore/sxgcore.h
@@ -307,7 +307,10 @@ enum SHADER_CHECKDOUBLE
 
 //**************************************************************************
 
-//! загрузка шейдера
+//! загрузить все шейдеры поставленные в очередь
+SX_LIB_API void SGCore_ShaderAllLoad();
+
+//! поставить шейдер в очередь загрузки
 SX_LIB_API ID SGCore_ShaderLoad(
 	SHADER_TYPE type_shader,	//!< тип шейдера
 	const char* path,			//!< имя файла шейдера с расширением
@@ -506,7 +509,7 @@ SX_LIB_API void SGCore_LoadTexUpdate(ID id);
 SX_LIB_API IDirect3DTexture9* SGCore_LoadTexGetTex(ID id);	
 
 //! загрузка всех текстур поставленных в очередь, если есть очередь
-SX_LIB_API void SGCore_LoadTexLoadTextures();	
+SX_LIB_API void SGCore_LoadTexAllLoad();	
 
 //!@} sxgcore_loadtex
 
diff --git a/source/geom/green.cpp b/source/geom/green.cpp
index 6d6779cdd706a71c8daa8e446205c28be86e3780..b8f1a3b7359d7b9959dd39b3f9c4b6a09da1e43e 100644
--- a/source/geom/green.cpp
+++ b/source/geom/green.cpp
@@ -445,7 +445,7 @@ void Green::CPUFillingArrIndeces(ISXFrustum* frustum, float3* viewpos, ID id_arr
 		tmpcountcom = &(ArrComFor[id_arr]->arr[i]->CountCom);
 		tmpsegments = ArrComFor[id_arr]->arr[i]->Arr;
 		
-		ArrComFor[id_arr]->queue.clear();
+		ArrComFor[id_arr]->queue.clearFast();
 		//long tmpcount = 0;
 		ArrComFor[id_arr]->queue.push_back(ArrModels[i]->SplitsTree);
 
@@ -855,7 +855,7 @@ ID Green::Init(StaticGeom* geom, const char* name,
 		if (def_str_validate(path_mask))
 		{
 			ID IDTexMask = SGCore_LoadTexAddName(path_mask, LoadTexType::ltt_load);
-			SGCore_LoadTexLoadTextures();
+			SGCore_LoadTexAllLoad();
 
 			GenByTex(geom, tmpnewmpdel, IDTexMask, &mmin, &mmax, count_max);
 		}
diff --git a/source/level/weather.cpp b/source/level/weather.cpp
index 450a259f0eb0ad56a30198de0fbb604629d3159a..79a888466b140742cfd8a126fc1137b2cf3000ac 100644
--- a/source/level/weather.cpp
+++ b/source/level/weather.cpp
@@ -41,7 +41,7 @@ void CWeatherRndSnd::resetOld()
 		if (m_aCurrSndIDs[i] >= 0)
 			SSCore_SndStop(m_aCurrSndIDs[i]);
 	}
-	m_aCurrSndIDs.clear();
+	m_aCurrSndIDs.clearFast();
 }
 
 void CWeatherRndSnd::setParamPlayVolume(int iBVol, int iEVol)
diff --git a/source/mtllight/material.cpp b/source/mtllight/material.cpp
index bd500b35229bdf63fe279bb3ecaff5e47c592429..b034400935d121dde89106fcde1afae9596632f1 100644
--- a/source/mtllight/material.cpp
+++ b/source/mtllight/material.cpp
@@ -164,6 +164,7 @@ void Materials::Material::Nulling()
 
 	Penetration = 0.f;
 	HitChance = 1.f;
+	Density = 1500;
 
 	VS = MaterialDataShader();
 	PS = MaterialDataShader();
@@ -699,6 +700,20 @@ float Materials::MtlGetHitChance(ID id)
 }
 
 
+void Materials::MtlSetDensity(ID id, float fDensity)
+{
+	MTL_PRE_COND_ID(id, _VOID);
+	ArrMaterials[id]->mtl->Density = fDensity;
+}
+
+float Materials::MtlGetDensity(ID id)
+{
+	MTL_PRE_COND_ID(id, -1);
+	return ArrMaterials[id]->mtl->Density;
+}
+
+
+
 void Materials::MtlSetTypeTransparency(ID id, MTLTYPE_TRANSPARENCY type)
 {
 	MTL_PRE_COND_ID(id);
@@ -1268,6 +1283,9 @@ bool Materials::LoadMtl(const char* name, Material** mtl)
 		if (config->keyExists(tmp_name, "hit_chance"))
 			tmpMtl->HitChance = String(config->getKey(tmp_name, "hit_chance")).ToDouble();
 
+		if (config->keyExists(tmp_name, "density"))
+			tmpMtl->Density = String(config->getKey(tmp_name, "density")).ToDouble();
+
 		tmpMtl->LightParam.ParamTexHand = CreateTexParamLighting(tmpMtl->LightParam.RoughnessValue, tmpMtl->LightParam.F0Value, tmpMtl->LightParam.ThicknessValue);
 
 		//говорим что не установлено использовать ли текстуру или нет
@@ -1707,6 +1725,7 @@ void Materials::MtlSave(ID id)
 	fprintf(file, "thickness = %f\n", mtrl->LightParam.ThicknessValue);
 	fprintf(file, "penetration = %f\n", mtrl->Penetration);
 	fprintf(file, "hit_chance = %f\n", mtrl->HitChance);
+	fprintf(file, "density = %f\n", mtrl->Density);
 
 	fprintf(file, "refraction = %d\n", mtrl->LightParam.TypeRefraction);
 
diff --git a/source/mtllight/material.h b/source/mtllight/material.h
index b8d080070d1b46edc34405c1b68a3f9e5df0814c..fc7181cb1ed8b3e16aea31fc10efa35cc27b796b 100644
--- a/source/mtllight/material.h
+++ b/source/mtllight/material.h
@@ -126,6 +126,9 @@ public:
 	void MtlSetHitChance(ID id, float fHitChance);
 	float MtlGetHitChance(ID id);
 
+	void MtlSetDensity(ID id, float fDensity);
+	float MtlGetDensity(ID id);
+
 	void MtlSetTypeTransparency(ID id, MTLTYPE_TRANSPARENCY type);
 	MTLTYPE_TRANSPARENCY MtlGetTypeTransparency(ID id);
 
@@ -252,6 +255,7 @@ public:
 
 		float Penetration;
 		float HitChance;
+		float Density;
 
 		MTLTYPE_MODEL Type;
 	};
diff --git a/source/mtllight/sxmtllight.cpp b/source/mtllight/sxmtllight.cpp
index 031fc631a39fbc121964649ecbb4c2ea6c98be90..817681b77a0c0ce96c7c9fa053e4edc0a60673e1 100644
--- a/source/mtllight/sxmtllight.cpp
+++ b/source/mtllight/sxmtllight.cpp
@@ -967,6 +967,18 @@ SX_LIB_API void SML_MtlSetHitChance(ID id, float fHitChance)
 	ArrMaterials->MtlSetHitChance(id, fHitChance);
 }
 
+SX_LIB_API float SML_MtlGetDensity(ID id)
+{
+	ML_PRECOND(-1);
+	return ArrMaterials->MtlGetDensity(id);
+}
+
+SX_LIB_API void SML_MtlSetDensity(ID id, float fDensity)
+{
+	ML_PRECOND(_VOID);
+	ArrMaterials->MtlSetDensity(id, fDensity);
+}
+
 //##########################################################################
 
 SX_LIB_API void SML_MtlSetLighting(ID id, bool is_lighting)
diff --git a/source/mtllight/sxmtllight.h b/source/mtllight/sxmtllight.h
index 0ad852fda4459b3079dbc815b0ee531f2aaba9c5..1f475ca2c9c71c3f6e7846850d4708ace428805d 100644
--- a/source/mtllight/sxmtllight.h
+++ b/source/mtllight/sxmtllight.h
@@ -907,6 +907,9 @@ SX_LIB_API void SML_MtlSetPenetration(ID id, float fPenetration);
 SX_LIB_API float SML_MtlGetHitChance(ID id);
 SX_LIB_API void SML_MtlSetHitChance(ID id, float fHitChance);
 
+SX_LIB_API float SML_MtlGetDensity(ID id);
+SX_LIB_API void SML_MtlSetDensity(ID id, float fDensity);
+
 //использование альфа теста для материала
 SX_LIB_API bool SML_MtlGetUsingAlphaTest(ID id);				//!< используется ли альфа тест для материала
 SX_LIB_API void SML_MtlSetUsingAlphaTest(ID id, bool isUsing);	//!< установка использования альфа теста
diff --git a/source/physics/PhyWorld.cpp b/source/physics/PhyWorld.cpp
index 19b342a7366ab3b62e3175200190255214891f35..b0a1966881f2a738e29a7f08ce19fd2dd0cecd51 100644
--- a/source/physics/PhyWorld.cpp
+++ b/source/physics/PhyWorld.cpp
@@ -53,19 +53,19 @@ PhyWorld::~PhyWorld()
 	mem_delete(m_pBroadphase);
 }
 
-void PhyWorld::Render()
+void PhyWorld::render()
 {
 	if(*m_bDebugDraw)
 	{
 		m_pDynamicsWorld->debugDrawWorld();
-		((DebugDrawer*)(m_pDynamicsWorld->getDebugDrawer()))->Render();
+		((DebugDrawer*)(m_pDynamicsWorld->getDebugDrawer()))->render();
 	}
 }
 
-void PhyWorld::SetThreadNum(int tnum)
+void PhyWorld::setThreadNum(int tnum)
 {
 }
-void PhyWorld::Update(int thread)
+void PhyWorld::update(int thread)
 {
 	static UINT time0 = GetTickCount();
 	UINT time1 = GetTickCount();
@@ -78,7 +78,7 @@ void PhyWorld::Update(int thread)
 
 	time0 = time1;
 }
-void PhyWorld::Sync()
+void PhyWorld::sync()
 {
 }
 
@@ -623,7 +623,7 @@ int PhyWorld::DebugDrawer::getDebugMode() const
 	return(m_iDebugMode);
 }
 
-void PhyWorld::DebugDrawer::Render()
+void PhyWorld::DebugDrawer::render()
 {
 	if(!m_vDrawData.size())
 	{
diff --git a/source/physics/PhyWorld.h b/source/physics/PhyWorld.h
index ac40fba3aadd5316678698c055cfddb9210df1c8..103a8637ccab0cb659ebd1c3fb8b4ed1c30a9397 100644
--- a/source/physics/PhyWorld.h
+++ b/source/physics/PhyWorld.h
@@ -38,9 +38,9 @@ public:
 	PhyWorld();
 	~PhyWorld();
 
-	void SetThreadNum(int tnum);
-	void Update(int thread = 0);
-	void Sync();
+	void setThreadNum(int tnum);
+	void update(int thread = 0);
+	void sync();
 
 	void AddShape(btRigidBody * pBody);
 	void RemoveShape(btRigidBody * pBody);
@@ -51,7 +51,7 @@ public:
 	bool ImportGeom(const char * file);
 	bool ExportGeom(const char * file);
 
-	void Render();
+	void render();
 
 	MTLTYPE_PHYSIC GetMtlType(const btCollisionObject *pBody, const btCollisionWorld::LocalShapeInfo *pShapeInfo);
 
@@ -82,7 +82,7 @@ public:
 
 		int getDebugMode() const;
 
-		void Render();
+		void render();
 	};
 
 protected:
diff --git a/source/physics/sxphysics_dll.cpp b/source/physics/sxphysics_dll.cpp
index 49840b3e2d58cb2cff775924d7da3ed52f10bc92..99a5920d4d6cf4ef14269edc537a55b346ec55a5 100644
--- a/source/physics/sxphysics_dll.cpp
+++ b/source/physics/sxphysics_dll.cpp
@@ -75,17 +75,17 @@ SX_LIB_API void SXPhysics_AKill()
 SX_LIB_API void SXPhysics_Update(int thread)
 {
 	SP_PRECOND(_VOID);
-	g_pWorld->Update(thread);
+	g_pWorld->update(thread);
 }
 SX_LIB_API void SXPhysics_UpdateSetThreadNum(int num)
 {
 	SP_PRECOND(_VOID);
-	g_pWorld->SetThreadNum(num);
+	g_pWorld->setThreadNum(num);
 }
 SX_LIB_API void SXPhysics_Sync()
 {
 	SP_PRECOND(_VOID);
-	g_pWorld->Sync();
+	g_pWorld->sync();
 }
 
 SX_LIB_API void SXPhysics_Dbg_Set(report_func rf)
@@ -108,7 +108,7 @@ SX_LIB_API void SXPhysics_UnloadGeom()
 SX_LIB_API void SXPhysics_DebugRender()
 {
 	SP_PRECOND(_VOID);
-	g_pWorld->Render();
+	g_pWorld->render();
 }
 
 SX_LIB_API void SXPhysics_AddShape(btRigidBody * pBody)
diff --git a/source/skyxengine.cpp b/source/skyxengine.cpp
index 20ab9ef96f5d6a2d5505c2ed66537a61470fa17f..97bf1bf4b201e91f4e40e12a127b3186431248e0 100644
--- a/source/skyxengine.cpp
+++ b/source/skyxengine.cpp
@@ -1009,6 +1009,8 @@ int SkyXEngine_CycleMain()
 		}
 		else
 		{
+			SGCore_LoadTexAllLoad();
+			SGCore_ShaderAllLoad();
 			Core_TimesUpdate();
 			Core_0ConsoleUpdate();
 			SSInput_Update();
@@ -1016,7 +1018,6 @@ int SkyXEngine_CycleMain()
 			Core_RFloat3Get(G_RI_FLOAT3_OBSERVER_POSITION, &vCamPos);
 			Core_RFloat3Get(G_RI_FLOAT3_OBSERVER_DIRECTION, &vCamDir);
 			SSCore_Update(&vCamPos, &vCamDir);
-			SGCore_LoadTexLoadTextures();
 
 			static DWORD lastTime = TimeGetMls(Core_RIntGet(G_RI_INT_TIMER_RENDER));
 			DWORD currTime = TimeGetMls(Core_RIntGet(G_RI_INT_TIMER_RENDER));
diff --git a/source/sxae/Camera.cpp b/source/sxae/Camera.cpp
index b10874e5d1081618925a0241814ff04f636982fa..ab62d2f12c75a7da07b5b23611bbfa50ce7951dd 100644
--- a/source/sxae/Camera.cpp
+++ b/source/sxae/Camera.cpp
@@ -85,12 +85,12 @@ void Camera::Strafe(float fDelta)
 	UpdateMatrix();
 }
 
-void Camera::Move(CAMERA_MOVE m, bool state)
+void Camera::move(CAMERA_MOVE m, bool state)
 {
 	bMove[m] = state;
 }
 
-void Camera::Advance()
+void Camera::advance()
 {
 	if(bMove[CAMERA_MOVE_FORWARD])
 	{
@@ -111,7 +111,7 @@ void Camera::Advance()
 	}
 }
 
-float3_t Camera::GetPos()
+float3_t Camera::getPos()
 {
 	return(m_vPosition);
 }
diff --git a/source/sxae/Camera.h b/source/sxae/Camera.h
index 55d89e37ed455dfdf1d8d5949dcf57ce8a45f2d1..197ea65dddef1403b8c3b984b1edd4120f646099 100644
--- a/source/sxae/Camera.h
+++ b/source/sxae/Camera.h
@@ -40,10 +40,10 @@ public:
 	void Forward(float fDelta);
 	void Strafe(float fDelta);
 
-	void Move(CAMERA_MOVE m, bool state);
-	void Advance();
+	void move(CAMERA_MOVE m, bool state);
+	void advance();
 
-	float3_t GetPos();
+	float3_t getPos();
 
 	float3_t GetViewDir();
 };
diff --git a/source/sxae/Editor.cpp b/source/sxae/Editor.cpp
index 962dbd89e0c7052b6e0983d62742a672af537b8b..02288683667b55d5a77322e0b6d25174ee365983 100644
--- a/source/sxae/Editor.cpp
+++ b/source/sxae/Editor.cpp
@@ -93,32 +93,32 @@ m_bDirty(false)
 
 	m_pAnimMgr = new AnimationManager(m_pd3dDevice);
 	m_pCurAnim = new Animation(m_pAnimMgr);
-	m_pCurAnim->SetCallback((AnimStateCB)AnimPlayCB);
-	m_pCurAnim->SetProgressCB((::AnimProgressCB)AnimProgressCB);
-	//m_pCurAnim->SetModel("C:/DSe/SX/project/gamesource/models/krovosos/krovososa.dse");
-	//m_pCurAnim->SetModel("C:/DSe/SX/project/gamesource/models/spas/spasa.dse");
-	//m_pCurAnim->SetModel("C:/DSe/SX/project/gamesource/models/pm/pma.dse");
-	//m_pCurAnim->SetModel("C:/DSe/SX/project/gamesource/models/ak74/ak74a.dse");
-	//m_pCurAnim->PlayAnimation("reload", 0);
-
-	//AddModel("C:/revo/build/gamesource/models/krovosos/krovososa.dse");//ak74_ref.dse
-	//AddModel("C:/revo/build/gamesource/models/ak74/ak74_ref.dse");
-	//AddModel("C:/revo/build/gamesource/models/ak74/hands.dse");
-	//AddModel("C:/revo/build/gamesource/models/ak74/reload.dse");
+	m_pCurAnim->setCallback((AnimStateCB)AnimPlayCB);
+	m_pCurAnim->setProgressCB((::AnimProgressCB)AnimProgressCB);
+	//m_pCurAnim->setModel("C:/DSe/SX/project/gamesource/models/krovosos/krovososa.dse");
+	//m_pCurAnim->setModel("C:/DSe/SX/project/gamesource/models/spas/spasa.dse");
+	//m_pCurAnim->setModel("C:/DSe/SX/project/gamesource/models/pm/pma.dse");
+	//m_pCurAnim->setModel("C:/DSe/SX/project/gamesource/models/ak74/ak74a.dse");
+	//m_pCurAnim->playAnimation("reload", 0);
+
+	//addModel("C:/revo/build/gamesource/models/krovosos/krovososa.dse");//ak74_ref.dse
+	//addModel("C:/revo/build/gamesource/models/ak74/ak74_ref.dse");
+	//addModel("C:/revo/build/gamesource/models/ak74/hands.dse");
+	//addModel("C:/revo/build/gamesource/models/ak74/reload.dse");
 
 	/*ModelPart mp;
 	mp.attachDesc.type = MA_BONE;
 	strcpy(mp.attachDesc.szBone, "bip01_r_hand");
 	mp.uImportFlags = MI_ALL;
-	mp.pMdl = m_pAnimMgr->LoadModel("C:/revo/build/gamesource/models/ak74/ak74.dse", true);
-	m_pCurAnim->AddModel(&mp);*/
+	mp.pMdl = m_pAnimMgr->loadModel("C:/revo/build/gamesource/models/ak74/ak74.dse", true);
+	m_pCurAnim->addModel(&mp);*/
 
 	//bip01_r_hand
-	//AddModel("F:/revo/build/gamesource/models/ak74/ak74.dse");
-	//AddModel("F:/revo/build/gamesource/models/ak74/idle.dse");
-	//AddModel("C:/revo/build/gamesource/models/ak74/reload.dse");
-	//AddModel("C:/revo/build/gamesource/models/ak74/shoot.dse");
-	//m_pCurAnim->Assembly();
+	//addModel("F:/revo/build/gamesource/models/ak74/ak74.dse");
+	//addModel("F:/revo/build/gamesource/models/ak74/idle.dse");
+	//addModel("C:/revo/build/gamesource/models/ak74/reload.dse");
+	//addModel("C:/revo/build/gamesource/models/ak74/shoot.dse");
+	//m_pCurAnim->assembly();
 	//if(m_pCurAnim->m_pMdl)
 	{
 		/*UINT c = m_pCurAnim->m_pMdl->GetSequenceCount();
@@ -225,11 +225,11 @@ LRESULT Editor::MenuCmd(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 			break;
 
 		case IDC_ANIM_PAUSE:
-			edt->m_pCurAnim->Stop();
+			edt->m_pCurAnim->stop();
 			break;
 
 		case IDC_ANIM_PLAY:
-			edt->m_pCurAnim->Resume();
+			edt->m_pCurAnim->resume();
 			break;
 
 		case IDC_ANIM_LOOPED:
@@ -343,14 +343,14 @@ LRESULT Editor::MenuCmd(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
 				if(Tools::DlgConfirm())
 				{
-					edt->DelModel(sel);
+					edt->delModel(sel);
 				}
 			}
 			break;
 
 		case IDC_PT_ADD:
 			{
-				m_pEditor->AddModel("");
+				m_pEditor->addModel("");
 				ISXGUIListBox * pList = ((TabAttachments*)edt->m_pTM->m_pTabAttachments)->AttachmentsList;
 				pList->SetSel(pList->GetCountItem() - 1);
 				m_pEditor->OnPartListSelChg();
@@ -368,7 +368,7 @@ LRESULT Editor::MenuCmd(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
 		case IDC_PT_CB_HIDDEN:
 			edt->SetPartFlag(MP_HIDDEN, (byte)SendMessage((HWND)lParam, BM_GETCHECK, 0, 0));
-			edt->m_pCurAnim->Assembly();
+			edt->m_pCurAnim->assembly();
 			break;
 
 		case IDC_PT_CB_COLLIDE:
@@ -409,14 +409,14 @@ LRESULT Editor::MenuCmd(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 			{
 				if(!m_pEditor->m_pHitboxesPart)
 				{
-					m_pEditor->m_pHitboxesPart = m_pEditor->AddModel("!hitboxes");
+					m_pEditor->m_pHitboxesPart = m_pEditor->addModel("!hitboxes");
 				}
 				ModelHitbox hb;
 				memset(&hb, 0, sizeof(hb));
 				strcpy(hb.name, "New hitbox");
 
 				m_pEditor->m_pHitboxesPart->AddHitbox(&hb);
-				m_pEditor->m_pCurAnim->Assembly();
+				m_pEditor->m_pCurAnim->assembly();
 				m_pEditor->UpdateHitboxList(m_pEditor->m_pHitboxesPart, false);
 
 				ISXGUIListBox * pList = ((TabHitboxes*)edt->m_pTM->m_pTabHitboxes)->HBList;
@@ -633,16 +633,16 @@ LRESULT Editor::CamInput(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 		switch(wParam)
 		{
 		case 'W':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_FORWARD, 1);
+			edt->m_cam.move(Camera::CAMERA_MOVE_FORWARD, 1);
 			break;
 		case 'S':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_BACKWARD, 1);
+			edt->m_cam.move(Camera::CAMERA_MOVE_BACKWARD, 1);
 			break;
 		case 'A':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_LEFT, 1);
+			edt->m_cam.move(Camera::CAMERA_MOVE_LEFT, 1);
 			break;
 		case 'D':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_RIGHT, 1);
+			edt->m_cam.move(Camera::CAMERA_MOVE_RIGHT, 1);
 			break;
 		}
 		break;
@@ -650,16 +650,16 @@ LRESULT Editor::CamInput(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 		switch(wParam)
 		{
 		case 'W':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_FORWARD, 0);
+			edt->m_cam.move(Camera::CAMERA_MOVE_FORWARD, 0);
 			break;
 		case 'S':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_BACKWARD, 0);
+			edt->m_cam.move(Camera::CAMERA_MOVE_BACKWARD, 0);
 			break;
 		case 'A':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_LEFT, 0);
+			edt->m_cam.move(Camera::CAMERA_MOVE_LEFT, 0);
 			break;
 		case 'D':
-			edt->m_cam.Move(Camera::CAMERA_MOVE_RIGHT, 0);
+			edt->m_cam.move(Camera::CAMERA_MOVE_RIGHT, 0);
 			break;
 		}
 		break;
@@ -694,7 +694,7 @@ LRESULT Editor::AnimListCB(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 		if(curSel != -1)
 		{
 			UINT seqi = (UINT)lb->GetItemData(curSel);
-			edt->m_pCurAnim->Play(edt->m_vAnims[seqi].seq->name, 100);
+			edt->m_pCurAnim->play(edt->m_vAnims[seqi].seq->name, 100);
 		}
 		break;
 	}
@@ -716,7 +716,7 @@ LRESULT Editor::AnimFilterCB(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
 void Editor::AnimPlayCB(int slot, ANIM_STATE state, Animation * pAnim)
 {
-	ModelSequence const * seq = m_pEditor->m_pCurAnim->GetCurAnim(slot);
+	ModelSequence const * seq = m_pEditor->m_pCurAnim->getCurAnim(slot);
 	TabAnimation * ta = (TabAnimation*)m_pEditor->m_pTM->m_pTabAnimation;
 	switch(state)
 	{
@@ -751,13 +751,13 @@ LRESULT Editor::AnimTBProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 	{
 	case WM_HSCROLL:
 		pos = ((TabAnimation*)m_pEditor->m_pTM->m_pTabAnimation)->AnimCtlProgressTrack->GetPos();
-		m_pEditor->m_pCurAnim->SetProgress(pos / 1000.0f);
+		m_pEditor->m_pCurAnim->setProgress(pos / 1000.0f);
 		break;
 	case WM_SETFOCUS:
-		m_pEditor->m_pCurAnim->SetAdvance(false);
+		m_pEditor->m_pCurAnim->setAdvance(false);
 		break;
 	case WM_KILLFOCUS:
-		m_pEditor->m_pCurAnim->SetAdvance(true);
+		m_pEditor->m_pCurAnim->setAdvance(true);
 		break;
 	}
 	return(0);
@@ -772,7 +772,7 @@ void Editor::MenuNew(HWND hwnd)
 
 	while(m_pEditor->m_vMdlParts.size())
 	{
-		m_pEditor->DelModel(0);
+		m_pEditor->delModel(0);
 	}
 	m_bDirty = false;
 }
@@ -812,10 +812,10 @@ void Editor::MenuBrowse(HWND hwnd)
 		//unload all parts
 		while(m_pEditor->m_vMdlParts.size())
 		{
-			m_pEditor->DelModel(0);
+			m_pEditor->delModel(0);
 		}
-		m_pEditor->AddModel(ofn.lpstrFile, MI_ALL, false, true);
-		m_pEditor->m_pCurAnim->Assembly();
+		m_pEditor->addModel(ofn.lpstrFile, MI_ALL, false, true);
+		m_pEditor->m_pCurAnim->assembly();
 		RenderBoneList();
 		m_bDirty = false;
 	}
@@ -848,8 +848,8 @@ void Editor::MenuBrowseImport(HWND hwnd, bool use)
 		UINT iflags = DialogBoxParam(NULL, MAKEINTRESOURCE(IDD_DIALOG_IMPORT), hwnd, DlgImportProc, (LPARAM)&ofn.lpstrFile);
 		if(use)
 		{
-			m_pEditor->AddModel(ofn.lpstrFile, iflags);
-			m_pEditor->m_pCurAnim->Assembly();
+			m_pEditor->addModel(ofn.lpstrFile, iflags);
+			m_pEditor->m_pCurAnim->assembly();
 			RenderBoneList();
 		}
 		else
@@ -1019,17 +1019,17 @@ bool Editor::SaveTo(char * to)
 	strcpy(mp.name, "!bones");
 	mp.pMdl = m_pCurAnim->m_pMdl;
 	mp.attachDesc.type = MA_SKIN;
-	pTmpAnim.AddModel(&mp);
+	pTmpAnim.addModel(&mp);
 	int c = 0;
 	for(int i = 0, l = m_vMdlParts.size(); i < l; ++i)
 	{
 		if(!(m_vMdlParts[i]->uFlags & MP_IMPORTED))
 		{
-			pTmpAnim.AddModel(m_vMdlParts[i]);
+			pTmpAnim.addModel(m_vMdlParts[i]);
 			++c;
 		}
 	}
-	pTmpAnim.Assembly();
+	pTmpAnim.assembly();
 
 	pTmpAnim.m_pMdl->m_hdr2.iActivitiesTableCount = m_pvActivities->size();
 	pTmpAnim.m_pMdl->pActivities = new ModelActivity[pTmpAnim.m_pMdl->m_hdr2.iActivitiesTableCount];
@@ -1272,7 +1272,7 @@ void Editor::Update()
 		{
 			CenterMouse();
 		}
-		m_cam.Advance();
+		m_cam.advance();
 	}
 	m_mViewMat = m_cam.GetMatrix();
 
@@ -1306,7 +1306,7 @@ void Editor::Update()
 		SGCore_ShaderBind(SHADER_TYPE_VERTEX, m_pVSH);
 		SGCore_ShaderBind(SHADER_TYPE_PIXEL, m_pPSH);
 	}
-	m_pAnimMgr->Render();
+	m_pAnimMgr->render();
 	SGCore_ShaderUnBind();
 
 	if(((TabHitboxes*)m_pTM->m_pTabHitboxes)->m_bShown)
@@ -1314,11 +1314,11 @@ void Editor::Update()
 		DrawHitboxes();
 		m_pd3dDevice->SetRenderState(D3DRS_ZENABLE, 0);
 		m_pd3dDevice->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&(SMMatrixIdentity()));
-		m_pCurAnim->RenderSkeleton(m_iActiveHitbox > 0 ? m_pCurAnim->GetBone(m_vHitboxes[m_iActiveHitbox].hb->bone) : -1);
+		m_pCurAnim->RenderSkeleton(m_iActiveHitbox > 0 ? m_pCurAnim->getBone(m_vHitboxes[m_iActiveHitbox].hb->bone) : -1);
 		if(m_vHitboxes.size() > m_iActiveHitbox)
 		{
 			HitboxItem * hbi = &m_vHitboxes[m_iActiveHitbox];
-			SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->GetBoneTransform(m_pCurAnim->GetBone(hbi->hb->bone)) : SMMatrixIdentity());
+			SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->getBoneTransform(m_pCurAnim->getBone(hbi->hb->bone)) : SMMatrixIdentity());
 
 			//m_pd3dDevice->SetRenderState(D3DRS_ZENABLE, 0);
 
@@ -1343,8 +1343,8 @@ void Editor::Update()
 	}
 	m_pd3dDevice->EndScene();
 
-	m_pAnimMgr->Update();
-	m_pAnimMgr->Sync();
+	m_pAnimMgr->update();
+	m_pAnimMgr->sync();
 
 	m_pSwapChain->Present(NULL, NULL, NULL, NULL, D3DSWAPEFFECT_DISCARD);
 }
@@ -1427,9 +1427,9 @@ void Editor::RenderBoneList()
 	cmb->Clear();
 	cmb_2->Clear();
 	cmb_2->AddItem("");
-	for(int i = 0, l = m_pCurAnim->GetBoneCount(); i < l; ++i)
+	for(int i = 0, l = m_pCurAnim->getBoneCount(); i < l; ++i)
 	{
-		m_pCurAnim->GetBoneName(i, tmp, sizeof(tmp));
+		m_pCurAnim->getBoneName(i, tmp, sizeof(tmp));
 		if(!strcmp(tmp, text))
 		{
 			sel = i;
@@ -1539,7 +1539,7 @@ void Editor::OnAnimListSelChg()
 		item = &m_vAnims[idx];
 		m_iCurIdx = idx;
 
-		m_pCurAnim->Play(item->seq->name, 100);
+		m_pCurAnim->play(item->seq->name, 100);
 
 		tab->AnimPropActCmb->SetSel(item->seq->activity);
 		tab->AnimPropActChance->SetText(String((DWORD)item->seq->act_chance).c_str());
@@ -1664,7 +1664,7 @@ void Editor::OnPartListSelChg()
 	}
 }
 
-ModelFile * Editor::AddModel(const char * mdl, UINT flags, bool forceImport, bool forceLocal)
+ModelFile * Editor::addModel(const char * mdl, UINT flags, bool forceImport, bool forceLocal)
 {
 	char * mdlFile = (char*)alloca(strlen(mdl) + 2) + 1;
 	strcpy(mdlFile, mdl);
@@ -1674,7 +1674,7 @@ ModelFile * Editor::AddModel(const char * mdl, UINT flags, bool forceImport, boo
 	{
 		*(char*)(--localPath) = '@';
 	}
-	ModelFile * pMdl = localPath[0] ? (ModelFile*)m_pAnimMgr->LoadModel(localPath, true) : NULL;
+	ModelFile * pMdl = localPath[0] ? (ModelFile*)m_pAnimMgr->loadModel(localPath, true) : NULL;
 
 	bool bIsImported = forceImport && !forceLocal;
 	if(pMdl)
@@ -1725,7 +1725,7 @@ ModelFile * Editor::AddModel(const char * mdl, UINT flags, bool forceImport, boo
 	}
 	//init all sections from mdl data
 
-	m_pCurAnim->AddModel(pMdl, flags);
+	m_pCurAnim->addModel(pMdl, flags);
 
 
 	m_vMdlParts.push_back(m_pCurAnim->GetPart(m_pCurAnim->GetPartCount() - 1));
@@ -1741,7 +1741,7 @@ ModelFile * Editor::AddModel(const char * mdl, UINT flags, bool forceImport, boo
 		for(uint32_t i = 0; i < pMdl->m_hdr2.iDepsCount; ++i)
 		{
 			ModelPart * mpSrc = &pMdl->m_pParts[i];
-			AddModel(mpSrc->file, mpSrc->uImportFlags, true);
+			addModel(mpSrc->file, mpSrc->uImportFlags, true);
 			ModelPart * mp = m_vMdlParts[m_vMdlParts.size() - 1];
 			mpSrc->pMdl = mp->pMdl;
 			*mp = *mpSrc;
@@ -1751,7 +1751,7 @@ ModelFile * Editor::AddModel(const char * mdl, UINT flags, bool forceImport, boo
 	return(pMdl);
 }
 
-void Editor::DelModel(UINT id)
+void Editor::delModel(UINT id)
 {
 	if(id >= m_vMdlParts.size())
 	{
@@ -1778,7 +1778,7 @@ void Editor::DelModel(UINT id)
 		OnAnimListSelChg();
 		if(hasAnims)
 		{
-			m_pCurAnim->StopAll();
+			m_pCurAnim->stopAll();
 		}
 
 		for(int i = 0, l = m_vHitboxes.size(); i < l; ++i)
@@ -1808,10 +1808,10 @@ void Editor::DelModel(UINT id)
 			m_pHitboxesPart = 0;
 		}
 	}
-	m_pCurAnim->DelModel(pt);
-	m_pCurAnim->Assembly();
+	m_pCurAnim->delModel(pt);
+	m_pCurAnim->assembly();
 
-	m_pAnimMgr->UnloadModel(mdl);
+	m_pAnimMgr->unloadModel(mdl);
 
 
 	RenderPartList();
@@ -1867,7 +1867,7 @@ void Editor::OnPartApply()
 			OnAnimListSelChg();
 			if(hasAnims)
 			{
-				m_pCurAnim->StopAll();
+				m_pCurAnim->stopAll();
 			}
 
 			for(int i = 0, l = m_vHitboxes.size(); i < l; ++i)
@@ -1893,14 +1893,14 @@ void Editor::OnPartApply()
 			((TabActivities*)m_pTM->m_pTabActivities)->RenderList();
 
 
-			m_pAnimMgr->UnloadModel(mdl);
+			m_pAnimMgr->unloadModel(mdl);
 			pt->pMdl = NULL;
 		}
 
 		//load new mdl
 		strcpy(pt->file, szFile);
 		UINT flags = tab->m_iflags;
-		ModelFile * pMdl = (ModelFile*)m_pAnimMgr->LoadModel(szFile, true);
+		ModelFile * pMdl = (ModelFile*)m_pAnimMgr->loadModel(szFile, true);
 		pt->pMdl = pMdl;
 		pt->uImportFlags = flags;
 		bool bIsImported = (pMdl->m_hdr.iFlags & MODEL_FLAG_COMPILED);
@@ -1949,7 +1949,7 @@ void Editor::OnPartApply()
 
 	}
 
-	m_pCurAnim->Assembly();
+	m_pCurAnim->assembly();
 	RenderBoneList();
 	//
 }
@@ -2080,11 +2080,11 @@ void Editor::UpdateHitboxList(ModelFile * pMdl, bool bIsImported)
 		}
 	}
 
-	uint32_t c = pMdl->GetHitboxCount();
+	uint32_t c = pMdl->getHitboxCount();
 	HitboxItem hbi;
 	for(uint32_t i = 0; i < c; ++i)
 	{
-		hbi.hb = (ModelHitbox*)pMdl->GetHitbox(i);
+		hbi.hb = (ModelHitbox*)pMdl->getHitbox(i);
 		hbi.mdl = pMdl;
 		hbi.isImported = bIsImported;
 		hbi.id = i;
@@ -2104,7 +2104,7 @@ void Editor::DelHitbox(UINT id)
 	HitboxItem * hbx = &m_vHitboxes[id];
 	
 	((ModelFile*)hbx->mdl)->DelHitbox(hbx->id);
-	m_pCurAnim->Assembly();
+	m_pCurAnim->assembly();
 	
 	UpdateHitboxList((ModelFile*)hbx->mdl, false);
 	OnHitboxListSelChg();
@@ -2122,7 +2122,7 @@ void Editor::DrawHitboxes()
 	for(int i = 0, l = m_vHitboxes.size(); i < l; ++i)
 	{
 		HitboxItem * hbi = &m_vHitboxes[i];
-		SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->GetBoneTransform(m_pCurAnim->GetBone(hbi->hb->bone)) : SMMatrixIdentity());
+		SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->getBoneTransform(m_pCurAnim->getBone(hbi->hb->bone)) : SMMatrixIdentity());
 		m_pd3dDevice->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&((m_iActiveHitbox == i && m_bIsDragging ? m_mHitboxMat :
 			SMMatrixRotationX(hbi->hb->rot.x)
 			* SMMatrixRotationY(hbi->hb->rot.y)
@@ -2836,7 +2836,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(0, 0, 0), float3(len * 0.5f, 0, 0), float3_t(len * 0.5f, len * 0.5f, 0), start, end, p)
 		|| line_intersect_triangle(float3(0, 0, 0), float3(len * 0.5f, len * 0.5f, 0), float3_t(0, len * 0.5f, 0), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -2847,7 +2847,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(0, 0, 0), float3(len * 0.5f, 0, 0), float3_t(len * 0.5f, 0, len * 0.5f), start, end, p)
 		|| line_intersect_triangle(float3(0, 0, 0), float3(len * 0.5f, 0, len * 0.5f), float3_t(0, 0, len * 0.5f), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -2858,7 +2858,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(0, 0, 0), float3(0, 0, len * 0.5f), float3_t(0, len * 0.5f, len * 0.5f), start, end, p)
 		|| line_intersect_triangle(float3(0, 0, 0), float3(0, len * 0.5f, len * 0.5f), float3_t(0, len * 0.5f, 0), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -2961,7 +2961,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asX[i], asX[i + 1], asX[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -2974,7 +2974,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asY[i], asY[i + 1], asY[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -2987,7 +2987,7 @@ void Editor::HandlerIntersectMove(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asZ[i], asZ[i + 1], asZ[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3044,7 +3044,7 @@ void Editor::HandlerIntersectRotate(const float3 & start, const float3 & dir)
 		if(line_intersect_triangle(p1, p2, p4, start, end, p)
 			|| line_intersect_triangle(p1, p4, p3, start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3069,7 +3069,7 @@ void Editor::HandlerIntersectRotate(const float3 & start, const float3 & dir)
 		if(line_intersect_triangle(p1, p2, p4, start, end, p)
 			|| line_intersect_triangle(p1, p4, p3, start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3094,7 +3094,7 @@ void Editor::HandlerIntersectRotate(const float3 & start, const float3 & dir)
 		if(line_intersect_triangle(p1, p2, p4, start, end, p)
 			|| line_intersect_triangle(p1, p4, p3, start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3128,7 +3128,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(len075, 0, 0), float3(0, len075, 0), float3_t(len05, 0, 0), start, end, p)
 		|| line_intersect_triangle(float3(len05, 0, 0), float3(0, len075, 0), float3_t(0, len05, 0), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -3139,7 +3139,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(len075, 0, 0), float3(0, 0, len075), float3_t(len05, 0, 0), start, end, p)
 		|| line_intersect_triangle(float3(len05, 0, 0), float3(0, 0, len075), float3_t(0, 0, len05), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -3150,7 +3150,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	if(line_intersect_triangle(float3(0, len075, 0), float3(0, 0, len075), float3_t(0, len05, 0), start, end, p)
 		|| line_intersect_triangle(float3(0, len05, 0), float3(0, 0, len075), float3_t(0, 0, len05), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -3160,7 +3160,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 
 	if(line_intersect_triangle(float3(0, len05, 0), float3(0, 0, len05), float3_t(len05, 0, 0), start, end, p))
 	{
-		float d = SMVector3Length(p - m_cam.GetPos());
+		float d = SMVector3Length(p - m_cam.getPos());
 		if(d < mind)
 		{
 			mind = d;
@@ -3263,7 +3263,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asX[i], asX[i + 1], asX[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3276,7 +3276,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asY[i], asY[i + 1], asY[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3289,7 +3289,7 @@ void Editor::HandlerIntersectScale(const float3 & start, const float3 & dir)
 	{
 		if(line_intersect_triangle(asZ[i], asZ[i + 1], asZ[i + 2], start, end, p))
 		{
-			float d = SMVector3Length(p - m_cam.GetPos());
+			float d = SMVector3Length(p - m_cam.getPos());
 			if(d < mind)
 			{
 				mind = d;
@@ -3306,7 +3306,7 @@ void Editor::OnMouseDown(int x, int y)
 	if(m_vHitboxes.size() > m_iActiveHitbox && ((TabHitboxes*)m_pTM->m_pTabHitboxes)->m_bShown)
 	{
 		HitboxItem * hbi = &m_vHitboxes[m_iActiveHitbox];
-		SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->GetBoneTransform(m_pCurAnim->GetBone(hbi->hb->bone)) : SMMatrixIdentity());
+		SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->getBoneTransform(m_pCurAnim->getBone(hbi->hb->bone)) : SMMatrixIdentity());
 
 		SMMATRIX revMat = SMMatrixInverse(&f, (m_bIsDragging && !m_bIsDraggingStart ? m_mOldDragMat : m_mHelperMat) * mBone * m_mViewMat * m_mProjMat);
 
@@ -3352,7 +3352,7 @@ void Editor::OnMouseDown(int x, int y)
 					* SMMatrixRotationY(hbi->hb->rot.y)
 					* SMMatrixRotationZ(hbi->hb->rot.z)
 					* SMMatrixTranslation(hbi->hb->pos)
-					//* (hbi->hb->bone[0] ? m_pCurAnim->GetBoneTransform(m_pCurAnim->GetBone(hbi->hb->bone)) : SMMatrixIdentity())
+					//* (hbi->hb->bone[0] ? m_pCurAnim->getBoneTransform(m_pCurAnim->getBone(hbi->hb->bone)) : SMMatrixIdentity())
 					;
 				m_fOldHitboxLWH = hbi->hb->lwh;
 			}
@@ -3360,7 +3360,7 @@ void Editor::OnMouseDown(int x, int y)
 
 		if(m_bIsDragging)
 		{
-			float3 dv = (pos - m_fStartDragPos) * (1000.0f + SMVector3Length(m_cam.GetPos() - float3(m_mHelperMat._41, m_mHelperMat._42, m_mHelperMat._43)) * 10.0f);
+			float3 dv = (pos - m_fStartDragPos) * (1000.0f + SMVector3Length(m_cam.getPos() - float3(m_mHelperMat._41, m_mHelperMat._42, m_mHelperMat._43)) * 10.0f);
 			SMMATRIX m_res;
 			TabHitboxes * tab = (TabHitboxes*)m_pEditor->m_pTM->m_pTabHitboxes;
 			char tmp[64];
@@ -3410,7 +3410,7 @@ void Editor::OnMouseDown(int x, int y)
 					m_res = m_res * m_mOldDragMat;
 					break;
 				}
-				SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->GetBoneTransform(m_pCurAnim->GetBone(hbi->hb->bone)) : SMMatrixIdentity());
+				SMMATRIX mBone = (hbi->hb->bone[0] ? m_pCurAnim->getBoneTransform(m_pCurAnim->getBone(hbi->hb->bone)) : SMMatrixIdentity());
 
 
 				m_mHelperMat = m_res;/* * SMMatrixTranslation(float3(mBone._41, mBone._42, mBone._43));
diff --git a/source/sxae/Editor.h b/source/sxae/Editor.h
index 9f6dda82e390e9f3ae90bc8b9e97c9c54d729f30..0d35632bab9d7ddcbd3568c30763e2ead11baa66 100644
--- a/source/sxae/Editor.h
+++ b/source/sxae/Editor.h
@@ -71,8 +71,8 @@ public:
 	
 	void Update();
 
-	ModelFile * AddModel(const char * mdl, UINT flags = MI_ALL, bool forceImport = false, bool forceLocal = false);
-	void DelModel(UINT id);
+	ModelFile * addModel(const char * mdl, UINT flags = MI_ALL, bool forceImport = false, bool forceLocal = false);
+	void delModel(UINT id);
 
 	void DelHitbox(UINT id);
 
diff --git a/source/sxleveleditor/common_callback.cpp b/source/sxleveleditor/common_callback.cpp
index 31aa78dcab0a4302d01002cf1c7cfa1e087137d9..74c518bc1fbdcc12c0801c6c05ae964ea8048cb3 100644
--- a/source/sxleveleditor/common_callback.cpp
+++ b/source/sxleveleditor/common_callback.cpp
@@ -301,7 +301,7 @@ LRESULT SXLevelEditor_RenderWindow_MouseMove(HWND hwnd, UINT msg, WPARAM wParam,
 		else if (SXLevelEditor::ObjAxesHelper->GetType() == AxesHelper::HT_SCALE)
 		{
 			float3* scale = SGeom_ModelsMGetScale(SXLevelEditor::ActiveElement);
-			float3 nscale = SXLevelEditor::ObjAxesHelper->GetScale() - float3(1,1,1);
+			float3 nscale = SXLevelEditor::ObjAxesHelper->getScale() - float3(1,1,1);
 			if ((*scale).x != nscale.x || (*scale).y != nscale.y || (*scale).z != nscale.z)
 			{
 				*scale += nscale;
@@ -324,14 +324,14 @@ LRESULT SXLevelEditor_RenderWindow_MouseMove(HWND hwnd, UINT msg, WPARAM wParam,
 	}
 	else if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GAME && SXLevelEditor::ActiveElement >= 0)
 	{
-		SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ActiveElement);
+		CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ActiveElement);
 		if (!bEnt)
 			return 0;
 
 		if (SXLevelEditor::ObjAxesHelper->GetType() == AxesHelper::HT_MOVE)
-			bEnt->SetPos(SXLevelEditor::ObjAxesHelper->GetPosition());
+			bEnt->setPos(SXLevelEditor::ObjAxesHelper->GetPosition());
 		else if (SXLevelEditor::ObjAxesHelper->GetType() == AxesHelper::HT_ROTATE)
-			bEnt->SetOrient(SXLevelEditor::ObjAxesHelper->GetRotationQ());
+			bEnt->setOrient(SXLevelEditor::ObjAxesHelper->GetRotationQ());
 
 		SXLevelEditor::GameUpdatePosRot();
 	}
@@ -710,10 +710,10 @@ LRESULT SXLevelEditor_ButtonGameObjectOpen_Click(HWND hwnd, UINT msg, WPARAM wPa
 	char tmpname[1024];
 	for (int i = 0; i < tmpcoungo; ++i)
 	{
-		SXbaseEntity* bEnt = SXGame_EntGet(i);
+		CBaseEntity* bEnt = SXGame_EntGet(i);
 		if (bEnt)
 		{
-			sprintf(tmpname, "%s / %s", bEnt->GetName(), bEnt->GetClassName());
+			sprintf(tmpname, "%s / %s", bEnt->getName(), bEnt->getClassName());
 			SXLevelEditor::ListBoxList->AddItem(tmpname);
 			SXLevelEditor::ListBoxList->SetItemData(SXLevelEditor::ListBoxList->GetCountItem() - 1, i);
 			++tmpcoungo2;
@@ -1085,7 +1085,7 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 		else
 		{
 			ID seldata = SXLevelEditor::ListBoxList->GetItemData(SXLevelEditor::ListBoxList->GetSel());
-			SXbaseEntity* bEnt = SXGame_EntGet(seldata);
+			CBaseEntity* bEnt = SXGame_EntGet(seldata);
 			int str = SXLevelEditor::ListViewGameClass->GetSelString();
 
 			if (seldata < 0 || str < 0)
@@ -1108,7 +1108,7 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 
 			sprintf(txtval, "%d", uiFlags);
 			SXLevelEditor::ListViewGameClass->SetTextItem(txtval, 1, str);
-			bEnt->SetKV("flags", txtval);
+			bEnt->setKV("flags", txtval);
 		}
 	}
 	else if (Notification == CBN_SELCHANGE)
@@ -1119,12 +1119,12 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 			char txt[256];
 			SXLevelEditor::ComboBoxGameValue->GetItemText(SXLevelEditor::ComboBoxGameValue->GetSel(), txt);
 			SXLevelEditor::ListViewGameClass->SetTextItem(txt, 1, SXLevelEditor::ListViewGameClass->GetSelString());
-			SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
+			CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
 			if (bEnt)
 			{
 				propdata_t* pd = (propdata_t*)SXLevelEditor::ListViewGameClass->GetDataItem(SXLevelEditor::ListViewGameClass->GetSelString());
 				SXLevelEditor::ComboBoxGameValue->GetItemData(SXLevelEditor::ComboBoxGameValue->GetSel());
-				bEnt->SetKV(pd->szKey, (const char*)SXLevelEditor::ComboBoxGameValue->GetItemData(SXLevelEditor::ComboBoxGameValue->GetSel()));
+				bEnt->setKV(pd->szKey, (const char*)SXLevelEditor::ComboBoxGameValue->GetItemData(SXLevelEditor::ComboBoxGameValue->GetSel()));
 			}
 		}
 		else if (SXLevelEditor::ComboBoxGameClass->GetHWND() == handle_elem)
@@ -1137,8 +1137,8 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 			if (sel < 0)
 				return 0;
 
-			SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
-			proptable_t* pt = SXGame_EntGetProptable(bEnt->GetClassName());
+			CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
+			proptable_t* pt = SXGame_EntGetProptable(bEnt->getClassName());
 
 			propdata_t* pd;
 			char txtkey[256];
@@ -1177,7 +1177,7 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 					if (pd->szKey && pd->szEdName && !(pd->flags & PDFF_NOEDIT) && pd->editor.type != PDE_NONE)
 					{
 						sprintf(txtkey, "%s", pd->szEdName);
-						bEnt->GetKV(pd->szKey, txtval, 256);
+						bEnt->getKV(pd->szKey, txtval, 256);
 						tmparrdata.push_back(KeyVal(pd->szKey, txtval));
 					}
 				}
@@ -1191,7 +1191,7 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 				if (pd->szKey && pd->szEdName && !(pd->flags & PDFF_NOEDIT) && pd->editor.type != PDE_NONE)
 				{
 					sprintf(txtkey, "%s", pd->szEdName);
-					bEnt->GetKV(pd->szKey, txtval, 256);
+					bEnt->getKV(pd->szKey, txtval, 256);
 					tmparrdata.push_back(KeyVal(pd->szKey, txtval));
 				}
 			}
@@ -1201,26 +1201,26 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 			SXGame_RemoveEntity(bEnt);
 
 			bEnt = SXGame_CreateEntity(txt);
-			bEnt->SetFlags(bEnt->GetFlags() | EF_EXPORT | EF_LEVEL);
+			bEnt->setFlags(bEnt->getFlags() | EF_EXPORT | EF_LEVEL);
 
 
-			for (int i = 0; i < tmparrdata.size(); ++i)
+			for(int i = 0; i < tmparrdata.size(); ++i)
 			{
-				bEnt->SetKV(tmparrdata[i].key.c_str(), tmparrdata[i].val.c_str());
+				bEnt->setKV(tmparrdata[i].key.c_str(), tmparrdata[i].val.c_str());
 			}
 
 			SXLevelEditor_ButtonGameObjectOpen_Click(hwnd, msg, wParam, lParam);
 			sel = -1;
-			for (int i = 0; i < SXLevelEditor::ListBoxList->GetCountItem(); ++i)
+			for(int i = 0; i < SXLevelEditor::ListBoxList->GetCountItem(); ++i)
 			{
-				if (SXLevelEditor::ListBoxList->GetItemData(i) == bEnt->GetId())
+				if(SXLevelEditor::ListBoxList->GetItemData(i) == bEnt->getId())
 				{
 					sel = i;
 					break;
 				}
 			}
 
-			if (sel < 0)
+			if(sel < 0)
 			{
 
 			}
@@ -1314,10 +1314,10 @@ LRESULT SXLevelEditor_GroupBox_CallWmCommand(HWND hwnd, UINT msg, WPARAM wParam,
 			char* found = 0;
 			for (int i = 0; i < tmpcoungo; ++i)
 			{
-				SXbaseEntity* bEnt = SXGame_EntGet(i);
+				CBaseEntity* bEnt = SXGame_EntGet(i);
 				if (bEnt)
 				{
-					strcpy(tmpname, bEnt->GetName());
+					strcpy(tmpname, bEnt->getName());
 					if (tmpname[0] == 0)
 						continue;
 					lower_name = CharLower(tmpname);
diff --git a/source/sxleveleditor/game_callback.cpp b/source/sxleveleditor/game_callback.cpp
index 1e4bbdafe0b09bb1c0ec03fac36ef5aa4934b73e..f953157b4e8b8f0753078096ad4a84ee7b288eca 100644
--- a/source/sxleveleditor/game_callback.cpp
+++ b/source/sxleveleditor/game_callback.cpp
@@ -48,11 +48,11 @@ void SXLevelEditor::GameSel(int sel)
 	ID seldata = SXLevelEditor::ListBoxList->GetItemData(sel);
 	SXLevelEditor::ActiveElement = seldata;
 	SXLevelEditor::ActiveGroupType = EDITORS_LEVEL_GROUPTYPE_GAME;
-	SXbaseEntity* bEnt = SXGame_EntGet(seldata);
-	proptable_t* pt = SXGame_EntGetProptable(bEnt->GetClassName());
+	CBaseEntity* bEnt = SXGame_EntGet(seldata);
+	proptable_t* pt = SXGame_EntGetProptable(bEnt->getClassName());
 
 	char txtclasscb[256];
-	const char* txtclassent = bEnt->GetClassName();
+	const char* txtclassent = bEnt->getClassName();
 	for (int i = 0; i < SXLevelEditor::ComboBoxGameClass->GetCount(); ++i)
 	{
 		SXLevelEditor::ComboBoxGameClass->GetItemText(i, txtclasscb);
@@ -85,7 +85,7 @@ void SXLevelEditor::GameSel(int sel)
 			if (pd->szKey && pd->szEdName && !(pd->flags & PDFF_NOEDIT) && pd->editor.type != PDE_NONE)
 			{
 				sprintf(txtkey, "%s", pd->szEdName);
-				bEnt->GetKV(pd->szKey, txtval, 256);
+				bEnt->getKV(pd->szKey, txtval, 256);
 				int str = SXLevelEditor::ListViewGameClass->AddString((long)pd);
 				SXLevelEditor::ListViewGameClass->SetTextItem(txtkey, 0, str);
 				//propdata_t* pd2 = (propdata_t*)SXLevelEditor::ListViewGameClass->GetDataItem(str);
@@ -108,7 +108,7 @@ void SXLevelEditor::GameSel(int sel)
 		if (pd->szKey && pd->szEdName && !(pd->flags & PDFF_NOEDIT) && pd->editor.type != PDE_NONE)
 		{
 			sprintf(txtkey, "%s", pd->szEdName);
-			bEnt->GetKV(pd->szKey, txtval, 256);
+			bEnt->getKV(pd->szKey, txtval, 256);
 			int str = SXLevelEditor::ListViewGameClass->AddString((long)pd);
 			SXLevelEditor::ListViewGameClass->SetTextItem(txtkey, 0, str);
 			//propdata_t* pd2 = (propdata_t*)SXLevelEditor::ListViewGameClass->GetDataItem(str);
@@ -122,7 +122,7 @@ void SXLevelEditor::GameSel(int sel)
 		}
 	}
 
-	//���������� ������� � ComboBoxGameConnectionsEvent
+	//заполнение таблицы и ComboBoxGameConnectionsEvent
 	SXLevelEditor::ComboBoxGameConnectionsEvent->Clear();
 	SXLevelEditor::ComboBoxGameConnectionsAction->Clear();
 	SXLevelEditor::ListViewGameConnections->ClearStrings();
@@ -132,18 +132,18 @@ void SXLevelEditor::GameSel(int sel)
 
 	char szBuffer4096[4096];
 
-	//���������� �� ���� ������� ������� ������ �������
+	//проходимся по всей таблице свойств класса объекта
 	for (int i = 0; i < pt->numFields; ++i)
 	{
 		pd = &pt->pData[i];
 		
-		//���� ���� ������ �� ��� ��� ����
+		//если поле класса то что нам надо
 		if (pd->flags & PDFF_OUTPUT)
 		{
-			//�������� ������ � ������������� �������
-			bEnt->GetKV(pd->szKey, szBuffer4096, 4096);
+			//получаем строку с запакованными данными
+			bEnt->getKV(pd->szKey, szBuffer4096, 4096);
 
-			//������ ������
+			//парсим строку
 			int iConns = parse_str(szBuffer4096, NULL, 0, ',');
 			char ** parts = (char**)alloca(sizeof(char*)*iConns);
 			iConns = parse_str(szBuffer4096, parts, iConns, ',');
@@ -163,10 +163,10 @@ void SXLevelEditor::GameSel(int sel)
 					for (int j = 0; j < iConns2; ++j)
 						SXLevelEditor::ListViewGameConnections->SetTextItem(parts2[j], j + 1, iNumStr);
 
-					SXbaseEntity *pEnt2 = SXGame_EntGetByName(parts2[0], 0);
+					CBaseEntity *pEnt2 = SXGame_EntGetByName(parts2[0], 0);
 					if (pEnt2)
 					{
-						proptable_t *pPropTable2 = SXGame_EntGetProptable(pEnt2->GetClassName());
+						proptable_t *pPropTable2 = SXGame_EntGetProptable(pEnt2->getClassName());
 						propdata_t *pPropData2 = 0;
 						for (int j = 0; j < pPropTable2->numFields; ++j)
 						{
@@ -187,8 +187,8 @@ void SXLevelEditor::GameSel(int sel)
 	}
 	//-------
 	
-	SXLevelEditor::ObjAxesHelper->SetPosition(bEnt->GetPos());
-	SXLevelEditor::ObjAxesHelper->SetRotation(bEnt->GetOrient());
+	SXLevelEditor::ObjAxesHelper->SetPosition(bEnt->getPos());
+	SXLevelEditor::ObjAxesHelper->SetRotation(bEnt->getOrient());
 	SXLevelEditor::ObjAxesHelper->SetScale(float3(1, 1, 1));
 }
 
@@ -197,7 +197,7 @@ void SXLevelEditor::GameUpdatePosRot()
 	if (SXLevelEditor::ActiveGroupType != EDITORS_LEVEL_GROUPTYPE_GAME || SXLevelEditor::ActiveElement < 0)
 		return;
 
-	SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ActiveElement);
+	CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ActiveElement);
 	propdata_t* pd = 0;
 	char txtval[256];
 
@@ -209,7 +209,7 @@ void SXLevelEditor::GameUpdatePosRot()
 		{
 			if (stricmp(pd->szKey, "origin") == 0 || stricmp(pd->szKey, "rotation") == 0)
 			{
-				bEnt->GetKV(pd->szKey, txtval, 256);
+				bEnt->getKV(pd->szKey, txtval, 256);
 				SXLevelEditor::ListViewGameClass->SetTextItem(txtval, 1, i);
 			}
 		}
@@ -288,10 +288,10 @@ LRESULT SXLevelEditor_ListViewGameClass_Click()
 		char tval3[256];
 		bool isfound = false;
 
-		//��������� � ����� ����� ������ �� ���������� �������
+		//проверяем в цикле какая строка из комбобокса выбрана
 		for (int i = 0; i < SXLevelEditor::ComboBoxGameValue->GetCount(); ++i)
 		{
-			//������� ��������� �� �������� (��� �������� ��������)
+			//сначала проверяем по юзердате (там записано значение)
 			tval2 = (const char*)SXLevelEditor::ComboBoxGameValue->GetItemData(i);
 
 			if (strcmp(tval, tval2) == 0)
@@ -301,7 +301,7 @@ LRESULT SXLevelEditor_ListViewGameClass_Click()
 				break;
 			}
 
-			//����� �������� �� ����� ������
+			//затем проверям по имени строки
 			SXLevelEditor::ComboBoxGameValue->GetItemText(i, tval3);
 			
 			if (strcmp(tval, tval3) == 0)
@@ -312,7 +312,7 @@ LRESULT SXLevelEditor_ListViewGameClass_Click()
 			}
 		}
 
-		//���� �� ������� �������� ������ ���� ��� ��������
+		//если не найдено значение значит надо его добавить
 		if (!isfound)
 		{
 			MessageBox(0,"SXLevelEditor_ListViewGameClass_Click data not found",0,0);
@@ -360,17 +360,17 @@ LRESULT SXLevelEditor_EditGameValue_Enter(HWND hwnd, UINT msg, WPARAM wParam, LP
 	char txt[256];
 	SXLevelEditor::EditGameValue->GetText(txt, 256);
 	SXLevelEditor::ListViewGameClass->SetTextItem(txt, 1, str);
-	SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
+	CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
 	if (bEnt)
 	{
 		propdata_t* pd = (propdata_t*)SXLevelEditor::ListViewGameClass->GetDataItem(str);
-		bool bf = bEnt->SetKV(pd->szKey, txt);
+		bool bf = bEnt->setKV(pd->szKey, txt);
 		int qwerty = 0;
 
 		if (strcmp(pd->szKey, "name") == 0)
 		{
 			char tmpname[512];
-			sprintf(tmpname, "%s / %s", bEnt->GetName(), bEnt->GetClassName());
+			sprintf(tmpname, "%s / %s", bEnt->getName(), bEnt->getClassName());
 			SXLevelEditor::ListBoxList->SetTextItem(sel, tmpname);
 		}
 	}
@@ -438,10 +438,10 @@ LRESULT SXLevelEditor_ButtonGameValue_Click(HWND hwnd, UINT msg, WPARAM wParam,
 
 		int sel = SXLevelEditor::ListBoxList->GetSel();
 		SXLevelEditor::ListViewGameClass->SetTextItem(tmpname, 1, str);
-		SXbaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
+		CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->GetItemData(sel));
 		if (bEnt)
 		{
-			bEnt->SetKV(pd->szKey, tmpname);
+			bEnt->setKV(pd->szKey, tmpname);
 		}
 	}
 
@@ -458,8 +458,8 @@ LRESULT SXLevelEditor_ButtonGameCreate_Click(HWND hwnd, UINT msg, WPARAM wParam,
 	char txt[256];
 	SXLevelEditor::ComboBoxGameClass->GetItemText(SXLevelEditor::ComboBoxGameClass->GetSel(), txt);
 
-	SXbaseEntity* bEnt = SXGame_CreateEntity(txt);
-	bEnt->SetFlags(bEnt->GetFlags() | EF_EXPORT | EF_LEVEL);
+	CBaseEntity* bEnt = SXGame_CreateEntity(txt);
+	bEnt->setFlags(bEnt->getFlags() | EF_EXPORT | EF_LEVEL);
 
 	SXLevelEditor_ButtonGameObjectOpen_Click(hwnd, msg, wParam, lParam);
 	int sel = SXLevelEditor::ListBoxList->GetCountItem()-1;
@@ -489,10 +489,10 @@ LRESULT SXLevelEditor_EditGameConnectionsName_IN(HWND hwnd, UINT msg, WPARAM wPa
 	char* found = 0;
 	for (int i = 0; i < tmpcoungo; ++i)
 	{
-		SXbaseEntity* bEnt = SXGame_EntGet(i);
+		CBaseEntity* bEnt = SXGame_EntGet(i);
 		if (bEnt)
 		{
-			strcpy(tmpname, bEnt->GetName());
+			strcpy(tmpname, bEnt->getName());
 			if (tmpname[0] == 0)
 				continue;
 			lower_name = CharLower(tmpname);
@@ -573,11 +573,11 @@ LRESULT SXLevelEditor_ListViewGameConnections_Click()
 {
 	int iNumStr = SXLevelEditor::ListViewGameConnections->GetSelString();
 
-	//������� ����������
+	//очищаем комбобоксы
 	//SXLevelEditor::ComboBoxGameConnectionsEvent->Clear();
 	SXLevelEditor::ComboBoxGameConnectionsAction->Clear();
 
-	//���� ��� ����������� ����� ��������
+	//если нет выделенного тогда обнуляем
 	if (iNumStr < 0)
 	{
 		SXLevelEditor::ComboBoxGameConnectionsEvent->SetSel(0);
@@ -591,7 +591,7 @@ LRESULT SXLevelEditor_ListViewGameConnections_Click()
 	char szStr[256];
 	char szStr2[256];
 
-	//�������� ������������ event � ComboBoxGameConnectionsEvent
+	//выделяем используемый event в ComboBoxGameConnectionsEvent
 	SXLevelEditor::ListViewGameConnections->GetTextItem(szStr, 0, iNumStr, 256);
 
 	for (int i = 0; i < SXLevelEditor::ComboBoxGameConnectionsEvent->GetCount(); ++i)
@@ -605,26 +605,26 @@ LRESULT SXLevelEditor_ListViewGameConnections_Click()
 	}
 	//-------
 
-	//������������� ��� ������������� �������� ������� � EditGameConnectionsName
+	//устанавилваем имя используемого игрового объекта в EditGameConnectionsName
 	SXLevelEditor::ListViewGameConnections->GetTextItem(szStr, 1, iNumStr, 256);
 	SXLevelEditor::EditGameConnectionsName->SetText(szStr);
 	//-------
 
-	//������������� ������ � ComboBoxGameConnectionsAction � �������� ������������
-	SXbaseEntity *pEnt2 = 0;
+	//устанавилваем данные в ComboBoxGameConnectionsAction и выделяем используемый
+	CBaseEntity *pEnt2 = 0;
 
-	//�������� �� ���� ������� ��������
+	//проходим по всем игровым объектам
 	for (int i = 0; i < SXGame_EntGetCount(); ++i)
 	{
 		pEnt2 = SXGame_EntGet(i);
 
-		//���� ��� �������� ������� ��������� �������������
-		if (pEnt2 && strcmp(pEnt2->GetName(), szStr) == 0)
+		//если имя игрового объекта идентично используемому
+		if (pEnt2 && strcmp(pEnt2->getName(), szStr) == 0)
 		{
-			proptable_t *pPropTable = SXGame_EntGetProptable(pEnt2->GetClassName());
+			proptable_t *pPropTable = SXGame_EntGetProptable(pEnt2->getClassName());
 			propdata_t *pPropData = 0;
 
-			//���������� �� ���� ����� ������
+			//проходимся по всем полям класса
 			for (int k = 0; k < pPropTable->numFields; ++k)
 			{
 				pPropData = &pPropTable->pData[k];
@@ -649,12 +649,12 @@ LRESULT SXLevelEditor_ListViewGameConnections_Click()
 	}
 	//-------
 
-	//������������� �������� � �������� � EditGameConnectionsDelay
+	//устанавливаем задержку в секундах в EditGameConnectionsDelay
 	SXLevelEditor::ListViewGameConnections->GetTextItem(szStr, 3, iNumStr, 256);
 	SXLevelEditor::EditGameConnectionsDelay->SetText(szStr);
 	//-------
 
-	//������������� �������� � EditGameConnectionsParameter
+	//устанавливаем параметр в EditGameConnectionsParameter
 	SXLevelEditor::ListViewGameConnections->GetTextItem(szStr, 4, iNumStr, 256);
 	SXLevelEditor::EditGameConnectionsParameter->SetText(szStr);
 	//-------
@@ -674,51 +674,51 @@ LRESULT SXLevelEditor_EditGameConnectionsName_Enter(HWND hwnd, UINT msg, WPARAM
 	if (idSelListBoxList < 0)
 		return 0;
 
-	SXbaseEntity *pEnt = SXGame_EntGet(idSelListBoxList);
+	CBaseEntity *pEnt = SXGame_EntGet(idSelListBoxList);
 
 	char szBuffer256[256];
 	szBuffer256[0] = 0;
 
 	SXLevelEditor::EditGameConnectionsName->GetText(szBuffer256, 256);
 
-	SXbaseEntity *pEnt2 = SXGame_EntGetByName(szBuffer256, 0);
+	CBaseEntity *pEnt2 = SXGame_EntGetByName(szBuffer256, 0);
 
-	//���������� � szBuffer256 ������� ��� action
+	//записываем в szBuffer256 текущее имя action
 	szBuffer256[0] = 0;
 	SXLevelEditor::ComboBoxGameConnectionsAction->GetItemText(SXLevelEditor::ComboBoxGameConnectionsAction->GetSel(), szBuffer256);
 
-	// ���� ������ � ��������� ������ ����������
+	// если энтить с введенным именем существует
 	if (pEnt2)
 	{
-		proptable_t *pPropTable2 = SXGame_EntGetProptable(pEnt2->GetClassName());
+		proptable_t *pPropTable2 = SXGame_EntGetProptable(pEnt2->getClassName());
 		propdata_t *pPropData2 = 0;
 		SXLevelEditor::ComboBoxGameConnectionsAction->Clear();
 
-		//���������� �� ���� ������ ������� �������
+		//проходимся по всем данным таблицы свойств
 		for (int j = 0; j < pPropTable2->numFields; ++j)
 		{
 			pPropData2 = &pPropTable2->pData[j];
 
-			//���� �������� input
+			//если свойство input
 			if (pPropData2->flags & PDFF_INPUT)
 			{
-				//��������� � ��������� action
+				//добавляем в комбобокс action
 				SXLevelEditor::ComboBoxGameConnectionsAction->AddItem(pPropData2->szEdName);
 				SXLevelEditor::ComboBoxGameConnectionsAction->SetItemData(SXLevelEditor::ComboBoxGameConnectionsEvent->GetCount() - 1, (LPARAM)(pPropData2->szKey));
 
-				//���� ���������� ��� action ����� ���������� ������������
+				//если предыдущее имя action равно последнему вставленному
 				if (strcmp(pPropData2->szEdName, szBuffer256) == 0)
 				{
-					//���������� ��� ������ � ����������
+					//активируем эту строку в комбобоксе
 					SXLevelEditor::ComboBoxGameConnectionsAction->SetSel(SXLevelEditor::ComboBoxGameConnectionsAction->GetCount() - 1);
 				}
 			}
 		}
 	}
-	// ���� ������ ������ �� ����������
+	// если такого энтитя не существует
 	else
 	{
-		//���������� �� ��� ������ � �������
+		//возвращаем то что сейчас в таблице
 
 		if (idSelStrTable < 0)
 			return 0;
@@ -743,17 +743,17 @@ LRESULT SXLevelEditor_EditGameConnections_Enter(HWND hwnd, UINT msg, WPARAM wPar
 		return 0;
 
 	ID idSelEnt = SXLevelEditor::ListBoxList->GetItemData(idSelListBoxList);
-	SXbaseEntity *pEnt = SXGame_EntGet(idSelEnt);
-	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->GetClassName());
+	CBaseEntity *pEnt = SXGame_EntGet(idSelEnt);
+	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->getClassName());
 	propdata_t *pPropData = (propdata_t*)(SXLevelEditor::ListViewGameConnections->GetDataItem(idSelStrTable));
 
-	//�������� �������� � ������ ������ ������
+	//получаем скленные в единую строку данные
 	char szBuffer4096[4096];
 	szBuffer4096[0] = 0;
 	SXLevelEditor_VeldStringGameConnections(pPropTable, pPropData, -1, szBuffer4096, 4096);
 
 
-	//������������� � ���������� � ������� ������ ������ �� ����������
+	//устанавливаем в выделенную в таблице строку данные из редакторов
 	char szBuffer256[256];
 	szBuffer256[0] = 0;
 
@@ -776,7 +776,7 @@ LRESULT SXLevelEditor_EditGameConnections_Enter(HWND hwnd, UINT msg, WPARAM wPar
 	SXLevelEditor::EditGameConnectionsParameter->GetText(szBuffer256, 256);
 	SXLevelEditor::ListViewGameConnections->SetTextItem(szBuffer256, 4, idSelStrTable);
 
-	pEnt->SetKV(pPropData->szKey, szBuffer4096);
+	pEnt->setKV(pPropData->szKey, szBuffer4096);
 
 	return 0;
 }
@@ -786,16 +786,16 @@ void SXLevelEditor_VeldStringGameConnections(proptable_t *pPropTable, propdata_t
 	char szBuffer256[256];
 	szBuffer256[0] = 0;
 
-	//���������� �� ���� ������� �������
+	//проходимся по всем строкам таблицы
 	for (int i = 0, il = SXLevelEditor::ListViewGameConnections->GetCountString(); i < il; ++i)
 	{
-		//���� ������ � ���� ������� ���� ���������
+		//если строку с этим номером надо исключить
 		if (iNumExclude == i)
 			continue;
 
 		propdata_t *pPropData2 = (propdata_t*)SXLevelEditor::ListViewGameConnections->GetDataItem(i);
 
-		//���� �������� �� ��� ��� ����
+		//если юзердата то что нам надо
 		if (pPropData == pPropData2)
 		{
 			if (strlen(szStrOut) > 0)
@@ -805,25 +805,25 @@ void SXLevelEditor_VeldStringGameConnections(proptable_t *pPropTable, propdata_t
 			SXLevelEditor::ListViewGameConnections->GetTextItem(szBuffer256, 1, i, 256);
 			sprintf(szStrOut + strlen(szStrOut), "%s:", szBuffer256);
 
-			//���� ������ � ������� ����� ����������
-			SXbaseEntity *pEnt2 = SXGame_EntGetByName(szBuffer256);
+			//ищем энтить с которым будет соединение
+			CBaseEntity *pEnt2 = SXGame_EntGetByName(szBuffer256);
 			proptable_t *pPropTable2 = 0;
 
 			if (pEnt2)
-				pPropTable2 = SXGame_EntGetProptable(pEnt2->GetClassName());
+				pPropTable2 = SXGame_EntGetProptable(pEnt2->getClassName());
 
 			szBuffer256[0] = 0;
 			SXLevelEditor::ListViewGameConnections->GetTextItem(szBuffer256, 2, i, 256);
 
-			//���� ������ ��� ���������� ����������
+			//если энтить для соединения существует
 			if (pEnt2)
 			{
-				//���������� �� ���� ����� ������� ������
+				//проходимся по всем полям таблицы данных
 				for (int k = 0; k < pPropTable2->numFields; ++k)
 				{
 					propdata_t *pPropData3 = &pPropTable2->pData[k];
 
-					//���� ���� ������ �� ��� ��� ����
+					//если поле класса то что нам надо
 					if (pPropData3->flags & PDFF_INPUT && strcmp(pPropData3->szEdName, szBuffer256) == 0)
 					{
 						sprintf(szStrOut + strlen(szStrOut), "%s:", pPropData3->szKey);
@@ -831,7 +831,7 @@ void SXLevelEditor_VeldStringGameConnections(proptable_t *pPropTable, propdata_t
 					}
 				}
 			}
-			//���� ������ ��� ���������� ���
+			//если энтитя для соединения нет
 			else
 			{
 				sprintf(szStrOut + strlen(szStrOut), ":");
@@ -857,13 +857,13 @@ LRESULT SXLevelEditor_ButtonGameConnectionsCreate_Click(HWND hwnd, UINT msg, WPA
 		return 0;
 
 	ID idSelEnt = SXLevelEditor::ListBoxList->GetItemData(idSelListBoxList);
-	SXbaseEntity *pEnt = SXGame_EntGet(idSelEnt);
-	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->GetClassName());
+	CBaseEntity *pEnt = SXGame_EntGet(idSelEnt);
+	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->getClassName());
 
 	if (!pEnt)
 		return 0;
 
-	//���� ���������� ������ ����������
+	//если добавление нового соединения
 	if (SXLevelEditor::isAddGameConections)
 	{
 		if (idSelStrTable < 0)
@@ -901,11 +901,11 @@ LRESULT SXLevelEditor_ButtonGameConnectionsCreate_Click(HWND hwnd, UINT msg, WPA
 		SXLevelEditor::EditGameConnectionsParameter->GetText(szBuffer256, 256);
 		sprintf(szBuffer4096 + strlen(szBuffer4096), "%s", szBuffer256);
 
-		pEnt->SetKV(pPropData->szKey, szBuffer4096);
+		pEnt->setKV(pPropData->szKey, szBuffer4096);
 
 		SXLevelEditor::GameSel(idSelListBoxList);
 	}
-	//����� �������� ������ ����������
+	//иначе создание нового соединения
 	else
 	{
 		SXLevelEditor::ButtonGameConnectionsDelete->Visible(false);
@@ -924,8 +924,8 @@ LRESULT SXLevelEditor_ButtonGameConnectionsDelete_Click(HWND hwnd, UINT msg, WPA
 		return 0;
 
 	ID idSelEnt = SXLevelEditor::ListBoxList->GetItemData(idSelListBoxList);
-	SXbaseEntity *pEnt = SXGame_EntGet(idSelEnt);
-	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->GetClassName());
+	CBaseEntity *pEnt = SXGame_EntGet(idSelEnt);
+	proptable_t *pPropTable = SXGame_EntGetProptable(pEnt->getClassName());
 	propdata_t *pPropData = (propdata_t*)(SXLevelEditor::ListViewGameConnections->GetDataItem(idSelStrTable));
 
 	if (!pEnt)
@@ -936,7 +936,7 @@ LRESULT SXLevelEditor_ButtonGameConnectionsDelete_Click(HWND hwnd, UINT msg, WPA
 
 	SXLevelEditor_VeldStringGameConnections(pPropTable, pPropData, idSelStrTable, szBuffer4096, 4096);
 
-	pEnt->SetKV(pPropData->szKey, szBuffer4096);
+	pEnt->setKV(pPropData->szKey, szBuffer4096);
 	SXLevelEditor::GameSel(idSelListBoxList);
 
 	return 0;