Difference between revisions of "NiAVObjectSetLocalRotation"
Jump to navigation
Jump to search
imported>DragoonWraith m (NifSetNthChildLocalRotationTEMP moved to NiAVObjectSetLocalRotation: alpha 5 version) |
imported>DragoonWraith |
||
Line 2: | Line 2: | ||
'''Syntax''' | '''Syntax''' | ||
(bool:success) | (bool:success) NiAVObjectSetLocalRotationTEMP float:a11 float:a12 float:a13 \ | ||
float:a21 float:a22 float:a23 \ | |||
float:a31 float:a32 float:a33 short:nifID ''short:blockID'' | |||
(bool:success) NiAVObjSetLocRotT float:a11 float:a12 float:a13 \ | |||
float:a21 float:a22 float:a23 \ | |||
float:a31 float:a32 float:a33 short:nifID ''short:blockID'' | |||
Sets the local rotation of the specified | Sets the local rotation of the specified <tt>NiAVObject</tt>-derived block. Since <tt>blockID</tt> defaults to 0, the NIF's root <tt>NiNode</tt>, and <tt>NiNode</tt> is derived from <tt>NiAVObject</tt>, this function will change the local rotation of the NIF's root if called with no explicit <tt>blockID</tt>. | ||
== Example == | == Example == | ||
This script will rotate each of the root's children, which are <tt>NiAVObject</tt> blocks, 180° about the X axis. This will effectively flip the NIF upside-down. | |||
array_var R | |||
array_var children | |||
array_var child | |||
short nifID | |||
short blockID | |||
... | |||
let R := GenerateRotationMatrix X 180 | |||
let children := NiNodeGetChildren nifID | |||
foreach child <- children | |||
let blockID := *child | |||
let locRot := NiAVObjectGetLocalRotation nifID blockID | |||
let locRot := MatrixMultiply R locRot ; order matters | |||
NiAVObjectSetLocalRotation locRot nifID blockID | |||
loop | |||
== Notes == | == Notes == | ||
* Because OBSE Plug-Ins cannot currently accept arrays as arguments, | * Because OBSE Plug-Ins cannot currently accept arrays as arguments, <tt>NiAVObjectSetLocalRotation</tt>, as it would properly exist, cannot be implemented. <tt>NiAVObjectSetLocalRotationTEMP</tt> is provided as an alternative; it will be deprecated in favor of <tt>NiAVObjectSetLocalRotation</tt> when OBSE adds the ability to take array arguments, but backwards compatibility will be maintained. | ||
* Due to Wiki software limitations, the syntax | ** Due to Wiki software limitations, the syntax for <tt>NiAVObjectSetLocalRotationTEMP</tt> cannot be written on one line. Furthermore, it would be hideous to attempt to read that way in any case. However, the CS '''requires''' that all 11 arguments appear on a single line. | ||
== See Also == | == See Also == | ||
* [[ | * [[NiAVObjectGetLocalRotation]] | ||
* [[ | * [[NiAVObjectSetLocalTransform]] | ||
* [[ | * [[NiAVObjectSetLocalTranslation]] | ||
* [[ | * [[NiAVObjectSetLocalScale]] | ||
== External Links == | == External Links == | ||
* [http://en.wikipedia.org/wiki/Rotation_representation#Rotation_matrix Wikipedia: Rotation Matrices] | * [http://en.wikipedia.org/wiki/Rotation_representation#Rotation_matrix Wikipedia: Rotation Matrices] | ||
[[Category:NifSE| | [[Category:NifSE|AVObjectSetLocalRotation]] | ||
[[Category:NifSE ( | [[Category:NifSE (NiAVObject)|SetLocalRotation]] |
Revision as of 14:51, 29 August 2010
This is a command from NifSE.
Syntax
(bool:success) NiAVObjectSetLocalRotationTEMP float:a11 float:a12 float:a13 \ float:a21 float:a22 float:a23 \ float:a31 float:a32 float:a33 short:nifID short:blockID (bool:success) NiAVObjSetLocRotT float:a11 float:a12 float:a13 \ float:a21 float:a22 float:a23 \ float:a31 float:a32 float:a33 short:nifID short:blockID
Sets the local rotation of the specified NiAVObject-derived block. Since blockID defaults to 0, the NIF's root NiNode, and NiNode is derived from NiAVObject, this function will change the local rotation of the NIF's root if called with no explicit blockID.
Example
This script will rotate each of the root's children, which are NiAVObject blocks, 180° about the X axis. This will effectively flip the NIF upside-down.
array_var R array_var children array_var child short nifID short blockID ... let R := GenerateRotationMatrix X 180 let children := NiNodeGetChildren nifID foreach child <- children let blockID := *child let locRot := NiAVObjectGetLocalRotation nifID blockID let locRot := MatrixMultiply R locRot ; order matters NiAVObjectSetLocalRotation locRot nifID blockID loop
Notes
- Because OBSE Plug-Ins cannot currently accept arrays as arguments, NiAVObjectSetLocalRotation, as it would properly exist, cannot be implemented. NiAVObjectSetLocalRotationTEMP is provided as an alternative; it will be deprecated in favor of NiAVObjectSetLocalRotation when OBSE adds the ability to take array arguments, but backwards compatibility will be maintained.
- Due to Wiki software limitations, the syntax for NiAVObjectSetLocalRotationTEMP cannot be written on one line. Furthermore, it would be hideous to attempt to read that way in any case. However, the CS requires that all 11 arguments appear on a single line.
See Also