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(); }
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); } }
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())); }
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())); }
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())); }