Commit 2bae0c34 authored by lrz's avatar lrz

Early draft for Google Cardboard on IOS.

parent b38a4b4e
#include "aux.h"
float getCofactor(float m0, float m1, float m2,
float m3, float m4, float m5,
float m6, float m7, float m8)
{
return m0 * (m4 * m8 - m5 * m7) -
m1 * (m3 * m8 - m5 * m6) +
m2 * (m3 * m7 - m4 * m6);
}
//adapted from
//openvr-0.9.19\samples\shared\matrices.cpp
static gvr::Mat4f invert (const gvr::Mat4f& m)
{
gvr::Mat4f r;
// get cofactors of minor matrices
float cofactor0 = getCofactor(m.m[1][1],m.m[1][2],m.m[1][3], m.m[2][1],m.m[2][2],m.m[2][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor1 = getCofactor(m.m[1][0],m.m[1][2],m.m[1][3], m.m[2][0],m.m[2][2],m.m[2][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor2 = getCofactor(m.m[1][0],m.m[1][1],m.m[1][3], m.m[2][0],m.m[2][1], m.m[2][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor3 = getCofactor(m.m[1][0],m.m[1][1],m.m[1][2], m.m[2][0],m.m[2][1], m.m[2][2], m.m[3][0],m.m[3][1],m.m[3][2]);
// get determinant
float determinant = m.m[0][0] * cofactor0 - m.m[0][1] * cofactor1 + m.m[0][2] * cofactor2 - m.m[0][3] * cofactor3;
if(fabs(determinant) <= EPSILON)
{
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
r.m[i][j]=i==j;
return r;
}
// get rest of cofactors for adj(M)
float cofactor4 = getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[2][1],m.m[2][2],m.m[2][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor5 = getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[2][0],m.m[2][2],m.m[2][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor6 = getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[2][0],m.m[2][1], m.m[2][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor7 = getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[2][0],m.m[2][1], m.m[2][2], m.m[3][0],m.m[3][1],m.m[3][2]);
float cofactor8 = getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[1][1],m.m[1][2], m.m[1][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor9 = getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[1][0],m.m[1][2], m.m[1][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor10= getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[1][0],m.m[1][1], m.m[1][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor11= getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[1][0],m.m[1][1], m.m[1][2], m.m[3][0],m.m[3][1],m.m[3][2]);
float cofactor12= getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[1][1],m.m[1][2], m.m[1][3], m.m[2][1], m.m[2][2],m.m[2][3]);
float cofactor13= getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[1][0],m.m[1][2], m.m[1][3], m.m[2][0], m.m[2][2],m.m[2][3]);
float cofactor14= getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[1][0],m.m[1][1], m.m[1][3], m.m[2][0], m.m[2][1], m.m[2][3]);
float cofactor15= getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[1][0],m.m[1][1], m.m[1][2], m.m[2][0], m.m[2][1], m.m[2][2]);
// build inverse matrix = adj(M) / det(M)
// adjugate of M is the transpose of the cofactor matrix of M
float invDeterminant = 1.0f / determinant;
r.m[0][0] = invDeterminant * cofactor0;
r.m[0][1] = -invDeterminant * cofactor4;
r.m[0][2] = invDeterminant * cofactor8;
r.m[0][3] = -invDeterminant * cofactor12;
r.m[1][0] = -invDeterminant * cofactor1;
r.m[1][1] = invDeterminant * cofactor5;
r.m[1][2] = -invDeterminant * cofactor9;
r.m[1][3] = invDeterminant * cofactor13;
r.m[2][0] = invDeterminant * cofactor2;
r.m[2][1] = -invDeterminant * cofactor6;
r.m[2][2]= invDeterminant * cofactor10;
r.m[2][3]= -invDeterminant * cofactor14;
r.m[3][0]= -invDeterminant * cofactor3;
r.m[3][1]= invDeterminant * cofactor7;
r.m[3][2]= -invDeterminant * cofactor11;
r.m[3][3]= invDeterminant * cofactor15;
return r;
}
float getCofactor(float m0, float m1, float m2,
float m3, float m4, float m5,
float m6, float m7, float m8);
static gvr::Mat4f invert (const gvr::Mat4f& m);
......@@ -39,6 +39,8 @@
#include "NOMADVRLib/polyhedron.h"
#include "NOMADVRLib/IsosurfacesGL.h"
#include "GoogleCardboard/aux.h"
#define LOG_TAG "NOMADgvrT"
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
......@@ -50,7 +52,6 @@
}
const char * configPath=0;
const float EPSILON = 0.00001f;
void eprintf( const char *fmt, ... )
{
......@@ -71,41 +72,6 @@ void eprintf( const char *fmt, ... )
namespace {
gvr::Mat4f TranslationMatrix (float x, float y, float z)
{
gvr::Mat4f mvs;
mvs.m[0][0]=1;mvs.m[0][1]=0;mvs.m[0][2]=0; mvs.m[0][3]=x;
mvs.m[1][0]=0;mvs.m[1][1]=1;mvs.m[1][2]=0;mvs.m[1][3]=y;
mvs.m[2][0]=0;mvs.m[2][1]=0;mvs.m[2][2]=1; mvs.m[2][3]=z;
mvs.m[3][0]=0;mvs.m[3][1]=0;mvs.m[3][2]=0; mvs.m[3][3]=1;
return mvs;
}
gvr::Mat4f TranslationMatrix (float v[3])
{
return TranslationMatrix (v[0], v[1], v[2]);
}
gvr::Mat4f ScalingMatrix (float x, float y, float z)
{
gvr::Mat4f mvs;
mvs.m[0][0]=x;mvs.m[0][1]=0;mvs.m[0][2]=0; mvs.m[0][3]=0;
mvs.m[1][0]=0;mvs.m[1][1]=y;mvs.m[1][2]=0;mvs.m[1][3]=0;
mvs.m[2][0]=0;mvs.m[2][1]=0;mvs.m[2][2]=z; mvs.m[2][3]=0;
mvs.m[3][0]=0;mvs.m[3][1]=0;mvs.m[3][2]=0; mvs.m[3][3]=1;
return mvs;
}
gvr::Mat4f ScalingMatrix (float v[3])
{
return ScalingMatrix(v[0], v[1], v[2]);
}
gvr::Mat4f ScalingMatrix (float s)
{
return ScalingMatrix(s,s,s);
}
//static const float kZNear = 1.0f;
//static const float kZFar = 100.0f;
......@@ -117,78 +83,6 @@ static const int kCoordsPerVertex = 3;
static const uint64_t kPredictionTimeWithoutVsyncNanos = 50000000;
float getCofactor(float m0, float m1, float m2,
float m3, float m4, float m5,
float m6, float m7, float m8)
{
return m0 * (m4 * m8 - m5 * m7) -
m1 * (m3 * m8 - m5 * m6) +
m2 * (m3 * m7 - m4 * m6);
}
//adapted from
//openvr-0.9.19\samples\shared\matrices.cpp
static gvr::Mat4f invert (const gvr::Mat4f& m)
{
gvr::Mat4f r;
// get cofactors of minor matrices
float cofactor0 = getCofactor(m.m[1][1],m.m[1][2],m.m[1][3], m.m[2][1],m.m[2][2],m.m[2][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor1 = getCofactor(m.m[1][0],m.m[1][2],m.m[1][3], m.m[2][0],m.m[2][2],m.m[2][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor2 = getCofactor(m.m[1][0],m.m[1][1],m.m[1][3], m.m[2][0],m.m[2][1], m.m[2][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor3 = getCofactor(m.m[1][0],m.m[1][1],m.m[1][2], m.m[2][0],m.m[2][1], m.m[2][2], m.m[3][0],m.m[3][1],m.m[3][2]);
// get determinant
float determinant = m.m[0][0] * cofactor0 - m.m[0][1] * cofactor1 + m.m[0][2] * cofactor2 - m.m[0][3] * cofactor3;
if(fabs(determinant) <= EPSILON)
{
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
r.m[i][j]=i==j;
return r;
}
// get rest of cofactors for adj(M)
float cofactor4 = getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[2][1],m.m[2][2],m.m[2][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor5 = getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[2][0],m.m[2][2],m.m[2][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor6 = getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[2][0],m.m[2][1], m.m[2][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor7 = getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[2][0],m.m[2][1], m.m[2][2], m.m[3][0],m.m[3][1],m.m[3][2]);
float cofactor8 = getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[1][1],m.m[1][2], m.m[1][3], m.m[3][1],m.m[3][2],m.m[3][3]);
float cofactor9 = getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[1][0],m.m[1][2], m.m[1][3], m.m[3][0],m.m[3][2],m.m[3][3]);
float cofactor10= getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[1][0],m.m[1][1], m.m[1][3], m.m[3][0],m.m[3][1],m.m[3][3]);
float cofactor11= getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[1][0],m.m[1][1], m.m[1][2], m.m[3][0],m.m[3][1],m.m[3][2]);
float cofactor12= getCofactor(m.m[0][1],m.m[0][2],m.m[0][3], m.m[1][1],m.m[1][2], m.m[1][3], m.m[2][1], m.m[2][2],m.m[2][3]);
float cofactor13= getCofactor(m.m[0][0],m.m[0][2],m.m[0][3], m.m[1][0],m.m[1][2], m.m[1][3], m.m[2][0], m.m[2][2],m.m[2][3]);
float cofactor14= getCofactor(m.m[0][0],m.m[0][1],m.m[0][3], m.m[1][0],m.m[1][1], m.m[1][3], m.m[2][0], m.m[2][1], m.m[2][3]);
float cofactor15= getCofactor(m.m[0][0],m.m[0][1],m.m[0][2], m.m[1][0],m.m[1][1], m.m[1][2], m.m[2][0], m.m[2][1], m.m[2][2]);
// build inverse matrix = adj(M) / det(M)
// adjugate of M is the transpose of the cofactor matrix of M
float invDeterminant = 1.0f / determinant;
r.m[0][0] = invDeterminant * cofactor0;
r.m[0][1] = -invDeterminant * cofactor4;
r.m[0][2] = invDeterminant * cofactor8;
r.m[0][3] = -invDeterminant * cofactor12;
r.m[1][0] = -invDeterminant * cofactor1;
r.m[1][1] = invDeterminant * cofactor5;
r.m[1][2] = -invDeterminant * cofactor9;
r.m[1][3] = invDeterminant * cofactor13;
r.m[2][0] = invDeterminant * cofactor2;
r.m[2][1] = -invDeterminant * cofactor6;
r.m[2][2]= invDeterminant * cofactor10;
r.m[2][3]= -invDeterminant * cofactor14;
r.m[3][0]= -invDeterminant * cofactor3;
r.m[3][1]= invDeterminant * cofactor7;
r.m[3][2]= -invDeterminant * cofactor11;
r.m[3][3]= invDeterminant * cofactor15;
return r;
}
static std::array<float, 16> MatrixToGLArray(const gvr::Mat4f& matrix) {
// Note that this performs a *tranpose* to a column-major matrix array, as
// expected by GL.
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIFileSharingEnabled</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>magnetometer</string>
</array>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.1</string>
<key>CFBundleVersion</key>
<string>2.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>launch</string>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Used to scan QR codes</string>
</dict>
</plist>
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1278CED81CEBF98600D93A88 /* NOMADVRSDK-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1278CED71CEBF98600D93A88 /* NOMADVRSDK-Info.plist */; };
12BEE9C01C8F5426002F8361 /* TreasureHuntAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 12BEE9B91C8F5426002F8361 /* TreasureHuntAppDelegate.m */; };
12BEE9C31C8F5426002F8361 /* TreasureHuntViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 12BEE9BF1C8F5426002F8361 /* TreasureHuntViewController.mm */; };
12BEE9C81C8F546B002F8361 /* launch.xib in Resources */ = {isa = PBXBuildFile; fileRef = 12BEE9C61C8F546B002F8361 /* launch.xib */; };
12BEE9CB1C8F54B8002F8361 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 12BEE9CA1C8F54B8002F8361 /* main.m */; };
12C3DC8F1CEBBA9E00D39B85 /* treasure_hunt_renderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 12C3DC8C1CEBBA9E00D39B85 /* treasure_hunt_renderer.mm */; };
4D85FBEE2075203B008FD96D /* aux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D85FBEC2075203B008FD96D /* aux.cpp */; };
4DEE7BCE20629B0F00A0956C /* NOMADVRLib in Resources */ = {isa = PBXBuildFile; fileRef = 4DEE7BCD20629B0F00A0956C /* NOMADVRLib */; };
4DEE7BD22062A82000A0956C /* atoms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BD12062A82000A0956C /* atoms.cpp */; };
4DEE7BD52062A83800A0956C /* atomsGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BD32062A83800A0956C /* atomsGL.cpp */; };
4DEE7BDD2062AD8800A0956C /* rply.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BDA2062AD8800A0956C /* rply.c */; };
4DEE7BE12062ADCB00A0956C /* happyhttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BDF2062ADCB00A0956C /* happyhttp.cpp */; };
4DEE7BE52062AE2200A0956C /* markerShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BE42062AE2200A0956C /* markerShaders.cpp */; };
4DEE7BE72062AE5200A0956C /* Grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BE62062AE5200A0956C /* Grid.cpp */; };
4DEE7BE92062AE6D00A0956C /* ConfigFileAtoms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BE82062AE6D00A0956C /* ConfigFileAtoms.cpp */; };
4DEE7BEB2062AE9F00A0956C /* TessShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BEA2062AE9F00A0956C /* TessShaders.cpp */; };
4DEE7BED2062AEAB00A0956C /* UnitCellShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BEC2062AEAB00A0956C /* UnitCellShaders.cpp */; };
4DEE7BEF2062AECC00A0956C /* IsosurfacesGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BEE2062AECC00A0956C /* IsosurfacesGL.cpp */; };
4DEE7BF12062AED900A0956C /* ConfigFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BF02062AED900A0956C /* ConfigFile.cpp */; };
4DEE7BF32062B2EB00A0956C /* polyhedron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BF22062B2EB00A0956C /* polyhedron.cpp */; };
4DEE7BF52062B92100A0956C /* IsoShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BF42062B92100A0956C /* IsoShaders.cpp */; };
4DEE7BF72062BA3F00A0956C /* CompileGLShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DEE7BF62062BA3F00A0956C /* CompileGLShader.cpp */; };
C99E7A8E024DA5FE8D83A5BB /* libPods-TreasureHuntNDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A4028450E1F4537A4DE358F /* libPods-TreasureHuntNDK.a */; };
F27EE917D4C0E740BE5E6345 /* Pods_NOMADVRSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CAC7C8C2287795314AD5579A /* Pods_NOMADVRSDK.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
1278CED71CEBF98600D93A88 /* NOMADVRSDK-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "NOMADVRSDK-Info.plist"; sourceTree = SOURCE_ROOT; };
12BEE99E1C8F53AB002F8361 /* NOMADVRSDK.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NOMADVRSDK.app; sourceTree = BUILT_PRODUCTS_DIR; };
12BEE9B81C8F5426002F8361 /* TreasureHuntAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureHuntAppDelegate.h; sourceTree = SOURCE_ROOT; };
12BEE9B91C8F5426002F8361 /* TreasureHuntAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureHuntAppDelegate.m; sourceTree = SOURCE_ROOT; };
12BEE9BE1C8F5426002F8361 /* TreasureHuntViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureHuntViewController.h; sourceTree = SOURCE_ROOT; };
12BEE9BF1C8F5426002F8361 /* TreasureHuntViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TreasureHuntViewController.mm; sourceTree = SOURCE_ROOT; };
12BEE9C61C8F546B002F8361 /* launch.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = launch.xib; sourceTree = SOURCE_ROOT; };
12BEE9CA1C8F54B8002F8361 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = SOURCE_ROOT; };
12C3DC8C1CEBBA9E00D39B85 /* treasure_hunt_renderer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = treasure_hunt_renderer.mm; sourceTree = SOURCE_ROOT; };
12C3DC8D1CEBBA9E00D39B85 /* treasure_hunt_renderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treasure_hunt_renderer.h; sourceTree = SOURCE_ROOT; };
3A4028450E1F4537A4DE358F /* libPods-TreasureHuntNDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TreasureHuntNDK.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4D85FBEC2075203B008FD96D /* aux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aux.cpp; sourceTree = "<group>"; };
4D85FBED2075203B008FD96D /* aux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aux.h; sourceTree = "<group>"; };
4DEE7BCD20629B0F00A0956C /* NOMADVRLib */ = {isa = PBXFileReference; lastKnownFileType = folder; name = NOMADVRLib; path = "/Users/lrz/gvr-ios-sdk/Samples/TreasureHuntNDK/NOMADVRLib"; sourceTree = "<absolute>"; };
4DEE7BD12062A82000A0956C /* atoms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = atoms.cpp; path = NOMADVRLib/atoms.cpp; sourceTree = "<group>"; };
4DEE7BD32062A83800A0956C /* atomsGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = atomsGL.cpp; path = NOMADVRLib/atomsGL.cpp; sourceTree = "<group>"; };
4DEE7BDA2062AD8800A0956C /* rply.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rply.c; path = rply/rply.c; sourceTree = "<group>"; };
4DEE7BDB2062AD8800A0956C /* rply.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rply.h; path = rply/rply.h; sourceTree = "<group>"; };
4DEE7BDC2062AD8800A0956C /* rplyfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rplyfile.h; path = rply/rplyfile.h; sourceTree = "<group>"; };
4DEE7BDF2062ADCB00A0956C /* happyhttp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = happyhttp.cpp; sourceTree = "<group>"; };
4DEE7BE02062ADCB00A0956C /* happyhttp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = happyhttp.h; sourceTree = "<group>"; };
4DEE7BE42062AE2200A0956C /* markerShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = markerShaders.cpp; path = NOMADVRLib/markerShaders.cpp; sourceTree = "<group>"; };
4DEE7BE62062AE5200A0956C /* Grid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Grid.cpp; path = NOMADVRLib/Grid.cpp; sourceTree = "<group>"; };
4DEE7BE82062AE6D00A0956C /* ConfigFileAtoms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConfigFileAtoms.cpp; path = NOMADVRLib/ConfigFileAtoms.cpp; sourceTree = "<group>"; };
4DEE7BEA2062AE9F00A0956C /* TessShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TessShaders.cpp; path = NOMADVRLib/TessShaders.cpp; sourceTree = "<group>"; };
4DEE7BEC2062AEAB00A0956C /* UnitCellShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnitCellShaders.cpp; path = NOMADVRLib/UnitCellShaders.cpp; sourceTree = "<group>"; };
4DEE7BEE2062AECC00A0956C /* IsosurfacesGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IsosurfacesGL.cpp; path = NOMADVRLib/IsosurfacesGL.cpp; sourceTree = "<group>"; };
4DEE7BF02062AED900A0956C /* ConfigFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConfigFile.cpp; path = NOMADVRLib/ConfigFile.cpp; sourceTree = "<group>"; };
4DEE7BF22062B2EB00A0956C /* polyhedron.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = polyhedron.cpp; path = NOMADVRLib/polyhedron.cpp; sourceTree = "<group>"; };
4DEE7BF42062B92100A0956C /* IsoShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IsoShaders.cpp; path = NOMADVRLib/IsoShaders.cpp; sourceTree = "<group>"; };
4DEE7BF62062BA3F00A0956C /* CompileGLShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompileGLShader.cpp; path = NOMADVRLib/CompileGLShader.cpp; sourceTree = "<group>"; };
9FD381D5B2D35CE778ED88B3 /* Pods-NOMADVRSDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NOMADVRSDK.debug.xcconfig"; path = "Pods/Target Support Files/Pods-NOMADVRSDK/Pods-NOMADVRSDK.debug.xcconfig"; sourceTree = "<group>"; };
CAC7C8C2287795314AD5579A /* Pods_NOMADVRSDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NOMADVRSDK.framework; sourceTree = BUILT_PRODUCTS_DIR; };
EB0170AE84675B1C851C3FA4 /* Pods-NOMADVRSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NOMADVRSDK.release.xcconfig"; path = "Pods/Target Support Files/Pods-NOMADVRSDK/Pods-NOMADVRSDK.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
12BEE99B1C8F53AB002F8361 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C99E7A8E024DA5FE8D83A5BB /* libPods-TreasureHuntNDK.a in Frameworks */,
F27EE917D4C0E740BE5E6345 /* Pods_NOMADVRSDK.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
119687AEB1F830DBF8B32F90 /* Frameworks */ = {
isa = PBXGroup;
children = (
3A4028450E1F4537A4DE358F /* libPods-TreasureHuntNDK.a */,
CAC7C8C2287795314AD5579A /* Pods_NOMADVRSDK.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
12BEE9951C8F53AB002F8361 = {
isa = PBXGroup;
children = (
12BEE9A01C8F53AB002F8361 /* TreasureHunt */,
12BEE99F1C8F53AB002F8361 /* Products */,
4DEE7BDE2062ADCB00A0956C /* happyhttp */,
4DEE7BD92062AD5C00A0956C /* rply */,
4D85FBEB2075203B008FD96D /* GoogleCardboard */,
4DEE7BCF2062A33900A0956C /* NOMADVRLib */,
119687AEB1F830DBF8B32F90 /* Frameworks */,
2D97AF66D715451F210A5105 /* Pods */,
);
sourceTree = "<group>";
};
12BEE99F1C8F53AB002F8361 /* Products */ = {
isa = PBXGroup;
children = (
12BEE99E1C8F53AB002F8361 /* NOMADVRSDK.app */,
);
name = Products;
sourceTree = "<group>";
};
12BEE9A01C8F53AB002F8361 /* TreasureHunt */ = {
isa = PBXGroup;
children = (
12BEE9B81C8F5426002F8361 /* TreasureHuntAppDelegate.h */,
12BEE9B91C8F5426002F8361 /* TreasureHuntAppDelegate.m */,
12BEE9BE1C8F5426002F8361 /* TreasureHuntViewController.h */,
12BEE9BF1C8F5426002F8361 /* TreasureHuntViewController.mm */,
12C3DC8C1CEBBA9E00D39B85 /* treasure_hunt_renderer.mm */,
12C3DC8D1CEBBA9E00D39B85 /* treasure_hunt_renderer.h */,
1278CED71CEBF98600D93A88 /* NOMADVRSDK-Info.plist */,
12BEE9C61C8F546B002F8361 /* launch.xib */,
12BEE9A11C8F53AB002F8361 /* Supporting Files */,
);
path = TreasureHunt;
sourceTree = "<group>";
};
12BEE9A11C8F53AB002F8361 /* Supporting Files */ = {
isa = PBXGroup;
children = (
12BEE9CA1C8F54B8002F8361 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
2D97AF66D715451F210A5105 /* Pods */ = {
isa = PBXGroup;
children = (
9FD381D5B2D35CE778ED88B3 /* Pods-NOMADVRSDK.debug.xcconfig */,
EB0170AE84675B1C851C3FA4 /* Pods-NOMADVRSDK.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
4D85FBEB2075203B008FD96D /* GoogleCardboard */ = {
isa = PBXGroup;
children = (
4D85FBEC2075203B008FD96D /* aux.cpp */,
4D85FBED2075203B008FD96D /* aux.h */,
);
path = GoogleCardboard;
sourceTree = "<group>";
};
4DEE7BCF2062A33900A0956C /* NOMADVRLib */ = {
isa = PBXGroup;
children = (
4DEE7BF62062BA3F00A0956C /* CompileGLShader.cpp */,
4DEE7BF42062B92100A0956C /* IsoShaders.cpp */,
4DEE7BF22062B2EB00A0956C /* polyhedron.cpp */,
4DEE7BF02062AED900A0956C /* ConfigFile.cpp */,
4DEE7BEE2062AECC00A0956C /* IsosurfacesGL.cpp */,
4DEE7BEC2062AEAB00A0956C /* UnitCellShaders.cpp */,
4DEE7BEA2062AE9F00A0956C /* TessShaders.cpp */,
4DEE7BE82062AE6D00A0956C /* ConfigFileAtoms.cpp */,
4DEE7BE62062AE5200A0956C /* Grid.cpp */,
4DEE7BE42062AE2200A0956C /* markerShaders.cpp */,
4DEE7BD32062A83800A0956C /* atomsGL.cpp */,
4DEE7BD12062A82000A0956C /* atoms.cpp */,
);
name = NOMADVRLib;
sourceTree = "<group>";
};
4DEE7BD92062AD5C00A0956C /* rply */ = {
isa = PBXGroup;
children = (
4DEE7BDA2062AD8800A0956C /* rply.c */,
4DEE7BDB2062AD8800A0956C /* rply.h */,
4DEE7BDC2062AD8800A0956C /* rplyfile.h */,
);
name = rply;
sourceTree = "<group>";
};
4DEE7BDE2062ADCB00A0956C /* happyhttp */ = {
isa = PBXGroup;
children = (
4DEE7BDF2062ADCB00A0956C /* happyhttp.cpp */,
4DEE7BE02062ADCB00A0956C /* happyhttp.h */,
);
path = happyhttp;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
12BEE99D1C8F53AB002F8361 /* NOMADVRSDK */ = {
isa = PBXNativeTarget;
buildConfigurationList = 12BEE9B51C8F53AB002F8361 /* Build configuration list for PBXNativeTarget "NOMADVRSDK" */;
buildPhases = (
ACFE6513C5D698691E7598BC /* [CP] Check Pods Manifest.lock */,
12BEE99A1C8F53AB002F8361 /* Sources */,
12BEE99B1C8F53AB002F8361 /* Frameworks */,
12BEE99C1C8F53AB002F8361 /* Resources */,
2EFF265D64E32C11F644E7C9 /* [CP] Embed Pods Frameworks */,
A352CE7013F07FFD6614613C /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = NOMADVRSDK;
productName = TreasureHunt;
productReference = 12BEE99E1C8F53AB002F8361 /* NOMADVRSDK.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
12BEE9961C8F53AB002F8361 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0820;
TargetAttributes = {
12BEE99D1C8F53AB002F8361 = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = 6DYZG82AAG;
LastSwiftMigration = 0820;
};
};
};
buildConfigurationList = 12BEE9991C8F53AB002F8361 /* Build configuration list for PBXProject "NOMADVRSDK" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 12BEE9951C8F53AB002F8361;
productRefGroup = 12BEE99F1C8F53AB002F8361 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
12BEE99D1C8F53AB002F8361 /* NOMADVRSDK */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
12BEE99C1C8F53AB002F8361 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4DEE7BCE20629B0F00A0956C /* NOMADVRLib in Resources */,
12BEE9C81C8F546B002F8361 /* launch.xib in Resources */,
1278CED81CEBF98600D93A88 /* NOMADVRSDK-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
2EFF265D64E32C11F644E7C9 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-NOMADVRSDK/Pods-NOMADVRSDK-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/FileBrowser/FileBrowser.framework",
"${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework",
"${BUILT_PRODUCTS_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FileBrowser.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleToolboxForMac.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-NOMADVRSDK/Pods-NOMADVRSDK-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
A352CE7013F07FFD6614613C /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (