////////////////////////////////////////////////////////////////////////// // addPrimitive void ScnDebugRenderComponent::addPrimitive( eRsPrimitiveType Type, ScnDebugRenderComponentVertex* pVertices, BcU32 NoofVertices, BcU32 Layer, BcBool UseMatrixStack ) { BcAssertMsg( MaterialComponent_.isValid(), "ScnDebugRenderComponent: Material component has not been set!" ); // Check if the vertices are owned by us, if not copy in. if( pVertices < pVertices_ || pVertices_ >= pVerticesEnd_ ) { ScnDebugRenderComponentVertex* pNewVertices = allocVertices( NoofVertices ); if( pNewVertices != NULL ) { BcMemCopy( pNewVertices, pVertices, sizeof( ScnDebugRenderComponentVertex ) * NoofVertices ); pVertices = pNewVertices; } } // TODO: If there was a previous primitive which we can marge into, attempt to. BcU32 VertexIndex = convertVertexPointerToIndex( pVertices ); ScnDebugRenderComponentPrimitiveSection PrimitiveSection = { Type, VertexIndex, NoofVertices, Layer, MaterialComponent_ }; PrimitiveSectionList_.push_back( PrimitiveSection ); LastPrimitiveSection_ = (BcU32)PrimitiveSectionList_.size() - 1; }
////////////////////////////////////////////////////////////////////////// // addPrimitive void ScnCanvasComponent::addPrimitive( RsTopologyType Type, ScnCanvasComponentVertex* pVertices, BcU32 NoofVertices, BcU32 Layer, BcBool UseMatrixStack ) { BcAssertMsg( MaterialComponent_.isValid(), "ScnCanvasComponent: Material component has not been set!" ); // Check if the vertices are owned by us, if not copy in. if( pVertices < pVertices_ || pVertices_ >= pVerticesEnd_ ) { ScnCanvasComponentVertex* pNewVertices = allocVertices( NoofVertices ); if( pNewVertices != NULL ) { BcMemCopy( pNewVertices, pVertices, sizeof( ScnCanvasComponentVertex ) * NoofVertices ); pVertices = pNewVertices; } } // Matrix stack. if( UseMatrixStack == BcTrue && IsIdentity_ == BcFalse ) { MaMat4d Matrix = getMatrix(); for( BcU32 Idx = 0; Idx < NoofVertices; ++Idx ) { ScnCanvasComponentVertex* pVertex = &pVertices[ Idx ]; MaVec3d Vertex = MaVec3d( pVertex->X_, pVertex->Y_, pVertex->Z_ ) * Matrix; pVertex->X_ = Vertex.x(); pVertex->Y_ = Vertex.y(); pVertex->Z_ = Vertex.z(); } } // TODO: If there was a previous primitive which we can marge into, attempt to. BcU32 VertexIndex = convertVertexPointerToIndex( pVertices ); ScnCanvasComponentPrimitiveSection PrimitiveSection = { Type, VertexIndex, NoofVertices, Layer, MaterialComponent_, nullptr }; PrimitiveSectionList_.push_back( PrimitiveSection ); LastPrimitiveSection_ = (BcU32)PrimitiveSectionList_.size() - 1; }