mirror of https://github.com/axmolengine/axmol.git
issue #2377:Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into ScriptHandlerMgr
This commit is contained in:
commit
1761669832
8
AUTHORS
8
AUTHORS
|
@ -514,9 +514,14 @@ Developers:
|
|||
|
||||
hannon235 (Chris)
|
||||
Fixing a bug that the submenu of ExtensionTest in TestCpp can't scroll.
|
||||
Implements a socket.io client extension and adds a test case.
|
||||
|
||||
pktangyue
|
||||
Fixing a bug that CCScale9Sprite::setInsetLeft/XXX can't work for rotated sprite frame.
|
||||
Fixing a bug that Color and Opacity of Scale9Sprite will not be changed when it's added to NodeRGBA and run with FadeIn/Out actions.
|
||||
|
||||
jllust
|
||||
Fixing a bug that CCLabelBMFont crashes in glDrawElements of CCTextureAtlas::drawNumberOfQuads sometimes.
|
||||
|
||||
Retired Core Developers:
|
||||
WenSheng Yang
|
||||
|
@ -530,6 +535,9 @@ Retired Core Developers:
|
|||
RongHong Huang (flyingpaper)
|
||||
Author of cocos2d-xna and spent all his time on wp7.
|
||||
|
||||
michaelcontento
|
||||
[Android] use onWindowFocusChanged(bool) instead of onResume()/onPause()
|
||||
|
||||
|
||||
Cocos2d-x can not grow so fast without the active community.
|
||||
Thanks to all developers who report & trace bugs, discuss the engine usage in forum & QQ groups!
|
||||
|
|
|
@ -1 +1 @@
|
|||
52abc5a83d3eb466ded1fe2459f4d7185d50aea0
|
||||
1ab0fd6fdad74af8ce054c089d8571a05a7a04d8
|
|
@ -113,7 +113,6 @@ sprite_nodes/CCSpriteFrameCache.cpp \
|
|||
support/ccUTF8.cpp \
|
||||
support/CCNotificationCenter.cpp \
|
||||
support/CCProfiling.cpp \
|
||||
support/CCPointExtension.cpp \
|
||||
support/TransformUtils.cpp \
|
||||
support/user_default/CCUserDefaultAndroid.cpp \
|
||||
support/base64.cpp \
|
||||
|
|
|
@ -38,7 +38,6 @@ THE SOFTWARE.
|
|||
#include "CCScheduler.h"
|
||||
#include "ccMacros.h"
|
||||
#include "touch_dispatcher/CCTouchDispatcher.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/CCNotificationCenter.h"
|
||||
#include "layers_scenes_transitions_nodes/CCTransition.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
|
@ -1058,7 +1057,7 @@ void DisplayLinkDirector::startAnimation(void)
|
|||
|
||||
_invalid = false;
|
||||
#ifndef EMSCRIPTEN
|
||||
Application::sharedApplication()->setAnimationInterval(_animationInterval);
|
||||
Application::getInstance()->setAnimationInterval(_animationInterval);
|
||||
#endif // EMSCRIPTEN
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ THE SOFTWARE.
|
|||
#include "CCAction.h"
|
||||
#include "CCActionInterval.h"
|
||||
#include "base_nodes/CCNode.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCDirector.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
* Adapted from cocos2d-x to cocos2d-iphone by Ricardo Quesada
|
||||
*/
|
||||
#include "ccMacros.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCActionCatmullRom.h"
|
||||
|
||||
using namespace std;
|
||||
|
|
|
@ -23,7 +23,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
#include "CCActionGrid3D.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCDirector.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ THE SOFTWARE.
|
|||
#include "CCActionInterval.h"
|
||||
#include "sprite_nodes/CCSprite.h"
|
||||
#include "base_nodes/CCNode.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCStdC.h"
|
||||
#include "CCActionInstant.h"
|
||||
#include <stdarg.h>
|
||||
|
|
|
@ -23,7 +23,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
#include "CCActionPageTurn3D.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ THE SOFTWARE.
|
|||
#include "CCActionTiledGrid.h"
|
||||
#include "CCDirector.h"
|
||||
#include "ccMacros.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "effects/CCGrid.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
****************************************************************************/
|
||||
#include "cocoa/CCString.h"
|
||||
#include "CCNode.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/TransformUtils.h"
|
||||
#include "CCCamera.h"
|
||||
#include "effects/CCGrid.h"
|
||||
|
|
|
@ -1401,7 +1401,7 @@ public:
|
|||
virtual bool isCascadeColorEnabled() const;
|
||||
virtual void setCascadeColorEnabled(bool cascadeColorEnabled);
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {};
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);};
|
||||
virtual bool isOpacityModifyRGB() const { return false; };
|
||||
|
||||
protected:
|
||||
|
|
|
@ -334,31 +334,6 @@ public:
|
|||
static const Rect ZERO;
|
||||
};
|
||||
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Point CCPointMake(float x, float y)
|
||||
{
|
||||
return Point(x, y);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Size CCSizeMake(float width, float height)
|
||||
{
|
||||
return Size(width, height);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Rect CCRectMake(float x, float y, float width, float height)
|
||||
{
|
||||
return Rect(x, y, width, height);
|
||||
}
|
||||
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE const Point PointZero = Point::ZERO;
|
||||
|
||||
/* The "zero" size -- equivalent to Size(0, 0). */
|
||||
CC_DEPRECATED_ATTRIBUTE const Size SizeZero = Size::ZERO;
|
||||
|
||||
/* The "zero" rectangle -- equivalent to Rect(0, 0, 0, 0). */
|
||||
CC_DEPRECATED_ATTRIBUTE const Rect RectZero = Rect::ZERO;
|
||||
|
||||
// end of data_structure group
|
||||
/// @}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
*/
|
||||
|
||||
#include "CCDrawNode.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "CCGL.h"
|
||||
|
||||
|
@ -116,6 +115,7 @@ DrawNode::~DrawNode()
|
|||
|
||||
#if CC_TEXTURE_ATLAS_USE_VAO
|
||||
glDeleteVertexArrays(1, &_vao);
|
||||
ccGLBindVAO(0);
|
||||
_vao = 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ THE SOFTWARE.
|
|||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
#include "actions/CCActionCatmullRom.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include <string.h>
|
||||
#include <cmath>
|
||||
|
||||
|
|
|
@ -31,7 +31,6 @@ THE SOFTWARE.
|
|||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/ccGLStateCache.h"
|
||||
#include "CCGL.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/TransformUtils.h"
|
||||
#include "kazmath/kazmath.h"
|
||||
#include "kazmath/GL/matrix.h"
|
||||
|
|
|
@ -0,0 +1,463 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2013 cocos2d-x.org
|
||||
|
||||
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.
|
||||
****************************************************************************/
|
||||
|
||||
/** Add deprecated global functions and variables here
|
||||
*/
|
||||
|
||||
#ifndef __COCOS2D_CCDEPRECATED_H__
|
||||
#define __COCOS2D_CCDEPRECATED_H__
|
||||
|
||||
#include <math.h>
|
||||
#include "cocoa/CCGeometry.h"
|
||||
#include "ccTypes.h"
|
||||
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
/**
|
||||
* @addtogroup data_structures
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Helper macro that creates a Point
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE inline Point ccp(float x, float y)
|
||||
{
|
||||
return Point(x, y);
|
||||
}
|
||||
|
||||
/** Returns opposite of point.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::-, for example: -v1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpNeg(const Point& v)
|
||||
{
|
||||
return -v;
|
||||
}
|
||||
|
||||
/** Calculates sum of two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::+, for example: v1 + v2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpAdd(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1 + v2;
|
||||
}
|
||||
|
||||
/** Calculates difference of two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::-, for example: v1 - v2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpSub(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1 - v2;
|
||||
}
|
||||
|
||||
/** Returns point multiplied by given factor.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::*, for example: v1 * v2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpMult(const Point& v, const float s)
|
||||
{
|
||||
return v * s;
|
||||
}
|
||||
|
||||
/** Calculates midpoint between two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use it like (v1 + v2) / 2.0f
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpMidpoint(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.getMidpoint(v2);
|
||||
}
|
||||
|
||||
/** Calculates dot product of two points.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float
|
||||
ccpDot(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.dot(v2);
|
||||
}
|
||||
|
||||
/** Calculates cross product of two points.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float
|
||||
ccpCross(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.cross(v2);
|
||||
}
|
||||
|
||||
/** Calculates perpendicular of v, rotated 90 degrees counter-clockwise -- cross(v, perp(v)) >= 0
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpPerp(const Point& v)
|
||||
{
|
||||
return v.getPerp();
|
||||
}
|
||||
|
||||
/** Calculates perpendicular of v, rotated 90 degrees clockwise -- cross(v, rperp(v)) <= 0
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpRPerp(const Point& v)
|
||||
{
|
||||
return v.getRPerp();
|
||||
}
|
||||
|
||||
/** Calculates the projection of v1 over v2.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpProject(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.project(v2);
|
||||
}
|
||||
|
||||
/** Rotates two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpRotate(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.rotate(v2);
|
||||
}
|
||||
|
||||
/** Unrotates two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point
|
||||
ccpUnrotate(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.unrotate(v2);
|
||||
}
|
||||
|
||||
/** Calculates the square length of a Point (not calling sqrt() )
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float
|
||||
ccpLengthSQ(const Point& v)
|
||||
{
|
||||
return v.getLengthSq();
|
||||
}
|
||||
|
||||
|
||||
/** Calculates the square distance between two points (not calling sqrt() )
|
||||
@return float
|
||||
@since v1.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float
|
||||
ccpDistanceSQ(const Point p1, const Point p2)
|
||||
{
|
||||
return (p1 - p2).getLengthSq();
|
||||
}
|
||||
|
||||
|
||||
/** Calculates distance between point an origin
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float ccpLength(const Point& v)
|
||||
{
|
||||
return v.getLength();
|
||||
}
|
||||
|
||||
/** Calculates the distance between two points
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float ccpDistance(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.getDistance(v2);
|
||||
}
|
||||
|
||||
/** Returns point multiplied to a length of 1.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpNormalize(const Point& v)
|
||||
{
|
||||
return v.normalize();
|
||||
}
|
||||
|
||||
/** Converts radians to a normalized vector.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpForAngle(const float a)
|
||||
{
|
||||
return Point::forAngle(a);
|
||||
}
|
||||
|
||||
/** Converts a vector to radians.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float ccpToAngle(const Point& v)
|
||||
{
|
||||
return v.getAngle();
|
||||
}
|
||||
|
||||
|
||||
/** Clamp a point between from and to.
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpClamp(const Point& p, const Point& from, const Point& to)
|
||||
{
|
||||
return p.getClampPoint(from, to);
|
||||
}
|
||||
|
||||
/** Quickly convert Size to a Point
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpFromSize(const Size& s)
|
||||
{
|
||||
return Point(s);
|
||||
}
|
||||
|
||||
/** Run a math operation function on each point component
|
||||
* absf, fllorf, ceilf, roundf
|
||||
* any function that has the signature: float func(float);
|
||||
* For example: let's try to take the floor of x,y
|
||||
* ccpCompOp(p,floorf);
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpCompOp(const Point& p, float (*opFunc)(float))
|
||||
{
|
||||
return p.compOp(opFunc);
|
||||
}
|
||||
|
||||
/** Linear Interpolation between two points a and b
|
||||
@returns
|
||||
alpha == 0 ? a
|
||||
alpha == 1 ? b
|
||||
otherwise a value between a..b
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpLerp(const Point& a, const Point& b, float alpha)
|
||||
{
|
||||
return a.lerp(b, alpha);
|
||||
}
|
||||
|
||||
|
||||
/** @returns if points have fuzzy equality which means equal with some degree of variance.
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline bool ccpFuzzyEqual(const Point& a, const Point& b, float variance)
|
||||
{
|
||||
return a.fuzzyEquals(b, variance);
|
||||
}
|
||||
|
||||
|
||||
/** Multiplies a and b components, a.x*b.x, a.y*b.y
|
||||
@returns a component-wise multiplication
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpCompMult(const Point& a, const Point& b)
|
||||
{
|
||||
return Point(a.x * b.x, a.y * b.y);
|
||||
}
|
||||
|
||||
/** @returns the signed angle in radians between two vector directions
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float ccpAngleSigned(const Point& a, const Point& b)
|
||||
{
|
||||
return a.getAngle(b);
|
||||
}
|
||||
|
||||
/** @returns the angle in radians between two vector directions
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline float ccpAngle(const Point& a, const Point& b)
|
||||
{
|
||||
return a.getAngle(b);
|
||||
}
|
||||
|
||||
/** Rotates a point counter clockwise by the angle around a pivot
|
||||
@param v is the point to rotate
|
||||
@param pivot is the pivot, naturally
|
||||
@param angle is the angle of rotation cw in radians
|
||||
@returns the rotated point
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpRotateByAngle(const Point& v, const Point& pivot, float angle)
|
||||
{
|
||||
return v.rotateByAngle(pivot, angle);
|
||||
}
|
||||
|
||||
/** A general line-line intersection test
|
||||
@param p1
|
||||
is the startpoint for the first line P1 = (p1 - p2)
|
||||
@param p2
|
||||
is the endpoint for the first line P1 = (p1 - p2)
|
||||
@param p3
|
||||
is the startpoint for the second line P2 = (p3 - p4)
|
||||
@param p4
|
||||
is the endpoint for the second line P2 = (p3 - p4)
|
||||
@param s
|
||||
is the range for a hitpoint in P1 (pa = p1 + s*(p2 - p1))
|
||||
@param t
|
||||
is the range for a hitpoint in P3 (pa = p2 + t*(p4 - p3))
|
||||
@return bool
|
||||
indicating successful intersection of a line
|
||||
note that to truly test intersection for segments we have to make
|
||||
sure that s & t lie within [0..1] and for rays, make sure s & t > 0
|
||||
the hit point is p3 + t * (p4 - p3);
|
||||
the hit point also is p1 + s * (p2 - p1);
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline bool ccpLineIntersect(const Point& p1, const Point& p2,
|
||||
const Point& p3, const Point& p4,
|
||||
float *s, float *t)
|
||||
{
|
||||
return Point::isLineIntersect(p1, p2, p3, p4, s, t);
|
||||
}
|
||||
|
||||
/*
|
||||
ccpSegmentIntersect returns YES if Segment A-B intersects with segment C-D
|
||||
@since v1.0.0
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline bool ccpSegmentIntersect(const Point& A, const Point& B, const Point& C, const Point& D)
|
||||
{
|
||||
return Point::isSegmentIntersect(A, B, C, D);
|
||||
}
|
||||
|
||||
/*
|
||||
ccpIntersectPoint returns the intersection point of line A-B, C-D
|
||||
@since v1.0.0
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Point ccpIntersectPoint(const Point& A, const Point& B, const Point& C, const Point& D)
|
||||
{
|
||||
return Point::getIntersectPoint(A, B, C, D);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Point CCPointMake(float x, float y)
|
||||
{
|
||||
return Point(x, y);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Size CCSizeMake(float width, float height)
|
||||
{
|
||||
return Size(width, height);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE inline Rect CCRectMake(float x, float y, float width, float height)
|
||||
{
|
||||
return Rect(x, y, width, height);
|
||||
}
|
||||
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE const Point PointZero = Point::ZERO;
|
||||
|
||||
/* The "zero" size -- equivalent to Size(0, 0). */
|
||||
CC_DEPRECATED_ATTRIBUTE const Size SizeZero = Size::ZERO;
|
||||
|
||||
/* The "zero" rectangle -- equivalent to Rect(0, 0, 0, 0). */
|
||||
CC_DEPRECATED_ATTRIBUTE const Rect RectZero = Rect::ZERO;
|
||||
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccWHITE = Color3B::WHITE;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccYELLOW = Color3B::YELLOW;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccGREEN = Color3B::GREEN;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccBLUE = Color3B::BLUE;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccRED = Color3B::RED;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccMAGENTA = Color3B::MAGENTA;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccBLACK = Color3B::BLACK;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccORANGE = Color3B::ORANGE;
|
||||
CC_DEPRECATED_ATTRIBUTE const Color3B ccGRAY = Color3B::GRAY;
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE const BlendFunc kBlendFuncDisable = BlendFunc::BLEND_FUNC_DISABLE;
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color3B ccc3(GLubyte r, GLubyte g, GLubyte b)
|
||||
{
|
||||
return Color3B(r, g, b);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline bool ccc3BEqual(const Color3B &col1, const Color3B &col2)
|
||||
{
|
||||
return col1.r == col2.r && col1.g == col2.g && col1.b == col2.b;
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color4B
|
||||
ccc4(const GLubyte r, const GLubyte g, const GLubyte b, const GLubyte o)
|
||||
{
|
||||
return Color4B(r, g, b, o);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color4F ccc4FFromccc3B(Color3B c)
|
||||
{
|
||||
return Color4F(c.r/255.f, c.g/255.f, c.b/255.f, 1.f);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color4F
|
||||
ccc4f(const GLfloat r, const GLfloat g, const GLfloat b, const GLfloat a)
|
||||
{
|
||||
return Color4F(r, g, b, a);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color4F ccc4FFromccc4B(Color4B c)
|
||||
{
|
||||
return Color4F(c.r/255.f, c.g/255.f, c.b/255.f, c.a/255.f);
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline Color4B ccc4BFromccc4F(Color4F c)
|
||||
{
|
||||
return Color4B((GLubyte)(c.r*255), (GLubyte)(c.g*255), (GLubyte)(c.b*255), (GLubyte)(c.a*255));
|
||||
}
|
||||
|
||||
CC_DEPRECATED_ATTRIBUTE static inline bool ccc4FEqual(Color4F a, Color4F b)
|
||||
{
|
||||
return a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a;
|
||||
}
|
||||
|
||||
// end of data_structures group
|
||||
/// @}
|
||||
|
||||
NS_CC_END
|
||||
|
||||
|
||||
#endif // __COCOS2D_CCDEPRECATED_H__
|
|
@ -85,6 +85,7 @@ THE SOFTWARE.
|
|||
#include "ccConfig.h"
|
||||
#include "ccMacros.h"
|
||||
#include "ccTypes.h"
|
||||
#include "CCDeprecated.h"
|
||||
|
||||
// kazmath
|
||||
#include "kazmath/include/kazmath/kazmath.h"
|
||||
|
@ -235,7 +236,6 @@ THE SOFTWARE.
|
|||
// support
|
||||
#include "support/ccUTF8.h"
|
||||
#include "support/CCNotificationCenter.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/CCProfiling.h"
|
||||
#include "support/user_default/CCUserDefault.h"
|
||||
#include "support/CCVertex.h"
|
||||
|
|
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
#include "CCLabelAtlas.h"
|
||||
#include "textures/CCTextureAtlas.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "draw_nodes/CCDrawingPrimitives.h"
|
||||
#include "ccConfig.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
|
|
|
@ -37,7 +37,6 @@ http://www.angelcode.com/products/bmfont/ (Free, Windows only)
|
|||
#include "CCConfiguration.h"
|
||||
#include "draw_nodes/CCDrawingPrimitives.h"
|
||||
#include "sprite_nodes/CCSprite.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "platform/CCFileUtils.h"
|
||||
#include "CCDirector.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
|
|
|
@ -30,7 +30,6 @@ THE SOFTWARE.
|
|||
#include "keypad_dispatcher/CCKeypadDispatcher.h"
|
||||
#include "CCAccelerometer.h"
|
||||
#include "CCDirector.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "script_support/CCScriptSupport.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
|
|
|
@ -188,7 +188,7 @@ public:
|
|||
virtual bool isCascadeColorEnabled() const;
|
||||
virtual void setCascadeColorEnabled(bool cascadeColorEnabled);
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {}
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
|
||||
virtual bool isOpacityModifyRGB() const { return false; }
|
||||
protected:
|
||||
GLubyte _displayedOpacity, _realOpacity;
|
||||
|
@ -247,8 +247,6 @@ public:
|
|||
/** BlendFunction. Conforms to BlendProtocol protocol */
|
||||
CC_PROPERTY_PASS_BY_REF(BlendFunc, _blendFunc, BlendFunc)
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
|
||||
virtual bool isOpacityModifyRGB(void) const { return false;}
|
||||
virtual void setColor(const Color3B &color);
|
||||
virtual void setOpacity(GLubyte opacity);
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ THE SOFTWARE.
|
|||
****************************************************************************/
|
||||
|
||||
#include "CCScene.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCDirector.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
|
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
|
||||
#include "CCTransition.h"
|
||||
#include "CCCamera.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCDirector.h"
|
||||
#include "touch_dispatcher/CCTouchDispatcher.h"
|
||||
#include "actions/CCActionInterval.h"
|
||||
|
|
|
@ -32,7 +32,6 @@ THE SOFTWARE.
|
|||
#include "CCLayer.h"
|
||||
#include "actions/CCActionInstant.h"
|
||||
#include "actions/CCActionProgressTimer.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ THE SOFTWARE.
|
|||
#include "CCMenu.h"
|
||||
#include "CCDirector.h"
|
||||
#include "CCApplication.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "touch_dispatcher/CCTouchDispatcher.h"
|
||||
#include "touch_dispatcher/CCTouch.h"
|
||||
#include "CCStdC.h"
|
||||
|
|
|
@ -25,7 +25,6 @@ THE SOFTWARE.
|
|||
****************************************************************************/
|
||||
|
||||
#include "CCMenuItem.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "actions/CCActionInterval.h"
|
||||
#include "sprite_nodes/CCSprite.h"
|
||||
#include "label_nodes/CCLabelAtlas.h"
|
||||
|
|
|
@ -91,9 +91,6 @@ public:
|
|||
virtual void setEnabled(bool value);
|
||||
virtual bool isSelected() const;
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
|
||||
virtual bool isOpacityModifyRGB(void) const { return false;}
|
||||
|
||||
/** set the target/selector of the menu item*/
|
||||
CC_DEPRECATED_ATTRIBUTE void setTarget(Object *rec, SEL_MenuHandler selector);
|
||||
/** set the callback to the menu item */
|
||||
|
@ -284,8 +281,6 @@ public:
|
|||
virtual void unselected();
|
||||
virtual void setEnabled(bool bEnabled);
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
|
||||
virtual bool isOpacityModifyRGB(void) const { return false;}
|
||||
protected:
|
||||
virtual void updateImagesVisibility();
|
||||
};
|
||||
|
@ -390,9 +385,6 @@ public:
|
|||
virtual void selected();
|
||||
virtual void unselected();
|
||||
virtual void setEnabled(bool var);
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
|
||||
virtual bool isOpacityModifyRGB(void) const { return false;}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include "shaders/CCGLProgram.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "CCDirector.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "draw_nodes/CCDrawingPrimitives.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
|
|
@ -30,7 +30,6 @@ THE SOFTWARE.
|
|||
#include "ccMacros.h"
|
||||
|
||||
#include "support/CCVertex.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
|
||||
#include "ccMacros.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/ccGLStateCache.h"
|
||||
|
@ -149,14 +148,26 @@ void ProgressTimer::setReverseProgress(bool reverse)
|
|||
}
|
||||
}
|
||||
|
||||
void ProgressTimer::setOpacityModifyRGB(bool bValue)
|
||||
void ProgressTimer::setColor(const Color3B& color)
|
||||
{
|
||||
CC_UNUSED_PARAM(bValue);
|
||||
_sprite->setColor(color);
|
||||
updateColor();
|
||||
}
|
||||
|
||||
bool ProgressTimer::isOpacityModifyRGB(void) const
|
||||
const Color3B& ProgressTimer::getColor() const
|
||||
{
|
||||
return false;
|
||||
return _sprite->getColor();
|
||||
}
|
||||
|
||||
void ProgressTimer::setOpacity(GLubyte opacity)
|
||||
{
|
||||
_sprite->setOpacity(opacity);
|
||||
updateColor();
|
||||
}
|
||||
|
||||
GLubyte ProgressTimer::getOpacity() const
|
||||
{
|
||||
return _sprite->getOpacity();
|
||||
}
|
||||
|
||||
// Interval
|
||||
|
|
|
@ -82,8 +82,10 @@ public:
|
|||
virtual void draw(void);
|
||||
void setAnchorPoint(const Point& anchorPoint);
|
||||
|
||||
virtual void setOpacityModifyRGB(bool bValue);
|
||||
virtual bool isOpacityModifyRGB(void) const;
|
||||
virtual void setColor(const Color3B& color);
|
||||
virtual const Color3B& getColor() const;
|
||||
virtual GLubyte getOpacity() const;
|
||||
virtual void setOpacity(GLubyte opacity);
|
||||
|
||||
inline bool isReverseDirection() { return _reverseDirection; };
|
||||
inline void setReverseDirection(bool value) { _reverseDirection = value; };
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
#include "ccConfig.h"
|
||||
#include "ccMacros.h"
|
||||
#include "effects/CCGrid.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCParticleSystem.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
|
|
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
#include "CCParticleExamples.h"
|
||||
#include "CCDirector.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "firePngData.h"
|
||||
#include "platform/CCImage.h"
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ THE SOFTWARE.
|
|||
#include "textures/CCTextureCache.h"
|
||||
#include "textures/CCTextureAtlas.h"
|
||||
#include "support/base64.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "platform/CCFileUtils.h"
|
||||
#include "platform/CCImage.h"
|
||||
#include "platform/platform.h"
|
||||
|
|
|
@ -96,6 +96,7 @@ ParticleSystemQuad::~ParticleSystemQuad()
|
|||
glDeleteBuffers(2, &_buffersVBO[0]);
|
||||
#if CC_TEXTURE_ATLAS_USE_VAO
|
||||
glDeleteVertexArrays(1, &_VAOname);
|
||||
ccGLBindVAO(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -470,6 +471,7 @@ void ParticleSystemQuad::setupVBOandVAO()
|
|||
// clean VAO
|
||||
glDeleteBuffers(2, &_buffersVBO[0]);
|
||||
glDeleteVertexArrays(1, &_VAOname);
|
||||
ccGLBindVAO(0);
|
||||
|
||||
glGenVertexArrays(1, &_VAOname);
|
||||
ccGLBindVAO(_VAOname);
|
||||
|
@ -593,6 +595,7 @@ void ParticleSystemQuad::setBatchNode(ParticleBatchNode * batchNode)
|
|||
glDeleteBuffers(2, &_buffersVBO[0]);
|
||||
#if CC_TEXTURE_ATLAS_USE_VAO
|
||||
glDeleteVertexArrays(1, &_VAOname);
|
||||
ccGLBindVAO(0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,12 +55,18 @@ void Application::setAnimationInterval(double interval)
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CCAssert(sm_pSharedApplication, "");
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
std::string languageName = getCurrentLanguageJNI();
|
||||
|
|
|
@ -29,7 +29,10 @@ public:
|
|||
@brief Get current application instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -77,19 +77,15 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe
|
|||
// ===========================================================
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
Cocos2dxHelper.onResume();
|
||||
this.mGLSurfaceView.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
Cocos2dxHelper.onPause();
|
||||
this.mGLSurfaceView.onPause();
|
||||
public void onWindowFocusChanged(final boolean hasWindowFocus) {
|
||||
super.onWindowFocusChanged(hasWindowFocus);
|
||||
if (hasWindowFocus) {
|
||||
Cocos2dxHelper.onResume();
|
||||
this.mGLSurfaceView.onResume();
|
||||
} else {
|
||||
Cocos2dxHelper.onPause();
|
||||
this.mGLSurfaceView.onPause();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -15,14 +15,14 @@ extern "C" {
|
|||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnPause() {
|
||||
Application::sharedApplication()->applicationDidEnterBackground();
|
||||
Application::getInstance()->applicationDidEnterBackground();
|
||||
|
||||
NotificationCenter::getInstance()->postNotification(EVENT_COME_TO_BACKGROUND, NULL);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume() {
|
||||
if (Director::getInstance()->getOpenGLView()) {
|
||||
Application::sharedApplication()->applicationWillEnterForeground();
|
||||
Application::getInstance()->applicationWillEnterForeground();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -101,12 +101,18 @@ TargetPlatform Application::getTargetPlatform()
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
ccLanguageType ret_language = kLanguageEnglish;
|
||||
|
|
|
@ -29,7 +29,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -625,7 +625,7 @@ bool EGLView::handleEvents()
|
|||
case NAVIGATOR_WINDOW_INACTIVE:
|
||||
if (_isWindowActive)
|
||||
{
|
||||
Application::sharedApplication()->applicationDidEnterBackground();
|
||||
Application::getInstance()->applicationDidEnterBackground();
|
||||
_isWindowActive = false;
|
||||
}
|
||||
break;
|
||||
|
@ -633,7 +633,7 @@ bool EGLView::handleEvents()
|
|||
case NAVIGATOR_WINDOW_ACTIVE:
|
||||
if (!_isWindowActive)
|
||||
{
|
||||
Application::sharedApplication()->applicationWillEnterForeground();
|
||||
Application::getInstance()->applicationWillEnterForeground();
|
||||
_isWindowActive = true;
|
||||
}
|
||||
break;
|
||||
|
@ -645,14 +645,14 @@ bool EGLView::handleEvents()
|
|||
case NAVIGATOR_WINDOW_FULLSCREEN:
|
||||
if (!_isWindowActive)
|
||||
{
|
||||
Application::sharedApplication()->applicationWillEnterForeground();
|
||||
Application::getInstance()->applicationWillEnterForeground();
|
||||
_isWindowActive = true;
|
||||
}
|
||||
break;
|
||||
case NAVIGATOR_WINDOW_THUMBNAIL:
|
||||
if (_isWindowActive)
|
||||
{
|
||||
Application::sharedApplication()->applicationDidEnterBackground();
|
||||
Application::getInstance()->applicationDidEnterBackground();
|
||||
_isWindowActive = false;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -93,12 +93,18 @@ TargetPlatform Application::getTargetPlatform()
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
return kLanguageEnglish;
|
||||
|
|
|
@ -29,7 +29,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -47,7 +47,10 @@ public:
|
|||
@brief Get the current application instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Callback by Director for limit FPS.
|
||||
|
|
|
@ -63,12 +63,18 @@ void Application::setAnimationInterval(double interval)
|
|||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
// get the current language and country config
|
||||
|
|
|
@ -92,12 +92,18 @@ TargetPlatform Application::getTargetPlatform()
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
char *pLanguageName = getenv("LANG");
|
||||
|
|
|
@ -36,7 +36,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/* override functions */
|
||||
virtual ccLanguageType getCurrentLanguage();
|
||||
|
|
|
@ -56,7 +56,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -69,12 +69,18 @@ TargetPlatform Application::getTargetPlatform()
|
|||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CCAssert(sm_pSharedApplication, "sm_pSharedApplication not set");
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
// get the current language and country config
|
||||
|
|
|
@ -130,12 +130,18 @@ void Application::ccAccelerationUpdate()
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication() // MH Cocos2dx Director class expects this to return a pointer and not a reference
|
||||
Application* Application::getInstance() // MH Cocos2dx Director class expects this to return a pointer and not a reference
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication; // MH Cocos2dx Director class expects this to return a pointer and not a reference
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
int nLanguageIdx;
|
||||
|
|
|
@ -77,7 +77,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication(); // MH Cocos2dx Director class expects this to return a pointer and not a reference
|
||||
static Application* getInstance(); // MH Cocos2dx Director class expects this to return a pointer and not a reference
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -95,12 +95,18 @@ TargetPlatform Application::getTargetPlatform()
|
|||
return kTargetNaCl;
|
||||
}
|
||||
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
ccLanguageType ret = kLanguageEnglish;
|
||||
|
|
|
@ -52,7 +52,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/* override functions */
|
||||
virtual ccLanguageType getCurrentLanguage();
|
||||
|
|
|
@ -72,12 +72,18 @@ long Application::getAnimationInterval()
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CCAssert(sm_pSharedApplication, "");
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
result r = E_SUCCESS;
|
||||
|
|
|
@ -57,7 +57,10 @@ public:
|
|||
@brief Get current application instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/**
|
||||
@brief Get current language config
|
||||
|
|
|
@ -128,7 +128,7 @@ EGLView::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
|
|||
{
|
||||
return;
|
||||
}
|
||||
__pTimer->Start(Application::sharedApplication()->getAnimationInterval());
|
||||
__pTimer->Start(Application::getInstance()->getAnimationInterval());
|
||||
|
||||
Director::getInstance()->mainLoop();
|
||||
}
|
||||
|
|
|
@ -139,12 +139,12 @@ OspApplication::OnForeground(void)
|
|||
|
||||
if (timer != null)
|
||||
{
|
||||
timer->Start(cocos2d::Application::sharedApplication()->getAnimationInterval());
|
||||
timer->Start(cocos2d::Application::getInstance()->getAnimationInterval());
|
||||
}
|
||||
|
||||
if (Director::getInstance()->getOpenGLView())
|
||||
{
|
||||
cocos2d::Application::sharedApplication()->applicationWillEnterForeground();
|
||||
cocos2d::Application::getInstance()->applicationWillEnterForeground();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,7 +158,7 @@ OspApplication::OnBackground(void)
|
|||
timer->Cancel();
|
||||
}
|
||||
|
||||
cocos2d::Application::sharedApplication()->applicationDidEnterBackground();
|
||||
cocos2d::Application::getInstance()->applicationDidEnterBackground();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -100,12 +100,18 @@ void Application::setAnimationInterval(double interval)
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// static member function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Application* Application::sharedApplication()
|
||||
Application* Application::getInstance()
|
||||
{
|
||||
CC_ASSERT(sm_pSharedApplication);
|
||||
return sm_pSharedApplication;
|
||||
}
|
||||
|
||||
// @deprecated Use getInstance() instead
|
||||
Application* Application::sharedApplication()
|
||||
{
|
||||
return Application::getInstance();
|
||||
}
|
||||
|
||||
ccLanguageType Application::getCurrentLanguage()
|
||||
{
|
||||
ccLanguageType ret = kLanguageEnglish;
|
||||
|
|
|
@ -25,7 +25,10 @@ public:
|
|||
@brief Get current applicaiton instance.
|
||||
@return Current application instance pointer.
|
||||
*/
|
||||
static Application* sharedApplication();
|
||||
static Application* getInstance();
|
||||
|
||||
/** @deprecated Use getInstance() instead */
|
||||
CC_DEPRECATED_ATTRIBUTE static Application* sharedApplication();
|
||||
|
||||
/* override functions */
|
||||
virtual void setAnimationInterval(double interval);
|
||||
|
|
|
@ -30,7 +30,6 @@ THE SOFTWARE.
|
|||
#include "touch_dispatcher/CCTouchDispatcher.h"
|
||||
#include "text_input_node/CCIMEDispatcher.h"
|
||||
#include "keypad_dispatcher/CCKeypadDispatcher.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCApplication.h"
|
||||
#ifdef CC_KEYBOARD_SUPPORT
|
||||
#include "keyboard_dispatcher/CCKeyboardDispatcher.h"
|
||||
|
@ -352,8 +351,8 @@ LRESULT EGLView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|||
Point pt(point.x, point.y);
|
||||
pt.x /= _frameZoomFactor;
|
||||
pt.y /= _frameZoomFactor;
|
||||
Point tmp = ccp(pt.x, _screenSize.height - pt.y);
|
||||
if (_viewPortRect.equals(RectZero) || _viewPortRect.containsPoint(tmp))
|
||||
Point tmp = Point(pt.x, _screenSize.height - pt.y);
|
||||
if (_viewPortRect.equals(Rect::ZERO) || _viewPortRect.containsPoint(tmp))
|
||||
{
|
||||
_captured = true;
|
||||
SetCapture(_wnd);
|
||||
|
@ -415,8 +414,8 @@ LRESULT EGLView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|||
input.y = TOUCH_COORD_TO_PIXEL(ti.y);
|
||||
ScreenToClient(_wnd, &input);
|
||||
Point pt(input.x, input.y);
|
||||
Point tmp = ccp(pt.x, _screenSize.height - pt.y);
|
||||
if (_viewPortRect.equals(RectZero) || _viewPortRect.containsPoint(tmp))
|
||||
Point tmp = Point(pt.x, _screenSize.height - pt.y);
|
||||
if (_viewPortRect.equals(Rect::ZERO) || _viewPortRect.containsPoint(tmp))
|
||||
{
|
||||
pt.x /= _frameZoomFactor;
|
||||
pt.y /= _frameZoomFactor;
|
||||
|
@ -444,10 +443,10 @@ LRESULT EGLView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|||
switch (wParam)
|
||||
{
|
||||
case SIZE_RESTORED:
|
||||
Application::sharedApplication()->applicationWillEnterForeground();
|
||||
Application::getInstance()->applicationWillEnterForeground();
|
||||
break;
|
||||
case SIZE_MINIMIZED:
|
||||
Application::sharedApplication()->applicationDidEnterBackground();
|
||||
Application::getInstance()->applicationDidEnterBackground();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -82,7 +82,6 @@ SOURCES = ../actions/CCAction.cpp \
|
|||
../sprite_nodes/CCSpriteFrame.cpp \
|
||||
../sprite_nodes/CCSpriteFrameCache.cpp \
|
||||
../support/ccUTF8.cpp \
|
||||
../support/CCPointExtension.cpp \
|
||||
../support/CCProfiling.cpp \
|
||||
../support/user_default/CCUserDefault.cpp \
|
||||
../support/TransformUtils.cpp \
|
||||
|
|
|
@ -76,7 +76,6 @@ SOURCES = ../actions/CCAction.cpp \
|
|||
../sprite_nodes/CCSpriteFrame.cpp \
|
||||
../sprite_nodes/CCSpriteFrameCache.cpp \
|
||||
../support/tinyxml2/tinyxml2.cpp \
|
||||
../support/CCPointExtension.cpp \
|
||||
../support/CCProfiling.cpp \
|
||||
../support/user_default/CCUserDefault.cpp \
|
||||
../support/TransformUtils.cpp \
|
||||
|
|
|
@ -217,7 +217,6 @@ xcopy /Y /Q "$(ProjectDir)..\platform\third_party\win32\libraries\*.*" "$(OutDir
|
|||
<ClCompile Include="..\sprite_nodes\CCSpriteFrameCache.cpp" />
|
||||
<ClCompile Include="..\support\base64.cpp" />
|
||||
<ClCompile Include="..\support\CCNotificationCenter.cpp" />
|
||||
<ClCompile Include="..\support\CCPointExtension.cpp" />
|
||||
<ClCompile Include="..\support\CCProfiling.cpp" />
|
||||
<ClCompile Include="..\support\ccUTF8.cpp" />
|
||||
<ClCompile Include="..\support\ccUtils.cpp" />
|
||||
|
@ -308,6 +307,7 @@ xcopy /Y /Q "$(ProjectDir)..\platform\third_party\win32\libraries\*.*" "$(OutDir
|
|||
<ClInclude Include="..\actions\CCActionTiledGrid.h" />
|
||||
<ClInclude Include="..\actions\CCActionTween.h" />
|
||||
<ClInclude Include="..\include\ccConfig.h" />
|
||||
<ClInclude Include="..\include\CCDeprecated.h" />
|
||||
<ClInclude Include="..\include\CCEventType.h" />
|
||||
<ClInclude Include="..\include\ccMacros.h" />
|
||||
<ClInclude Include="..\include\CCProtocols.h" />
|
||||
|
@ -379,7 +379,6 @@ xcopy /Y /Q "$(ProjectDir)..\platform\third_party\win32\libraries\*.*" "$(OutDir
|
|||
<ClInclude Include="..\sprite_nodes\CCSpriteFrameCache.h" />
|
||||
<ClInclude Include="..\support\base64.h" />
|
||||
<ClInclude Include="..\support\CCNotificationCenter.h" />
|
||||
<ClInclude Include="..\support\CCPointExtension.h" />
|
||||
<ClInclude Include="..\support\CCProfiling.h" />
|
||||
<ClInclude Include="..\support\ccUTF8.h" />
|
||||
<ClInclude Include="..\support\ccUtils.h" />
|
||||
|
|
|
@ -297,9 +297,6 @@
|
|||
<ClCompile Include="..\support\CCNotificationCenter.cpp">
|
||||
<Filter>support</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\support\CCPointExtension.cpp">
|
||||
<Filter>support</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\support\CCProfiling.cpp">
|
||||
<Filter>support</Filter>
|
||||
</ClCompile>
|
||||
|
@ -720,9 +717,6 @@
|
|||
<ClInclude Include="..\support\CCNotificationCenter.h">
|
||||
<Filter>support</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\support\CCPointExtension.h">
|
||||
<Filter>support</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\support\CCProfiling.h">
|
||||
<Filter>support</Filter>
|
||||
</ClInclude>
|
||||
|
@ -971,5 +965,8 @@
|
|||
<ClInclude Include="..\keyboard_dispatcher\CCKeyboardDispatcher.h">
|
||||
<Filter>keyboard_dispatcher</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\CCDeprecated.h">
|
||||
<Filter>include</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -37,7 +37,6 @@ THE SOFTWARE.
|
|||
#include "shaders/ccGLStateCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
#include "CCDirector.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "cocoa/CCGeometry.h"
|
||||
#include "textures/CCTexture2D.h"
|
||||
#include "cocoa/CCAffineTransform.h"
|
||||
|
|
|
@ -30,7 +30,6 @@ THE SOFTWARE.
|
|||
#include "effects/CCGrid.h"
|
||||
#include "draw_nodes/CCDrawingPrimitives.h"
|
||||
#include "textures/CCTextureCache.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
#include "shaders/ccGLStateCache.h"
|
||||
|
|
|
@ -1,128 +0,0 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010-2012 cocos2d-x.org
|
||||
Copyright (c) 2007 Scott Lembcke
|
||||
Copyright (c) 2010 Lam Pham
|
||||
|
||||
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.
|
||||
****************************************************************************/
|
||||
|
||||
#include "CCPointExtension.h"
|
||||
#include "ccMacros.h" // FLT_EPSILON
|
||||
#include <stdio.h>
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
#define kPointEpsilon FLT_EPSILON
|
||||
|
||||
float
|
||||
ccpLength(const Point& v)
|
||||
{
|
||||
return v.getLength();
|
||||
}
|
||||
|
||||
float
|
||||
ccpDistance(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.getDistance(v2);
|
||||
}
|
||||
|
||||
Point
|
||||
ccpNormalize(const Point& v)
|
||||
{
|
||||
return v.normalize();
|
||||
}
|
||||
|
||||
Point
|
||||
ccpForAngle(const float a)
|
||||
{
|
||||
return Point::forAngle(a);
|
||||
}
|
||||
|
||||
float
|
||||
ccpToAngle(const Point& v)
|
||||
{
|
||||
return v.getAngle();
|
||||
}
|
||||
|
||||
Point ccpLerp(const Point& a, const Point& b, float alpha)
|
||||
{
|
||||
return a.lerp(b, alpha);
|
||||
}
|
||||
|
||||
Point ccpClamp(const Point& p, const Point& min_inclusive, const Point& max_inclusive)
|
||||
{
|
||||
return p.getClampPoint(min_inclusive, max_inclusive);
|
||||
}
|
||||
|
||||
Point ccpFromSize(const Size& s)
|
||||
{
|
||||
return Point(s);
|
||||
}
|
||||
|
||||
Point ccpCompOp(const Point& p, float (*opFunc)(float))
|
||||
{
|
||||
return p.compOp(opFunc);
|
||||
}
|
||||
|
||||
bool ccpFuzzyEqual(const Point& a, const Point& b, float var)
|
||||
{
|
||||
return a.fuzzyEquals(b, var);
|
||||
}
|
||||
|
||||
Point ccpCompMult(const Point& a, const Point& b)
|
||||
{
|
||||
return Point(a.x * b.x, a.y * b.y);
|
||||
}
|
||||
|
||||
float ccpAngleSigned(const Point& a, const Point& b)
|
||||
{
|
||||
return a.getAngle(b);
|
||||
}
|
||||
|
||||
Point ccpRotateByAngle(const Point& v, const Point& pivot, float angle)
|
||||
{
|
||||
return v.rotateByAngle(pivot, angle);
|
||||
}
|
||||
|
||||
|
||||
bool ccpSegmentIntersect(const Point& A, const Point& B, const Point& C, const Point& D)
|
||||
{
|
||||
return Point::isSegmentIntersect(A, B, C, D);
|
||||
}
|
||||
|
||||
Point ccpIntersectPoint(const Point& A, const Point& B, const Point& C, const Point& D)
|
||||
{
|
||||
return Point::getIntersectPoint(A, B, C, D);
|
||||
}
|
||||
|
||||
bool ccpLineIntersect(const Point& A, const Point& B,
|
||||
const Point& C, const Point& D,
|
||||
float *S, float *T)
|
||||
{
|
||||
return Point::isLineIntersect(A, B, C, D, S, T);
|
||||
}
|
||||
|
||||
float ccpAngle(const Point& a, const Point& b)
|
||||
{
|
||||
return a.getAngle(b);
|
||||
}
|
||||
|
||||
NS_CC_END
|
|
@ -1,346 +0,0 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010-2012 cocos2d-x.org
|
||||
Copyright (c) 2007 Scott Lembcke
|
||||
Copyright (c) 2010 Lam Pham
|
||||
|
||||
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 __SUPPORT_CGPOINTEXTENSION_H__
|
||||
#define __SUPPORT_CGPOINTEXTENSION_H__
|
||||
|
||||
/**
|
||||
@file
|
||||
Point extensions based on Chipmunk's cpVect file.
|
||||
These extensions work both with Point and cpVect.
|
||||
|
||||
The "ccp" prefix means: "CoCos2d Point"
|
||||
|
||||
Examples:
|
||||
- ccpAdd( Point(1,1), Point(2,2) ); // preferred cocos2d way
|
||||
- ccpAdd( Point(1,1), Point(2,2) ); // also ok but more verbose
|
||||
|
||||
- cpvadd( cpv(1,1), cpv(2,2) ); // way of the chipmunk
|
||||
- ccpAdd( cpv(1,1), cpv(2,2) ); // mixing chipmunk and cocos2d (avoid)
|
||||
- cpvadd( Point(1,1), Point(2,2) ); // mixing chipmunk and CG (avoid)
|
||||
*/
|
||||
|
||||
#include "cocoa/CCGeometry.h"
|
||||
#include <math.h>
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
/**
|
||||
* @addtogroup data_structures
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Helper macro that creates a Point
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE inline Point ccp(float x, float y)
|
||||
{
|
||||
return Point(x, y);
|
||||
}
|
||||
|
||||
/** Returns opposite of point.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::-, for example: -v1
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpNeg(const Point& v)
|
||||
{
|
||||
return -v;
|
||||
}
|
||||
|
||||
/** Calculates sum of two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::+, for example: v1 + v2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpAdd(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1 + v2;
|
||||
}
|
||||
|
||||
/** Calculates difference of two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::-, for example: v1 - v2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpSub(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1 - v2;
|
||||
}
|
||||
|
||||
/** Returns point multiplied by given factor.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use Point::*, for example: v1 * v2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpMult(const Point& v, const float s)
|
||||
{
|
||||
return v * s;
|
||||
}
|
||||
|
||||
/** Calculates midpoint between two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
@deprecated please use it like (v1 + v2) / 2.0f
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpMidpoint(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.getMidpoint(v2);
|
||||
}
|
||||
|
||||
/** Calculates dot product of two points.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE float
|
||||
ccpDot(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.dot(v2);
|
||||
}
|
||||
|
||||
/** Calculates cross product of two points.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE float
|
||||
ccpCross(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.cross(v2);
|
||||
}
|
||||
|
||||
/** Calculates perpendicular of v, rotated 90 degrees counter-clockwise -- cross(v, perp(v)) >= 0
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpPerp(const Point& v)
|
||||
{
|
||||
return v.getPerp();
|
||||
}
|
||||
|
||||
/** Calculates perpendicular of v, rotated 90 degrees clockwise -- cross(v, rperp(v)) <= 0
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpRPerp(const Point& v)
|
||||
{
|
||||
return v.getRPerp();
|
||||
}
|
||||
|
||||
/** Calculates the projection of v1 over v2.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpProject(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.project(v2);
|
||||
}
|
||||
|
||||
/** Rotates two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpRotate(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.rotate(v2);
|
||||
}
|
||||
|
||||
/** Unrotates two points.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE Point
|
||||
ccpUnrotate(const Point& v1, const Point& v2)
|
||||
{
|
||||
return v1.unrotate(v2);
|
||||
}
|
||||
|
||||
/** Calculates the square length of a Point (not calling sqrt() )
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE float
|
||||
ccpLengthSQ(const Point& v)
|
||||
{
|
||||
return v.getLengthSq();
|
||||
}
|
||||
|
||||
|
||||
/** Calculates the square distance between two points (not calling sqrt() )
|
||||
@return float
|
||||
@since v1.1
|
||||
*/
|
||||
static inline CC_DEPRECATED_ATTRIBUTE float
|
||||
ccpDistanceSQ(const Point p1, const Point p2)
|
||||
{
|
||||
return (p1 - p2).getLengthSq();
|
||||
}
|
||||
|
||||
|
||||
/** Calculates distance between point an origin
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE float CC_DLL ccpLength(const Point& v);
|
||||
|
||||
/** Calculates the distance between two points
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE float CC_DLL ccpDistance(const Point& v1, const Point& v2);
|
||||
|
||||
/** Returns point multiplied to a length of 1.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpNormalize(const Point& v);
|
||||
|
||||
/** Converts radians to a normalized vector.
|
||||
@return Point
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpForAngle(const float a);
|
||||
|
||||
/** Converts a vector to radians.
|
||||
@return float
|
||||
@since v0.7.2
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE float CC_DLL ccpToAngle(const Point& v);
|
||||
|
||||
|
||||
/** Clamp a point between from and to.
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpClamp(const Point& p, const Point& from, const Point& to);
|
||||
|
||||
/** Quickly convert Size to a Point
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpFromSize(const Size& s);
|
||||
|
||||
/** Run a math operation function on each point component
|
||||
* absf, fllorf, ceilf, roundf
|
||||
* any function that has the signature: float func(float);
|
||||
* For example: let's try to take the floor of x,y
|
||||
* ccpCompOp(p,floorf);
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpCompOp(const Point& p, float (*opFunc)(float));
|
||||
|
||||
/** Linear Interpolation between two points a and b
|
||||
@returns
|
||||
alpha == 0 ? a
|
||||
alpha == 1 ? b
|
||||
otherwise a value between a..b
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpLerp(const Point& a, const Point& b, float alpha);
|
||||
|
||||
|
||||
/** @returns if points have fuzzy equality which means equal with some degree of variance.
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE bool CC_DLL ccpFuzzyEqual(const Point& a, const Point& b, float variance);
|
||||
|
||||
|
||||
/** Multiplies a and b components, a.x*b.x, a.y*b.y
|
||||
@returns a component-wise multiplication
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpCompMult(const Point& a, const Point& b);
|
||||
|
||||
/** @returns the signed angle in radians between two vector directions
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE float CC_DLL ccpAngleSigned(const Point& a, const Point& b);
|
||||
|
||||
/** @returns the angle in radians between two vector directions
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE float CC_DLL ccpAngle(const Point& a, const Point& b);
|
||||
|
||||
/** Rotates a point counter clockwise by the angle around a pivot
|
||||
@param v is the point to rotate
|
||||
@param pivot is the pivot, naturally
|
||||
@param angle is the angle of rotation cw in radians
|
||||
@returns the rotated point
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpRotateByAngle(const Point& v, const Point& pivot, float angle);
|
||||
|
||||
/** A general line-line intersection test
|
||||
@param p1
|
||||
is the startpoint for the first line P1 = (p1 - p2)
|
||||
@param p2
|
||||
is the endpoint for the first line P1 = (p1 - p2)
|
||||
@param p3
|
||||
is the startpoint for the second line P2 = (p3 - p4)
|
||||
@param p4
|
||||
is the endpoint for the second line P2 = (p3 - p4)
|
||||
@param s
|
||||
is the range for a hitpoint in P1 (pa = p1 + s*(p2 - p1))
|
||||
@param t
|
||||
is the range for a hitpoint in P3 (pa = p2 + t*(p4 - p3))
|
||||
@return bool
|
||||
indicating successful intersection of a line
|
||||
note that to truly test intersection for segments we have to make
|
||||
sure that s & t lie within [0..1] and for rays, make sure s & t > 0
|
||||
the hit point is p3 + t * (p4 - p3);
|
||||
the hit point also is p1 + s * (p2 - p1);
|
||||
@since v0.99.1
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE bool CC_DLL ccpLineIntersect(const Point& p1, const Point& p2,
|
||||
const Point& p3, const Point& p4,
|
||||
float *s, float *t);
|
||||
|
||||
/*
|
||||
ccpSegmentIntersect returns YES if Segment A-B intersects with segment C-D
|
||||
@since v1.0.0
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE bool CC_DLL ccpSegmentIntersect(const Point& A, const Point& B, const Point& C, const Point& D);
|
||||
|
||||
/*
|
||||
ccpIntersectPoint returns the intersection point of line A-B, C-D
|
||||
@since v1.0.0
|
||||
*/
|
||||
CC_DEPRECATED_ATTRIBUTE Point CC_DLL ccpIntersectPoint(const Point& A, const Point& B, const Point& C, const Point& D);
|
||||
|
||||
// end of data_structures group
|
||||
/// @}
|
||||
|
||||
NS_CC_END
|
||||
|
||||
#endif // __SUPPORT_CGPOINTEXTENSION_H__
|
||||
|
|
@ -24,7 +24,6 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include "CCVertex.h"
|
||||
#include "CCPointExtension.h"
|
||||
#include "ccMacros.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
|
|
@ -62,6 +62,7 @@ TextureAtlas::~TextureAtlas()
|
|||
|
||||
#if CC_TEXTURE_ATLAS_USE_VAO
|
||||
glDeleteVertexArrays(1, &_VAOname);
|
||||
ccGLBindVAO(0);
|
||||
#endif
|
||||
CC_SAFE_RELEASE(_texture);
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
#include "CCParallaxNode.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/data_support/ccCArray.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
|
|
@ -30,7 +30,6 @@ THE SOFTWARE.
|
|||
#include "textures/CCTextureCache.h"
|
||||
#include "shaders/CCShaderCache.h"
|
||||
#include "shaders/CCGLProgram.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/data_support/ccCArray.h"
|
||||
#include "CCDirector.h"
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ THE SOFTWARE.
|
|||
#include "CCTMXXMLParser.h"
|
||||
#include "CCTMXLayer.h"
|
||||
#include "sprite_nodes/CCSprite.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
|
|
@ -32,7 +32,6 @@ THE SOFTWARE.
|
|||
#include "ccMacros.h"
|
||||
#include "platform/CCFileUtils.h"
|
||||
#include "support/zip_support/ZipUtils.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "support/base64.h"
|
||||
#include "platform/platform.h"
|
||||
|
||||
|
|
|
@ -31,7 +31,6 @@ THE SOFTWARE.
|
|||
#include "cocoa/CCDictionary.h"
|
||||
#include "cocoa/CCInteger.h"
|
||||
#include "CCDirector.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCTouch.h"
|
||||
#include "CCDirector.h"
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ GUI/CCEditBox/CCEditBox.cpp \
|
|||
GUI/CCEditBox/CCEditBoxImplAndroid.cpp \
|
||||
network/HttpClient.cpp \
|
||||
network/WebSocket.cpp \
|
||||
network/SocketIO.cpp \
|
||||
physics_nodes/CCPhysicsDebugNode.cpp \
|
||||
physics_nodes/CCPhysicsSprite.cpp \
|
||||
LocalStorage/LocalStorageAndroid.cpp \
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
#include "CCControlButton.h"
|
||||
#include "CCScale9Sprite.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "label_nodes/CCLabelTTF.h"
|
||||
#include "label_nodes/CCLabelBMFont.h"
|
||||
#include "actions/CCAction.h"
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
*/
|
||||
|
||||
#include "CCControlColourPicker.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "sprite_nodes/CCSpriteFrameCache.h"
|
||||
#include "sprite_nodes/CCSpriteBatchNode.h"
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
*/
|
||||
|
||||
#include "CCControlHuePicker.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_EXT_BEGIN
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
*/
|
||||
|
||||
#include "CCControlSaturationBrightnessPicker.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_EXT_BEGIN
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
*/
|
||||
|
||||
#include "CCControlSlider.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "touch_dispatcher/CCTouch.h"
|
||||
#include "CCDirector.h"
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ THE SOFTWARE.
|
|||
****************************************************************************/
|
||||
|
||||
#include "CCControlUtils.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
NS_CC_EXT_BEGIN
|
||||
|
||||
|
|
|
@ -61,8 +61,6 @@ Scale9Sprite::Scale9Sprite()
|
|||
, _bottom(NULL)
|
||||
, _bottomRight(NULL)
|
||||
, _opacityModifyRGB(false)
|
||||
, _opacity(255)
|
||||
, _color(Color3B::WHITE)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -774,8 +772,7 @@ void Scale9Sprite::visit()
|
|||
|
||||
void Scale9Sprite::setColor(const Color3B& color)
|
||||
{
|
||||
_color = color;
|
||||
|
||||
NodeRGBA::setColor(color);
|
||||
Object* child;
|
||||
Array* children = _scale9Image->getChildren();
|
||||
CCARRAY_FOREACH(children, child)
|
||||
|
@ -790,13 +787,12 @@ void Scale9Sprite::setColor(const Color3B& color)
|
|||
|
||||
const Color3B& Scale9Sprite::getColor() const
|
||||
{
|
||||
return _color;
|
||||
return _realColor;
|
||||
}
|
||||
|
||||
void Scale9Sprite::setOpacity(GLubyte opacity)
|
||||
{
|
||||
_opacity = opacity;
|
||||
|
||||
NodeRGBA::setOpacity(opacity);
|
||||
Object* child;
|
||||
Array* children = _scale9Image->getChildren();
|
||||
CCARRAY_FOREACH(children, child)
|
||||
|
@ -811,7 +807,37 @@ void Scale9Sprite::setOpacity(GLubyte opacity)
|
|||
|
||||
GLubyte Scale9Sprite::getOpacity() const
|
||||
{
|
||||
return _opacity;
|
||||
return _realOpacity;
|
||||
}
|
||||
|
||||
void Scale9Sprite::updateDisplayedColor(const cocos2d::Color3B &parentColor)
|
||||
{
|
||||
NodeRGBA::updateDisplayedColor(parentColor);
|
||||
Object* child;
|
||||
Array* children = _scale9Image->getChildren();
|
||||
CCARRAY_FOREACH(children, child)
|
||||
{
|
||||
RGBAProtocol* pNode = dynamic_cast<RGBAProtocol*>(child);
|
||||
if (pNode)
|
||||
{
|
||||
pNode->updateDisplayedColor(parentColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scale9Sprite::updateDisplayedOpacity(GLubyte parentOpacity)
|
||||
{
|
||||
NodeRGBA::updateDisplayedOpacity(parentOpacity);
|
||||
Object* child;
|
||||
Array* children = _scale9Image->getChildren();
|
||||
CCARRAY_FOREACH(children, child)
|
||||
{
|
||||
RGBAProtocol* pNode = dynamic_cast<RGBAProtocol*>(child);
|
||||
if (pNode)
|
||||
{
|
||||
pNode->updateDisplayedOpacity(parentOpacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_CC_EXT_END
|
||||
|
|
|
@ -97,8 +97,6 @@ protected:
|
|||
Sprite* _bottomRight;
|
||||
|
||||
bool _opacityModifyRGB;
|
||||
GLubyte _opacity;
|
||||
Color3B _color;
|
||||
|
||||
void updateCapInset();
|
||||
void updatePositions();
|
||||
|
@ -313,6 +311,9 @@ public:
|
|||
virtual void setColor(const Color3B& color);
|
||||
virtual const Color3B& getColor() const;
|
||||
|
||||
virtual void updateDisplayedOpacity(GLubyte parentOpacity);
|
||||
virtual void updateDisplayedColor(const Color3B& parentColor);
|
||||
|
||||
virtual bool updateWithBatchNode(SpriteBatchNode* batchnode, Rect rect, bool rotated, Rect capInsets);
|
||||
|
||||
virtual void setSpriteFrame(SpriteFrame * spriteFrame);
|
||||
|
|
|
@ -349,7 +349,7 @@ NSPoint EditBoxImplMac::convertDesignCoordToScreenCoord(const Point& designCoord
|
|||
EGLViewProtocol* eglView = EGLView::getInstance();
|
||||
|
||||
Point visiblePos = Point(designCoord.x * eglView->getScaleX(), designCoord.y * eglView->getScaleY());
|
||||
Point screenGLPos = ccpAdd(visiblePos, eglView->getViewPortRect().origin);
|
||||
Point screenGLPos = visiblePos + eglView->getViewPortRect().origin;
|
||||
|
||||
//TODO: I don't know why here needs to substract `height`.
|
||||
NSPoint screenPos = NSMakePoint(screenGLPos.x, screenGLPos.y-height);
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
#include "CCTableView.h"
|
||||
#include "CCTableViewCell.h"
|
||||
#include "menu_nodes/CCMenu.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
#include "CCSorting.h"
|
||||
#include "layers_scenes_transitions_nodes/CCLayer.h"
|
||||
|
||||
|
|
|
@ -0,0 +1,715 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010-2013 cocos2d-x.org
|
||||
Copyright (c) 2013 Chris Hannon
|
||||
|
||||
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.
|
||||
|
||||
*based on the SocketIO library created by LearnBoost at http://socket.io
|
||||
*using spec version 1 found at https://github.com/LearnBoost/socket.io-spec
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "SocketIO.h"
|
||||
#include "cocos-ext.h"
|
||||
#include "network/WebSocket.h"
|
||||
#include <algorithm>
|
||||
|
||||
NS_CC_EXT_BEGIN
|
||||
|
||||
//class declarations
|
||||
|
||||
/**
|
||||
* @brief The implementation of the socket.io connection
|
||||
* Clients/endpoints may share the same impl to accomplish multiplexing on the same websocket
|
||||
*/
|
||||
class SIOClientImpl :
|
||||
public Object,
|
||||
public WebSocket::Delegate
|
||||
{
|
||||
private:
|
||||
int _port, _heartbeat, _timeout;
|
||||
std::string _host, _sid, _uri;
|
||||
bool _connected;
|
||||
|
||||
WebSocket *_ws;
|
||||
|
||||
Dictionary* _clients;
|
||||
|
||||
public:
|
||||
SIOClientImpl(const std::string& host, int port);
|
||||
virtual ~SIOClientImpl(void);
|
||||
|
||||
static SIOClientImpl* create(const std::string& host, int port);
|
||||
|
||||
virtual void onOpen(cocos2d::extension::WebSocket* ws);
|
||||
virtual void onMessage(cocos2d::extension::WebSocket* ws, const cocos2d::extension::WebSocket::Data& data);
|
||||
virtual void onClose(cocos2d::extension::WebSocket* ws);
|
||||
virtual void onError(cocos2d::extension::WebSocket* ws, const cocos2d::extension::WebSocket::ErrorCode& error);
|
||||
|
||||
void connect();
|
||||
void disconnect();
|
||||
bool init();
|
||||
void handshake();
|
||||
void handshakeResponse(HttpClient *sender, HttpResponse *response);
|
||||
void openSocket();
|
||||
void heartbeat(float dt);
|
||||
|
||||
SIOClient* getClient(const std::string& endpoint);
|
||||
void addClient(const std::string& endpoint, SIOClient* client);
|
||||
|
||||
void connectToEndpoint(const std::string& endpoint);
|
||||
void disconnectFromEndpoint(const std::string& endpoint);
|
||||
|
||||
void send(std::string endpoint, std::string s);
|
||||
void emit(std::string endpoint, std::string eventname, std::string args);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
//method implementations
|
||||
|
||||
//begin SIOClientImpl methods
|
||||
SIOClientImpl::SIOClientImpl(const std::string& host, int port) :
|
||||
_port(port),
|
||||
_host(host),
|
||||
_connected(false)
|
||||
{
|
||||
_clients = Dictionary::create();
|
||||
_clients->retain();
|
||||
|
||||
std::stringstream s;
|
||||
s << host << ":" << port;
|
||||
_uri = s.str();
|
||||
|
||||
_ws = NULL;
|
||||
|
||||
}
|
||||
|
||||
SIOClientImpl::~SIOClientImpl() {
|
||||
|
||||
if(_connected) disconnect();
|
||||
|
||||
CC_SAFE_DELETE(_clients);
|
||||
CC_SAFE_DELETE(_ws);
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::handshake() {
|
||||
CCLog("SIOClientImpl::handshake() called");
|
||||
|
||||
std::stringstream pre;
|
||||
pre << "http://" << _uri << "/socket.io/1";
|
||||
|
||||
HttpRequest* request = new HttpRequest();
|
||||
request->setUrl(pre.str().c_str());
|
||||
request->setRequestType(HttpRequest::kHttpGet);
|
||||
|
||||
request->setResponseCallback(this, httpresponse_selector(SIOClientImpl::handshakeResponse));
|
||||
request->setTag("handshake");
|
||||
|
||||
CCLog("SIOClientImpl::handshake() waiting");
|
||||
|
||||
HttpClient::getInstance()->send(request);
|
||||
|
||||
request->release();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void SIOClientImpl::handshakeResponse(HttpClient *sender, HttpResponse *response) {
|
||||
|
||||
CCLog("SIOClientImpl::handshakeResponse() called");
|
||||
|
||||
if (0 != strlen(response->getHttpRequest()->getTag()))
|
||||
{
|
||||
CCLog("%s completed", response->getHttpRequest()->getTag());
|
||||
}
|
||||
|
||||
int statusCode = response->getResponseCode();
|
||||
char statusString[64] = {};
|
||||
sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
|
||||
CCLog("response code: %d", statusCode);
|
||||
|
||||
if (!response->isSucceed())
|
||||
{
|
||||
CCLog("SIOClientImpl::handshake() failed");
|
||||
CCLog("error buffer: %s", response->getErrorBuffer());
|
||||
|
||||
DictElement* el = NULL;
|
||||
|
||||
CCDICT_FOREACH(_clients, el) {
|
||||
|
||||
SIOClient* c = static_cast<SIOClient*>(el->getObject());
|
||||
|
||||
c->getDelegate()->onError(c, response->getErrorBuffer());
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
CCLog("SIOClientImpl::handshake() succeeded");
|
||||
|
||||
std::vector<char> *buffer = response->getResponseData();
|
||||
std::stringstream s;
|
||||
|
||||
for (unsigned int i = 0; i < buffer->size(); i++)
|
||||
{
|
||||
s << (*buffer)[i];
|
||||
}
|
||||
|
||||
CCLog("SIOClientImpl::handshake() dump data: %s", s.str().c_str());
|
||||
|
||||
std::string res = s.str();
|
||||
std::string sid;
|
||||
int pos = 0;
|
||||
int heartbeat = 0, timeout = 0;
|
||||
|
||||
pos = res.find(":");
|
||||
if(pos >= 0) {
|
||||
sid = res.substr(0, pos);
|
||||
res.erase(0, pos+1);
|
||||
}
|
||||
|
||||
pos = res.find(":");
|
||||
if(pos >= 0){
|
||||
heartbeat = atoi(res.substr(pos+1, res.size()).c_str());
|
||||
}
|
||||
|
||||
pos = res.find(":");
|
||||
if(pos >= 0){
|
||||
timeout = atoi(res.substr(pos+1, res.size()).c_str());
|
||||
}
|
||||
|
||||
_sid = sid;
|
||||
_heartbeat = heartbeat;
|
||||
_timeout = timeout;
|
||||
|
||||
openSocket();
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::openSocket() {
|
||||
|
||||
CCLog("SIOClientImpl::openSocket() called");
|
||||
|
||||
std::stringstream s;
|
||||
s << _uri << "/socket.io/1/websocket/" << _sid;
|
||||
|
||||
_ws = new WebSocket();
|
||||
if(!_ws->init(*this, s.str()))
|
||||
{
|
||||
CC_SAFE_DELETE(_ws);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
bool SIOClientImpl::init() {
|
||||
|
||||
CCLog("SIOClientImpl::init() successful");
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::connect() {
|
||||
|
||||
this->handshake();
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::disconnect() {
|
||||
|
||||
if(_ws->getReadyState() == WebSocket::kStateOpen) {
|
||||
|
||||
std::string s = "0::";
|
||||
|
||||
_ws->send(s);
|
||||
|
||||
CCLog("Disconnect sent");
|
||||
|
||||
_ws->close();
|
||||
|
||||
}
|
||||
|
||||
Director::getInstance()->getScheduler()->unscheduleAllForTarget(this);
|
||||
|
||||
_connected = false;
|
||||
|
||||
SocketIO::instance()->removeSocket(_uri);
|
||||
|
||||
}
|
||||
|
||||
SIOClientImpl* SIOClientImpl::create(const std::string& host, int port) {
|
||||
|
||||
SIOClientImpl *s = new SIOClientImpl(host, port);
|
||||
|
||||
if(s && s->init()) {
|
||||
|
||||
return s;
|
||||
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
SIOClient* SIOClientImpl::getClient(const std::string& endpoint) {
|
||||
|
||||
return static_cast<SIOClient*>(_clients->objectForKey(endpoint));
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::addClient(const std::string& endpoint, SIOClient* client) {
|
||||
|
||||
_clients->setObject(client, endpoint);
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::connectToEndpoint(const std::string& endpoint) {
|
||||
|
||||
std::string path = endpoint == "/" ? "" : endpoint;
|
||||
|
||||
std::string s = "1::" + path;
|
||||
|
||||
_ws->send(s);
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::disconnectFromEndpoint(const std::string& endpoint) {
|
||||
|
||||
_clients->removeObjectForKey(endpoint);
|
||||
|
||||
if(_clients->count() == 0 || endpoint == "/") {
|
||||
|
||||
CCLog("SIOClientImpl::disconnectFromEndpoint out of endpoints, checking for disconnect");
|
||||
|
||||
if(_connected) this->disconnect();
|
||||
|
||||
} else {
|
||||
|
||||
std::string path = endpoint == "/" ? "" : endpoint;
|
||||
|
||||
std::string s = "0::" + path;
|
||||
|
||||
_ws->send(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::heartbeat(float dt) {
|
||||
|
||||
std::string s = "2::";
|
||||
|
||||
_ws->send(s);
|
||||
|
||||
CCLog("Heartbeat sent");
|
||||
|
||||
}
|
||||
|
||||
|
||||
void SIOClientImpl::send(std::string endpoint, std::string s) {
|
||||
std::stringstream pre;
|
||||
|
||||
std::string path = endpoint == "/" ? "" : endpoint;
|
||||
|
||||
pre << "3::" << path << ":" << s;
|
||||
|
||||
std::string msg = pre.str();
|
||||
|
||||
CCLog("sending message: %s", msg.c_str());
|
||||
|
||||
_ws->send(msg);
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::emit(std::string endpoint, std::string eventname, std::string args) {
|
||||
|
||||
std::stringstream pre;
|
||||
|
||||
std::string path = endpoint == "/" ? "" : endpoint;
|
||||
|
||||
pre << "5::" << path << ":{\"name\":\"" << eventname << "\",\"args\":" << args << "}";
|
||||
|
||||
std::string msg = pre.str();
|
||||
|
||||
CCLog("emitting event with data: %s", msg.c_str());
|
||||
|
||||
_ws->send(msg);
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::onOpen(cocos2d::extension::WebSocket* ws) {
|
||||
|
||||
_connected = true;
|
||||
|
||||
SocketIO::instance()->addSocket(_uri, this);
|
||||
|
||||
DictElement* e = NULL;
|
||||
|
||||
CCDICT_FOREACH(_clients, e) {
|
||||
|
||||
SIOClient *c = static_cast<SIOClient*>(e->getObject());
|
||||
|
||||
c->onOpen();
|
||||
|
||||
}
|
||||
|
||||
Director::getInstance()->getScheduler()->scheduleSelector(schedule_selector(SIOClientImpl::heartbeat), this, (_heartbeat * .9), false);
|
||||
|
||||
CCLog("SIOClientImpl::onOpen socket connected!");
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::onMessage(cocos2d::extension::WebSocket* ws, const cocos2d::extension::WebSocket::Data& data) {
|
||||
|
||||
CCLog("SIOClientImpl::onMessage received: %s", data.bytes);
|
||||
|
||||
int control = atoi(&data.bytes[0]);
|
||||
|
||||
std::string payload, msgid, endpoint, s_data, eventname;
|
||||
payload = data.bytes;
|
||||
|
||||
int pos, pos2;
|
||||
|
||||
pos = payload.find(":");
|
||||
if(pos >=0 ) {
|
||||
payload.erase(0, pos+1);
|
||||
}
|
||||
|
||||
pos = payload.find(":");
|
||||
if(pos > 0 ) {
|
||||
msgid = atoi(payload.substr(0, pos+1).c_str());
|
||||
}
|
||||
payload.erase(0, pos+1);
|
||||
|
||||
pos = payload.find(":");
|
||||
if(pos >= 0) {
|
||||
|
||||
endpoint = payload.substr(0, pos);
|
||||
payload.erase(0, pos+1);
|
||||
|
||||
} else {
|
||||
|
||||
endpoint = payload;
|
||||
}
|
||||
|
||||
if(endpoint == "") endpoint = "/";
|
||||
|
||||
|
||||
s_data = payload;
|
||||
SIOClient *c = NULL;
|
||||
c = getClient(endpoint);
|
||||
if(c == NULL) CCLog("SIOClientImpl::onMessage client lookup returned NULL");
|
||||
|
||||
switch(control) {
|
||||
case 0:
|
||||
CCLog("Received Disconnect Signal for Endpoint: %s\n", endpoint.c_str());
|
||||
if(c) c->receivedDisconnect();
|
||||
disconnectFromEndpoint(endpoint);
|
||||
break;
|
||||
case 1:
|
||||
CCLog("Connected to endpoint: %s \n",endpoint.c_str());
|
||||
if(c) c->onConnect();
|
||||
break;
|
||||
case 2:
|
||||
CCLog("Heartbeat received\n");
|
||||
break;
|
||||
case 3:
|
||||
CCLog("Message received: %s \n", s_data.c_str());
|
||||
if(c) c->getDelegate()->onMessage(c, s_data);
|
||||
break;
|
||||
case 4:
|
||||
CCLog("JSON Message Received: %s \n", s_data.c_str());
|
||||
if(c) c->getDelegate()->onMessage(c, s_data);
|
||||
break;
|
||||
case 5:
|
||||
CCLog("Event Received with data: %s \n", s_data.c_str());
|
||||
|
||||
if(c) {
|
||||
eventname = "";
|
||||
pos = s_data.find(":");
|
||||
pos2 = s_data.find(",");
|
||||
if(pos2 > pos) {
|
||||
s_data = s_data.substr(pos+1, pos2-pos-1);
|
||||
std::remove_copy(s_data.begin(), s_data.end(),
|
||||
std::back_inserter(eventname), '"');
|
||||
}
|
||||
|
||||
c->fireEvent(eventname, payload);
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
CCLog("Message Ack\n");
|
||||
break;
|
||||
case 7:
|
||||
CCLog("Error\n");
|
||||
if(c) c->getDelegate()->onError(c, s_data);
|
||||
break;
|
||||
case 8:
|
||||
CCLog("Noop\n");
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void SIOClientImpl::onClose(cocos2d::extension::WebSocket* ws) {
|
||||
|
||||
if(_clients->count() > 0) {
|
||||
|
||||
DictElement *e;
|
||||
|
||||
CCDICT_FOREACH(_clients, e) {
|
||||
|
||||
SIOClient *c = static_cast<SIOClient *>(e->getObject());
|
||||
|
||||
c->receivedDisconnect();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this->release();
|
||||
|
||||
}
|
||||
|
||||
void SIOClientImpl::onError(cocos2d::extension::WebSocket* ws, const cocos2d::extension::WebSocket::ErrorCode& error) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
//begin SIOClient methods
|
||||
SIOClient::SIOClient(const std::string& host, int port, const std::string& path, SIOClientImpl* impl, SocketIO::SIODelegate& delegate)
|
||||
: _host(host)
|
||||
, _port(port)
|
||||
, _path(path)
|
||||
, _socket(impl)
|
||||
, _connected(false)
|
||||
, _delegate(&delegate)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
SIOClient::~SIOClient(void) {
|
||||
|
||||
if(_connected) {
|
||||
_socket->disconnectFromEndpoint(_path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::onOpen() {
|
||||
|
||||
if(_path != "/") {
|
||||
|
||||
_socket->connectToEndpoint(_path);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::onConnect() {
|
||||
|
||||
_connected = true;
|
||||
_delegate->onConnect(this);
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::send(std::string s) {
|
||||
|
||||
if(_connected) {
|
||||
_socket->send(_path, s);
|
||||
} else {
|
||||
_delegate->onError(this, "Client not yet connected");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::emit(std::string eventname, std::string args) {
|
||||
|
||||
if(_connected) {
|
||||
_socket->emit(_path, eventname, args);
|
||||
} else {
|
||||
_delegate->onError(this, "Client not yet connected");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::disconnect() {
|
||||
|
||||
_connected = false;
|
||||
|
||||
_socket->disconnectFromEndpoint(_path);
|
||||
|
||||
_delegate->onClose(this);
|
||||
|
||||
this->release();
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::receivedDisconnect() {
|
||||
|
||||
_connected = false;
|
||||
|
||||
_delegate->onClose(this);
|
||||
|
||||
this->release();
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::on(const std::string& eventName, SIOEvent e) {
|
||||
|
||||
_eventRegistry[eventName] = e;
|
||||
|
||||
}
|
||||
|
||||
void SIOClient::fireEvent(const std::string& eventName, const std::string& data) {
|
||||
|
||||
CCLog("SIOClient::fireEvent called with event name: %s and data: %s", eventName.c_str(), data.c_str());
|
||||
|
||||
if(_eventRegistry[eventName]) {
|
||||
|
||||
SIOEvent e = _eventRegistry[eventName];
|
||||
|
||||
e(this, data);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
CCLog("SIOClient::fireEvent no event with name %s found", eventName.c_str());
|
||||
|
||||
}
|
||||
|
||||
//begin SocketIO methods
|
||||
SocketIO *SocketIO::_inst = NULL;
|
||||
|
||||
SocketIO::SocketIO() {
|
||||
|
||||
_sockets = Dictionary::create();
|
||||
_sockets->retain();
|
||||
|
||||
}
|
||||
|
||||
SocketIO::~SocketIO(void) {
|
||||
CC_SAFE_DELETE(_sockets);
|
||||
delete _inst;
|
||||
}
|
||||
|
||||
SocketIO* SocketIO::instance() {
|
||||
|
||||
if(!_inst)
|
||||
_inst = new SocketIO();
|
||||
|
||||
return _inst;
|
||||
|
||||
}
|
||||
|
||||
SIOClient* SocketIO::connect(SocketIO::SIODelegate& delegate, const std::string& uri) {
|
||||
|
||||
std::string host = uri;
|
||||
int port = 0;
|
||||
int pos = 0;
|
||||
|
||||
pos = host.find("//");
|
||||
if(pos >= 0) {
|
||||
host.erase(0, pos+2);
|
||||
}
|
||||
|
||||
pos = host.find(":");
|
||||
if(pos >= 0){
|
||||
port = atoi(host.substr(pos+1, host.size()).c_str());
|
||||
}
|
||||
|
||||
pos = host.find("/", 0);
|
||||
std::string path = "/";
|
||||
if(pos >= 0){
|
||||
path += host.substr(pos + 1, host.size());
|
||||
}
|
||||
|
||||
pos = host.find(":");
|
||||
if(pos >= 0){
|
||||
host.erase(pos, host.size());
|
||||
}else if((pos = host.find("/"))>=0) {
|
||||
host.erase(pos, host.size());
|
||||
}
|
||||
|
||||
std::stringstream s;
|
||||
s << host << ":" << port;
|
||||
|
||||
SIOClientImpl* socket = NULL;
|
||||
SIOClient *c = NULL;
|
||||
|
||||
socket = SocketIO::instance()->getSocket(s.str());
|
||||
|
||||
if(socket == NULL) {
|
||||
//create a new socket, new client, connect
|
||||
socket = SIOClientImpl::create(host, port);
|
||||
|
||||
c = new SIOClient(host, port, path, socket, delegate);
|
||||
|
||||
socket->addClient(path, c);
|
||||
|
||||
socket->connect();
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
//check if already connected to endpoint, handle
|
||||
c = socket->getClient(path);
|
||||
|
||||
if(c == NULL) {
|
||||
|
||||
c = new SIOClient(host, port, path, socket, delegate);
|
||||
|
||||
socket->addClient(path, c);
|
||||
|
||||
socket->connectToEndpoint(path);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return c;
|
||||
|
||||
}
|
||||
|
||||
SIOClientImpl* SocketIO::getSocket(const std::string& uri) {
|
||||
|
||||
return static_cast<SIOClientImpl*>(_sockets->objectForKey(uri));
|
||||
|
||||
}
|
||||
|
||||
void SocketIO::addSocket(const std::string& uri, SIOClientImpl* socket) {
|
||||
_sockets->setObject(socket, uri);
|
||||
}
|
||||
|
||||
void SocketIO::removeSocket(const std::string& uri) {
|
||||
_sockets->removeObjectForKey(uri);
|
||||
}
|
||||
|
||||
NS_CC_EXT_END
|
|
@ -0,0 +1,187 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010-2013 cocos2d-x.org
|
||||
Copyright (c) 2013 Chris Hannon http://www.channon.us
|
||||
|
||||
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.
|
||||
|
||||
*based on the SocketIO library created by LearnBoost at http://socket.io
|
||||
*using spec version 1 found at https://github.com/LearnBoost/socket.io-spec
|
||||
|
||||
Usage is described below, a full working example can be found in TestCpp under ExtionsTest/NetworkTest/SocketIOTest
|
||||
|
||||
creating a new connection to a socket.io server running at localhost:3000
|
||||
|
||||
SIOClient *client = SocketIO::connect(*delegate, "ws://localhost:3000");
|
||||
|
||||
the connection process will begin and if successful delegate::onOpen will be called
|
||||
if the connection process results in an error, delegate::onError will be called with the err msg
|
||||
|
||||
sending a message to the server
|
||||
|
||||
client->send("Hello!");
|
||||
|
||||
emitting an event to be handled by the server, argument json formatting is up to you
|
||||
|
||||
client->emit("eventname", "[{\"arg\":\"value\"}]");
|
||||
|
||||
registering an event callback, target should be a member function in a subclass of SIODelegate
|
||||
CC_CALLBACK_2 is used to wrap the callback with std::bind and store as an SIOEvent
|
||||
|
||||
client->on("eventname", CC_CALLBACK_2(TargetClass::targetfunc, *targetclass_instance));
|
||||
|
||||
event target function should match this pattern, *this pointer will be made available
|
||||
|
||||
void TargetClass::targetfunc(SIOClient *, const std::string&)
|
||||
|
||||
disconnect from the endpoint by calling disconnect(), onClose will be called on the delegate once complete
|
||||
in the onClose method the pointer should be set to NULL or used to connect to a new endpoint
|
||||
|
||||
client->disconnect();
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __CC_SOCKETIO_H__
|
||||
#define __CC_SOCKETIO_H__
|
||||
|
||||
#include "ExtensionMacros.h"
|
||||
#include "cocos2d.h"
|
||||
|
||||
NS_CC_EXT_BEGIN
|
||||
|
||||
//forward declarations
|
||||
class SIOClientImpl;
|
||||
class SIOClient;
|
||||
|
||||
/**
|
||||
* @brief Singleton and wrapper class to provide static creation method as well as registry of all sockets
|
||||
*/
|
||||
class SocketIO
|
||||
{
|
||||
public:
|
||||
SocketIO();
|
||||
virtual ~SocketIO(void);
|
||||
|
||||
static SocketIO *instance();
|
||||
|
||||
/**
|
||||
* @brief The delegate class to process socket.io events
|
||||
*/
|
||||
class SIODelegate
|
||||
{
|
||||
public:
|
||||
virtual ~SIODelegate() {}
|
||||
virtual void onConnect(SIOClient* client) = 0;
|
||||
virtual void onMessage(SIOClient* client, const std::string& data) = 0;
|
||||
virtual void onClose(SIOClient* client) = 0;
|
||||
virtual void onError(SIOClient* client, const std::string& data) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Static client creation method, similar to socketio.connect(uri) in JS
|
||||
* @param delegate The delegate which want to receive events from the socket.io client
|
||||
* @param uri The URI of the socket.io server
|
||||
* @return An initialized SIOClient if connected successfully, otherwise NULL
|
||||
*/
|
||||
static SIOClient* connect(SocketIO::SIODelegate& delegate, const std::string& uri);
|
||||
|
||||
private:
|
||||
|
||||
static SocketIO *_inst;
|
||||
|
||||
Dictionary* _sockets;
|
||||
|
||||
SIOClientImpl* getSocket(const std::string& uri);
|
||||
void addSocket(const std::string& uri, SIOClientImpl* socket);
|
||||
void removeSocket(const std::string& uri);
|
||||
|
||||
friend SIOClientImpl;
|
||||
|
||||
};
|
||||
|
||||
//c++11 style callbacks entities will be created using CC_CALLBACK (which uses std::bind)
|
||||
typedef std::function<void(SIOClient*, const std::string&)> SIOEvent;
|
||||
//c++11 map to callbacks
|
||||
typedef std::map<std::string, SIOEvent> EventRegistry;
|
||||
|
||||
/**
|
||||
* @brief A single connection to a socket.io endpoint
|
||||
*/
|
||||
class SIOClient
|
||||
: public Object
|
||||
{
|
||||
private:
|
||||
int _port;
|
||||
std::string _host, _path, _tag;
|
||||
bool _connected;
|
||||
SIOClientImpl* _socket;
|
||||
|
||||
SocketIO::SIODelegate* _delegate;
|
||||
|
||||
EventRegistry _eventRegistry;
|
||||
|
||||
void fireEvent(const std::string& eventName, const std::string& data);
|
||||
|
||||
void onOpen();
|
||||
void onConnect();
|
||||
void receivedDisconnect();
|
||||
|
||||
friend class SIOClientImpl;
|
||||
|
||||
public:
|
||||
SIOClient(const std::string& host, int port, const std::string& path, SIOClientImpl* impl, SocketIO::SIODelegate& delegate);
|
||||
virtual ~SIOClient(void);
|
||||
|
||||
/**
|
||||
* @brief Returns the delegate for the client
|
||||
*/
|
||||
SocketIO::SIODelegate* getDelegate() { return _delegate; };
|
||||
|
||||
/**
|
||||
* @brief Disconnect from the endpoint, onClose will be called on the delegate when comlpete
|
||||
*/
|
||||
void disconnect();
|
||||
/**
|
||||
* @brief Send a message to the socket.io server
|
||||
*/
|
||||
void send(std::string s);
|
||||
/**
|
||||
* @brief The delegate class to process socket.io events
|
||||
*/
|
||||
void emit(std::string eventname, std::string args);
|
||||
/**
|
||||
* @brief Used to resgister a socket.io event callback
|
||||
* Event argument should be passed using CC_CALLBACK2(&Base::function, this)
|
||||
*/
|
||||
void on(const std::string& eventName, SIOEvent e);
|
||||
|
||||
inline void setTag(const char* tag)
|
||||
{
|
||||
_tag = tag;
|
||||
};
|
||||
|
||||
inline const char* getTag()
|
||||
{
|
||||
return _tag.c_str();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
NS_CC_EXT_END
|
||||
|
||||
#endif /* defined(__CC_JSB_SOCKETIO_H__) */
|
|
@ -21,7 +21,6 @@
|
|||
*/
|
||||
|
||||
#include "CCPhysicsSprite.h"
|
||||
#include "support/CCPointExtension.h"
|
||||
|
||||
#if defined(CC_ENABLE_CHIPMUNK_INTEGRATION) && defined(CC_ENABLE_BOX2D_INTEGRATION)
|
||||
#error "Either Chipmunk or Box2d should be enabled, but not both at the same time"
|
||||
|
|
|
@ -166,6 +166,7 @@
|
|||
<ClCompile Include="..\GUI\CCScrollView\CCTableViewCell.cpp" />
|
||||
<ClCompile Include="..\LocalStorage\LocalStorage.cpp" />
|
||||
<ClCompile Include="..\network\HttpClient.cpp" />
|
||||
<ClCompile Include="..\network\SocketIO.cpp" />
|
||||
<ClCompile Include="..\network\Websocket.cpp" />
|
||||
<ClCompile Include="..\physics_nodes\CCPhysicsDebugNode.cpp" />
|
||||
<ClCompile Include="..\physics_nodes\CCPhysicsSprite.cpp" />
|
||||
|
@ -287,6 +288,7 @@
|
|||
<ClInclude Include="..\network\HttpClient.h" />
|
||||
<ClInclude Include="..\network\HttpRequest.h" />
|
||||
<ClInclude Include="..\network\HttpResponse.h" />
|
||||
<ClInclude Include="..\network\SocketIO.h" />
|
||||
<ClInclude Include="..\network\Websocket.h" />
|
||||
<ClInclude Include="..\physics_nodes\CCPhysicsDebugNode.h" />
|
||||
<ClInclude Include="..\physics_nodes\CCPhysicsSprite.h" />
|
||||
|
|
|
@ -354,6 +354,9 @@
|
|||
<ClCompile Include="..\CCArmature\external_tool\Json\lib_json\json_writer.cpp">
|
||||
<Filter>CCArmature\external_tool</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\network\SocketIO.cpp">
|
||||
<Filter>network</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\GUI\CCScrollView\CCScrollView.h">
|
||||
|
@ -712,6 +715,9 @@
|
|||
<ClInclude Include="..\CCArmature\external_tool\Json\lib_json\writer.h">
|
||||
<Filter>CCArmature\external_tool</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\network\SocketIO.h">
|
||||
<Filter>network</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\CCArmature\external_tool\Json\lib_json\json_internalarray.inl">
|
||||
|
|
|
@ -26,5 +26,5 @@ int main(int argc, char **argv)
|
|||
CCEGLView& eglView = CCEGLView::getInstance();
|
||||
eglView.setSize(width, height);
|
||||
|
||||
return CCApplication::sharedApplication().run();
|
||||
return CCApplication::getInstance().run();
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
view->setFrameSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
Application::sharedApplication()->run();
|
||||
Application::getInstance()->run();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -30,7 +30,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
view->setFrameSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
Application::sharedApplication()->run();
|
||||
Application::getInstance()->run();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -225,7 +225,7 @@ void TestAnalytics::eventMenuCallback(Object* pSender)
|
|||
|
||||
void TestAnalytics::loadPlugins()
|
||||
{
|
||||
ccLanguageType langType = Application::sharedApplication()->getCurrentLanguage();
|
||||
ccLanguageType langType = Application::getInstance()->getCurrentLanguage();
|
||||
|
||||
std::string umengKey = "";
|
||||
std::string flurryKey = "";
|
||||
|
|
|
@ -29,7 +29,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
view->setFrameSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
Application::sharedApplication()->run();
|
||||
Application::getInstance()->run();
|
||||
}
|
||||
/*
|
||||
else
|
||||
|
|
|
@ -49,7 +49,7 @@ static AppDelegate s_sharedApplication;
|
|||
|
||||
[[UIApplication sharedApplication] setStatusBarHidden:true];
|
||||
|
||||
cocos2d::Application::sharedApplication()->run();
|
||||
cocos2d::Application::getInstance()->run();
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
@ -75,14 +75,14 @@ static AppDelegate s_sharedApplication;
|
|||
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
|
||||
*/
|
||||
cocos2d::Application::sharedApplication()->applicationDidEnterBackground();
|
||||
cocos2d::Application::getInstance()->applicationDidEnterBackground();
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
/*
|
||||
Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
|
||||
*/
|
||||
cocos2d::Application::sharedApplication()->applicationWillEnterForeground();
|
||||
cocos2d::Application::getInstance()->applicationWillEnterForeground();
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue