Commit 3caf8615 authored by Evan Blake's avatar Evan Blake

Screen sharing is a failure. Progress so far included

parent 1f9e40be
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.YourCompany.VRClassroom;
import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
/**
* You should start your derived downloader class when this receiver gets the message
* from the alarm service using the provided service helper function within the
* DownloaderClientMarshaller. This class must be then registered in your AndroidManifest.xml
* file with a section like this:
* <receiver android:name=".AlarmReceiver"/>
*/
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
DownloaderClientMarshaller.startDownloadServiceIfRequired(context, intent, OBBDownloaderService.class);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
}
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.YourCompany.VRClassroom;
import com.android.vending.expansion.zipfile.ZipResourceFile;
import com.android.vending.expansion.zipfile.ZipResourceFile.ZipEntryRO;
import com.google.android.vending.expansion.downloader.Constants;
import com.google.android.vending.expansion.downloader.DownloadProgressInfo;
import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;
import com.google.android.vending.expansion.downloader.DownloaderServiceMarshaller;
import com.google.android.vending.expansion.downloader.Helpers;
import com.google.android.vending.expansion.downloader.IDownloaderClient;
import com.google.android.vending.expansion.downloader.IDownloaderService;
import com.google.android.vending.expansion.downloader.IStub;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Messenger;
import android.os.SystemClock;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.util.zip.CRC32;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import com.epicgames.ue4.GameActivity;
/**
* This is sample code for a project built against the downloader library. It
* implements the IDownloaderClient that the client marshaler will talk to as
* messages are delivered from the DownloaderService.
*/
public class DownloaderActivity extends Activity implements IDownloaderClient {
private static final String LOG_TAG = "LVLDownloader";
private ProgressBar mPB;
private TextView mStatusText;
private TextView mProgressFraction;
private TextView mProgressPercent;
private TextView mAverageSpeed;
private TextView mTimeRemaining;
private View mDashboard;
private View mCellMessage;
private Button mPauseButton;
private Button mWiFiSettingsButton;
private boolean mStatePaused;
private int mState;
private IDownloaderService mRemoteService;
private IStub mDownloaderClientStub;
private final CharSequence[] OBBSelectItems = { "Use Store Data", "Use Development Data" };
private void setState(int newState) {
if (mState != newState) {
mState = newState;
mStatusText.setText(Helpers.getDownloaderStringResourceIDFromState(newState));
}
}
private void setButtonPausedState(boolean paused) {
mStatePaused = paused;
int stringResourceID = paused ? R.string.text_button_resume :
R.string.text_button_pause;
mPauseButton.setText(stringResourceID);
}
static DownloaderActivity _download;
private Intent OutputData;
/**
* Go through each of the APK Expansion files defined in the structure above
* and determine if the files are present and match the required size. Free
* applications should definitely consider doing this, as this allows the
* application to be launched for the first time without having a network
* connection present. Paid applications that use LVL should probably do at
* least one LVL check that requires the network to be present, so this is
* not as necessary.
*
* @return true if they are present.
*/
boolean expansionFilesDelivered() {
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion, OBBData.AppType);
GameActivity.Log.debug("Checking for file : " + fileName);
String fileForNewFile = Helpers.generateSaveFileName(this, fileName);
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(this, fileName);
GameActivity.Log.debug("which is really being resolved to : " + fileForNewFile + "\n Or : " + fileForDevFile);
if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, false) &&
!Helpers.doesFileExistDev(this, fileName, xf.mFileSize, false))
return false;
}
return true;
}
boolean onlySingleExpansionFileFound() {
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion, OBBData.AppType);
GameActivity.Log.debug("Checking for file : " + fileName);
String fileForNewFile = Helpers.generateSaveFileName(this, fileName);
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(this, fileName);
if (Helpers.doesFileExist(this, fileName, xf.mFileSize, false) &&
Helpers.doesFileExistDev(this, fileName, xf.mFileSize, false))
return false;
}
return true;
}
File getFileDetailsCacheFile() {
return new File(this.getExternalFilesDir(null), "cacheFile.txt");
}
boolean expansionFilesUptoData() {
File cacheFile = getFileDetailsCacheFile();
// Read data into an array or something...
Map<String, Long> fileDetailsMap = new HashMap<String, Long>();
if(cacheFile.exists()) {
try {
FileReader fileCache = new FileReader(cacheFile);
BufferedReader bufferedFileCache = new BufferedReader(fileCache);
List<String> lines = new ArrayList<String>();
String line = null;
while ((line = bufferedFileCache.readLine()) != null) {
lines.add(line);
}
bufferedFileCache.close();
for(String dataLine : lines)
{
GameActivity.Log.debug("Splitting dataLine => " + dataLine);
String[] parts = dataLine.split(",");
fileDetailsMap.put(parts[0], Long.parseLong(parts[1]));
}
}
catch(Exception e)
{
GameActivity.Log.debug("Exception thrown during file details reading.");
e.printStackTrace();
fileDetailsMap.clear();
}
}
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion, OBBData.AppType);
String fileForNewFile = Helpers.generateSaveFileName(this, fileName);
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(this, fileName);
// check to see if time/data on files match cached version
// if not return false
File srcFile = new File(fileForNewFile);
File srcDevFile = new File(fileForDevFile);
long lastModified = srcFile.lastModified();
long lastModifiedDev = srcDevFile.lastModified();
if(!(srcFile.exists() && fileDetailsMap.containsKey(fileName) && lastModified == fileDetailsMap.get(fileName))
&&
!(srcDevFile.exists() && fileDetailsMap.containsKey(fileName) && lastModifiedDev == fileDetailsMap.get(fileName)))
return false;
}
return true;
}
static private void RemoveOBBFile(int OBBToDelete) {
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(DownloaderActivity._download, xf.mIsMain, xf.mFileVersion, OBBData.AppType);
switch(OBBToDelete)
{
case 0:
String fileForNewFile = Helpers.generateSaveFileName(DownloaderActivity._download, fileName);
File srcFile = new File(fileForNewFile);
srcFile.delete();
break;
case 1:
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(DownloaderActivity._download, fileName);
File srcDevFile = new File(fileForDevFile);
srcDevFile.delete();
break;
}
}
}
private void ProcessOBBFiles()
{
if(GameActivity.Get().VerifyOBBOnStartUp && !expansionFilesUptoData()) {
validateXAPKZipFiles();
} else {
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_FILES_PRESENT);
setResult(RESULT_OK, OutputData);
finish();
overridePendingTransition(R.anim.noaction, R.anim.noaction);
}
}
/**
* Calculating a moving average for the validation speed so we don't get
* jumpy calculations for time etc.
*/
static private final float SMOOTHING_FACTOR = 0.005f;
/**
* Used by the async task
*/
private boolean mCancelValidation;
/**
* Go through each of the Expansion APK files and open each as a zip file.
* Calculate the CRC for each file and return false if any fail to match.
*
* @return true if XAPKZipFile is successful
*/
void validateXAPKZipFiles() {
AsyncTask<Object, DownloadProgressInfo, Boolean> validationTask = new AsyncTask<Object, DownloadProgressInfo, Boolean>() {
@Override
protected void onPreExecute() {
mDashboard.setVisibility(View.VISIBLE);
mCellMessage.setVisibility(View.GONE);
mStatusText.setText(R.string.text_verifying_download);
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCancelValidation = true;
}
});
mPauseButton.setVisibility(View.GONE);
// mPauseButton.setText(R.string.text_button_cancel_verify);
super.onPreExecute();
}
@Override
protected Boolean doInBackground(Object... params) {
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(
DownloaderActivity.this,
xf.mIsMain, xf.mFileVersion, OBBData.AppType);
boolean normalFile = Helpers.doesFileExist(DownloaderActivity.this, fileName, xf.mFileSize, false);
boolean devFile = Helpers.doesFileExistDev(DownloaderActivity.this, fileName, xf.mFileSize, false);
if (!normalFile && !devFile )
return false;
if(normalFile)
{
fileName = Helpers.generateSaveFileName(DownloaderActivity.this, fileName);
}
else
{
fileName = Helpers.generateSaveFileNameDevelopment(DownloaderActivity.this, fileName);
}
ZipResourceFile zrf;
byte[] buf = new byte[1024 * 256];
try {
zrf = new ZipResourceFile(fileName);
ZipEntryRO[] entries = zrf.getAllEntries();
/**
* First calculate the total compressed length
*/
long totalCompressedLength = 0;
for (ZipEntryRO entry : entries) {
totalCompressedLength += entry.mCompressedLength;
}
float averageVerifySpeed = 0;
long totalBytesRemaining = totalCompressedLength;
long timeRemaining;
/**
* Then calculate a CRC for every file in the Zip file,
* comparing it to what is stored in the Zip directory.
* Note that for compressed Zip files we must extract
* the contents to do this comparison.
*/
for (ZipEntryRO entry : entries) {
if (-1 != entry.mCRC32) {
long length = entry.mUncompressedLength;
CRC32 crc = new CRC32();
DataInputStream dis = null;
try {
dis = new DataInputStream(
zrf.getInputStream(entry.mFileName));
long startTime = SystemClock.uptimeMillis();
while (length > 0) {
int seek = (int) (length > buf.length ? buf.length
: length);
dis.readFully(buf, 0, seek);
crc.update(buf, 0, seek);
length -= seek;
long currentTime = SystemClock.uptimeMillis();
long timePassed = currentTime - startTime;
if (timePassed > 0) {
float currentSpeedSample = (float) seek
/ (float) timePassed;
if (0 != averageVerifySpeed) {
averageVerifySpeed = SMOOTHING_FACTOR
* currentSpeedSample
+ (1 - SMOOTHING_FACTOR)
* averageVerifySpeed;
} else {
averageVerifySpeed = currentSpeedSample;
}
totalBytesRemaining -= seek;
timeRemaining = (long) (totalBytesRemaining / averageVerifySpeed);
this.publishProgress(
new DownloadProgressInfo(
totalCompressedLength,
totalCompressedLength
- totalBytesRemaining,
timeRemaining,
averageVerifySpeed)
);
}
startTime = currentTime;
if (mCancelValidation)
return true;
}
if (crc.getValue() != entry.mCRC32) {
Log.e(Constants.TAG,
"CRC does not match for entry: "
+ entry.mFileName);
Log.e(Constants.TAG,
"In file: " + entry.getZipFileName());
return false;
}
} finally {
if (null != dis) {
dis.close();
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
return true;
}
@Override
protected void onProgressUpdate(DownloadProgressInfo... values) {
onDownloadProgress(values[0]);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Boolean result) {
if (result) {
// save details to cache file...
try {
File cacheFile = getFileDetailsCacheFile();
FileWriter fileCache = new FileWriter(cacheFile);
BufferedWriter bufferedFileCache = new BufferedWriter(fileCache);
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(DownloaderActivity.this, xf.mIsMain, xf.mFileVersion, OBBData.AppType);
String fileForNewFile = Helpers.generateSaveFileName(DownloaderActivity.this, fileName);
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(DownloaderActivity.this, fileName);
GameActivity.Log.debug("Writing details for file : " + fileName);
File srcFile = new File(fileForNewFile);
File srcDevFile = new File(fileForDevFile);
if(srcFile.exists()) {
long lastModified = srcFile.lastModified();
bufferedFileCache.write(fileName);
bufferedFileCache.write(",");
bufferedFileCache.write(new Long(lastModified).toString());
bufferedFileCache.newLine();
GameActivity.Log.debug("Details for file : " + fileName + " with modified time of " + new Long(lastModified).toString() );
}
else {
long lastModified = srcDevFile.lastModified();
bufferedFileCache.write(fileName);
bufferedFileCache.write(",");
bufferedFileCache.write(new Long(lastModified).toString());
bufferedFileCache.newLine();
GameActivity.Log.debug("Details for file : " + fileName + " with modified time of " + new Long(lastModified).toString() );
}
}
bufferedFileCache.close();
}
catch(Exception e)
{
GameActivity.Log.debug("Exception thrown during file details writing.");
e.printStackTrace();
}
/*
mDashboard.setVisibility(View.VISIBLE);
mCellMessage.setVisibility(View.GONE);
mStatusText.setText(R.string.text_validation_complete);
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_FILES_PRESENT);
setResult(RESULT_OK, OutputData);
finish();
}
});
mPauseButton.setText(android.R.string.ok);
*/
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_FILES_PRESENT);
setResult(RESULT_OK, OutputData);
finish();
} else {
// clear cache file if it exists...
File cacheFile = getFileDetailsCacheFile();
if(cacheFile.exists()) {
cacheFile.delete();
}
mDashboard.setVisibility(View.VISIBLE);
mCellMessage.setVisibility(View.GONE);
mStatusText.setText(R.string.text_validation_failed);
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_INVALID);
setResult(RESULT_OK, OutputData);
finish();
}
});
mPauseButton.setText(android.R.string.cancel);
}
super.onPostExecute(result);
}
};
validationTask.execute(new Object());
}
/**
* If the download isn't present, we initialize the download UI. This ties
* all of the controls into the remote service calls.
*/
private void initializeDownloadUI() {
mDownloaderClientStub = DownloaderClientMarshaller.CreateStub
(this, OBBDownloaderService.class);
setContentView(R.layout.downloader_progress);
mPB = (ProgressBar) findViewById(R.id.progressBar);
mStatusText = (TextView) findViewById(R.id.statusText);
mProgressFraction = (TextView) findViewById(R.id.progressAsFraction);
mProgressPercent = (TextView) findViewById(R.id.progressAsPercentage);
mAverageSpeed = (TextView) findViewById(R.id.progressAverageSpeed);
mTimeRemaining = (TextView) findViewById(R.id.progressTimeRemaining);
mDashboard = findViewById(R.id.downloaderDashboard);
mCellMessage = findViewById(R.id.approveCellular);
mPauseButton = (Button) findViewById(R.id.pauseButton);
mWiFiSettingsButton = (Button) findViewById(R.id.wifiSettingsButton);
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mStatePaused) {
mRemoteService.requestContinueDownload();
} else {
mRemoteService.requestPauseDownload();
}
setButtonPausedState(!mStatePaused);
}
});
mWiFiSettingsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
});
Button resumeOnCell = (Button) findViewById(R.id.resumeOverCellular);
resumeOnCell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mRemoteService.setDownloadFlags(IDownloaderService.FLAGS_DOWNLOAD_OVER_CELLULAR);
mRemoteService.requestContinueDownload();
mCellMessage.setVisibility(View.GONE);
}
});
}
/**
* Called when the activity is first create; we wouldn't create a layout in
* the case where we have the file and are moving to another activity
* without downloading.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GameActivity.Log.debug("Starting DownloaderActivity...");
_download = this;
// Create somewhere to place the output - we'll check this on 'finish' to make sure we are returning 'something'
OutputData = new Intent();
/**
* Both downloading and validation make use of the "download" UI
*/
initializeDownloadUI();
GameActivity.Log.debug("... UI setup. Checking for files.");
/**
* Before we do anything, are the files we expect already here and
* delivered (presumably by Market) For free titles, this is probably
* worth doing. (so no Market request is necessary)
*/
if (!expansionFilesDelivered()) {
GameActivity.Log.debug("... Whoops... missing; go go go download system!");
try {
// Make sure we have a key before we try to start the service
if(OBBDownloaderService.getPublicKeyLength() == 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false)
.setTitle("No Google Play Store Key")
.setMessage("No OBB found and no store key to try to download. Please set one up in Android Project Settings")
.setPositiveButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_NO_PLAY_KEY);
setResult(RESULT_OK, OutputData);
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
else
{
Intent launchIntent = DownloaderActivity.this
.getIntent();
Intent intentToLaunchThisActivityFromNotification = new Intent(
DownloaderActivity
.this, DownloaderActivity.this.getClass());
intentToLaunchThisActivityFromNotification.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
intentToLaunchThisActivityFromNotification.setAction(launchIntent.getAction());
if (launchIntent.getCategories() != null) {
for (String category : launchIntent.getCategories()) {
intentToLaunchThisActivityFromNotification.addCategory(category);
}
}
// Build PendingIntent used to open this activity from
// Notification
PendingIntent pendingIntent = PendingIntent.getActivity(
DownloaderActivity.this,
0, intentToLaunchThisActivityFromNotification,
PendingIntent.FLAG_UPDATE_CURRENT);
// Request to start the download
int startResult = DownloaderClientMarshaller.startDownloadServiceIfRequired(this,
pendingIntent, OBBDownloaderService.class);
if (startResult != DownloaderClientMarshaller.NO_DOWNLOAD_REQUIRED) {
// The DownloaderService has started downloading the files,
// show progress
initializeDownloadUI();
return;
} // otherwise, download not needed so we fall through to saying all is OK
else
{
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_FILES_PRESENT);
setResult(RESULT_OK, OutputData);
finish();
}
}
} catch (NameNotFoundException e) {
Log.e(LOG_TAG, "Cannot find own package! MAYDAY!");
e.printStackTrace();
}
} else {
GameActivity.Log.debug("... Can has! Check 'em Dano!");
if(!onlySingleExpansionFileFound()) {
// Do some UI here to figure out which we want to keep
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false)
.setTitle("Select OBB to use")
.setItems(OBBSelectItems, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
DownloaderActivity.RemoveOBBFile(item);
ProcessOBBFiles();
}
});
AlertDialog alert = builder.create();
alert.show();
}
else {
ProcessOBBFiles();
}
}
}
/**
* Connect the stub to our service on start.
*/
@Override
protected void onStart() {
if (null != mDownloaderClientStub) {
mDownloaderClientStub.connect(this);
}
super.onStart();
}
@Override
protected void onPause() {
super.onPause();
GameActivity.Log.debug("In onPause");
if(OutputData.getIntExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_NO_RETURN_CODE) == GameActivity.DOWNLOAD_NO_RETURN_CODE)
{
GameActivity.Log.debug("onPause returning that user quit the download.");
OutputData.putExtra(GameActivity.DOWNLOAD_RETURN_NAME, GameActivity.DOWNLOAD_USER_QUIT);
setResult(RESULT_OK, OutputData);
}
}
/**
* Disconnect the stub from our service on stop
*/
@Override
protected void onStop() {
if (null != mDownloaderClientStub) {
mDownloaderClientStub.disconnect(this);
}
super.onStop();
setResult(RESULT_OK, OutputData);
}
/**
* Critical implementation detail. In onServiceConnected we create the
* remote service and marshaler. This is how we pass the client information
* back to the service so the client can be properly notified of changes. We
* must do this every time we reconnect to the service.
*/
@Override
public void onServiceConnected(Messenger m) {
mRemoteService = DownloaderServiceMarshaller.CreateProxy(m);
mRemoteService.onClientUpdated(mDownloaderClientStub.getMessenger());
}
/**
* The download state should trigger changes in the UI --- it may be useful
* to show the state as being indeterminate at times. This sample can be
* considered a guideline.
*/
@Override
public void onDownloadStateChanged(int newState) {
setState(newState);
boolean showDashboard = true;
boolean showCellMessage = false;
boolean paused;
boolean indeterminate;
switch (newState) {
case IDownloaderClient.STATE_IDLE:
// STATE_IDLE means the service is listening, so it's
// safe to start making calls via mRemoteService.
paused = false;
indeterminate = true;
break;
case IDownloaderClient.STATE_CONNECTING:
case IDownloaderClient.STATE_FETCHING_URL:
showDashboard = true;
paused = false;
indeterminate = true;
break;
case IDownloaderClient.STATE_DOWNLOADING:
paused = false;
showDashboard = true;
indeterminate = false;
break;
case IDownloaderClient.STATE_FAILED_CANCELED:
case IDownloaderClient.STATE_FAILED:
case IDownloaderClient.STATE_FAILED_FETCHING_URL:
case IDownloaderClient.STATE_FAILED_UNLICENSED:
paused = true;
showDashboard = false;
indeterminate = false;
break;
case IDownloaderClient.STATE_PAUSED_NEED_CELLULAR_PERMISSION:
case IDownloaderClient.STATE_PAUSED_WIFI_DISABLED_NEED_CELLULAR_PERMISSION:
showDashboard = false;
paused = true;
indeterminate = false;
showCellMessage = true;
break;
case IDownloaderClient.STATE_PAUSED_BY_REQUEST:
paused = true;
indeterminate = false;
break;
case IDownloaderClient.STATE_PAUSED_ROAMING:
case IDownloaderClient.STATE_PAUSED_SDCARD_UNAVAILABLE:
paused = true;
indeterminate = false;
break;
case IDownloaderClient.STATE_COMPLETED:
showDashboard = false;
paused = false;
indeterminate = false;
validateXAPKZipFiles();
return;
default:
paused = true;
indeterminate = true;
showDashboard = true;
}
int newDashboardVisibility = showDashboard ? View.VISIBLE : View.GONE;
if (mDashboard.getVisibility() != newDashboardVisibility) {
mDashboard.setVisibility(newDashboardVisibility);
}
int cellMessageVisibility = showCellMessage ? View.VISIBLE : View.GONE;
if (mCellMessage.getVisibility() != cellMessageVisibility) {
mCellMessage.setVisibility(cellMessageVisibility);
}
mPB.setIndeterminate(indeterminate);
setButtonPausedState(paused);
}
/**
* Sets the state of the various controls based on the progressinfo object
* sent from the downloader service.
*/
@Override
public void onDownloadProgress(DownloadProgressInfo progress) {
mAverageSpeed.setText(getString(R.string.kilobytes_per_second,
Helpers.getSpeedString(progress.mCurrentSpeed)));
mTimeRemaining.setText(getString(R.string.time_remaining,
Helpers.getTimeRemaining(progress.mTimeRemaining)));
progress.mOverallTotal = progress.mOverallTotal;
mPB.setMax((int) (progress.mOverallTotal >> 8));
mPB.setProgress((int) (progress.mOverallProgress >> 8));
mProgressPercent.setText(Long.toString(progress.mOverallProgress
* 100 /
progress.mOverallTotal) + "%");
mProgressFraction.setText(Helpers.getDownloadProgressString
(progress.mOverallProgress,
progress.mOverallTotal));
}
@Override
protected void onDestroy() {
this.mCancelValidation = true;
super.onDestroy();
}
}
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.YourCompany.VRClassroom;
import com.google.android.vending.expansion.downloader.impl.DownloaderService;
/**
* Minimal client implementation of the
* DownloaderService from the Downloader library.
*/
public class OBBDownloaderService extends DownloaderService {
// stuff for LVL -- MODIFY FOR YOUR APPLICATION!
private static final String BASE64_PUBLIC_KEY = "";
// used by the preference obfuscater
private static final byte[] SALT = new byte[] {
1, 43, -12, -1, 54, 98,
-100, -12, 43, 2, -8, -4, 9, 5, -106, -108, -33, 45, -1, 84
};
public static int getPublicKeyLength() {
return BASE64_PUBLIC_KEY.length();
}
/**
* This public key comes from your Android Market publisher account, and it
* used by the LVL to validate responses from Market on your behalf.
*/
@Override
public String getPublicKey() {
return BASE64_PUBLIC_KEY;
}
/**
* This is used by the preference obfuscater to make sure that your
* obfuscated preferences are different than the ones used by other
* applications.
*/
@Override
public byte[] getSALT() {
return SALT;
}
/**
* Fill this in with the class name for your alarm receiver. We do this
* because receivers must be unique across all of Android (it's a good idea
* to make sure that your receiver is in your unique package)
*/
@Override
public String getAlarmReceiverClassName() {
return com.YourCompany.VRClassroom.AlarmReceiver.class.getName();
}
}
package com.epicgames.ue4;
import com.YourCompany.VRClassroom.OBBDownloaderService;
import com.YourCompany.VRClassroom.DownloaderActivity;
import android.app.Activity;
import com.google.android.vending.expansion.downloader.Helpers;
import com.YourCompany.VRClassroom.OBBData;
public class DownloadShim
{
public static OBBDownloaderService DownloaderService;
public static DownloaderActivity DownloadActivity;
public static Class<DownloaderActivity> GetDownloaderType() { return DownloaderActivity.class; }
public static boolean expansionFilesDelivered(Activity activity, int version) {
for (OBBData.XAPKFile xf : OBBData.xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(activity, xf.mIsMain, Integer.toString(version), OBBData.AppType);
GameActivity.Log.debug("Checking for file : " + fileName);
String fileForNewFile = Helpers.generateSaveFileName(activity, fileName);
String fileForDevFile = Helpers.generateSaveFileNameDevelopment(activity, fileName);
GameActivity.Log.debug("which is really being resolved to : " + fileForNewFile + "\n Or : " + fileForDevFile);
if (Helpers.doesFileExist(activity, fileName, xf.mFileSize, false)) {
GameActivity.Log.debug("Found OBB here: " + fileForNewFile);
}
else if (Helpers.doesFileExistDev(activity, fileName, xf.mFileSize, false)) {
GameActivity.Log.debug("Found OBB here: " + fileForDevFile);
}
else return false;
}
return true;
}
}
"../../../Engine/Content/Animation/DefaultAnimBoneCompressionSettings.uasset" 0
"../../../Engine/Content/Animation/DefaultAnimCurveCompressionSettings.uasset" 1
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Opacity/CameraDepthFade.uasset" 2
"../../../Engine/Content/EngineMaterials/T_Default_Material_Grid_M.uasset" 3
"../../../Engine/Content/EngineMaterials/T_Default_Material_Grid_N.uasset" 4
"../../../Engine/Content/EngineMaterials/WorldGridMaterial.uasset" 5
"../../../Engine/Content/ArtTools/RenderToTexture/Meshes/S_1_Unit_Plane.uasset" 6
"../../../Engine/Content/EngineMaterials/DefaultMaterial.uasset" 7
"../../../Engine/Content/BasicShapes/Cone.uasset" 8
"../../../Engine/Content/BasicShapes/Sphere.uasset" 9
"../../../Engine/Content/EngineMaterials/DefaultPhysicalMaterial.uasset" 10
"../../../Engine/Content/BufferVisualization/AmbientOcclusion.uasset" 11
"../../../Engine/Content/BufferVisualization/BaseColor.uasset" 12
"../../../Engine/Content/BufferVisualization/CustomDepth.uasset" 13
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/VectorLength.uasset" 14
"../../../Engine/Content/BufferVisualization/CustomDepthWorldUnits.uasset" 15
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat2Components.uasset" 16
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Texturing/ScaleUVsByCenter.uasset" 17
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/ScreenResolution.uasset" 18
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Texturing/ScreenAlignedUVs.uasset" 19
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/MakeFloat2.uasset" 20
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/MakeFloat3.uasset" 21
"../../../Engine/Content/EngineMaterials/MiniFont.uasset" 22
"../../../Engine/Content/BufferVisualization/CustomStencil.uasset" 23
"../../../Engine/Content/BufferVisualization/FinalImage.uasset" 24
"../../../Engine/Content/BufferVisualization/LightingModel.uasset" 25
"../../../Engine/Content/BufferVisualization/MaterialAO.uasset" 26
"../../../Engine/Content/BufferVisualization/Metallic.uasset" 27
"../../../Engine/Content/BufferVisualization/Opacity.uasset" 28
"../../../Engine/Content/BufferVisualization/PostTonemapHDRColor.uasset" 29
"../../../Engine/Content/BufferVisualization/PreTonemapHDRColor.uasset" 30
"../../../Engine/Content/BufferVisualization/Roughness.uasset" 31
"../../../Engine/Content/BufferVisualization/SceneColor.uasset" 32
"../../../Engine/Content/BufferVisualization/SceneDepth.uasset" 33
"../../../Engine/Content/BufferVisualization/SceneDepthWorldUnits.uasset" 34
"../../../Engine/Content/BufferVisualization/SeparateTranslucencyA.uasset" 35
"../../../Engine/Content/BufferVisualization/SeparateTranslucencyRGB.uasset" 36
"../../../Engine/Content/BufferVisualization/Specular.uasset" 37
"../../../Engine/Content/BufferVisualization/SubsurfaceColor.uasset" 38
"../../../Engine/Content/BufferVisualization/Velocity.uasset" 39
"../../../Engine/Content/BufferVisualization/WorldNormal.uasset" 40
"../../../Engine/Content/EditorLandscapeResources/DataLayer.uasset" 41
"../../../Engine/Content/EditorLandscapeResources/DefaultAlphaTexture.uasset" 42
"../../../Engine/Content/EditorLandscapeResources/LandscapeGizmoHeight_Mat.uasset" 43
"../../../Engine/Content/EditorLandscapeResources/LandscapeGizmo_Mat.uasset" 44
"../../../Engine/Content/EditorLandscapeResources/LandscapeGizmo_Mat_Copied.uasset" 45
"../../../Engine/Content/EditorLandscapeResources/SplineEditorMeshMat.uasset" 46
"../../../Engine/Content/EditorLandscapeResources/SplineEditorMesh.uasset" 47
"../../../Engine/Content/EditorMaterials/Cross.uasset" 48
"../../../Engine/Content/EditorMaterials/Cross_Mat.uasset" 49
"../../../Engine/Content/EngineMaterials/DefaultDiffuse.uasset" 50
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Texturing/TextureCropping.uasset" 51
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Texturing/ComputeMipLevel.uasset" 52
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/ExampleContent/DebugNumberStrip.uasset" 53
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/ExampleContent/Textures/DebugNumberPeriod.uasset" 54
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/DebugScalarValues.uasset" 55
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/DebugFloat2Values.uasset" 56
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/ExampleContent/Textures/flipbook.uasset" 57
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Texturing/FlipBook.uasset" 58
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/Sign.uasset" 59
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/Round.uasset" 60
"../../../Engine/Content/EditorResources/T_EditorHelp.uasset" 61
"../../../Engine/Content/EditorMaterials/HelpActorMaterial.uasset" 62
"../../../Engine/Content/EditorMaterials/CompositeARGBLayer.uasset" 63
"../../../Engine/Content/EditorMaterials/TilingAALineIntegral.uasset" 64
"../../../Engine/Content/EditorMaterials/TilingAALineBoxFiltered.uasset" 65
"../../../Engine/Content/Functions/Engine_MaterialFunctions03/Procedurals/ComputeFilterWidth.uasset" 66
"../../../Engine/Content/EditorMaterials/TilingAADots.uasset" 67
"../../../Engine/Content/EngineMaterials/BlendFunc_DefBase.uasset" 68
"../../../Engine/Content/EngineMaterials/BlendFunc_DefBlend.uasset" 69
"../../../Engine/Content/Functions/Engine_MaterialFunctions03/Blends/Blend_Screen.uasset" 70
"../../../Engine/Content/EditorMaterials/TilingAAGrid.uasset" 71
"../../../Engine/Content/EditorMaterials/LevelGridMaterial.uasset" 72
"../../../Engine/Content/EditorMaterials/MakeCompositeARGBLayer.uasset" 73
"../../../Engine/Content/EditorResources/LevelGrid1DStripes.uasset" 74
"../../../Engine/Content/EditorMaterials/TextureGridCascaded1D.uasset" 75
"../../../Engine/Content/EditorMaterials/TextureGridCascaded2D.uasset" 76
"../../../Engine/Content/EditorMaterials/LevelGridMaterial2.uasset" 77
"../../../Engine/Content/EditorMaterials/MAT_Groups_Toggle.uasset" 78
"../../../Engine/Content/EditorMaterials/MAT_Groups_Visibility.uasset" 79
"../../../Engine/Content/EditorMaterials/PhAT_BoneSelectedMaterial.uasset" 80
"../../../Engine/Content/EditorMaterials/PhAT_ElemSelectedMaterial.uasset" 81
"../../../Engine/Content/EditorMaterials/PhAT_NoCollisionMaterial.uasset" 82
"../../../Engine/Content/EditorMaterials/PhAT_UnselectedMaterial.uasset" 83
"../../../Engine/Content/EditorMaterials/PreviewShadowIndicator.uasset" 84
"../../../Engine/Content/EditorMaterials/PreviewShadowIndicatorMaterial.uasset" 85
"../../../Engine/Content/EditorMaterials/TargetIcon.uasset" 86
"../../../Engine/Content/EditorMaterials/Tick.uasset" 87
"../../../Engine/Content/EditorMaterials/Tick_Mat.uasset" 88
"../../../Engine/Content/EditorMaterials/WidgetGridVertexColorMaterial.uasset" 89
"../../../Engine/Content/EditorMaterials/WidgetGridVertexColorMaterial_Ma.uasset" 90
"../../../Engine/Content/EditorMaterials/WidgetMaterial.uasset" 91
"../../../Engine/Content/EditorMaterials/WidgetMaterial_Current.uasset" 92
"../../../Engine/Content/EditorMaterials/WidgetMaterial_X.uasset" 93
"../../../Engine/Content/EditorMaterials/WidgetMaterial_Y.uasset" 94
"../../../Engine/Content/EditorMaterials/WidgetMaterial_Z.uasset" 95
"../../../Engine/Content/EditorMaterials/WidgetVertexColorMaterial.uasset" 96
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_ColorTrack.uasset" 97
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Anim.uasset" 98
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_AudioMaster.uasset" 99
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Director.uasset" 100
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Event.uasset" 101
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Fade.uasset" 102
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Float.uasset" 103
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Move.uasset" 104
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Slomo.uasset" 105
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Sound.uasset" 106
"../../../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Vector.uasset" 107
"../../../Engine/Content/EditorMaterials/ParticleSystems/PSysThumbnail_NoImage.uasset" 108
"../../../Engine/Content/EditorMaterials/ParticleSystems/PSysThumbnail_OOD.uasset" 109
"../../../Engine/Content/EngineMaterials/Grid.uasset" 110
"../../../Engine/Content/EditorMaterials/Thumbnails/FloorPlaneMaterial.uasset" 111
"../../../Engine/Content/EditorMeshes/EditorCube.uasset" 112
"../../../Engine/Content/EditorMeshes/EditorCylinder.uasset" 113
"../../../Engine/Content/EditorMeshes/EditorPlane.uasset" 114
"../../../Engine/Content/EditorMaterials/Thumbnails/SkySphereMaterial.uasset" 115
"../../../Engine/Content/EditorMeshes/EditorSkySphere.uasset" 116
"../../../Engine/Content/EditorMeshes/EditorSphere.uasset" 117
"../../../Engine/Content/EditorResources/MatineeCam_D.uasset" 118
"../../../Engine/Content/EditorMaterials/MatineeCam_mat.uasset" 119
"../../../Engine/Content/EditorMeshes/MatineeCam_SM.uasset" 120
"../../../Engine/Content/EditorMeshes/PlanarReflectionPlane.uasset" 121
"../../../Engine/Content/EditorMaterials/Camera/CineMat.uasset" 122
"../../../Engine/Content/EditorMaterials/Camera/MI_CineMat_CameraBody.uasset" 123
"../../../Engine/Content/EngineDebugMaterials/M_SimpleOpaque.uasset" 124
"../../../Engine/Content/EditorMaterials/Camera/MI_CineMat_CamViewFinder.uasset" 125
"../../../Engine/Content/EditorMeshes/Camera/SM_CineCam.uasset" 126
"../../../Engine/Content/EditorMaterials/Camera/MI_CineMat_Rig.uasset" 127
"../../../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Arm.uasset" 128
"../../../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Base.uasset" 129
"../../../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Body.uasset" 130
"../../../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Mount.uasset" 131
"../../../Engine/Content/EditorMeshes/Camera/SM_RailRig_Mount.uasset" 132
"../../../Engine/Content/EditorMeshes/Camera/SM_RailRig_Track.uasset" 133
"../../../Engine/Content/EditorMeshes/ColorCalibrator/M_ChromeBall.uasset" 134
"../../../Engine/Content/EditorResources/Bad.uasset" 135
"../../../Engine/Content/EditorResources/BSPVertex.uasset" 136
"../../../Engine/Content/EditorResources/EmptyActor.uasset" 137
"../../../Engine/Content/EditorResources/MatInstActSprite.uasset" 138
"../../../Engine/Content/EditorResources/SceneManager.uasset" 139
"../../../Engine/Content/EditorResources/SmallFont.uasset" 140
"../../../Engine/Content/EditorResources/S_Actor.uasset" 141
"../../../Engine/Content/EditorResources/S_CameraShakeSource.uasset" 142
"../../../Engine/Content/EditorResources/S_DecalActorIcon.uasset" 143
"../../../Engine/Content/EditorResources/S_Emitter.uasset" 144
"../../../Engine/Content/EditorResources/S_ExpoHeightFog.uasset" 145
"../../../Engine/Content/EditorResources/S_FTest.uasset" 146
"../../../Engine/Content/EditorResources/S_KBSJoint.uasset" 147
"../../../Engine/Content/EditorResources/S_KHinge.uasset" 148
"../../../Engine/Content/EditorResources/S_KPrismatic.uasset" 149
"../../../Engine/Content/EditorResources/S_LevelSequence.uasset" 150
"../../../Engine/Content/EditorResources/S_NavP.uasset" 151
"../../../Engine/Content/EditorResources/S_Note.uasset" 152
"../../../Engine/Content/EditorResources/S_Player.uasset" 153
"../../../Engine/Content/EditorResources/S_PortalActorIcon2.uasset" 154
"../../../Engine/Content/EditorResources/S_RadForce.uasset" 155
"../../../Engine/Content/EditorResources/S_ReflActorIcon.uasset" 156
"../../../Engine/Content/EditorResources/S_SkyAtmosphere.uasset" 157
"../../../Engine/Content/EditorResources/S_Solver.uasset" 158
"../../../Engine/Content/EditorResources/S_Terrain.uasset" 159
"../../../Engine/Content/EditorResources/S_TextRenderActorIcon.uasset" 160
"../../../Engine/Content/EditorResources/S_Thruster.uasset" 161
"../../../Engine/Content/EditorResources/S_Trigger.uasset" 162
"../../../Engine/Content/EditorResources/S_VectorFieldVol.uasset" 163
"../../../Engine/Content/EditorResources/S_WindDirectional.uasset" 164
"../../../Engine/Content/EditorResources/AI/S_NavLink.uasset" 165
"../../../Engine/Content/EditorResources/AudioIcons/S_AudioComponent.uasset" 166
"../../../Engine/Content/EditorResources/AudioIcons/S_AudioComponent_AutoActivate.uasset" 167
"../../../Engine/Content/EditorResources/LightIcons/SkyLight.uasset" 168
"../../../Engine/Content/EditorResources/LightIcons/S_LightDirectional.uasset" 169
"../../../Engine/Content/EditorResources/LightIcons/S_LightDirectionalMove.uasset" 170
"../../../Engine/Content/EditorResources/LightIcons/S_LightError.uasset" 171
"../../../Engine/Content/EditorResources/LightIcons/S_LightPoint.uasset" 172
"../../../Engine/Content/EditorResources/LightIcons/S_LightPointMove.uasset" 173
"../../../Engine/Content/EditorResources/LightIcons/S_LightSpot.uasset" 174
"../../../Engine/Content/EditorResources/LightIcons/S_LightSpotMove.uasset" 175
"../../../Engine/Content/EditorResources/SequenceRecorder/Countdown.uasset" 176
"../../../Engine/Content/EditorResources/SequenceRecorder/RecordingIndicator.uasset" 177
"../../../Engine/Content/EditorResources/Spline/T_Loft_Spline.uasset" 178
"../../../Engine/Content/EditorSounds/Notifications/CompileFailed.uasset" 179
"../../../Engine/Content/EditorSounds/Notifications/CompileFailed_Cue.uasset" 180
"../../../Engine/Content/EditorSounds/Notifications/CompileSuccess.uasset" 181
"../../../Engine/Content/EditorSounds/Notifications/CompileStart_Cue.uasset" 182
"../../../Engine/Content/EditorSounds/Notifications/CompileSuccess_Cue.uasset" 183
"../../../Engine/Content/EngineDamageTypes/DmgTypeBP_Environmental.uasset" 184
"../../../Engine/Content/EngineDebugMaterials/HeatmapGradient.uasset" 185
"../../../Engine/Content/EngineDebugMaterials/BoneWeightMaterial.uasset" 186
"../../../Engine/Content/EngineDebugMaterials/ClothMaterial.uasset" 187
"../../../Engine/Content/EngineDebugMaterials/ClothMaterial_WF.uasset" 188
"../../../Engine/Content/EngineDebugMaterials/DebugEditorMaterial.uasset" 189
"../../../Engine/Content/EngineDebugMaterials/DebugMeshMaterial.uasset" 190
"../../../Engine/Content/EngineDebugMaterials/GeomMaterial.uasset" 191
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Shading/ConvertFromDiffSpec.uasset" 192
"../../../Engine/Content/EngineDebugMaterials/LevelColorationLitMaterial.uasset" 193
"../../../Engine/Content/EngineDebugMaterials/LevelColorationUnlitMaterial.uasset" 194
"../../../Engine/Content/EngineMaterials/DefaultWhiteGrid.uasset" 195
"../../../Engine/Content/EngineDebugMaterials/MAT_LevelColorationLitLightmapUV.uasset" 196
"../../../Engine/Content/EngineDebugMaterials/M_SimpleUnlitTranslucent.uasset" 197
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/CameraDirectionVector.uasset" 198
"../../../Engine/Content/EngineDebugMaterials/VolumeToRender.uasset" 199
"../../../Engine/Content/EngineDebugMaterials/M_VolumeRenderSphereTracePP.uasset" 200
"../../../Engine/Content/EngineMaterials/DefaultWhiteGrid_Low.uasset" 201
"../../../Engine/Content/EngineDebugMaterials/PhysicalMaterialMaskMaterial.uasset" 202
"../../../Engine/Content/EngineDebugMaterials/ShadedLevelColorationLitMaterial.uasset" 203
"../../../Engine/Content/EngineDebugMaterials/ShadedLevelColorationUnlitMateri.uasset" 204
"../../../Engine/Content/EngineDebugMaterials/VertexColorMaterial.uasset" 205
"../../../Engine/Content/EngineDebugMaterials/VertexColorViewMode_AlphaAsColor.uasset" 206
"../../../Engine/Content/EngineDebugMaterials/VertexColorViewMode_BlueOnly.uasset" 207
"../../../Engine/Content/EngineDebugMaterials/VertexColorViewMode_ColorOnly.uasset" 208
"../../../Engine/Content/EngineDebugMaterials/VertexColorViewMode_GreenOnly.uasset" 209
"../../../Engine/Content/EngineDebugMaterials/VertexColorViewMode_RedOnly.uasset" 210
"../../../Engine/Content/EngineDebugMaterials/WireframeMaterial.uasset" 211
"../../../Engine/Content/EngineFonts/Faces/DroidSansFallback.uasset" 212
"../../../Engine/Content/EngineFonts/Faces/RobotoBold.uasset" 213
"../../../Engine/Content/EngineFonts/Faces/RobotoBoldItalic.uasset" 214
"../../../Engine/Content/EngineFonts/Faces/RobotoItalic.uasset" 215
"../../../Engine/Content/EngineFonts/Faces/RobotoLight.uasset" 216
"../../../Engine/Content/EngineFonts/Faces/RobotoRegular.uasset" 217
"../../../Engine/Content/EngineFonts/Roboto.uasset" 218
"../../../Engine/Content/EngineFonts/Faces/RobotoTiny.uasset" 219
"../../../Engine/Content/EngineFonts/RobotoTiny.uasset" 220
"../../../Engine/Content/EngineFonts/SmallFont.uasset" 221
"../../../Engine/Content/EngineFonts/TinyFont.uasset" 222
"../../../Engine/Content/EngineMaterials/BaseFlattenDiffuseMap.uasset" 223
"../../../Engine/Content/EngineMaterials/BaseFlattenEmissiveMap.uasset" 224
"../../../Engine/Content/EngineMaterials/BaseFlattenGrayscaleMap.uasset" 225
"../../../Engine/Content/EngineMaterials/BaseFlattenNormalMap.uasset" 226
"../../../Engine/Content/EngineMaterials/BaseFlattenMaterial.uasset" 227
"../../../Engine/Content/EngineResources/WhiteSquareTexture.uasset" 228
"../../../Engine/Content/EngineMaterials/BlinkingCaret.uasset" 229
"../../../Engine/Content/EngineMaterials/BlueNoise.uasset" 230
"../../../Engine/Content/EngineMaterials/DefaultBloomKernel.uasset" 231
"../../../Engine/Content/EngineMaterials/DefaultBokeh.uasset" 232
"../../../Engine/Content/EngineMaterials/DefaultDeferredDecalMaterial.uasset" 233
"../../../Engine/Content/EngineMaterials/DefaultLightFunctionMaterial.uasset" 234
"../../../Engine/Content/EngineMaterials/DefaultNormal.uasset" 235
"../../../Engine/Content/EngineMaterials/DefaultPostProcessMaterial.uasset" 236
"../../../Engine/Content/EngineFonts/RobotoDistanceField.uasset" 237
"../../../Engine/Content/EngineMaterials/DefaultTextMaterialOpaque.uasset" 238
"../../../Engine/Content/EngineMaterials/EditorBrushMaterial.uasset" 239
"../../../Engine/Content/EngineMaterials/EmissiveMeshMaterial.uasset" 240
"../../../Engine/Content/EngineMaterials/GizmoMaterial.uasset" 241
"../../../Engine/Content/EngineMaterials/Grid_N.uasset" 242
"../../../Engine/Content/EngineMaterials/HighResolutionScreenshotMaskFunction.uasset" 243
"../../../Engine/Content/EngineMaterials/HighResScreenshot.uasset" 244
"../../../Engine/Content/EngineMaterials/HighResScreenshotCaptureRegion.uasset" 245
"../../../Engine/Content/EngineMaterials/HighResScreenshotMask.uasset" 246
"../../../Engine/Content/EngineMaterials/LandscapeHolePhysicalMaterial.uasset" 247
"../../../Engine/Content/EngineMaterials/InvalidLightmapSettings.uasset" 248
"../../../Engine/Content/EngineMaterials/M_InvalidLightmapSettings.uasset" 249
"../../../Engine/Content/EngineMaterials/PaperDiffuse.uasset" 250
"../../../Engine/Content/EngineMaterials/PaperNormal.uasset" 251
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/WorldPositionOffset/CameraOffset.uasset" 252
"../../../Engine/Content/EngineMaterials/PhAT_JointLimitMaterial.uasset" 253
"../../../Engine/Content/EngineMaterials/PhysMat_Rubber.uasset" 254
"../../../Engine/Content/EngineMaterials/PreintegratedSkinBRDF.uasset" 255
"../../../Engine/Content/EngineMaterials/RemoveSurfaceMaterial.uasset" 256
"../../../Engine/Content/EngineMaterials/WeightMapPlaceholderTexture.uasset" 257
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/ImageAdjustment/sRGBToLinear.uasset" 258
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat3Components.uasset" 259
"../../../Engine/Content/EngineMaterials/Widget3DCameraPassThrough_Opaque_OneSided.uasset" 260
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough.uasset" 261
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Masked.uasset" 262
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Opaque.uasset" 263
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Masked_OneSided.uasset" 264
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Opaque_OneSided.uasset" 265
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Translucent.uasset" 266
"../../../Engine/Content/EngineMaterials/Widget3DPassThrough_Translucent_OneSided.uasset" 267
"../../../Engine/Content/EngineMeshes/Cylinder.uasset" 268
"../../../Engine/Content/EngineMeshes/Sphere.uasset" 269
"../../../Engine/Content/EngineResources/Black.uasset" 270
"../../../Engine/Content/EngineResources/DefaultTexture.uasset" 271
"../../../Engine/Content/EngineResources/DefaultTextureCube.uasset" 272
"../../../Engine/Content/EngineResources/DefaultVolumeTexture2D.uasset" 273
"../../../Engine/Content/EngineResources/DefaultVolumeTexture.uasset" 274
"../../../Engine/Content/EngineResources/GradientTexture0.uasset" 275
"../../../Engine/Content/EngineResources/StreamingPauseIcon.uasset" 276
"../../../Engine/Content/EngineResources/M_StreamingPause.uasset" 277
"../../../Engine/Content/EngineSounds/Master.uasset" 278
"../../../Engine/Content/Functions/Engine_MaterialFunctions01/Shading/PowerToRoughness.uasset" 279
"../../../Engine/Content/Maps/Templates/Thumbnails/Default.uasset" 280
"../../../Engine/Content/Maps/Templates/Thumbnails/TimeOfDay.uasset" 281
"../../../Engine/Content/Maps/Templates/Thumbnails/VR-Basic.uasset" 282
"../../../Engine/Content/MapTemplates/Sky/DaylightAmbientCubemap.uasset" 283
"../../../Engine/Content/MobileResources/T_MobileControls_texture.uasset" 284
"../../../Engine/Content/MobileResources/T_MobileMenu2.uasset" 285
"../../../Engine/Content/MobileResources/HUD/AnalogHat.uasset" 286
"../../../Engine/Content/MobileResources/HUD/VirtualJoystick_Background.uasset" 287
"../../../Engine/Content/MobileResources/HUD/VirtualJoystick_Thumb.uasset" 288
"../../../Engine/Content/MobileResources/HUD/DefaultVirtualJoysticks.uasset" 289
"../../../Engine/Content/MobileResources/HUD/LeftVirtualJoystickOnly.uasset" 290
"../../../Engine/Content/MobileResources/HUD/MobileHUDButton1_off.uasset" 291
"../../../Engine/Content/MobileResources/HUD/MobileHUDButton1_on.uasset" 292
"../../../Engine/Content/MobileResources/HUD/MobileHUDButton2_off.uasset" 293
"../../../Engine/Content/MobileResources/HUD/MobileHUDButton2_on.uasset" 294
"../../../Engine/Content/MobileResources/HUD/MobileHUDButton3.uasset" 295
"../../../Engine/Content/MobileResources/HUD/MobileHUDButtonFire.uasset" 296
"../../../Engine/Content/MobileResources/HUD/MobileHUDDirectionPad.uasset" 297
"../../../Engine/Content/MobileResources/HUD/MobileHUDDirectionPad2.uasset" 298
"../../../Engine/Content/MobileResources/HUD/MobileHUDDirectionPad3.uasset" 299
"../../../Engine/Content/MobileResources/HUD/MobileHUDDirectionStick.uasset" 300
"../../../Engine/Content/MobileResources/HUD/T_Castle_ThumbstickInner.uasset" 301
"../../../Engine/Content/MobileResources/HUD/T_Castle_ThumbstickOutter.uasset" 302
"../../../Engine/Content/Tutorial/ContentIntroCurve.uasset" 303
"../../../Engine/Content/Tutorial/Basics/LevelEditorAttract.uasset" 304
"../../../Engine/Content/Tutorial/Basics/TutorialAssets/icon_tab_Levels_40x.uasset" 305
"../../../Engine/Content/Tutorial/Basics/LevelEditorOverview.uasset" 306
"../../../Engine/Content/Tutorial/BlueprintTutorials/TutorialAssets/Blueprint_64x.uasset" 307
"../../../Engine/Content/Tutorial/BlueprintTutorials/BlueprintEditorTutorial.uasset" 308
"../../../Engine/Content/VREditor/LaserPointer/VR_LaserPower_01.uasset" 309
"../../../Engine/Content/VREditor/TransformGizmo/TransformGizmoMaterial.uasset" 310
"../../../Engine/Content/VREditor/TransformGizmo/TranslucentTransformGizmoMaterial.uasset" 311
"../../../Engine/Content/VREditor/TransformGizmo/BoundingBoxCorner.uasset" 312
"../../../Engine/Content/VREditor/TransformGizmo/BoundingBoxEdge.uasset" 313
"../../../Engine/Content/VREditor/TransformGizmo/PlaneTranslationHandle.uasset" 314
"../../../Engine/Content/VREditor/TransformGizmo/Main.uasset" 315
"../../../Engine/Content/VREditor/TransformGizmo/Xray.uasset" 316
"../../../Engine/Content/VREditor/TransformGizmo/SM_Sequencer_Key.uasset" 317
"../../../Engine/Content/VREditor/TransformGizmo/SM_Sequencer_Node.uasset" 318
"../../../Engine/Content/EditorBlueprintResources/ActorMacros.uasset" 319
"../../../Engine/Content/EditorBlueprintResources/StandardMacros.uasset" 320
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Plugins/OWSPlugin/Content/UMG/Textures/OWSParchmentPaper.uasset" 321
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Plugins/OWSPlugin/Content/UMG/OWSLoadingWidget.uasset" 322
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/CLoading_Widget.uasset" 323
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/BP_CGameInstance.uasset" 324
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/BP_CPlayerController.uasset" 325
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Mesh/MannequinHand_Right_Skeleton.uasset" 326
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Animations/MannequinHand_Right_CanGrab.uasset" 327
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Animations/MannequinHand_Right_Grab.uasset" 328
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Animations/MannequinHand_Right_Open.uasset" 329
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Animations/RightGrip_BS.uasset" 330
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/GripEnum.uasset" 331
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Animations/RightHand_AnimBP.uasset" 332
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/PickupActorInterface.uasset" 333
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/TextureToCopy.uasset" 334
"../../../Engine/Content/BasicShapes/BasicShapeMaterial.uasset" 335
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Whiteboard/Materials/M_WhiteBoardMaterial.uasset" 336
"../../../Engine/Content/BasicShapes/Cube.uasset" 337
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Whiteboard/Blueprints/BP_WhiteBoard2.uasset" 338
"../../../Engine/Content/BasicShapes/Cylinder.uasset" 339
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Whiteboard/Blueprints/BP_Marker.uasset" 340
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/MotionControllerHaptics.uasset" 341
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Textures/UE4_Mannequin__normals.uasset" 342
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset" 343
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Materials/M_HandMat.uasset" 344
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Mesh/MannequinHand_Right_PhysicsAsset.uasset" 345
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Mannequin/Character/Mesh/MannequinHand_Right.uasset" 346
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/BP_MotionController.uasset" 347
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/BP_NetMotionController.uasset" 348
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/DepthFromWorldPosition.uasset" 349
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MF_OccludedPixels.uasset" 350
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/TeleportMCP.uasset" 351
"../../../Engine/Content/EngineMaterials/Good64x64TilingNoiseHighFreq.uasset" 352
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/M_ArcEndpoint.uasset" 353
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/M_SplineArcMat.uasset" 354
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/M_TeleportPreviews.uasset" 355
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MI_ChaperoneOutline.uasset" 356
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MI_TeleportCylinderPreview.uasset" 357
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Meshes/1x1_cube.uasset" 358
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Meshes/BeaconDirection.uasset" 359
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Meshes/BeamMesh.uasset" 360
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Meshes/SM_FatCylinder.uasset" 361
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/BP_Teleporter.uasset" 362
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Interfaces/BPI_KeyboardInteraction.uasset" 363
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_StandardButton_Blank.uasset" 364
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/M_KeyboardButton_Master.uasset" 365
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/StandardButton/MI_StandardButton_Normal.uasset" 366
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/StandardButton/MI_StandardButton_Pressed.uasset" 367
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Wav/Click_WAV.uasset" 368
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Cue/Click_Cue.uasset" 369
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Enums/EModifierKeys.uasset" 370
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/CustomExamples/CustomExample1/WBP_CustomButton.uasset" 371
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_KeyboardBG_Blank.uasset" 372
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/KeyboardBackground/MI_KeyboardBG.uasset" 373
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_BackspaceIcon_Blank.uasset" 374
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_BackSpace_Normal.uasset" 375
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_BackSpace_Pressed.uasset" 376
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_BrowserIcon_Blank2.uasset" 377
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Browser_Normal.uasset" 378
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Browser_Pressed.uasset" 379
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_CapslockButton_Blank.uasset" 380
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_CapsLock_Normal.uasset" 381
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_CapsLock_Pressed.uasset" 382
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_ChangeThemeIcon.uasset" 383
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_ChangeTheme_Normal.uasset" 384
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_ChangeThemeIcon_Pressed.uasset" 385
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_ChangeTheme_Pressed.uasset" 386
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/ChatBox_Blank.uasset" 387
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_ChatBox_Normal.uasset" 388
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_ChatBox_Pressed.uasset" 389
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_EnterIcon_Blank.uasset" 390
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Enter_Normal.uasset" 391
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Enter_Pressed.uasset" 392
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Textures/PointAndClick/T_KeyboardIcon_Blank.uasset" 393
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Keyboard_Normal.uasset" 394
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Materials/Keyboards/PointAndClick/SpecialButtons/MI_Keyboard_Pressed.uasset" 395
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Wav/Accept_WAV.uasset" 396
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Cue/Accept_Cue.uasset" 397
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Wav/Blip_WAV.uasset" 398
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Audio/Cue/Blip_Cue.uasset" 399
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/CustomExamples/CustomExample2/WBP_CustomKeyboard_Example2.uasset" 400
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/MotionControllerPawn.uasset" 401
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Blueprints/BP_GameMode.uasset" 402
"../../Plugins/2D/Paper2D/Content/PlaceholderTextures/DummySpriteTexture.uasset" 403
"../../Plugins/2D/Paper2D/Content/DummySprite.uasset" 404
"../../Plugins/2D/Paper2D/Content/DefaultPaperTerrainMaterial.uasset" 405
"../../Plugins/2D/Paper2D/Content/DefaultSpriteMaterial.uasset" 406
"../../Plugins/2D/Paper2D/Content/MaskedUnlitSpriteMaterial.uasset" 407
"../../Plugins/2D/Paper2D/Content/OpaqueUnlitSpriteMaterial.uasset" 408
"../../Plugins/FX/Niagara/Content/Enums/ENiagaraBooleanLogicOps.uasset" 409
"../../Plugins/FX/Niagara/Content/Enums/ENiagaraCoordinateSpace.uasset" 410
"../../Plugins/FX/Niagara/Content/Enums/ENiagaraExpansionMode.uasset" 411
"../../Plugins/FX/Niagara/Content/Enums/ENiagaraOrientationAxis.uasset" 412
"../../Plugins/FX/Niagara/Content/Enums/ENiagaraRandomnessMode.uasset" 413
"../../Plugins/FX/Niagara/Content/Icons/S_ParticleSystem.uasset" 414
"../../../Engine/Content/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat4Components.uasset" 415
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/OculusMR_ChromaKey.uasset" 416
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/OculusMR_ChromaKey_Lit.uasset" 417
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/OculusMR_OpaqueColoredMaterial.uasset" 418
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/OculusMR_WhiteMaterial.uasset" 419
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/PokeAHoleMaterial.uasset" 420
"../../Plugins/Runtime/Oculus/OculusVR/Content/Textures/GearVRController_AO.uasset" 421
"../../Plugins/Runtime/Oculus/OculusVR/Content/Textures/GearVRController_Color.uasset" 422
"../../Plugins/Runtime/Oculus/OculusVR/Content/Textures/GearVRController_Normal.uasset" 423
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/GearVRControllerMaterial.uasset" 424
"../../Plugins/Runtime/Oculus/OculusVR/Content/Meshes/GearVrController.uasset" 425
"../../Plugins/Runtime/Oculus/OculusVR/Content/Textures/touchController_albedo.uasset" 426
"../../Plugins/Runtime/Oculus/OculusVR/Content/Textures/touchController_controlmap.uasset" 427
"../../Plugins/Runtime/Oculus/OculusVR/Content/Materials/touchController_mat.uasset" 428
"../../Plugins/Runtime/Oculus/OculusVR/Content/Meshes/LeftTouchController.uasset" 429
"../../Plugins/Runtime/Oculus/OculusVR/Content/Meshes/RiftHMD.uasset" 430
"../../Plugins/Runtime/Oculus/OculusVR/Content/Meshes/RightTouchController.uasset" 431
"../../Plugins/Runtime/WebBrowserWidget/Content/WebTexture_T.uasset" 432
"../../Plugins/Runtime/WebBrowserWidget/Content/WebTexture_M.uasset" 433
"../../Plugins/Runtime/WebBrowserWidget/Content/WebTexture_TM.uasset" 434
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/BasicPointAndClick/WBP_Button_Basic.uasset" 435
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/BasicPointAndClick/WBP_Keyboard_Basic.uasset" 436
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/BasicPointAndClick/BP_BasicKeyboard.uasset" 437
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/KeyboardAddons/Blueprints/Widgets/WBP_ChatBox.uasset" 438
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/KeyboardAddons/Blueprints/BP_ChatBox.uasset" 439
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/KeyboardAddons/Blueprints/Widgets/WBP_WebBrowser.uasset" 440
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/KeyboardAddons/Blueprints/BP_WebBrowser.uasset" 441
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VRKeyboards/Blueprints/Keyboards/CustomExamples/CustomExample2/BP_CustomKeyboard_Example2.uasset" 442
"../../../Engine/Content/EngineSky/C_Sky_Cloud_Color.uasset" 443
"../../../Engine/Content/EngineSky/C_Sky_Horizon_Color.uasset" 444
"../../../Engine/Content/EngineSky/C_Sky_Zenith_Color.uasset" 445
"../../../Engine/Content/EngineSky/T_Sky_Blue.uasset" 446
"../../../Engine/Content/EngineSky/T_Sky_Clouds_M.uasset" 447
"../../../Engine/Content/EngineSky/T_Sky_Stars.uasset" 448
"../../../Engine/Content/EngineSky/M_Sky_Panning_Clouds2.uasset" 449
"../../../Engine/Content/EngineSky/SM_SkySphere.uasset" 450
"../../../Engine/Content/EngineSky/BP_Sky_Sphere.uasset" 451
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/M_BaseMaterial.uasset" 452
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MI_SmallCubes.uasset" 453
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Geometry/Meshes/CubeMaterial.uasset" 454
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Geometry/Meshes/1M_Cube.uasset" 455
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualRealityBP/Blueprints/BP_PickupCube.uasset" 456
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/MainMenu_BuiltData.uasset" 457
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/Projector.uasset" 458
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/Projector_Video.uasset" 459
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/Projector_Video_Mat.uasset" 460
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MI_BaseMaterial2.uasset" 461
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/VirtualReality/Materials/MI_BaseMaterial3.uasset" 462
"../../../Engine/Content/BasicShapes/Plane.uasset" 463
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/BPW_MenuMain.uasset" 464
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/Projector_Material.uasset" 465
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/HUD.uasset" 466
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Data/UMeetingEntry.uasset" 467
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/CourseListItem_Widget.uasset" 468
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/CoursesListing_Widget.uasset" 469
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/MainMenu.uasset" 470
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/SelectLogin_Widget.uasset" 471
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/TestStream.uasset" 472
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/UMG/Webpage_Test.uasset" 473
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/MainMenu.umap" 474
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/TestServer_BuiltData.uasset" 475
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/TestServer.umap" 476
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/TestyMainMap_BuiltData.uasset" 477
"../../../Engine/Content/MapTemplates/SM_Template_Map_Floor.uasset" 478
"../../../../../College/Spring2021/SeniorDesign/VRClassroom/src/Content/Campus/Maps/TestyMainMap.umap" 479
......@@ -25,7 +25,7 @@ DefaultGraphicsPerformance=Scalable
AppliedDefaultGraphicsPerformance=Scalable
[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Game/Campus/Maps/Login.Login
EditorStartupMap=/Game/Campus/Maps/MainMenu.MainMenu
LocalMapOptions=
TransitionMap=None
bUseSplitscreen=False
......@@ -34,7 +34,7 @@ ThreePlayerSplitscreenLayout=FavorTop
FourPlayerSplitscreenLayout=Grid
bOffsetPlayerGamepadIds=False
GameInstanceClass=/Script/VRClassroom.VRCGameInstance
GameDefaultMap=/Game/Campus/Maps/Login.Login
GameDefaultMap=/Game/Campus/Maps/MainMenu.MainMenu
ServerDefaultMap=/Game/Campus/Maps/TestServer.TestServer
GlobalDefaultGameMode=/Game/Campus/Blueprints/BP_GameMode.BP_GameMode_C
GlobalDefaultServerGameMode=None
......@@ -77,6 +77,7 @@ ExtraApplicationSettings=
ExtraActivitySettings=
bAndroidVoiceEnabled=False
+PackageForOculusMobile=Quest
+PackageForOculusMobile=GearGo
bRemoveOSIG=True
+GoogleVRCaps=Daydream33
bGoogleVRSustainedPerformance=False
......@@ -142,7 +143,7 @@ NDKAPILevelOverride=
[/Script/Engine.RendererSettings]
r.Mobile.DisableVertexFog=True
r.Shadow.CSM.MaxMobileCascades=2
r.MobileMSAA=1
r.MobileMSAA=4
r.Mobile.UseLegacyShadingModel=False
r.Mobile.AllowDitheredLODTransition=False
r.Mobile.AllowSoftwareOcclusion=False
......
......@@ -145,11 +145,11 @@ FString UOWSGameInstance::EncryptWithAES(FString StringToEncrypt, FString Key)
FAES::EncryptData(ByteString, Size, KeyAnsi);
StringToEncrypt = FString::FromHexBlob(ByteString, Size);
delete ByteString;
//delete ByteString;
return StringToEncrypt;
}
delete ByteString;
//delete ByteString;
return "";
}
......@@ -179,11 +179,11 @@ FString UOWSGameInstance::DecryptWithAES(FString StringToDecrypt, FString Key)
StringToDecrypt.Split(SplitSymbol, &LeftPart, &RightPart, ESearchCase::CaseSensitive, ESearchDir::FromStart);
StringToDecrypt = LeftPart;
delete ByteString;
//delete ByteString;
return StringToDecrypt;
}
delete ByteString;
//delete ByteString;
return "";
}
......
VlcMedia @ 5727e39b
Subproject commit 5727e39be8ea5cdf2b5894df3f7fcb99bbeafe38
{
"FileVersion": 3,
"EngineAssociation": "{0506F437-410D-A1AD-0DE5-36A1D1C0C5F7}",
"EngineAssociation": "{7E4506D0-4E9A-9CE5-C703-1FAFBE0E6174}",
"Category": "",
"Description": "",
"Modules": [
......@@ -42,10 +42,15 @@
{
"Name": "ReplicationGraph",
"Enabled": true
},
{
"Name": "WebBrowserWidget",
"Enabled": true
}
],
"TargetPlatforms": [
"Android",
"WindowsNoEditor"
"WindowsNoEditor",
"WindowsNoEditorWin32"
]
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment