Transform.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. #ifndef TRANSFORM_H_
  2. #define TRANSFORM_H_
  3. #include "Ref.h"
  4. #include "Vector3.h"
  5. #include "Quaternion.h"
  6. #include "Matrix.h"
  7. #include "AnimationTarget.h"
  8. namespace gameplay
  9. {
  10. class BoundingBox;
  11. class BoundingSphere;
  12. class NodeCloneContext;
  13. /**
  14. * Defines a 3-dimensional transformation.
  15. *
  16. * When using the scale, rotate, and translate methods, only the
  17. * transform's corresponding scale, rotation, or translation
  18. * component is updated (it is not as if the scale, rotate, or translate
  19. * is applied to the transform's matrix).
  20. *
  21. * Note: To construct a Transform from a transformation matrix stored as a Matrix,
  22. * first decompose the Matrix into its separate translation, scale, and rotation
  23. * components using matrix.decompose(Vector3, Quaternion, Vector3) and then pass
  24. * those arguments to the appropriate constructor or set methods of Transform.
  25. */
  26. class Transform : public AnimationTarget
  27. {
  28. public:
  29. /**
  30. * Scale animation property. Data=scale
  31. */
  32. static const int ANIMATE_SCALE_UNIT = 0;
  33. /**
  34. * Scale animation property. Data=sx,sy,sz
  35. */
  36. static const int ANIMATE_SCALE = 1;
  37. /**
  38. * Scale x animation property. Data=sx
  39. */
  40. static const int ANIMATE_SCALE_X = 2;
  41. /**
  42. * Scale y animation property. Data=sy
  43. */
  44. static const int ANIMATE_SCALE_Y = 3;
  45. /**
  46. * Scale z animation property. Data=sz
  47. */
  48. static const int ANIMATE_SCALE_Z = 4;
  49. /**
  50. * Rotation animation property. Data=qx,qy,qz,qw (as quaternion).
  51. */
  52. static const int ANIMATE_ROTATE = 8;
  53. /**
  54. * Translate animation property. Data=tx,ty,tz
  55. */
  56. static const int ANIMATE_TRANSLATE = 9;
  57. /**
  58. * Translate x animation property. Data=tx
  59. */
  60. static const int ANIMATE_TRANSLATE_X = 10;
  61. /**
  62. * Translate y animation property. Data=ty
  63. */
  64. static const int ANIMATE_TRANSLATE_Y = 11;
  65. /**
  66. * Translate z animation property. Data=tz
  67. */
  68. static const int ANIMATE_TRANSLATE_Z = 12;
  69. /**
  70. * Rotation + Translation animation property (Rigid Body). Data=qx,qy,qz,qw,tx,ty,tz
  71. */
  72. static const int ANIMATE_ROTATE_TRANSLATE = 16;
  73. /**
  74. * Scale, Rotation + Translation animation property. Data=sx,sy,sz,qx,qy,qz,qw,tx,ty,tz
  75. */
  76. static const int ANIMATE_SCALE_ROTATE_TRANSLATE = 17;
  77. /**
  78. * Listener interface for Transform events.
  79. */
  80. class Listener
  81. {
  82. public:
  83. virtual ~Listener() { }
  84. /**
  85. * Handles when an transform has changed.
  86. *
  87. * @param transform The Transform object that was changed.
  88. * @param cookie Cookie value that was specified when the listener was registered.
  89. */
  90. virtual void transformChanged(Transform* transform, long cookie) = 0;
  91. };
  92. /**
  93. * Constructs the identity transform.
  94. */
  95. Transform();
  96. /**
  97. * Constructs a new transform from the specified values.
  98. *
  99. * @param scale The scale vector.
  100. * @param rotation The rotation quaternion.
  101. * @param translation The translation vector.
  102. */
  103. Transform(const Vector3& scale, const Quaternion& rotation, const Vector3& translation);
  104. /**
  105. * Constructs a new transform from the specified values.
  106. *
  107. * @param scale The scale vector.
  108. * @param rotation The rotation matrix.
  109. * @param translation The translation vector.
  110. */
  111. Transform(const Vector3& scale, const Matrix& rotation, const Vector3& translation);
  112. /**
  113. * Constructs a new transform from the given transform.
  114. *
  115. * @param copy The transform to copy.
  116. */
  117. Transform(const Transform& copy);
  118. /**
  119. * Destructor.
  120. */
  121. virtual ~Transform();
  122. /**
  123. * Gets the matrix corresponding to this transform.
  124. *
  125. * The matrix returned from this method is mathematically equivalent
  126. * to this transform only as long as this transform is not changed
  127. * (i.e. by calling set(), setScale(), translate(), rotateX(), etc.).
  128. * Once the transform has been changed, the user must call getMatrix()
  129. * again to get the updated matrix. Also note that changing the matrix
  130. * returned from this method does not change this transform.
  131. *
  132. * @return The matrix of this transform.
  133. */
  134. const Matrix& getMatrix() const;
  135. /**
  136. * Returns the scale for this transform.
  137. */
  138. const Vector3& getScale() const;
  139. /**
  140. * Gets the scale component of this transform in the specified vector.
  141. *
  142. * @param scale The vector to store the scale in.
  143. */
  144. void getScale(Vector3* scale) const;
  145. /**
  146. * Gets the scale factor along the x-axis of this transform.
  147. *
  148. * @return The scale factor along the x-axis.
  149. */
  150. float getScaleX() const;
  151. /**
  152. * Gets the scale factor along the y-axis of this transform.
  153. *
  154. * @return The scale factor along the y-axis.
  155. */
  156. float getScaleY() const;
  157. /**
  158. * Gets the scale factor along the z-axis of this transform.
  159. *
  160. * @return The scale factor along the z-axis.
  161. */
  162. float getScaleZ() const;
  163. /**
  164. * Returns the rotation for this transform.
  165. */
  166. const Quaternion& getRotation() const;
  167. /**
  168. * Gets the rotation component of this transform in the specified quaternion.
  169. *
  170. * @param rotation The quaternion to store the rotation in.
  171. */
  172. void getRotation(Quaternion* rotation) const;
  173. /**
  174. * Gets the rotation component of this transform in the specified matrix.
  175. *
  176. * @param rotation The matrix to store the rotation in.
  177. */
  178. void getRotation(Matrix* rotation) const;
  179. /**
  180. * Gets the angle of rotation, and stores the axis of rotation
  181. * of this transform in the specified Vector3.
  182. *
  183. * @param axis The vector to store the axis of rotation.
  184. *
  185. * @return The angle of rotation.
  186. */
  187. float getRotation(Vector3* axis) const;
  188. /**
  189. * Returns the translation for this transform.
  190. */
  191. const Vector3& getTranslation() const;
  192. /**
  193. * Gets the translation component of this transform in the specified vector.
  194. *
  195. * @param translation The vector to store the translation in.
  196. */
  197. void getTranslation(Vector3* translation) const;
  198. /**
  199. * Gets the translation factor along the x-axis of this transform.
  200. *
  201. * @return The translation factor along the x-axis.
  202. */
  203. float getTranslationX() const;
  204. /**
  205. * Gets the translation factor along the y-axis of this transform.
  206. *
  207. * @return The translation factor along the y-axis.
  208. */
  209. float getTranslationY() const;
  210. /**
  211. * Gets the translation factor along the z-axis of this transform.
  212. *
  213. * @return The translation factor along the z-axis.
  214. */
  215. float getTranslationZ() const;
  216. /**
  217. * Returns the forward vector for this Transform.
  218. */
  219. Vector3 getForwardVector() const;
  220. /**
  221. * Returns the forward vector for this Transform.
  222. *
  223. * @param dst The vector to store the result in.
  224. */
  225. void getForwardVector(Vector3* dst) const;
  226. /**
  227. * Returns the back vector for this transform.
  228. */
  229. Vector3 getBackVector() const;
  230. /**
  231. * Returns the back vector for this Transform.
  232. *
  233. * @param dst The vector to store the result in.
  234. */
  235. void getBackVector(Vector3* dst) const;
  236. /**
  237. * Returns the up vector for this Transform.
  238. */
  239. Vector3 getUpVector() const;
  240. /**
  241. * Returns the up vector for this Transform.
  242. *
  243. * @param dst The vector to store the result in.
  244. */
  245. void getUpVector(Vector3* dst) const;
  246. /**
  247. * Returns the down vector for this transform.
  248. */
  249. Vector3 getDownVector() const;
  250. /**
  251. * Returns the down vector for this Transform.
  252. *
  253. * @param dst The vector to store the result in.
  254. */
  255. void getDownVector(Vector3* dst) const;
  256. /**
  257. * Returns the left vector for this Transform.
  258. */
  259. Vector3 getLeftVector() const;
  260. /**
  261. * Returns the left vector for this Transform.
  262. *
  263. * @param dst The vector to store the result in.
  264. */
  265. void getLeftVector(Vector3* dst) const;
  266. /**
  267. * Returns the right vector for this transform.
  268. */
  269. Vector3 getRightVector() const;
  270. /**
  271. * Returns the right vector for this Transform.
  272. *
  273. * @param dst The vector to store the result in.
  274. */
  275. void getRightVector(Vector3* dst) const;
  276. /**
  277. * Rotates this transform's rotation component by the given rotation.
  278. *
  279. * @param qx The quaternion x value.
  280. * @param qy The quaternion y value.
  281. * @param qz The quaternion z value.
  282. * @param qw The quaternion w value.
  283. */
  284. void rotate(float qx, float qy, float qz, float qw);
  285. /**
  286. * Rotates this transform's rotation component by the given rotation.
  287. *
  288. * @param rotation The rotation to rotate by (as a quaternion).
  289. */
  290. void rotate(const Quaternion& rotation);
  291. /**
  292. * Rotates this transform's rotation component by the given rotation
  293. * (defined as an axis angle rotation).
  294. *
  295. * @param axis The axis to rotate about.
  296. * @param angle The axis to rotate about (in radians).
  297. */
  298. void rotate(const Vector3& axis, float angle);
  299. /**
  300. * Rotates this transform's rotation component by the given rotation.
  301. *
  302. * @param rotation The rotation to rotate by (as a matrix).
  303. */
  304. void rotate(const Matrix& rotation);
  305. /**
  306. * Rotates this transform's rotation component by the given angle
  307. * about the x-axis.
  308. *
  309. * @param angle The angle to rotate by about the x-axis (in radians).
  310. */
  311. void rotateX(float angle);
  312. /**
  313. * Rotates this transform's rotation component by the given angle
  314. * about the y-axis.
  315. *
  316. * @param angle The angle to rotate by about the y-axis (in radians).
  317. */
  318. void rotateY(float angle);
  319. /**
  320. * Rotates this transform's rotation component by the given angle
  321. * about the z-axis.
  322. *
  323. * @param angle The angle to rotate by about the z-axis (in radians).
  324. */
  325. void rotateZ(float angle);
  326. /**
  327. * Scales this transform's scale component by the given factor along all axes.
  328. *
  329. * @param scale The factor to scale by along all axis.
  330. */
  331. void scale(float scale);
  332. /**
  333. * Scales this transform's scale component by the given factors along each axis.
  334. *
  335. * @param sx The factor to scale by in the x direction.
  336. * @param sy The factor to scale by in the y direction.
  337. * @param sz The factor to scale by in the z direction.
  338. */
  339. void scale(float sx, float sy, float sz);
  340. /**
  341. * Scales this transform's scale component by the given scale vector.
  342. *
  343. * @param scale The vector to scale by.
  344. */
  345. void scale(const Vector3& scale);
  346. /**
  347. * Scales this transform's scale component by the given scale
  348. * factor along the x axis.
  349. *
  350. * @param sx The scale factor along the x axis.
  351. */
  352. void scaleX(float sx);
  353. /**
  354. * Scales this transform's scale component by the given scale
  355. * factor along the y axis.
  356. *
  357. * @param sy The scale factor along the y axis.
  358. */
  359. void scaleY(float sy);
  360. /**
  361. * Scales this transform's scale component by the given scale
  362. * factor along the z axis.
  363. *
  364. * @param sz The scale factor along the z axis.
  365. */
  366. void scaleZ(float sz);
  367. /**
  368. * Sets the transform to the specified values.
  369. *
  370. * @param scale The scale vector.
  371. * @param rotation The rotation quaternion.
  372. * @param translation The translation vector.
  373. */
  374. void set(const Vector3& scale, const Quaternion& rotation, const Vector3& translation);
  375. /**
  376. * Sets the transform to the specified values.
  377. *
  378. * @param scale The scale vector.
  379. * @param rotation The rotation matrix.
  380. * @param translation The translation vector.
  381. */
  382. void set(const Vector3& scale, const Matrix& rotation, const Vector3& translation);
  383. /**
  384. * Sets the transform to the specified values.
  385. *
  386. * @param scale The scale vector.
  387. * @param axis The axis of rotation.
  388. * @param angle The angle of rotation (in radians).
  389. * @param translation The translation vector.
  390. */
  391. void set(const Vector3& scale, const Vector3& axis, float angle, const Vector3& translation);
  392. /**
  393. * Sets this transform to the specified transform.
  394. *
  395. * @param transform The transform to set this transform to.
  396. */
  397. void set(const Transform& transform);
  398. /**
  399. * Sets this transform to the identity transform.
  400. */
  401. void setIdentity();
  402. /**
  403. * Sets the scale factor along all axes for this transform
  404. * to the specified value.
  405. *
  406. * @param scale The scale factor along all axes.
  407. */
  408. void setScale(float scale);
  409. /**
  410. * Sets the scale component of this transform to the
  411. * specified values.
  412. *
  413. * @param sx The scale factor along the x axis.
  414. * @param sy The scale factor along the y axis.
  415. * @param sz The scale factor along the z axis.
  416. */
  417. void setScale(float sx, float sy, float sz);
  418. /**
  419. * Sets the scale component of this transform to the
  420. * specified scale vector.
  421. *
  422. * @param scale The scale vector.
  423. */
  424. void setScale(const Vector3& scale);
  425. /**
  426. * Sets the scale factor along the x-axis for this transform
  427. * to the specified value.
  428. *
  429. * @param sx The scale factor along the x-axis.
  430. */
  431. void setScaleX(float sx);
  432. /**
  433. * Sets the scale factor along the y-axis for this transform
  434. * to the specified value.
  435. *
  436. * @param sy The scale factor along the y-axis.
  437. */
  438. void setScaleY(float sy);
  439. /**
  440. * Sets the scale factor along the z-axis for this transform
  441. * to the specified value.
  442. *
  443. * @param sz The scale factor along the z-axis.
  444. */
  445. void setScaleZ(float sz);
  446. /**
  447. * Sets the rotation component for this transform to the
  448. * specified values.
  449. *
  450. * @param qx The quaternion x value.
  451. * @param qy The quaternion y value.
  452. * @param qz The quaternion z value.
  453. * @param qw The quaternion w value.
  454. */
  455. void setRotation(float qx, float qy, float qz, float qw);
  456. /**
  457. * Sets the rotation component for this transform to the
  458. * specified values.
  459. *
  460. * @param rotation The rotation as a quaternion.
  461. */
  462. void setRotation(const Quaternion& rotation);
  463. /**
  464. * Sets the rotation component for this transform to the
  465. * specified values.
  466. *
  467. * @param rotation The rotation as a matrix.
  468. */
  469. void setRotation(const Matrix& rotation);
  470. /**
  471. * Sets the rotation component for this transform to the rotation from the specified axis and angle.
  472. *
  473. * @param axis The axis of rotation.
  474. * @param angle The angle of rotation (in radians).
  475. */
  476. void setRotation(const Vector3& axis, float angle);
  477. /**
  478. * Sets the translation component for this transform to the
  479. * specified translation vector.
  480. *
  481. * @param translation The translation vector.
  482. */
  483. void setTranslation(const Vector3& translation);
  484. /**
  485. * Sets the translation component for this transform
  486. * to the specified values.
  487. *
  488. * @param tx The translation amount in the x direction.
  489. * @param ty The translation amount in the y direction.
  490. * @param tz The translation amount in the z direction.
  491. */
  492. void setTranslation(float tx, float ty, float tz);
  493. /**
  494. * Sets the translation factor along the x-axis for this
  495. * transform to the specified value.
  496. *
  497. * @param tx The translation factor along the x-axis.
  498. */
  499. void setTranslationX(float tx);
  500. /**
  501. * Sets the translation factor along the y-axis for this
  502. * transform to the specified value.
  503. *
  504. * @param ty The translation factor along the y-axis.
  505. */
  506. void setTranslationY(float ty);
  507. /**
  508. * Sets the translation factor along the z-axis for this
  509. * transform to the specified value.
  510. *
  511. * @param tz The translation factor along the z-axis.
  512. */
  513. void setTranslationZ(float tz);
  514. /**
  515. * Translates this transform's translation component by the
  516. * given values along each axis.
  517. *
  518. * @param tx The amount to translate along the x axis.
  519. * @param ty The amount to translate along the y axis.
  520. * @param tz The amount to translate along the z axis.
  521. */
  522. void translate(float tx, float ty, float tz);
  523. /**
  524. * Translates this transform's translation component by the
  525. * given translation vector.
  526. *
  527. * @param translation The amount to translate.
  528. */
  529. void translate(const Vector3& translation);
  530. /**
  531. * Translates this transform's translation component by the
  532. * given value along the x axis.
  533. *
  534. * @param tx The amount to translate along the x axis.
  535. */
  536. void translateX(float tx);
  537. /**
  538. * Translates this transform's translation component by the
  539. * given value along the y axis.
  540. *
  541. * @param ty The amount to translate along the y axis.
  542. */
  543. void translateY(float ty);
  544. /**
  545. * Translates this transform's translation component by the
  546. * given value along the z axis.
  547. *
  548. * @param tz The amount to translate along the z axis.
  549. */
  550. void translateZ(float tz);
  551. /**
  552. * Translates the camera left by the specified amount in the x-axis.
  553. *
  554. * @param amount The amount to translate.
  555. */
  556. void translateLeft(float amount);
  557. /**
  558. * Translates the camera up by the specified amount in the y-axis.
  559. *
  560. * @param amount The amount to translate.
  561. */
  562. void translateUp(float amount);
  563. /**
  564. * Translates the camera foward by the specified amount in the z-axis.
  565. *
  566. * @param amount The amount to translate.
  567. */
  568. void translateForward(float amount);
  569. /**
  570. * Transforms the specified point and stores the
  571. * result in the original point.
  572. *
  573. * @param point The point to transform.
  574. */
  575. void transformPoint(Vector3* point);
  576. /**
  577. * Transforms the specified point and stores the
  578. * result in the specified destination point.
  579. *
  580. * @param point The point to transform.
  581. * @param dst The point to store the result in.
  582. */
  583. void transformPoint(const Vector3& point, Vector3* dst);
  584. /**
  585. * Transforms the specified vector and stores the
  586. * result in the original vector.
  587. *
  588. * @param vector The vector to transform.
  589. */
  590. void transformVector(Vector3* vector);
  591. /**
  592. * Transforms the specified vector and stores the result
  593. * in the original vector.
  594. *
  595. * @param transformVector The vector to transform.
  596. * @param dst The vector to store the result in.
  597. */
  598. void transformVector(const Vector3& transformVector, Vector3* dst);
  599. /**
  600. * Transforms the specified vector and stores the result
  601. * in the specified destination vector.
  602. *
  603. * @param x The x factor to transform.
  604. * @param y The y factor to transform.
  605. * @param z The z factor to transform.
  606. * @param w The w factor to transform.
  607. * @param dst The vector to store the result in.
  608. */
  609. void transformVector(float x, float y, float z, float w, Vector3* dst);
  610. /**
  611. * Adds a transform listener.
  612. *
  613. * @param listener The listener to add.
  614. * @param cookie An optional long value that is passed to the specified listener when it is called.
  615. */
  616. void addListener(Transform::Listener* listener, long cookie = 0);
  617. /**
  618. * Removes a transform listener.
  619. */
  620. void removeListener(Transform::Listener* listener);
  621. /**
  622. * @see AnimationTarget#getAnimationPropertyComponentCount
  623. */
  624. unsigned int getAnimationPropertyComponentCount(int propertyId) const;
  625. /**
  626. * @see AnimationTarget#getAnimationProperty
  627. */
  628. void getAnimationPropertyValue(int propertyId, AnimationValue* value);
  629. /**
  630. * @see AnimationTarget#setAnimationProperty
  631. */
  632. void setAnimationPropertyValue(int propertyId, AnimationValue* value, float blendWeight = 1.0f);
  633. protected:
  634. /**
  635. * Transform Listener.
  636. */
  637. struct TransformListener
  638. {
  639. /**
  640. * Listener for Transform events.
  641. */
  642. Listener* listener;
  643. /**
  644. * An optional long value that is specified to the Listener's callback.
  645. */
  646. long cookie;
  647. };
  648. /**
  649. * Defines the matrix dirty bits for marking the translation, scale and rotation
  650. * components of the Transform.
  651. */
  652. enum MatrixDirtyBits
  653. {
  654. DIRTY_TRANSLATION = 0x01,
  655. DIRTY_SCALE = 0x02,
  656. DIRTY_ROTATION = 0x04,
  657. };
  658. /**
  659. * Marks this transform as dirty and fires transformChanged().
  660. */
  661. void dirty(char matrixDirtyBits);
  662. /**
  663. * Called when the transform changes.
  664. */
  665. virtual void transformChanged();
  666. /**
  667. * Copies from data from this node into transform for the purpose of cloning.
  668. *
  669. * @param transform The transform to copy into.
  670. * @param context The clone context.
  671. */
  672. void cloneInto(Transform* transform, NodeCloneContext &context) const;
  673. /**
  674. * The scale component of the Transform.
  675. */
  676. Vector3 _scale;
  677. /**
  678. * The rotation component of the Transform.
  679. */
  680. Quaternion _rotation;
  681. /**
  682. * The translation component of the Transform.
  683. */
  684. Vector3 _translation;
  685. /**
  686. * The Matrix representation of the Transform.
  687. */
  688. mutable Matrix _matrix;
  689. /**
  690. * Matrix dirty bits flag.
  691. */
  692. mutable char _matrixDirtyBits;
  693. /**
  694. * List of TransformListener's on the Transform.
  695. */
  696. std::list<TransformListener>* _listeners;
  697. private:
  698. static const char ANIMATION_SCALE_X_BIT = 0x01;
  699. static const char ANIMATION_SCALE_Y_BIT = 0x02;
  700. static const char ANIMATION_SCALE_Z_BIT = 0x04;
  701. static const char ANIMATION_ROTATION_BIT = 0x08;
  702. static const char ANIMATION_TRANSLATION_X_BIT = 0x10;
  703. static const char ANIMATION_TRANSLATION_Y_BIT = 0x20;
  704. static const char ANIMATION_TRANSLATION_Z_BIT = 0x40;
  705. void applyAnimationValueScaleX(float sx, float blendWeight);
  706. void applyAnimationValueScaleY(float sy, float blendWeight);
  707. void applyAnimationValueScaleZ(float sz, float blendWeight);
  708. void applyAnimationValueRotation(Quaternion* q, float blendWeight);
  709. void applyAnimationValueTranslationX(float tx, float blendWeight);
  710. void applyAnimationValueTranslationY(float ty, float blendWeight);
  711. void applyAnimationValueTranslationZ(float tz, float blendWeight);
  712. };
  713. }
  714. #endif