123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /****************************************************************************
- Copyright (c) 2008-2010 Ricardo Quesada
- Copyright (c) 2010-2012 cocos2d-x.org
- Copyright (c) 2011 Zynga Inc.
- Copyright (c) 2013-2016 Chukong Technologies Inc.
- Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
-
- http://www.cocos2d-x.org
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #ifndef __CCCAMERA_ACTION_H__
- #define __CCCAMERA_ACTION_H__
- #include "2d/CCActionInterval.h"
- #include "math/CCMath.h"
- NS_CC_BEGIN
- class Camera;
- /**
- * @addtogroup actions
- * @{
- */
- /**
- *@brief Base class for Camera actions.
- *@ingroup Actions
- */
- class CC_DLL ActionCamera : public ActionInterval
- {
- public:
- /**
- * @js ctor
- * @lua new
- */
- ActionCamera();
- /**
- * @js NA
- * @lua NA
- */
- virtual ~ActionCamera(){};
- // Overrides
- virtual void startWithTarget(Node *target) override;
- virtual ActionCamera * reverse() const override;
- virtual ActionCamera *clone() const override;
- /* Sets the Eye value of the Camera.
- *
- * @param eye The Eye value of the Camera.
- * @js NA
- */
- void setEye(const Vec3 &eye);
- void setEye(float x, float y, float z);
- /* Returns the Eye value of the Camera.
- *
- * @return The Eye value of the Camera.
- * @js NA
- */
- const Vec3& getEye() const { return _eye; }
- /* Sets the Center value of the Camera.
- *
- * @param center The Center value of the Camera.
- * @js NA
- */
- void setCenter(const Vec3 ¢er);
- /* Returns the Center value of the Camera.
- *
- * @return The Center value of the Camera.
- * @js NA
- */
- const Vec3& getCenter() const { return _center; }
- /* Sets the Up value of the Camera.
- *
- * @param up The Up value of the Camera.
- * @js NA
- */
- void setUp(const Vec3 &up);
- /* Returns the Up value of the Camera.
- *
- * @return The Up value of the Camera.
- * @js NA
- */
- const Vec3& getUp() const { return _up; }
- protected:
- void restore();
- void updateTransform();
- Vec3 _center;
- Vec3 _eye;
- Vec3 _up;
- };
- /** @class OrbitCamera
- *
- * @brief OrbitCamera action.
- * Orbits the camera around the center of the screen using spherical coordinates.
- * @ingroup Actions
- */
- class CC_DLL OrbitCamera : public ActionCamera
- {
- public:
- /** Creates a OrbitCamera action with radius, delta-radius, z, deltaZ, x, deltaX.
- *
- * @param t Duration in seconds.
- * @param radius The start radius.
- * @param deltaRadius The delta radius.
- * @param angleZ The start angle in Z.
- * @param deltaAngleZ The delta angle in Z.
- * @param angleX The start angle in X.
- * @param deltaAngleX The delta angle in X.
- * @return An OrbitCamera.
- */
- static OrbitCamera* create(float t, float radius, float deltaRadius, float angleZ, float deltaAngleZ, float angleX, float deltaAngleX);
-
- /** Positions the camera according to spherical coordinates.
- *
- * @param r The spherical radius.
- * @param zenith The spherical zenith.
- * @param azimuth The spherical azimuth.
- */
- void sphericalRadius(float *r, float *zenith, float *azimuth);
- // Overrides
- OrbitCamera *clone() const override;
- virtual void startWithTarget(Node *target) override;
- virtual void update(float time) override;
-
- CC_CONSTRUCTOR_ACCESS:
- /**
- * @js ctor
- */
- OrbitCamera();
- /**
- * @js NA
- * @lua NA
- */
- virtual ~OrbitCamera();
-
- /** Initializes a OrbitCamera action with radius, delta-radius, z, deltaZ, x, deltaX. */
- bool initWithDuration(float t, float radius, float deltaRadius, float angleZ, float deltaAngleZ, float angleX, float deltaAngleX);
- protected:
- float _radius;
- float _deltaRadius;
- float _angleZ;
- float _deltaAngleZ;
- float _angleX;
- float _deltaAngleX;
- float _radZ;
- float _radDeltaZ;
- float _radX;
- float _radDeltaX;
- };
- // end of actions group
- /// @}
- NS_CC_END
- #endif //__CCCAMERA_ACTION_H__
|