bool LayerMultiplex::initWithLayers(Layer *layer, va_list params) { if (Layer::init()) { _layers.reserve(5); #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { sEngine->retainScriptObject(this, layer); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _layers.pushBack(layer); Layer *l = va_arg(params,Layer*); while( l ) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS if (sEngine) { sEngine->retainScriptObject(this, l); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _layers.pushBack(l); l = va_arg(params,Layer*); } _enabledLayer = 0; this->addChild(_layers.at(_enabledLayer)); return true; } return false; }
bool LayerMultiplex::initWithArray(const Vector<Layer*>& arrayOfLayers) { if (Layer::init()) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { for (const auto &layer : arrayOfLayers) { if (layer) { sEngine->retainScriptObject(this, layer); } } } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _layers.reserve(arrayOfLayers.size()); _layers.pushBack(arrayOfLayers); _enabledLayer = 0; this->addChild(_layers.at(_enabledLayer)); return true; } return false; }
bool MenuItemToggle::initWithCallback(const ccMenuCallback &callback, MenuItem *item, va_list args) { MenuItem::initWithCallback(callback); int z = 0; MenuItem *i = item; #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS while(i) { z++; #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS if (sEngine) { sEngine->retainScriptObject(this, i); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _subItems.pushBack(i); i = va_arg(args, MenuItem*); } _selectedIndex = UINT_MAX; this->setSelectedIndex(0); return true; }
void LayerMultiplex::addLayer(Layer* layer) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { sEngine->retainScriptObject(this, layer); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _layers.pushBack(layer); }
void MenuItemToggle::addSubItem(MenuItem *item) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { sEngine->retainScriptObject(this, item); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _subItems.pushBack(item); }
// helper used by reorderChild & add void ProtectedNode::insertProtectedChild(cocos2d::Node *child, int z) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { sEngine->retainScriptObject(this, child); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS _reorderProtectedChildDirty = true; _protectedChildren.pushBack(child); child->setLocalZOrder(z); }
void RenderTexture::setSprite(Sprite* sprite) { #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { if (sprite) sEngine->retainScriptObject(this, sprite); if (_sprite) sEngine->releaseScriptObject(this, _sprite); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS CC_SAFE_RETAIN(sprite); CC_SAFE_RELEASE(_sprite); _sprite = sprite; }
void EventDispatcher::addEventListener(EventListener* listener) { if (_inDispatch == 0) { forceAddEventListener(listener); } else { _toAddedListeners.push_back(listener); } #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { sEngine->retainScriptObject(this, listener); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS listener->retain(); }
void ClippingNode::setStencil(Node *stencil) { if (_stencil == stencil) return; #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { if (_stencil) sEngine->releaseScriptObject(this, _stencil); if (stencil) sEngine->retainScriptObject(this, stencil); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS CC_SAFE_RETAIN(stencil); CC_SAFE_RELEASE(_stencil); _stencil = stencil; }
void ClippingNode::setStencil(Node *stencil) { //early out if the stencil is already set if (_stencil == stencil) return; #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { if (_stencil) sEngine->releaseScriptObject(this, _stencil); if (stencil) sEngine->retainScriptObject(this, stencil); } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS //cleanup current stencil if(_stencil != nullptr && _stencil->isRunning()) { _stencil->onExitTransitionDidStart(); _stencil->onExit(); } CC_SAFE_RELEASE_NULL(_stencil); //initialise new stencil _stencil = stencil; CC_SAFE_RETAIN(_stencil); if(_stencil != nullptr && this->isRunning()) { _stencil->onEnter(); if(this->_isTransitionFinished) { _stencil->onEnterTransitionDidFinish(); } } if (_stencil != nullptr) _originStencilProgram = _stencil->getGLProgram(); }
MenuItemToggle * MenuItemToggle::createWithCallback(const ccMenuCallback &callback, const Vector<MenuItem*>& menuItems) { MenuItemToggle *ret = new (std::nothrow) MenuItemToggle(); ret->MenuItem::initWithCallback(callback); #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { for (const auto &item : menuItems) { if (item) { sEngine->retainScriptObject(ret, item); } } } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS ret->_subItems = menuItems; ret->_selectedIndex = UINT_MAX; ret->setSelectedIndex(0); return ret; }
// FIXME:: deprecated MenuItemToggle * MenuItemToggle::createWithTarget(Ref* target, SEL_MenuHandler selector, const Vector<MenuItem*>& menuItems) { MenuItemToggle *ret = new (std::nothrow) MenuItemToggle(); ret->MenuItem::initWithCallback(std::bind(selector, target, std::placeholders::_1)); #if CC_ENABLE_GC_FOR_NATIVE_OBJECTS auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine(); if (sEngine) { for (const auto &item : menuItems) { if (item) { sEngine->retainScriptObject(ret, item); } } } #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS ret->_subItems = menuItems; ret->_selectedIndex = UINT_MAX; ret->setSelectedIndex(0); return ret; }