示例#1
0
    void DiInstanceBatch::Update(DiCamera* camera)
    {
        mCurrentCamera = camera;
        mDirtyAnimation = false;

        UpdateVisibility();

        mPrimitiveCount = mMeshReference->GetSubMesh(mCreator->mSubMeshIdx)->GetPrimitiveCount();
        mPrimitiveCount *= GetModelNums();

        if (mVisible)
        {
            if (HasSkeleton())
            {
                auto itor = mInstancedModels.begin();
                auto end = mInstancedModels.end();

                while (itor != end)
                {
                    mDirtyAnimation |= (*itor)->UpdateAnimation();
                    ++itor;
                }
            }

            mAddToBatch = true;
        }

        mVisible = true;
    }
示例#2
0
    void DiInstanceBatch::CullingUpdate( DiRenderBatchGroup* group, DiCamera* )
    {
        mDirtyAnimation = false;

        UpdateVisibility();

        mPrimitiveCount = mMeshReference->GetSubMesh(mCreator->mSubMeshIdx)->GetPrimitiveCount();
        mPrimitiveCount *= GetModelNums();

        if( mVisible )
        {
            if (HasSkeleton())
            {
                InstancedModelVec::const_iterator itor = mInstancedModels.begin();
                InstancedModelVec::const_iterator end  = mInstancedModels.end();

                while( itor != end )    
                {
                    mDirtyAnimation |= (*itor)->UpdateAnimation();
                    ++itor;
                }
            }

            group->AddRenderUnit( this );
        }

        mVisible = true;
    }