camerafuncs.pwn 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. Float:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ)
  2. {
  3. new Float:TGTDistance;
  4. // get distance from camera to target
  5. TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ));
  6. new Float:tmpX, Float:tmpY, Float:tmpZ;
  7. tmpX = FrX * TGTDistance + CamX;
  8. tmpY = FrY * TGTDistance + CamY;
  9. tmpZ = FrZ * TGTDistance + CamZ;
  10. return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ));
  11. }
  12. CameraRadiusSetPos(playerid, Float:x, Float:y, Float:z, Float:degree = 0.0, Float:height = 3.0, Float:radius = 8.0)
  13. {
  14. new Float:deltaToX = x + radius * floatsin(-degree, degrees);
  15. new Float:deltaToY = y + radius * floatcos(-degree, degrees);
  16. new Float:deltaToZ = z + height;
  17. SetPlayerCameraPos(playerid, deltaToX, deltaToY, deltaToZ);
  18. SetPlayerCameraLookAt(playerid, x, y, z);
  19. }
  20. stock IsPlayerAimingAt(playerid, Float:x, Float:y, Float:z, Float:radius)
  21. {
  22. new Float:cx,Float:cy,Float:cz,Float:fx,Float:fy,Float:fz;
  23. GetPlayerCameraPos(playerid, cx, cy, cz);
  24. GetPlayerCameraFrontVector(playerid, fx, fy, fz);
  25. return (radius >= DistanceCameraTargetToLocation(cx, cy, cz, x, y, z, fx, fy, fz));
  26. }