示例#1
0
void GUIElementBase::_setDisabled(bool disabled)
{
    bool isDisabled = (mFlags & GUIElem_Disabled) != 0;
    if (isDisabled == disabled)
        return;

    if (!disabled)
    {
        bool disabledSelf = (mFlags & GUIElem_DisabledSelf) != 0;
        if (!disabledSelf)
        {
            mFlags &= ~GUIElem_Disabled;

            for (auto& child : mChildren)
                child->_setDisabled(false);
        }
    }
    else
    {
        mFlags |= GUIElem_Disabled;

        for (auto& child : mChildren)
            child->_setDisabled(true);
    }

    if (_isVisible())
        _markContentAsDirty();
}
veRenderableObject::veRenderableObject(veSceneManager *sm)
	: USE_VE_PTR_INIT
	, _sceneManager(sm)
	, _renderer(nullptr)
	, _isVisible(true)
	, _isDirtyBoundingBox(true)
    , _isLocalBoundingBox(true)
{
}

veRenderableObject::~veRenderableObject()
{

}

void veRenderableObject::update(veNode *node, veSceneManager *sm)
{
	if (!_isVisible) return;
}

void veRenderableObject::render(veNode *node, veCamera *camera, unsigned int contextID)
{
	if (!_isVisible) return;
	if (_renderer.valid() && _material.valid())
		_renderer->render(node, this, camera, contextID);
}
示例#3
0
void GUIElementBase::_markMeshAsDirty()
{
    if(!_isVisible())
        return;

    if (mParentWidget != nullptr)
        mParentWidget->_markMeshDirty(this);
}
示例#4
0
void GUIElementBase::_markLayoutAsDirty()
{
    if(!_isVisible())
        return;

    if (mUpdateParent != nullptr)
        mUpdateParent->mFlags |= GUIElem_Dirty;
    else
        mFlags |= GUIElem_Dirty;
}
示例#5
0
void GUIElementBase::_registerChildElement(GUIElementBase* element)
{
    assert(!element->_isDestroyed());

    GUIElementBase* parentElement = element->_getParent();
    if(parentElement != nullptr)
    {
        parentElement->_unregisterChildElement(element);
    }

    element->_setParent(this);
    mChildren.push_back(element);

    element->_setActive(_isActive());
    element->_setVisible(_isVisible());
    element->_setDisabled(_isDisabled());

    _markLayoutAsDirty();
}
示例#6
0
	void GUILayout::insertElement(UINT32 idx, GUIElementBase* element)
	{
		if(idx > (UINT32)mChildren.size())
			BS_EXCEPT(InvalidParametersException, "Index out of range: " + toString(idx) + ". Valid range: 0 .. " + toString((UINT32)mChildren.size()));

		if (element->_isDestroyed())
			return;

		GUIElementBase* parentElement = element->_getParent();
		if(parentElement != nullptr)
		{
			parentElement->_unregisterChildElement(element);
		}

		element->_setParent(this);
		mChildren.insert(mChildren.begin() + idx, element);
		
		element->_setActive(_isActive());
		element->_setVisible(_isVisible());
		element->_setDisabled(_isDisabled());

		_markLayoutAsDirty();
	}
示例#7
0
bool PetAI::IsVisible(Unit* pl) const
{
    return _isVisible(pl);
}