camSetDive: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " <dd class="notedate">" to " <dt><dt> <dd class="notedate">")
m (Text replacement - "{{Feature|Warning|" to "{{Feature|warning|")
 
(14 intermediate revisions by the same user not shown)
Line 2: Line 2:


|game1= ofp
|game1= ofp
|version1= 1.00
|version1= 1.00


|game2= arma1
|game2= ofpe
 
|version2= 1.00
|version2= 1.00


|game3= arma2
|game3= arma1
 
|version3= 1.00
|version3= 1.00


|game4= arma2oa
|game4= arma2
 
|version4= 1.00
|version4= 1.51
 
|game5= tkoh


|version5= 1.00
|game5= arma2oa
|version5= 1.50


|game6= arma3
|game6= tkoh
|version6= 1.00


|version6= 0.50
|game7= arma3
|version7= 0.50


|gr1= Broken Commands
|gr1= Broken Commands
Line 29: Line 26:


|descr= Sets camera dive angle. Does not commit changes.  
|descr= Sets camera dive angle. Does not commit changes.  
{{Feature|Warning|This command is '''non-functional'''!}}
{{Feature|warning|This command is '''non-functional'''!}}


|s1= camera '''camSetDive''' dive
|s1= camera [[camSetDive]]  dive


|p1= camera: [[Object]]
|p1= camera: [[Object]]
Line 39: Line 36:
|r1= [[Nothing]]
|r1= [[Nothing]]


|x1 = <code> _camera '''camSetDive''' -0.1</code>
|x1= <sqf>_camera camSetDive -0.1;</sqf>


|seealso= [[camSetBank]], [[setVectorUp]]
|seealso= [[camSetBank]] [[setVectorUp]]
}}
}}


<dl class="command_description">
{{Note
<!-- Note Section BEGIN -->
|user= Kronzky
<dt><dt>
|timestamp= 20100415182900
<dd class="notedate">Posted on Apr 15, 2010</dd>
|text= Command is non-functional.<br>
<dt class="note">[[User:Kronzky|Kronzky]]</dt>
Instead use [[setVectorUp]] or {{Link|http://forums.bistudio.com/showthread.php?t{{=}}67384|this user function}} in {{arma1}}.
<dd class="note">Command is non-functional.<br>Instead [[setVectorUp]] or [http://forums.bistudio.com/showthread.php?t=67384 this user function] in {{arma1}}.</dd>
<spoiler text="Function backup">
<sqf>
// Get Pitch and Bank
// By General Barron (aw_barron@hotmail.com) and vektorboson
// Parameters: object
// Returns: [pitch, bank]
// Returns the pitch and bank of an object, in degrees.
// Yaw can be found using the getdir command.
// Pitch is 0 when the object is level; 90 when pointing straight
// up; and -90 when pointing straight down.
// Bank is 0 when level; 90 when the object is rolled to the right,
// -90 when rolled to the left, and 180 when rolled upside down.
 
// extract parameters
private ["_obj", "_pitch", "_bank", "_yaw", "_vdir", "_vup", "_sign", "_rotate"];
_obj = _this;
// find the yaw (direction) of the object
// note that map compass directions go CW, while coordinate (vector) directions go CCW
// so when we rotate vectors by this much (below), we are actually adjusting the vector as though the object were pointing north
_yaw = getDir _obj;
 
//----------------------------
// function to rotate a 2d vector around the origin
//----------------------------
_rotate =
{
private ["_v", "_d", "_x", "_y"];
 
// extract parameters
_v = +(_this select 0); // we don't want to modify the originally passed vector
_d = _this select 1;
 
// extract old x/y values
_x = _v select 0;
_y = _v select 1;
// if vector is 3d, we don't want to mess up the last element
_v set [0, (cos _d)*_x - (sin _d)*_y];
_v set [1, (sin _d)*_x + (cos _d)*_y];
// return new vector
_v;
};
//----------------------------
// find pitch
//----------------------------
// get vector dir (pitch)
_vdir = vectorDir _obj;
 
// rotate X & Y around the origin according to the object's yaw (direction)
// we will then be left with the objects vectordir if it were facing north
_vdir = [_vdir, _yaw] call _rotate;
 
// if we reverse the process we used to set pitch when facing north, we can now get pitch
if ((_vdir select 1) != 0) then
{
_pitch = atan ((_vdir select 2) / (_vdir select 1));
}
else
{
// we need a fail-safe here to prevent divide-by-zero errors
// if X is zero, that means pitch is +/-90, we just need to figure out which one
if ((_vdir select 2) >= 0) then { _pitch = 90 } else { _pitch = -90 };
};
 
//----------------------------
// find bank
//----------------------------
// get vector up (bank)
_vup = vectorUp _obj;
 
// rotate X & Y around the origin according to the object's yaw (direction)
// we will then be left with the objects vectorup if it were facing north
_vup = [_vup, _yaw] call _rotate;
 
// rotate Y & Z around according to the object's pitch
_vup = [_vup select 0] + ([[_vup select 1, _vup select 2], 360 - _pitch] call _rotate);
 
// if we reverse the process we used to set bank when facing north, we can now get bank
if ((_vup select 2) != 0) then
{
_bank = atan ((_vup select 0) / (_vup select 2));
}
else
{
// we need a fail-safe here to prevent divide-by-zero errors
// if Z is zero, that means bank is +/-90, we just need to figure out which one
if ((_vdir select 2) >= 0) then { _bank = 90 } else { _bank = -90 };
};


<!-- Note Section END -->
// if we are rolled over (abs bank > 90), we need to adjust our result
</dl>
if ((_vup select 2) < 0) then
{
_sign = [1, -1] select (_bank < 0);
_bank = _bank - _sign*180;
};


{{GameCategory|arma1|Scripting Commands}}
//----------------------------
{{GameCategory|arma2|Scripting Commands}}
// return value
{{GameCategory|arma3|Scripting Commands}}
//----------------------------
{{GameCategory|tkoh|Scripting Commands}}
[_pitch, _bank];
</sqf>
</spoiler>
}}

Latest revision as of 00:26, 2 February 2024

Hover & click on the images for description

Description

Description:
Sets camera dive angle. Does not commit changes.
This command is non-functional!
Groups:
Broken CommandsCamera Control

Syntax

Syntax:
camera camSetDive dive
Parameters:
camera: Object
dive: Number
Return Value:
Nothing

Examples

Example 1:
_camera camSetDive -0.1;

Additional Information

See also:
camSetBank setVectorUp

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Kronzky - c
Posted on Apr 15, 2010 - 18:29 (UTC)
Command is non-functional.
Instead use setVectorUp or this user function in Armed Assault.

// Get Pitch and Bank // By General Barron (aw_barron@hotmail.com) and vektorboson // Parameters: object // Returns: [pitch, bank] // Returns the pitch and bank of an object, in degrees. // Yaw can be found using the getdir command. // Pitch is 0 when the object is level; 90 when pointing straight // up; and -90 when pointing straight down. // Bank is 0 when level; 90 when the object is rolled to the right, // -90 when rolled to the left, and 180 when rolled upside down. // extract parameters private ["_obj", "_pitch", "_bank", "_yaw", "_vdir", "_vup", "_sign", "_rotate"]; _obj = _this; // find the yaw (direction) of the object // note that map compass directions go CW, while coordinate (vector) directions go CCW // so when we rotate vectors by this much (below), we are actually adjusting the vector as though the object were pointing north _yaw = getDir _obj; //---------------------------- // function to rotate a 2d vector around the origin //---------------------------- _rotate = { private ["_v", "_d", "_x", "_y"]; // extract parameters _v = +(_this select 0); // we don't want to modify the originally passed vector _d = _this select 1; // extract old x/y values _x = _v select 0; _y = _v select 1; // if vector is 3d, we don't want to mess up the last element _v set [0, (cos _d)*_x - (sin _d)*_y]; _v set [1, (sin _d)*_x + (cos _d)*_y]; // return new vector _v; }; //---------------------------- // find pitch //---------------------------- // get vector dir (pitch) _vdir = vectorDir _obj; // rotate X & Y around the origin according to the object's yaw (direction) // we will then be left with the objects vectordir if it were facing north _vdir = [_vdir, _yaw] call _rotate; // if we reverse the process we used to set pitch when facing north, we can now get pitch if ((_vdir select 1) != 0) then { _pitch = atan ((_vdir select 2) / (_vdir select 1)); } else { // we need a fail-safe here to prevent divide-by-zero errors // if X is zero, that means pitch is +/-90, we just need to figure out which one if ((_vdir select 2) >= 0) then { _pitch = 90 } else { _pitch = -90 }; }; //---------------------------- // find bank //---------------------------- // get vector up (bank) _vup = vectorUp _obj; // rotate X & Y around the origin according to the object's yaw (direction) // we will then be left with the objects vectorup if it were facing north _vup = [_vup, _yaw] call _rotate; // rotate Y & Z around according to the object's pitch _vup = [_vup select 0] + ([[_vup select 1, _vup select 2], 360 - _pitch] call _rotate); // if we reverse the process we used to set bank when facing north, we can now get bank if ((_vup select 2) != 0) then { _bank = atan ((_vup select 0) / (_vup select 2)); } else { // we need a fail-safe here to prevent divide-by-zero errors // if Z is zero, that means bank is +/-90, we just need to figure out which one if ((_vdir select 2) >= 0) then { _bank = 90 } else { _bank = -90 }; }; // if we are rolled over (abs bank > 90), we need to adjust our result if ((_vup select 2) < 0) then { _sign = [1, -1] select (_bank < 0); _bank = _bank - _sign*180; }; //---------------------------- // return value //---------------------------- [_pitch, _bank];

↑ Back to spoiler's top