////////////////////////////////////////////////////////////////////////// // fileChunkReady //virtual void ScnRenderTarget::fileChunkReady( BcU32 ChunkIdx, BcU32 ChunkID, void* pData ) { if( ChunkID == BcHash( "header" ) ) { markCreate(); } }
////////////////////////////////////////////////////////////////////////// // fileChunkReady void ScnSound::fileChunkReady( BcU32 ChunkIdx, BcU32 ChunkID, void* pData ) { if( ChunkID == BcHash( "filedata" ) ) { pFileData_ = (SsSourceFileData*)pData; markCreate(); } }
////////////////////////////////////////////////////////////////////////// // fileChunkReady void ScnModel::fileChunkReady( BcU32 ChunkIdx, BcU32 ChunkID, void* pData ) { // If we have no render core get chunk 0 so we keep getting entered into. if( RsCore::pImpl() == NULL ) { requestChunk( 0 ); return; } if( ChunkID == BcHash( "header" ) ) { pHeader_ = (ScnModelHeader*)pData; } else if( ChunkID == BcHash( "nodetransformdata" ) ) { pNodeTransformData_ = (ScnModelNodeTransformData*)pData; } else if( ChunkID == BcHash( "nodepropertydata" ) ) { pNodePropertyData_ = (ScnModelNodePropertyData*)pData; // Mark up node names. // TODO: Automate this process with reflection! for( BcU32 NodeIdx = 0; NodeIdx < pHeader_->NoofNodes_; ++NodeIdx ) { ScnModelNodePropertyData* pNodePropertyNode = &pNodePropertyData_[ NodeIdx ]; markupName( pNodePropertyNode->Name_ ); } } else if( ChunkID == BcHash( "vertexdata" ) ) { BcAssert( pVertexBufferData_ == NULL || pVertexBufferData_ == pData ); pVertexBufferData_ = (BcU8*)pData; } else if( ChunkID == BcHash( "indexdata" ) ) { BcAssert( pIndexBufferData_ == NULL || pIndexBufferData_ == pData ); pIndexBufferData_ = (BcU8*)pData; } else if( ChunkID == BcHash( "vertexelements" ) ) { pVertexElements_ = (RsVertexElement*)pData; } else if( ChunkID == BcHash( "meshdata" ) ) { pMeshData_ = (ScnModelMeshData*)pData; RsVertexElement* pVertexElements = pVertexElements_; for( BcU32 Idx = 0; Idx < pHeader_->NoofPrimitives_; ++Idx ) { pMeshData_->VertexElements_ = pVertexElements; pVertexElements += pMeshData_->NoofVertexElements_; } markCreate(); // All data loaded, time to create. } }
////////////////////////////////////////////////////////////////////////// // initialise //virtual void ScnRenderTarget::initialise( BcU32 Width, BcU32 Height ) { ScnTexture::initialise(); Header_.Width_ = Width; Header_.Height_ = Height; Header_.Depth_ = 1; Header_.Levels_ = 1; Header_.Type_ = rsTT_2D; Header_.Format_ = rsTF_RGBA8; // pRenderTarget_ = NULL; markCreate(); }