Skip to content

Commit 80c945a

Browse files
committed
Chapter 8 Mac
1 parent 09f77ff commit 80c945a

3 files changed

Lines changed: 30 additions & 19 deletions

File tree

Chapter08/Chapter08-mac.xcodeproj/project.pbxproj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@
158158
92E46DEF1B634EA30035CD21 /* Project object */ = {
159159
isa = PBXProject;
160160
attributes = {
161-
LastUpgradeCheck = 0830;
161+
LastUpgradeCheck = 0920;
162162
ORGANIZATIONNAME = "Sanjay Madhav";
163163
TargetAttributes = {
164164
92E46DF61B634EA30035CD21 = {
@@ -235,14 +235,20 @@
235235
CLANG_CXX_LIBRARY = "libc++";
236236
CLANG_ENABLE_MODULES = YES;
237237
CLANG_ENABLE_OBJC_ARC = YES;
238+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
238239
CLANG_WARN_BOOL_CONVERSION = YES;
240+
CLANG_WARN_COMMA = YES;
239241
CLANG_WARN_CONSTANT_CONVERSION = YES;
240242
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
241243
CLANG_WARN_EMPTY_BODY = YES;
242244
CLANG_WARN_ENUM_CONVERSION = YES;
243245
CLANG_WARN_INFINITE_RECURSION = YES;
244246
CLANG_WARN_INT_CONVERSION = YES;
247+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
248+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
245249
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
250+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
251+
CLANG_WARN_STRICT_PROTOTYPES = YES;
246252
CLANG_WARN_SUSPICIOUS_MOVE = YES;
247253
CLANG_WARN_UNREACHABLE_CODE = YES;
248254
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -280,14 +286,20 @@
280286
CLANG_CXX_LIBRARY = "libc++";
281287
CLANG_ENABLE_MODULES = YES;
282288
CLANG_ENABLE_OBJC_ARC = YES;
289+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
283290
CLANG_WARN_BOOL_CONVERSION = YES;
291+
CLANG_WARN_COMMA = YES;
284292
CLANG_WARN_CONSTANT_CONVERSION = YES;
285293
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
286294
CLANG_WARN_EMPTY_BODY = YES;
287295
CLANG_WARN_ENUM_CONVERSION = YES;
288296
CLANG_WARN_INFINITE_RECURSION = YES;
289297
CLANG_WARN_INT_CONVERSION = YES;
298+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
299+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
290300
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
301+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
302+
CLANG_WARN_STRICT_PROTOTYPES = YES;
291303
CLANG_WARN_SUSPICIOUS_MOVE = YES;
292304
CLANG_WARN_UNREACHABLE_CODE = YES;
293305
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;

Chapter08/Chapter08-mac.xcodeproj/xcshareddata/xcschemes/Game-mac.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0830"
3+
LastUpgradeVersion = "0920"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

Chapter08/Math.cpp

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,13 @@ Vector3 Vector3::Transform(const Vector3& v, const Quaternion& q)
9999
void Matrix4::Invert()
100100
{
101101
// Thanks slow math
102-
float tmp[12]; /* temp array for pairs */
103-
float src[16]; /* array of transpose source matrix */
104-
float dst[16]; /* storage */
105-
float det; /* determinant */
106-
/* transpose matrix */
102+
// This is a really janky way to unroll everything...
103+
float tmp[12];
104+
float src[16];
105+
float dst[16];
106+
float det;
107107

108+
// Transpose matrix
108109
// row 1 to col 1
109110
src[0] = mat[0][0];
110111
src[4] = mat[0][1];
@@ -129,13 +130,7 @@ void Matrix4::Invert()
129130
src[11] = mat[3][2];
130131
src[15] = mat[3][3];
131132

132-
// for (int i = 0; i < 4; i++) {
133-
// src[i] = mat[i*4];
134-
// src[i + 4] = mat[i*4 + 1];
135-
// src[i + 8] = mat[i*4 + 2];
136-
// src[i + 12] = mat[i*4 + 3];
137-
// }
138-
/* calculate pairs for first 8 elements (cofactors) */
133+
// Calculate cofactors
139134
tmp[0] = src[10] * src[15];
140135
tmp[1] = src[11] * src[14];
141136
tmp[2] = src[9] * src[15];
@@ -148,7 +143,7 @@ void Matrix4::Invert()
148143
tmp[9] = src[10] * src[12];
149144
tmp[10] = src[8] * src[13];
150145
tmp[11] = src[9] * src[12];
151-
/* calculate first 8 elements (cofactors) */
146+
152147
dst[0] = tmp[0] * src[5] + tmp[3] * src[6] + tmp[4] * src[7];
153148
dst[0] -= tmp[1] * src[5] + tmp[2] * src[6] + tmp[5] * src[7];
154149
dst[1] = tmp[1] * src[4] + tmp[6] * src[6] + tmp[9] * src[7];
@@ -165,7 +160,7 @@ void Matrix4::Invert()
165160
dst[6] -= tmp[2] * src[0] + tmp[7] * src[1] + tmp[10] * src[3];
166161
dst[7] = tmp[4] * src[0] + tmp[9] * src[1] + tmp[10] * src[2];
167162
dst[7] -= tmp[5] * src[0] + tmp[8] * src[1] + tmp[11] * src[2];
168-
/* calculate pairs for second 8 elements (cofactors) */
163+
169164
tmp[0] = src[2] * src[7];
170165
tmp[1] = src[3] * src[6];
171166
tmp[2] = src[1] * src[7];
@@ -178,7 +173,7 @@ void Matrix4::Invert()
178173
tmp[9] = src[2] * src[4];
179174
tmp[10] = src[0] * src[5];
180175
tmp[11] = src[1] * src[4];
181-
/* calculate second 8 elements (cofactors) */
176+
182177
dst[8] = tmp[0] * src[13] + tmp[3] * src[14] + tmp[4] * src[15];
183178
dst[8] -= tmp[1] * src[13] + tmp[2] * src[14] + tmp[5] * src[15];
184179
dst[9] = tmp[1] * src[12] + tmp[6] * src[14] + tmp[9] * src[15];
@@ -195,12 +190,16 @@ void Matrix4::Invert()
195190
dst[14] -= tmp[10] * src[11] + tmp[2] * src[8] + tmp[7] * src[9];
196191
dst[15] = tmp[10] * src[10] + tmp[4] * src[8] + tmp[9] * src[9];
197192
dst[15] -= tmp[8] * src[9] + tmp[11] * src[10] + tmp[5] * src[8];
198-
/* calculate determinant */
193+
194+
// Calculate determinant
199195
det = src[0] * dst[0] + src[1] * dst[1] + src[2] * dst[2] + src[3] * dst[3];
200-
/* calculate matrix inverse */
196+
197+
// Inverse of matrix is divided by determinant
201198
det = 1 / det;
202199
for (int j = 0; j < 16; j++)
200+
{
203201
dst[j] *= det;
202+
}
204203

205204
// Set it back
206205
for (int i = 0; i < 4; i++)

0 commit comments

Comments
 (0)