void SkinnedMesh::build() { PERF_NODE_FUNC(); Mesh::build(); assert(m_resource->getResourceState() == RES_STATE_COMPLETE); size_t vertexCount = m_resource->getVertexCount(); m_staticStream.format = m_resource->getStaticStreamFormat(); m_staticStream.stride = MeshFile::calculateVertexStride(m_staticStream.format); m_staticStream.buffer = const_cast<unsigned char*>(m_resource->getStaticVertexStream()); m_dynamicStream.format = m_resource->getDynamicStreamFormat(); m_dynamicStream.stride = MeshFile::calculateVertexStride(m_dynamicStream.format); if (m_gpuSkinning) { m_dynamicStream.buffer = const_cast<unsigned char*>(m_resource->getDynamicVertexStream()); } else { m_dynamicStream.buffer = GRP_NEW unsigned char[vertexCount * m_dynamicStream.stride]; } size_t boneInfluenceCount = m_resource->getBoneNames().size(); m_boneTransforms.resize(boneInfluenceCount, NULL); m_boneIds.resize(boneInfluenceCount, -1); m_finalBoneTransforms.resize(boneInfluenceCount); setBuilt(); }
void Building::build(float unit) { if (!mBuilt) { mLife += unit; if (mLife >= mLifeMax) { mLife = mLifeMax; setBuilt(true); } } }