void CCEGLViewProtocol::handleTouchesMove(int num, int ids[], float xs[], float ys[]) { CCSet set; for (int i = 0; i < num; ++i) { int id = ids[i]; float x = xs[i]; float y = ys[i]; CCInteger* pIndex = (CCInteger*)s_TouchesIntergerDict.objectForKey(id); if (pIndex == NULL) { CCLOG("if the index doesn't exist, it is an error"); continue; } CCLOGINFO("Moving touches with id: %d, x=%f, y=%f", id, x, y); CCTouch* pTouch = s_pTouches[pIndex->getValue()]; if (pTouch) { pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x) / m_fScaleX, (y - m_obViewPortRect.origin.y) / m_fScaleY); set.addObject(pTouch); } else { // It is error, should return. CCLOG("Moving touches with id: %d error", id); return; } } if (set.count() == 0) { CCLOG("touchesMoved: count = 0"); return; } CCEvent event; CCSet *allTouches= new CCSet; allTouches->autorelease(); getCurrentSetOfTouches(*allTouches); event.setAllTouches(allTouches); m_pDelegate->touchesMoved(&set, &event); }
void CCEGLViewProtocol::getSetOfTouchesEndOrCancel(CCSet& set, int num, int ids[], float xs[], float ys[]) { for (int i = 0; i < num; ++i) { int id = ids[i]; float x = xs[i]; float y = ys[i]; CCInteger* pIndex = (CCInteger*)s_TouchesIntergerDict.objectForKey(id); if (pIndex == NULL) { CCLOG("if the index doesn't exist, it is an error"); continue; } /* Add to the set to send to the director */ CCTouch* pTouch = s_pTouches[pIndex->getValue()]; if (pTouch) { CCLOGINFO("Ending touches with id: %d, x=%f, y=%f", id, x, y); pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x) / m_fScaleX, (y - m_obViewPortRect.origin.y) / m_fScaleY); set.addObject(pTouch); // release the object pTouch->release(); s_pTouches[pIndex->getValue()] = NULL; removeUsedIndexBit(pIndex->getValue()); s_TouchesIntergerDict.removeObjectForKey(id); } else { CCLOG("Ending touches with id: %d error", id); return; } } if (set.count() == 0) { CCLOG("touchesEnded or touchesCancel: count = 0"); return; } }
CCGrabber::~CCGrabber() { if(m_renderTargetView) { m_renderTargetView->Release(); m_renderTargetView = 0; } if (m_depthStencil) { m_depthStencil->Release(); m_depthStencil = 0; } if (m_depthStencilView) { m_depthStencilView->Release(); m_renderTargetView = 0; } CCLOGINFO("cocos2d: deallocing %p", this); }
GLProgram::~GLProgram() { CCLOGINFO("%s %d deallocing GLProgram: %p", __FUNCTION__, __LINE__, this); clearShader(); if (_program) { GL::deleteProgram(_program); } for (auto e : _hashForUniforms) { free(e.second.first); } _hashForUniforms.clear(); }
CCTextureAtlas::~CCTextureAtlas() { CCLOGINFO("cocos2d: CCTextureAtlas deallocing %p.", this); CC_SAFE_FREE(m_pQuads); CC_SAFE_FREE(m_pIndices); glDeleteBuffers(2, m_pBuffersVBO); #if CC_TEXTURE_ATLAS_USE_VAO glDeleteVertexArrays(1, &m_uVAOname); ccGLBindVAO(0); #endif CC_SAFE_RELEASE(m_pTexture); CCNotificationCenter::sharedNotificationCenter()->removeObserver(this, EVNET_COME_TO_FOREGROUND); }
virtual ~JSB_ControlButtonTarget() { CCLOGINFO("In the destruction of JSB_ControlButtonTarget ..."); if (_callback != nullptr) { CC_SAFE_DELETE(_callback); } for (auto iter = _jsNativeTargetMap.begin(); iter != _jsNativeTargetMap.end(); ++iter) { if (this == iter->second) { _jsNativeTargetMap.erase(iter); break; } } }
Node::~Node() { CCLOGINFO( "deallocing Node: %p - tag: %i", this, _tag ); #if CC_ENABLE_SCRIPT_BINDING if (_updateScriptHandler) { ScriptEngineManager::getInstance()->getScriptEngine()->removeScriptHandler(_updateScriptHandler); } #endif // User object has to be released before others, since userObject may have a weak reference of this node // It may invoke `node->stopAllAction();` while `_actionManager` is null if the next line is after `CC_SAFE_RELEASE_NULL(_actionManager)`. CC_SAFE_RELEASE_NULL(_userObject); // attributes CC_SAFE_RELEASE_NULL(_shaderProgram); for (auto& child : _children) { child->_parent = nullptr; } removeAllComponents(); CC_SAFE_DELETE(_componentContainer); #if CC_USE_PHYSICS setPhysicsBody(nullptr); #endif CC_SAFE_RELEASE_NULL(_actionManager); CC_SAFE_RELEASE_NULL(_scheduler); _eventDispatcher->removeEventListenersForTarget(this); #if CC_NODE_DEBUG_VERIFY_EVENT_LISTENERS && COCOS2D_DEBUG > 0 _eventDispatcher->debugCheckNodeHasNoEventListenersOnDestruction(this); #endif CCASSERT(!_running, "Node still marked as running on node destruction! Was base class onExit() called in derived class onExit() implementations?"); CC_SAFE_RELEASE(_eventDispatcher); }
void CCEGLViewProtocol::getSetOfTouchesEndOrCancel(CCSet& set, int num, int ids[], float xs[], float ys[]) { for (int i = 0; i < num; ++i) { int id = ids[i]; float x = xs[i]; float y = ys[i]; CC_CONTINUE_IF(s_TouchesIntergerDict.find(id) == s_TouchesIntergerDict.end()); int index = s_TouchesIntergerDict.at(id); /* Add to the set to send to the director */ CATouch* pTouch = s_pTouches[index]; if (pTouch) { CCLOGINFO("Ending touches with id: %d, x=%f, y=%f", id, x, y); pTouch->setTouchInfo(index, (x - m_obViewPortRect.origin.x) / m_fScaleX, (y - m_obViewPortRect.origin.y) / m_fScaleY); set.addObject(pTouch); // release the object pTouch->release(); s_pTouches[index] = NULL; removeUsedIndexBit(index); s_TouchesIntergerDict.erase(id); } else { CCLOG("Ending touches with id: %d error", id); return; } } if (set.count() == 0) { CCLOG("touchesEnded or touchesCancel: count = 0"); return; } }
Reference* Bundle3D::seekToFirstType(unsigned int type) { // for each Reference for (unsigned int i = 0; i < _referenceCount; ++i) { Reference* ref = &_references[i]; if (ref->type == type) { // Found a match if (_binaryReader.seek(ref->offset, SEEK_SET) == false) { CCLOGINFO("Failed to seek to object '%s' in bundle '%s'.", ref->id.c_str(), _path.c_str()); return nullptr; } return ref; } } return nullptr; }
void ObjectRenderer::onSurfaceChanged(int width, int height) { glViewport (0,0,width,height); //指定矩阵 glMatrixMode (GL_PROJECTION); //将当前的矩阵设置为glMatrixMode指定的矩阵 glLoadIdentity (); Size size(960,640); float zeye = 640/1.1566f; xgluPerspective(60, (GLfloat)size.width/size.height, 1, zeye+size.height/2); // xgluLookAt(size.width/2, size.height/2, zeye, size.width/2, size.height/2, 0.0f, 0.0f, 1.0f, 0.0f); // Vec3 eye(size.width/2, size.height/2, zeye), center(size.width/2, size.height/2, 0.0f), up(0.0f, 1.0f, 0.0f); // glLookAt() // glOrthof(-2, 2, -2, 2, -2, 2); CCLOGINFO("width:%d, height:%d", width, height); // setupProjection(); }
TextureAtlas::~TextureAtlas() { CCLOGINFO("cocos2d: TextureAtlas deallocing %p.", this); CC_SAFE_FREE(_quads); CC_SAFE_FREE(_indices); glDeleteBuffers(2, _buffersVBO); #if CC_TEXTURE_ATLAS_USE_VAO glDeleteVertexArrays(1, &_VAOname); GL::bindVAO(0); #endif CC_SAFE_RELEASE(_texture); #if CC_ENABLE_CACHE_TEXTURE_DATA NotificationCenter::getInstance()->removeObserver(this, EVNET_COME_TO_FOREGROUND); #endif }
virtual ~JSB_ControlButtonTarget() { CCLOGINFO("In the destruction of JSB_ControlButtonTarget ..."); JSContext* cx = ScriptingCore::getInstance()->getGlobalContext(); if (_needUnroot) { JS_RemoveObjectRoot(cx, &_jsTarget); } JS_RemoveObjectRoot(cx, &_jsFunc); for (auto iter = _jsNativeTargetMap.begin(); iter != _jsNativeTargetMap.end(); ++iter) { if (this == iter->second) { _jsNativeTargetMap.erase(iter); break; } } }
void UserEventContainer::Send(const UserEventType userEventType, const int iEventData, const Value& vEventData ) { CCLOGINFO("UserEventType:%d iEventData:%d",(uint16_t)userEventType, iEventData); auto container = &sm_container->at((uint16_t)userEventType); for (auto i = (int)UserEventPriority::EnumClassMaxVal -1; i > 0; i--) { for(auto entity : container->at(i)) { if (!entity.m_IsUnRegister) { entity.m_CallBack(iEventData, vEventData); } for(int cbidx = 0; cbidx < sm_CallBackVector->size(); cbidx++) { sm_CallBackVector->at(cbidx)(userEventType,iEventData,vEventData); } } } }
TextureAtlas::~TextureAtlas() { CCLOGINFO("deallocing TextureAtlas: %p", this); CC_SAFE_FREE(_quads); CC_SAFE_FREE(_indices); glDeleteBuffers(2, _buffersVBO); if (Configuration::getInstance()->supportsShareableVAO()) { glDeleteVertexArrays(1, &_VAOname); GL::bindVAO(0); } CC_SAFE_RELEASE(_texture); #if CC_ENABLE_CACHE_TEXTURE_DATA Director::getInstance()->getEventDispatcher()->removeEventListener(_rendererRecreatedListener); #endif }
CCNode::~CCNode() { CCLOGINFO( "cocos2d: deallocing" ); // attributes CC_SAFE_RELEASE(m_pCamera); CC_SAFE_RELEASE(m_pGrid); if(m_pChildren && m_pChildren->count() > 0) { CCObject* child; CCARRAY_FOREACH(m_pChildren, child) { CCNode* pChild = (CCNode*) child; if (pChild) { pChild->m_pParent = NULL; } }
CCGLProgram::~CCGLProgram() { CCLOGINFO("cocos2d: %s %d deallocing 0x%X", __FUNCTION__, __LINE__, this); // there is no need to delete the shaders. They should have been already deleted. CCAssert( m_uVertShader == 0, "Vertex Shaders should have been already deleted"); CCAssert( m_uFragShader == 0, "Vertex Shaders should have been already deleted"); if (m_uProgram) { ccGLDeleteProgram(m_uProgram); } tHashUniformEntry *current_element, *tmp; // Purge uniform hash HASH_ITER(hh, m_pHashForUniforms, current_element, tmp) { HASH_DEL(m_pHashForUniforms, current_element); free(current_element->value); free(current_element); }
void EGLViewProtocol::handleTouchesMove(int num, int ids[], float xs[], float ys[]) { Set set; for (int i = 0; i < num; ++i) { int id = ids[i]; float x = xs[i]; float y = ys[i]; Integer* pIndex = (Integer*)s_TouchesIntergerDict.objectForKey(id); if (pIndex == NULL) { CCLOG("if the index doesn't exist, it is an error"); continue; } CCLOGINFO("Moving touches with id: %d, x=%f, y=%f", id, x, y); Touch* pTouch = s_pTouches[pIndex->getValue()]; if (pTouch) { pTouch->setTouchInfo(pIndex->getValue(), (x - _viewPortRect.origin.x) / _scaleX, (y - _viewPortRect.origin.y) / _scaleY); set.addObject(pTouch); } else { // It is error, should return. CCLOG("Moving touches with id: %d error", id); return; } } if (set.count() == 0) { CCLOG("touchesMoved: count = 0"); return; } _delegate->touchesMoved(&set, NULL); }
GLProgram::~GLProgram() { CCLOGINFO("%s %d deallocing GLProgram: %p", __FUNCTION__, __LINE__, this); // there is no need to delete the shaders. They should have been already deleted. CCASSERT(_vertShader == 0, "Vertex Shaders should have been already deleted"); CCASSERT(_fragShader == 0, "Fragment Shaders should have been already deleted"); if (_program) { GL::deleteProgram(_program); } tHashUniformEntry *current_element, *tmp; // Purge uniform hash HASH_ITER(hh, _hashForUniforms, current_element, tmp) { HASH_DEL(_hashForUniforms, current_element); free(current_element->value); free(current_element); }
//采集事件 void UserEventCallBack::CollectEvent() { UserEventEntity eventEntity; eventEntity.m_UserEventType = UserEventType::CollectEvent; eventEntity.m_CallBack = [](const int id, const Value& value) { CCLOGINFO("CollectEvent id=%d",id); AchievementSystem::getInstance()->CheckAchievement(UserEventType::CollectEvent, 1); }; UserEventContainer::getInstance()->Register(eventEntity); //判断是否有民宅 if (!MakeBuildUI::getInstance()->IsMakeWorkHome()) { UserEventEntity eventEntity; eventEntity.m_UserEventName = "frist_Collect"; eventEntity.m_UserEventType = UserEventType::CollectEvent; eventEntity.m_CallBack = [](const int id, const Value& value) { auto vm_MakeBuild = UserData::getInstance()->GetUserData(UserDataEnum::MakeBuild); UserData::getInstance()->Update_VMI_Fun(&vm_MakeBuild->asValueMap(), (int) CfgIdEnum::ShopId, 0); UserData::getInstance()->Update_VMI_Fun(&vm_MakeBuild->asValueMap(), (int) CfgIdEnum::FarmId, 0); UserData::getInstance()->Update_VMI_Fun(&vm_MakeBuild->asValueMap(), (int) CfgIdEnum::WorkerHouseMinId, 0); MsgListNode::getInstance()->NewMsg("有了原石和晶炭后,你可以开始建造居住站和培养站了"); UserEventContainer::getInstance()->UnRegister(UserEventType::CollectEvent, "frist_Collect"); // 增加新手手势 UIUtils::getInstance()->syncLeadHandShowUI("ProductionUI.csb", true); }; UserEventContainer::getInstance()->Register(eventEntity); } }
void CCEGLViewProtocol::handleTouchesMove(int num, int ids[], float xs[], float ys[]) { CCSet set; for (int i = 0; i < num; ++i) { int id = ids[i]; float x = xs[i]; float y = ys[i]; CC_CONTINUE_IF(s_TouchesIntergerDict.find(id) == s_TouchesIntergerDict.end()); int index = s_TouchesIntergerDict.at(id); CCLOGINFO("Moving touches with id: %d, x=%f, y=%f", id, x, y); CATouch* pTouch = s_pTouches[index]; if (pTouch) { pTouch->setTouchInfo(index, (x - m_obViewPortRect.origin.x) / m_fScaleX, (y - m_obViewPortRect.origin.y) / m_fScaleY); set.addObject(pTouch); } else { // It is error, should return. CCLOG("Moving touches with id: %d error", id); return; } } if (set.count() == 0) { CCLOG("touchesMoved: count = 0"); return; } m_pDelegate->touchesMoved(&set, NULL); }
CCDirector::~CCDirector(void) { CCLOGINFO("cocos2d: deallocing %p", this); #if CC_DIRECTOR_FAST_FPS CC_SAFE_RELEASE(m_pFPSLabel); #endif CC_SAFE_RELEASE(m_pRunningScene); CC_SAFE_RELEASE(m_pNotificationNode); CC_SAFE_RELEASE(m_pobScenesStack); // pop the autorelease pool CCPoolManager::getInstance()->pop(); // delete m_pLastUpdate CC_SAFE_DELETE(m_pLastUpdate); CCKeypadDispatcher::purgeSharedDispatcher(); // delete fps string delete []m_pszFPS; }
void js_PluginIAPJS_IAP_finalize(JSFreeOp *fop, JSObject *obj) { CCLOGINFO("jsbindings: finalizing JS object %p (IAP)", obj); js_proxy_t* nproxy; js_proxy_t* jsproxy; #if (COCOS2D_VERSION >= 0x00031000) JSContext *cx = ScriptingCore::getInstance()->getGlobalContext(); JS::RootedObject jsobj(cx, obj); jsproxy = jsb_get_js_proxy(jsobj); #else jsproxy = jsb_get_js_proxy(obj); #endif if (jsproxy) { nproxy = jsb_get_native_proxy(jsproxy->ptr); sdkbox::IAP *nobj = static_cast<sdkbox::IAP *>(nproxy->ptr); if (nobj) delete nobj; jsb_remove_proxy(nproxy, jsproxy); } }
void js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_finalize(JSFreeOp *fop, JSObject *obj) { CCLOGINFO("jsbindings: finalizing JS object %p (PluginGoogleAnalytics)", obj); js_proxy_t* nproxy; js_proxy_t* jsproxy; #if (SDKBOX_COCOS_JSB_VERSION >= 2) JSContext *cx = ScriptingCore::getInstance()->getGlobalContext(); JS::RootedObject jsobj(cx, obj); jsproxy = jsb_get_js_proxy(jsobj); #else jsproxy = jsb_get_js_proxy(obj); #endif if (jsproxy) { nproxy = jsb_get_native_proxy(jsproxy->ptr); sdkbox::PluginGoogleAnalytics *nobj = static_cast<sdkbox::PluginGoogleAnalytics *>(nproxy->ptr); if (nobj) delete nobj; jsb_remove_proxy(nproxy, jsproxy); } }
CCActionManager::~CCActionManager(void) { CCLOGINFO("CrossApp: deallocing %p", this); removeAllActions(); }
MenuItemFont::~MenuItemFont() { CCLOGINFO("In the destructor of MenuItemFont (%p).", this); }
CCGrabber::~CCGrabber() { CCLOGINFO("cocos2d: deallocing %p", this); ccglDeleteFramebuffers(1, &m_fbo); }
CCSpriteFrame::~CCSpriteFrame(void) { CCLOGINFO("cocos2d: deallocing %p", this); CC_SAFE_RELEASE(m_pobTexture); }
EventListenerTouchOneByOne::~EventListenerTouchOneByOne() { CCLOGINFO("In the destructor of EventListenerTouchOneByOne, %p", this); }
EventListenerTouchAllAtOnce::~EventListenerTouchAllAtOnce() { CCLOGINFO("In the destructor of EventListenerTouchAllAtOnce, %p", this); }
AnimationFrame::~AnimationFrame() { CCLOGINFO( "deallocing AnimationFrame: %p", this); CC_SAFE_RELEASE(_spriteFrame); }