mirror of https://github.com/axmolengine/axmol.git
issue #2790: Deletes Vector::init, adds Vector::setCapacity.
This commit is contained in:
parent
90062b656d
commit
d4d864216b
|
@ -190,7 +190,8 @@ EventDispatcher::~EventDispatcher()
|
|||
void EventDispatcher::visitTarget(Node* node)
|
||||
{
|
||||
long i = 0;
|
||||
auto children = node->getChildren();
|
||||
const Vector<Node*>& children = node->getChildren();
|
||||
|
||||
long childrenCount = children.count();
|
||||
|
||||
if(childrenCount > 0)
|
||||
|
|
|
@ -586,6 +586,12 @@ const char* Node::description() const
|
|||
return String::createWithFormat("<Node | Tag = %d>", _tag)->getCString();
|
||||
}
|
||||
|
||||
// lazy allocs
|
||||
void Node::childrenAlloc(void)
|
||||
{
|
||||
_children.setCapacity(4);
|
||||
}
|
||||
|
||||
Node* Node::getChildByTag(int aTag)
|
||||
{
|
||||
CCASSERT( aTag != Node::INVALID_TAG, "Invalid tag");
|
||||
|
@ -607,6 +613,11 @@ void Node::addChild(Node *child, int zOrder, int tag)
|
|||
CCASSERT( child != NULL, "Argument must be non-nil");
|
||||
CCASSERT( child->_parent == NULL, "child already added. It can't be added again");
|
||||
|
||||
if (_children.count() == 0)
|
||||
{
|
||||
this->childrenAlloc();
|
||||
}
|
||||
|
||||
this->insertChild(child, zOrder);
|
||||
|
||||
#ifdef CC_USE_PHYSICS
|
||||
|
|
|
@ -1394,6 +1394,9 @@ protected:
|
|||
Node();
|
||||
virtual ~Node();
|
||||
virtual bool init();
|
||||
|
||||
/// lazy allocs
|
||||
void childrenAlloc(void);
|
||||
|
||||
/// helper that reorder a child
|
||||
void insertChild(Node* child, int z);
|
||||
|
|
|
@ -95,11 +95,7 @@ bool ParticleBatchNode::initWithTexture(Texture2D *tex, int capacity)
|
|||
_textureAtlas = new TextureAtlas();
|
||||
_textureAtlas->initWithTexture(tex, capacity);
|
||||
|
||||
// no lazy alloc in this node
|
||||
if (_children.count() == 0)
|
||||
{
|
||||
_children.init(capacity);
|
||||
}
|
||||
_children.setCapacity(capacity);
|
||||
|
||||
_blendFunc = BlendFunc::ALPHA_PREMULTIPLIED;
|
||||
|
||||
|
@ -211,10 +207,7 @@ long ParticleBatchNode::addChildHelper(ParticleSystem* child, int z, int aTag)
|
|||
CCASSERT( child != NULL, "Argument must be non-nil");
|
||||
CCASSERT( child->getParent() == NULL, "child already added. It can't be added again");
|
||||
|
||||
if (_children.count() == 0 )
|
||||
{
|
||||
_children.init(4);
|
||||
}
|
||||
_children.setCapacity(4);
|
||||
|
||||
//don't use a lazy insert
|
||||
long pos = searchNewPositionInChildrenForZ(z);
|
||||
|
|
|
@ -92,11 +92,8 @@ bool SpriteBatchNode::initWithTexture(Texture2D *tex, long capacity)
|
|||
|
||||
updateBlendFunc();
|
||||
|
||||
// no lazy alloc in this node
|
||||
if (_children.count() == 0)
|
||||
{
|
||||
_children.init(capacity);
|
||||
}
|
||||
_children.setCapacity(capacity);
|
||||
|
||||
_descendants.reserve(capacity);
|
||||
|
||||
setShaderProgram(ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR));
|
||||
|
|
|
@ -35,15 +35,19 @@ template<class T>
|
|||
class CC_DLL Vector
|
||||
{
|
||||
public:
|
||||
|
||||
static const long DEFAULT_CAPACTIY = 7;
|
||||
|
||||
/** creates an emptry Vector */
|
||||
explicit Vector<T>(long capacity=DEFAULT_CAPACTIY)
|
||||
|
||||
Vector<T>()
|
||||
: _data()
|
||||
{
|
||||
CCLOG("In the default constructor of Vector.");
|
||||
init(capacity);
|
||||
|
||||
}
|
||||
|
||||
/** creates an emptry Vector */
|
||||
explicit Vector<T>(long capacity)
|
||||
: _data()
|
||||
{
|
||||
CCLOG("In the default constructor with capacity of Vector.");
|
||||
setCapacity(capacity);
|
||||
}
|
||||
|
||||
virtual ~Vector<T>() {
|
||||
|
@ -83,11 +87,16 @@ public:
|
|||
return getObjectAtIndex(index);
|
||||
}
|
||||
|
||||
/** Initializes an array with capacity */
|
||||
bool init(long capacity)
|
||||
/** Sets capacity of current array */
|
||||
void setCapacity(long capacity)
|
||||
{
|
||||
_data.reserve(capacity);
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Returns capacity of the array */
|
||||
long getCapacity() const
|
||||
{
|
||||
return _data.capacity();
|
||||
}
|
||||
|
||||
void copy(const Vector<T>& other)
|
||||
|
@ -96,7 +105,7 @@ public:
|
|||
return;
|
||||
|
||||
removeAllObjects();
|
||||
init(other.count());
|
||||
setCapacity(other.count());
|
||||
addObjectsFromArray(other);
|
||||
}
|
||||
|
||||
|
@ -108,12 +117,6 @@ public:
|
|||
return _data.size();
|
||||
}
|
||||
|
||||
/** Returns capacity of the array */
|
||||
long capacity() const
|
||||
{
|
||||
return _data.capacity();
|
||||
}
|
||||
|
||||
/** Returns index of a certain object, return UINT_MAX if doesn't contain the object */
|
||||
long getIndexOfObject(T object) const
|
||||
{
|
||||
|
@ -238,7 +241,6 @@ public:
|
|||
(*it)->release();
|
||||
}
|
||||
_data.clear();
|
||||
_data.reserve(DEFAULT_CAPACTIY);
|
||||
}
|
||||
|
||||
/** Fast way to remove a certain object */
|
||||
|
|
|
@ -305,7 +305,7 @@ void Bone::addChildBone(Bone *child)
|
|||
|
||||
if(_children.count() == 0)
|
||||
{
|
||||
_children.init(4);
|
||||
_children.setCapacity(4);
|
||||
}
|
||||
|
||||
if (_children.getIndexOfObject(child) == CC_INVALID_INDEX)
|
||||
|
|
Loading…
Reference in New Issue