CoreSyncData GpuParamBlockBuffer::syncToCore(FrameAlloc* allocator) { UINT8* buffer = allocator->alloc(mSize); read(0, buffer, mSize); return CoreSyncData(buffer, mSize); }
CoreSyncData RenderTexture::syncToCore(FrameAlloc* allocator) { UINT32 size = sizeof(RenderTextureProperties); UINT8* buffer = allocator->alloc(size); RenderTextureProperties& props = const_cast<RenderTextureProperties&>(getProperties()); memcpy(buffer, (void*)&props, size); return CoreSyncData(buffer, size); }
CoreSyncData SpriteTexture::syncToCore(FrameAlloc* allocator) { UINT32 size = rttiGetElemSize(mUVOffset) + rttiGetElemSize(mUVScale) + sizeof(SPtr<ct::Texture>) + rttiGetElemSize(mAnimation) + rttiGetElemSize(mPlayback); UINT8* buffer = allocator->alloc(size); char* dataPtr = (char*)buffer; dataPtr = rttiWriteElem(mUVOffset, dataPtr); dataPtr = rttiWriteElem(mUVScale, dataPtr); SPtr<ct::Texture>* texture = new (dataPtr) SPtr<ct::Texture>(); if (mAtlasTexture.isLoaded(false)) *texture = mAtlasTexture->getCore(); else *texture = nullptr; dataPtr += sizeof(SPtr<ct::Texture>); dataPtr = rttiWriteElem(mAnimation, dataPtr); dataPtr = rttiWriteElem(mPlayback, dataPtr); return CoreSyncData(buffer, size); }
CoreSyncData Light::syncToCore(FrameAlloc* allocator) { UINT32 size = 0; size += rttiGetElemSize(mPosition); size += rttiGetElemSize(mRotation); size += rttiGetElemSize(mType); size += rttiGetElemSize(mCastsShadows); size += rttiGetElemSize(mColor); size += rttiGetElemSize(mRange); size += rttiGetElemSize(mIntensity); size += rttiGetElemSize(mSpotAngle); size += rttiGetElemSize(mSpotFalloffAngle); size += rttiGetElemSize(mPhysCorrectAtten); size += rttiGetElemSize(mIsActive); size += rttiGetElemSize(getCoreDirtyFlags()); size += rttiGetElemSize(mBounds); UINT8* buffer = allocator->alloc(size); char* dataPtr = (char*)buffer; dataPtr = rttiWriteElem(mPosition, dataPtr); dataPtr = rttiWriteElem(mRotation, dataPtr); dataPtr = rttiWriteElem(mType, dataPtr); dataPtr = rttiWriteElem(mCastsShadows, dataPtr); dataPtr = rttiWriteElem(mColor, dataPtr); dataPtr = rttiWriteElem(mRange, dataPtr); dataPtr = rttiWriteElem(mIntensity, dataPtr); dataPtr = rttiWriteElem(mSpotAngle, dataPtr); dataPtr = rttiWriteElem(mSpotFalloffAngle, dataPtr); dataPtr = rttiWriteElem(mPhysCorrectAtten, dataPtr); dataPtr = rttiWriteElem(mIsActive, dataPtr); dataPtr = rttiWriteElem(getCoreDirtyFlags(), dataPtr); dataPtr = rttiWriteElem(mBounds, dataPtr); return CoreSyncData(buffer, size); }