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 >
Wrap
Text File
|
2005-03-11
|
10KB
|
370 lines
#if defined _akcamera_inc
#endinput
#endif
#define _akcamera_inc
//======================================================================================================
stock DrID:GetCameraActual()
{
new DrID:cameracontroller = GetPropertyObject( GetEntity( "World" ), "CameraCtrl" );
new DrID:target = GetPropertyObject( cameracontroller, "m_cStateActual" );
return target;
}
//==Timber hackelte=====================================================================================
stock DrID:GetCameraParam()
{
return GetPropertyObject( GetPropertyObject( GetEntity( "World" ), "CameraCtrl" ), "m_cStateParam" );
}
//==Timber befejezte==================================================================================
stock DrID:GetCameraTarget()
{
new DrID:cameracontroller = GetPropertyObject( GetEntity( "World" ), "CameraCtrl" );
new DrID:target = GetPropertyObject( cameracontroller, "m_cStateTarget" );
return target;
}
//======================================================================================================
stock GetCameraActualPos(Float:pos[vec3])
{
GetPropertyVec3( GetCameraActual(), "m_cTarget", pos);
}
stock Float:GetCameraActualDistance()
{
return GetPropertyFloat( GetCameraActual(), "m_nDistance");
}
stock Float:GetCameraActualRotate()
{
return RadToDeg(-(NormalizeAngle(GetPropertyFloat( GetCameraActual(), "m_nRotate"))));
}
stock Float:GetCameraActualPitch()
{
return RadToDeg( -(GetPropertyFloat( GetCameraActual(), "m_nPitch")));
}
//======================================================================================================
stock SetCameraTargetPos(Float:pos[vec3])
{
SetPropertyVec3( GetCameraTarget(), "m_cTarget", pos);
}
stock SetCameraTargetDistance(Float:distance)
{
SetPropertyFloat( GetCameraTarget(), "m_nDistance", distance);
}
stock SetCameraTargetRotate(Float:rotate, bool:teleport = false)
{
new Float:lTmpFloat=NormalizeAngle(DegToRad( -rotate ));
if(teleport == false)
{
new Float:lLofasz= GetPropertyFloat( GetCameraTarget(), "m_nRotate");
new Float:lTmpDiff = NormalizeAngle(lTmpFloat- NormalizeAngle(lLofasz));
lTmpFloat = lTmpDiff + lLofasz;
}
SetPropertyFloat( GetCameraTarget(), "m_nRotate", lTmpFloat );
}
stock SetCameraTargetPitch(Float:pitch)
{
SetPropertyFloat( GetCameraTarget(), "m_nPitch", DegToRad( -pitch ));
}
//======================================================================================================
//==Timber hackelte=====================================================================================
stock TeleportCamera(Float:UndWhere[vec3])
{
SetCameraActualPos( UndWhere );
SetCameraTargetPos( UndWhere );
}
stock TeleportCameraToEnt( DrID:UndWho )
{
new Float:UndWhere[vec3];
GetPropertyVec3( UndWho, "LogicalPos_", UndWhere );
SetCameraActualPos( UndWhere );
SetCameraTargetPos( UndWhere );
}
stock SetCameraActualPos(Float:pos[vec3])
{
SetPropertyVec3( GetCameraActual(), "m_cTarget", pos);
}
stock SetCameraActualDistance(Float:distance)
{
SetPropertyFloat( GetCameraActual(), "m_nDistance", distance);
}
stock SetCameraActualRotate(Float:rotate, bool:teleport = false)
{
new Float:lTmpFloat=NormalizeAngle(DegToRad( -rotate ));
if(teleport == false)
{
new Float:lLofasz= GetPropertyFloat( GetCameraActual(), "m_nRotate");
new Float:lTmpDiff = NormalizeAngle(lTmpFloat- NormalizeAngle(lLofasz));
lTmpFloat = lTmpDiff + lLofasz;
}
SetPropertyFloat( GetCameraActual(), "m_nRotate", lTmpFloat );
}
stock Float:NormalizeAngle(Float:NA_Angle)
{
while(NA_Angle>PI)
{
NA_Angle-=(2*PI);
}
while(NA_Angle<-PI)
{
NA_Angle+=(2*PI);
}
return NA_Angle;
}
stock SetCameraActualPitch(Float:pitch)
{
SetPropertyFloat( GetCameraActual(), "m_nPitch", DegToRad( -pitch ));
}
stock Float:GetCameraDamp()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Target" ), "Damp" );
}
stock Float:GetCameraRotDamp()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Rotate" ), "Damp" );
}
stock Float:GetCameraPitchDamp()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Pitch" ), "Damp" );
}
stock Float:GetCameraZoomDamp()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Distance" ), "Damp" );
}
stock Float:GetCameraSpeed()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Target" ), "Speed" );
}
stock Float:GetCameraRotSpeed()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Rotate" ), "Speed" );
}
stock Float:GetCameraPitchSpeed()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Pitch" ), "Speed" );
}
stock Float:GetCameraZoomSpeed()
{
return GetPropertyFloat(GetPropertyObject( GetCameraParam(), "Distance" ), "Speed" );
}
stock SetCameraSpeed(Float:CamSpeed)
{
new Float:DaRealDump;
new Float:DaRealSpeed;
GiveMeCorrectSpeed(CamSpeed,1,DaRealDump,DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Speed", DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Damp", DaRealDump);
}
stock SetCameraDampValue(Float:DampValue)
{
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Target") , "Damp", DampValue);
}
stock SetCameraRotSpeed(Float:CamSpeed)
{
new Float:DaRealDump;
new Float:DaRealSpeed;
GiveMeCorrectSpeed(CamSpeed,2,DaRealDump,DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Rotate") , "Speed", DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Rotate") , "Damp", DaRealDump);
}
stock SetCameraZoomSpeed(Float:CamSpeed)
{
new Float:DaRealDump;
new Float:DaRealSpeed;
GiveMeCorrectSpeed(CamSpeed,3,DaRealDump,DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Distance") , "Speed", DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Distance") , "Damp", DaRealDump);
}
stock SetCameraPitchSpeed(Float:CamSpeed)
{
new Float:DaRealDump;
new Float:DaRealSpeed;
GiveMeCorrectSpeed(CamSpeed,4,DaRealDump,DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Pitch") , "Speed", DaRealSpeed);
SetPropertyFloat( GetPropertyObject(GetCameraParam(),"Pitch") , "Damp", DaRealDump);
}
stock CameraSpeed(Float:RotSpeed = -2.0, Float:ZoomSpeed = -2.0, Float:PitchSpeed = -2.0, Float:CamSpeed = -2.0)
{
if(CamSpeed != -2.0)
SetCameraSpeed(CamSpeed);
if(RotSpeed != -2.0)
SetCameraRotSpeed(RotSpeed);
if(ZoomSpeed != -2.0)
SetCameraZoomSpeed(ZoomSpeed);
if(PitchSpeed != -2.0)
SetCameraPitchSpeed(PitchSpeed);
}
stock GiveMeCorrectSpeed(Float:CamSpeeda,OsztMelyik,&Float:FiregDump,&Float:FiregSpeed)
{
new Float:lCamSpeedMaxSpd
new Float:lCamSpeedMaxDmp
new Float:lCamSpeedMinDmp
switch(OsztMelyik) //1-Target,2-Rotate,3-Zoom,4-Pitch
{
case 4:
{
if(CamSpeeda==-1.0)
{
DebugMessage( "SetCamera*Speed: Reseting to Default", DL_MESSAGE );
FiregDump=0.05;
FiregSpeed=10.0;
return;
}
lCamSpeedMaxSpd=10.0; //CamSpeed = 100 -> fast
lCamSpeedMaxDmp=0.05; //CamSpeed = 100 -> fast
lCamSpeedMinDmp=0.01; //CamSpeed = 0 -> slow
}
default:
{
if(CamSpeeda==-1.0)
{
DebugMessage( "SetCamera*Speed: Reseting to Default", DL_MESSAGE );
FiregDump=0.1;
FiregSpeed=50.0;
return;
}
lCamSpeedMaxSpd=75.0; //CamSpeed = 100 -> fast
lCamSpeedMaxDmp=0.15; //CamSpeed = 100 -> fast
lCamSpeedMinDmp=0.03; //CamSpeed = 0 -> slow
}
}
if(CamSpeeda>100.0)
{
DebugMessage( "SetCamera*Speed: CamSpeed bigger than 100.0 -> setting to 100.0", DL_ERROR )
CamSpeeda = 100.0
}
if(CamSpeeda<0.0)
{
DebugMessage( "SetCamera*Speed: CamSpeed lower than 0.0 -> setting to 0.0", DL_ERROR )
CamSpeeda = 0.0
}
FiregSpeed=(((lCamSpeedMaxSpd)/100.0)*CamSpeeda);
FiregDump=(((lCamSpeedMaxDmp-lCamSpeedMinDmp)/100.0)*CamSpeeda);
return;
}
stock ResetCameraSpeed()
{
SetCameraSpeed(-1.0);
SetCameraZoomSpeed(-1.0);
SetCameraRotSpeed(-1.0);
SetCameraPitchSpeed(-1.0);
/* OLD
SetCameraSpeed(10.0,0.05);
SetCameraZoomSpeed(10.0,0.05);
SetCameraRotSpeed(180.0,0.05);
SetCameraPitchSpeed(180.0,0.05);
*/
}
stock IsCameraAt( Float:UndWhere[vec3], Float:UndNear= 0.5)
{
new Float:lCamActPos[vec3];
GetCameraActualPos( lCamActPos );
// this value will be true if the Camera's actual target is in 1x1 square around the vec3 position
// return (DistanceAKp2p( lCamActPos, UndWhere ) <= UndNear); // EZ MEG BUGZIK!!! CODE SUPPORT KELL!!
return ((
((lCamActPos[vec3:x] - UndWhere[vec3:x]) > -UndNear) &&
((lCamActPos[vec3:x] - UndWhere[vec3:x]) < UndNear)
) && (
((lCamActPos[vec3:y] - UndWhere[vec3:y]) > -UndNear) &&
((lCamActPos[vec3:y] - UndWhere[vec3:y]) < UndNear)
));
}
stock IsCameraAtEnt( DrID:UndWho)
{
new Float:lOjjectPos[vec3];
GetPropertyVec3( UndWho, "LogicalPos_", lOjjectPos );
return IsCameraAt(lOjjectPos);
}
//==Timber befejezte==================================================================================
//======================================================================================================
native DisableCameraCtrl();
native EnableCameraCtrl();
native CameraFollow(DrID:entity);
native DrID:GetCameraFollow();
//======================================================================================================
stock CameraSet(Float:CS_Rot, Float: CS_Pitch, Float:CS_Zoom, bool:Teleport=true )
{
CS_Rot=NormalizeDegree(CS_Rot);
SetCameraTargetDistance( CS_Zoom );
SetCameraTargetPitch( CS_Pitch );
SetCameraTargetRotate( CS_Rot , Teleport);
if( Teleport )
{
SetCameraActualDistance( CS_Zoom );
SetCameraActualPitch( CS_Pitch );
SetCameraActualRotate( CS_Rot, Teleport );
}
}