package com.asha.vrlib.plugins.hotspot; import android.content.Context; import android.net.Uri; import android.util.SparseArray; import com.asha.vrlib.MD360Director; import com.asha.vrlib.MDVRLibrary; import com.asha.vrlib.model.MDHotspotBuilder; import com.asha.vrlib.texture.MD360BitmapTexture; import com.asha.vrlib.texture.MD360Texture; /** * Created by hzqiujiadi on 2017/4/12. * hzqiujiadi ashqalcn@gmail.com */ public class MDSimpleHotspot extends MDAbsHotspot { private static final String TAG = "MDSimplePlugin"; private SparseArray<Uri> uriList; private int mPendingTextureKey = 0; private int mCurrentTextureKey = 0; // plugin private MDVRLibrary.IImageLoadProvider provider; private MD360Texture texture; public MDSimpleHotspot(MDHotspotBuilder builder) { super(builder.builderDelegate); this.provider = builder.imageLoadProvider; this.uriList = builder.uriList; } @Override protected void initInGL(Context context) { super.initInGL(context); texture = new MD360BitmapTexture(new MDVRLibrary.IBitmapProvider() { @Override public void onProvideBitmap(MD360BitmapTexture.Callback callback) { Uri uri = uriList.get(mCurrentTextureKey); if (uri != null){ provider.onProvideBitmap(uri, callback); } } }); texture.create(); } @Override public void renderer(int index, int width, int height, MD360Director director) { if (texture == null){ return; } if (mPendingTextureKey != mCurrentTextureKey){ mCurrentTextureKey = mPendingTextureKey; texture.notifyChanged(); } texture.texture(program); if (texture.isReady()){ super.renderer(index, width, height, director); } } public void useTexture(int key) { mPendingTextureKey = key; } }