home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / demowot_english.exe / Script / Source / akcamera.inc next >
Text File  |  2005-03-11  |  10KB  |  370 lines

  1. #if defined _akcamera_inc
  2.     #endinput
  3. #endif
  4. #define _akcamera_inc
  5.  
  6.  
  7.  
  8.  
  9. //======================================================================================================
  10.  
  11. stock DrID:GetCameraActual()
  12. {
  13.     new DrID:cameracontroller = GetPropertyObject( GetEntity( "World" ), "CameraCtrl" );
  14.     new DrID:target = GetPropertyObject( cameracontroller, "m_cStateActual" );
  15.     return target;
  16. }
  17.  
  18.  
  19.  
  20. //==Timber hackelte=====================================================================================
  21. stock DrID:GetCameraParam()
  22. {
  23.     return GetPropertyObject( GetPropertyObject( GetEntity( "World" ), "CameraCtrl" ), "m_cStateParam" );
  24. }
  25. //==Timber befejezte==================================================================================
  26.  
  27.  
  28.  
  29. stock DrID:GetCameraTarget()
  30. {
  31.     new DrID:cameracontroller = GetPropertyObject( GetEntity( "World" ), "CameraCtrl" );
  32.     new DrID:target = GetPropertyObject( cameracontroller, "m_cStateTarget" );
  33.     return target;
  34. }
  35.  
  36. //======================================================================================================
  37.  
  38. stock GetCameraActualPos(Float:pos[vec3])
  39. {
  40.     GetPropertyVec3( GetCameraActual(), "m_cTarget", pos);
  41. }
  42.  
  43. stock Float:GetCameraActualDistance()
  44. {
  45.     return GetPropertyFloat( GetCameraActual(), "m_nDistance");
  46. }
  47.  
  48. stock Float:GetCameraActualRotate()
  49. {
  50.     return RadToDeg(-(NormalizeAngle(GetPropertyFloat( GetCameraActual(), "m_nRotate"))));
  51. }
  52.  
  53. stock Float:GetCameraActualPitch()
  54. {
  55.     return RadToDeg( -(GetPropertyFloat( GetCameraActual(), "m_nPitch")));
  56. }
  57.  
  58. //======================================================================================================
  59.  
  60. stock SetCameraTargetPos(Float:pos[vec3])
  61. {
  62.     SetPropertyVec3( GetCameraTarget(), "m_cTarget", pos);
  63. }
  64.  
  65. stock SetCameraTargetDistance(Float:distance)
  66. {
  67.     SetPropertyFloat( GetCameraTarget(), "m_nDistance", distance);
  68. }
  69.  
  70. stock SetCameraTargetRotate(Float:rotate, bool:teleport = false)
  71. {
  72.     new Float:lTmpFloat=NormalizeAngle(DegToRad( -rotate ));
  73.     if(teleport == false)
  74.     {
  75.         new Float:lLofasz= GetPropertyFloat( GetCameraTarget(), "m_nRotate");
  76.         new Float:lTmpDiff = NormalizeAngle(lTmpFloat- NormalizeAngle(lLofasz));
  77.         lTmpFloat = lTmpDiff + lLofasz;
  78.     }
  79.     SetPropertyFloat( GetCameraTarget(), "m_nRotate", lTmpFloat );
  80. }
  81.  
  82. stock SetCameraTargetPitch(Float:pitch)
  83. {
  84.     SetPropertyFloat( GetCameraTarget(), "m_nPitch", DegToRad( -pitch ));
  85. }
  86.  
  87. //======================================================================================================
  88.  
  89.  
  90.  
  91.  
  92. //==Timber hackelte=====================================================================================
  93.  
  94. stock TeleportCamera(Float:UndWhere[vec3])
  95. {
  96.     SetCameraActualPos( UndWhere );
  97.     SetCameraTargetPos( UndWhere );
  98.  
  99. }
  100.  
  101. stock TeleportCameraToEnt( DrID:UndWho )
  102. {
  103.     new Float:UndWhere[vec3];
  104.     GetPropertyVec3( UndWho, "LogicalPos_", UndWhere );
  105.     SetCameraActualPos( UndWhere );
  106.     SetCameraTargetPos( UndWhere );
  107. }
  108.  
  109. stock SetCameraActualPos(Float:pos[vec3])
  110. {
  111.     SetPropertyVec3( GetCameraActual(), "m_cTarget", pos);
  112. }
  113.  
  114. stock SetCameraActualDistance(Float:distance)
  115. {
  116.     SetPropertyFloat( GetCameraActual(), "m_nDistance", distance);
  117. }
  118.  
  119. stock SetCameraActualRotate(Float:rotate, bool:teleport = false)
  120. {
  121.     new Float:lTmpFloat=NormalizeAngle(DegToRad( -rotate ));
  122.     if(teleport == false)
  123.     {
  124.         new Float:lLofasz= GetPropertyFloat( GetCameraActual(), "m_nRotate");
  125.         new Float:lTmpDiff = NormalizeAngle(lTmpFloat- NormalizeAngle(lLofasz));
  126.         lTmpFloat = lTmpDiff + lLofasz;
  127.     }
  128.     SetPropertyFloat( GetCameraActual(), "m_nRotate", lTmpFloat );
  129. }
  130.  
  131. stock Float:NormalizeAngle(Float:NA_Angle)
  132. {
  133.     while(NA_Angle>PI)
  134.     {
  135.         NA_Angle-=(2*PI);
  136.     }
  137.     while(NA_Angle<-PI)
  138.     {
  139.         NA_Angle+=(2*PI);
  140.     }
  141.     return NA_Angle;
  142. }
  143.  
  144. stock SetCameraActualPitch(Float:pitch)
  145. {
  146.     SetPropertyFloat( GetCameraActual(), "m_nPitch", DegToRad( -pitch ));
  147. }
  148.  
  149. stock Float:GetCameraDamp()
  150. {
  151.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Target" ), "Damp" );
  152. }
  153.  
  154. stock Float:GetCameraRotDamp()
  155. {
  156.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Rotate" ), "Damp" );
  157. }
  158.  
  159. stock Float:GetCameraPitchDamp()
  160. {
  161.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Pitch" ), "Damp" );
  162. }
  163.  
  164. stock Float:GetCameraZoomDamp()
  165. {
  166.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Distance" ), "Damp" );
  167. }
  168.  
  169. stock Float:GetCameraSpeed()
  170. {
  171.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Target" ), "Speed" );
  172. }
  173.  
  174. stock Float:GetCameraRotSpeed()
  175. {
  176.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Rotate" ), "Speed" );
  177. }
  178.  
  179. stock Float:GetCameraPitchSpeed()
  180. {
  181.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Pitch" ), "Speed" );
  182. }
  183.  
  184. stock Float:GetCameraZoomSpeed()
  185. {
  186.     return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Distance" ), "Speed" );
  187. }
  188.  
  189. stock SetCameraSpeed(Float:CamSpeed)
  190. {
  191.     new Float:DaRealDump;
  192.     new Float:DaRealSpeed;
  193.     GiveMeCorrectSpeed(CamSpeed,1,DaRealDump,DaRealSpeed);
  194.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Speed", DaRealSpeed);
  195.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Damp", DaRealDump);
  196. }
  197.  
  198. stock SetCameraDampValue(Float:DampValue)
  199. {
  200.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Damp", DampValue);
  201. }
  202.  
  203. stock SetCameraRotSpeed(Float:CamSpeed)
  204. {
  205.     new Float:DaRealDump;
  206.     new Float:DaRealSpeed;
  207.     GiveMeCorrectSpeed(CamSpeed,2,DaRealDump,DaRealSpeed);
  208.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Rotate") , "Speed", DaRealSpeed);
  209.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Rotate") , "Damp", DaRealDump);
  210. }
  211.  
  212. stock SetCameraZoomSpeed(Float:CamSpeed)
  213. {
  214.     new Float:DaRealDump;
  215.     new Float:DaRealSpeed;
  216.     GiveMeCorrectSpeed(CamSpeed,3,DaRealDump,DaRealSpeed);
  217.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Distance") , "Speed", DaRealSpeed);
  218.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Distance") , "Damp", DaRealDump);
  219. }
  220.  
  221. stock SetCameraPitchSpeed(Float:CamSpeed)
  222. {
  223.     new Float:DaRealDump;
  224.     new Float:DaRealSpeed;
  225.     GiveMeCorrectSpeed(CamSpeed,4,DaRealDump,DaRealSpeed);
  226.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Pitch") , "Speed", DaRealSpeed);
  227.     SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Pitch") , "Damp", DaRealDump);
  228. }
  229.  
  230. stock CameraSpeed(Float:RotSpeed = -2.0, Float:ZoomSpeed = -2.0, Float:PitchSpeed = -2.0, Float:CamSpeed = -2.0)
  231. {
  232.     if(CamSpeed != -2.0)
  233.         SetCameraSpeed(CamSpeed);
  234.     if(RotSpeed != -2.0)
  235.         SetCameraRotSpeed(RotSpeed);
  236.     if(ZoomSpeed != -2.0)
  237.         SetCameraZoomSpeed(ZoomSpeed);
  238.     if(PitchSpeed != -2.0)
  239.         SetCameraPitchSpeed(PitchSpeed);
  240. }
  241. stock GiveMeCorrectSpeed(Float:CamSpeeda,OsztMelyik,&Float:FiregDump,&Float:FiregSpeed)
  242. {
  243.     new Float:lCamSpeedMaxSpd
  244.     new Float:lCamSpeedMaxDmp
  245.     new Float:lCamSpeedMinDmp
  246.     switch(OsztMelyik) //1-Target,2-Rotate,3-Zoom,4-Pitch
  247.     {
  248.         case 4:
  249.         {
  250.             if(CamSpeeda==-1.0)
  251.             {
  252.                 DebugMessage( "SetCamera*Speed: Reseting to Default", DL_MESSAGE );
  253.                 FiregDump=0.05;
  254.                 FiregSpeed=10.0;
  255.                 return;        
  256.             }
  257.             lCamSpeedMaxSpd=10.0; //CamSpeed = 100 -> fast
  258.             lCamSpeedMaxDmp=0.05; //CamSpeed = 100 -> fast
  259.             lCamSpeedMinDmp=0.01; //CamSpeed = 0 -> slow
  260.         }
  261.         default:
  262.         {
  263.             if(CamSpeeda==-1.0)
  264.             {
  265.                 DebugMessage( "SetCamera*Speed: Reseting to Default", DL_MESSAGE );
  266.                 FiregDump=0.1;
  267.                 FiregSpeed=50.0;
  268.                 return;        
  269.             }
  270.             lCamSpeedMaxSpd=75.0; //CamSpeed = 100 -> fast
  271.             lCamSpeedMaxDmp=0.15; //CamSpeed = 100 -> fast
  272.             lCamSpeedMinDmp=0.03; //CamSpeed = 0 -> slow
  273.         }
  274.     }
  275.     if(CamSpeeda>100.0)
  276.     {
  277.         DebugMessage( "SetCamera*Speed: CamSpeed bigger than 100.0 -> setting to 100.0", DL_ERROR )
  278.         CamSpeeda = 100.0
  279.     }    
  280.     if(CamSpeeda<0.0)
  281.     {
  282.         DebugMessage( "SetCamera*Speed: CamSpeed lower than 0.0 -> setting to 0.0", DL_ERROR )
  283.         CamSpeeda = 0.0
  284.     }    
  285.     FiregSpeed=(((lCamSpeedMaxSpd)/100.0)*CamSpeeda);
  286.     FiregDump=(((lCamSpeedMaxDmp-lCamSpeedMinDmp)/100.0)*CamSpeeda);
  287.     return;
  288. }
  289.  
  290.  
  291. stock ResetCameraSpeed()
  292. {
  293.     SetCameraSpeed(-1.0);
  294.     SetCameraZoomSpeed(-1.0);
  295.     SetCameraRotSpeed(-1.0);
  296.     SetCameraPitchSpeed(-1.0);
  297.  
  298. /*    OLD
  299.     SetCameraSpeed(10.0,0.05);
  300.     SetCameraZoomSpeed(10.0,0.05);
  301.     SetCameraRotSpeed(180.0,0.05);
  302.     SetCameraPitchSpeed(180.0,0.05);
  303. */
  304. }
  305.  
  306. stock IsCameraAt( Float:UndWhere[vec3], Float:UndNear= 0.5)
  307. {
  308.     new Float:lCamActPos[vec3];
  309.     GetCameraActualPos( lCamActPos );
  310. // this value will be true if the Camera's actual target is in 1x1 square around the vec3 position
  311. //     return (DistanceAKp2p( lCamActPos, UndWhere ) <= UndNear);    // EZ MEG BUGZIK!!! CODE SUPPORT KELL!!
  312.     return ((
  313.         ((lCamActPos[vec3:x] - UndWhere[vec3:x]) > -UndNear) && 
  314.         ((lCamActPos[vec3:x] - UndWhere[vec3:x]) < UndNear)
  315.     ) && (
  316.         ((lCamActPos[vec3:y] - UndWhere[vec3:y]) > -UndNear) && 
  317.         ((lCamActPos[vec3:y] - UndWhere[vec3:y]) < UndNear)
  318.     ));
  319. }
  320.  
  321. stock IsCameraAtEnt( DrID:UndWho)
  322. {
  323.     new Float:lOjjectPos[vec3];
  324.     GetPropertyVec3( UndWho, "LogicalPos_", lOjjectPos );
  325.     return IsCameraAt(lOjjectPos);
  326. }
  327. //==Timber befejezte==================================================================================
  328.  
  329.  
  330.  
  331.  
  332.  
  333. //======================================================================================================
  334.  
  335. native DisableCameraCtrl();
  336. native EnableCameraCtrl();
  337.  
  338. native CameraFollow(DrID:entity);
  339. native DrID:GetCameraFollow();
  340.  
  341. //======================================================================================================
  342.  
  343.  
  344. stock CameraSet(Float:CS_Rot, Float: CS_Pitch, Float:CS_Zoom, bool:Teleport=true )
  345. {
  346.     CS_Rot=NormalizeDegree(CS_Rot);
  347.     SetCameraTargetDistance( CS_Zoom );
  348.     SetCameraTargetPitch( CS_Pitch );
  349.     SetCameraTargetRotate( CS_Rot , Teleport);
  350.  
  351.     if( Teleport )
  352.     {
  353.         SetCameraActualDistance( CS_Zoom );
  354.         SetCameraActualPitch( CS_Pitch );
  355.         SetCameraActualRotate( CS_Rot, Teleport );
  356.     }
  357. }
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.