Example #1
0
	virtual void onEnter() override
	{
		cocos2d::Mat4 mat = cocos2d::Mat4(
		                                  1, 0, 0, 0,
		                                  -0, -1, 0, -0,
		                                  0, 0, 1, 0,
		                                  0, 0, 0, 1);
		setNodeToParentTransform(mat);
		cocos2d::Sprite::onEnter();
	}
Example #2
0
	void setMatrixAndColorTransform(const Matrix *m, const ColorTransform *cx)
	{
		bool changed = m_matrix.SetWithComparing(m);
		if (changed) {
            cocos2d::Mat4 mat = cocos2d::Mat4(
				m->scaleX, m->skew0, 0, m->translateX,
				-m->skew1, -m->scaleY, 0, -m->translateY,
				0, 0, 1, 0,
				0, 0, 0, 1);
			setNodeToParentTransform(mat);
		}

		cocos2d::Node *node = getParent();
		const Color &c = cx->multi;
		const Color &a = cx->add;
		const cocos2d::Color3B &dc = node->getDisplayedColor();
		setColor((cocos2d::Color3B){
			(GLubyte)(c.red * dc.r),
			(GLubyte)(c.green * dc.g),
			(GLubyte)(c.blue * dc.b)});
		setOpacity(
			(GLubyte)((c.alpha + a.alpha) * node->getDisplayedOpacity()));

		if (a.red == 0 && a.green == 0 && a.blue == 0) {
			if (m_glProgramState != 0 &&
					getGLProgramState() != m_glProgramState) {
				setGLProgramState(m_glProgramState);
			}
		} else {
			if (m_glProgramState == 0) {
				m_glProgramState = getGLProgramState();
				m_glProgramState->retain();

				cocos2d::LWFResourceCache *cache =
					cocos2d::LWFResourceCache::sharedLWFResourceCache();
				m_additiveGlProgramState = cocos2d::GLProgramState::create(
					m_hasPremultipliedAlpha ? cache->getAddColorPAGLProgram() :
						cache->getAddColorGLProgram());
				m_additiveGlProgramState->retain();
			}

			m_additiveGlProgramState->setUniformVec3(
				"additiveColor", cocos2d::Vec3(a.red, a.green, a.blue));
			if (getGLProgramState() != m_additiveGlProgramState)
				setGLProgramState(m_additiveGlProgramState);
		}
	}
Example #3
0
	void setMatrixAndColorTransform(const Matrix *m, const ColorTransform *cx)
	{
		bool changed = m_matrix.SetWithComparing(m);
		if (changed) {
            kmMat4 mat = {{
				m->scaleX, -m->skew1, 0, 0,
				m->skew0, -m->scaleY, 0, 0,
                0, 0, 1, 0,
				m->translateX, -m->translateY -
					m->scaleY * getFontSize() * 96.0f / 72.0f, 0, 1
			}};
			setNodeToParentTransform(mat);
		}

		cocos2d::LWFNode *node = (cocos2d::LWFNode *)getParent();
		const Color &c = cx->multi;
		const cocos2d::Color3B &dc = node->getDisplayedColor();
		setColor((cocos2d::Color3B){
			(GLubyte)(c.red * m_red * dc.r),
			(GLubyte)(c.green * m_green * dc.g),
			(GLubyte)(c.blue * m_blue * dc.b)});
		setOpacity((GLubyte)(c.alpha * node->getDisplayedOpacity()));
	}
Example #4
0
	void setMatrixAndColorTransform(
		cocos2d::LWFNode *node, const Matrix *m, const ColorTransform *cx)
	{
		bool changed = m_matrix.SetWithComparing(m);
		if (changed) {
			m_nodeToParentTransform = cocos2d::Mat4(
				m->scaleX, -m->skew0, 0,
					m->translateX + m->skew0 * getHeight(),
				-m->skew1, m->scaleY, 0,
					-m->translateY - m->scaleY * getHeight(),
				0, 0, 1, 0,
				0, 0, 0, 1);
			setNodeToParentTransform(m_nodeToParentTransform);
		}

		const Color &c = cx->multi;
		const cocos2d::Color3B &dc = node->getDisplayedColor();
		setColor((cocos2d::Color3B){
			(GLubyte)(c.red * m_red * dc.r),
			(GLubyte)(c.green * m_green * dc.g),
			(GLubyte)(c.blue * m_blue * dc.b)});
		setOpacity((GLubyte)(c.alpha * node->getDisplayedOpacity()));
	}
Example #5
0
	void setMatrixAndColorTransform(const Matrix *m, const ColorTransform *cx)
	{
		cocos2d::LWFNode *node = (cocos2d::LWFNode *)getParent();
		bool changed = m_matrix.SetWithComparing(m);
		if (changed) {
			float scale = m_scale / node->lwf->scaleByStage;
            kmMat4 mat = {{
				m->scaleX * scale, m->skew1 * scale, 0, 0,
				m->skew0 * scale, m->scaleY * scale, 0, 0,
                0, 0, 1, 0,
				m->translateX + m->skew0 * m_offsetY,
                    -m->translateY - m->scaleY * m_offsetY, 0, 1
			}};
			setNodeToParentTransform(mat);
		}

		const Color &c = cx->multi;
		const cocos2d::Color3B &dc = node->getDisplayedColor();
		setColor((cocos2d::Color3B){
			(GLubyte)(c.red * m_red * dc.r),
			(GLubyte)(c.green * m_green * dc.g),
			(GLubyte)(c.blue * m_blue * dc.b)});
		setOpacity((GLubyte)(c.alpha * node->getDisplayedOpacity()));
	}