annotate trunk/chipmunkd/chipmunk_types.d @ 17:131331ebb599

cpVect toString method and some cleanup
author Extrawurst
date Thu, 09 Dec 2010 01:51:30 +0100
parents df4ebc8add66
children 4ceef5833c8c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
1
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
2 // written in the D programming language
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
3
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
4 module chipmunkd.chipmunk_types;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
5
17
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
6 import std.string;
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
7
15
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
8 //#ifdef __APPLE__
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
9 // #import "TargetConditionals.h"
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
10 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
11 //
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
12 //#ifndef CP_USE_DOUBLES
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
13 // // Use single precision floats on the iPhone.
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
14 // #if TARGET_OS_IPHONE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
15 // #define CP_USE_DOUBLES 0
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
16 // #else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
17 // // use doubles by default for higher precision
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
18 // #define CP_USE_DOUBLES 1
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
19 // #endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
20 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
21 //
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
22 version(CP_USE_DOUBLES){
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
23 alias double cpFloat;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
24 //TODO:
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
25 // #define cpfsqrt sqrt
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
26 // #define cpfsin sin
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
27 // #define cpfcos cos
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
28 // #define cpfacos acos
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
29 // #define cpfatan2 atan2
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
30 // #define cpfmod fmod
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
31 // #define cpfexp exp
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
32 // #define cpfpow pow
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
33 // #define cpffloor floor
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
34 // #define cpfceil ceil
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
35 }else{
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
36 extern (C) nothrow {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
37 float sqrtf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
38 float sinf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
39 float cosf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
40 float acosf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
41 float atan2f(float,float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
42 float fmodf(float,float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
43 float expf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
44 float powf(float,float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
45 float floorf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
46 float ceilf(float);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
47 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
48
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
49 alias float cpFloat;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
50
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
51 alias sqrtf cpfsqrt;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
52 alias sinf cpfsin;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
53 alias cosf cpfcos;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
54 alias acosf cpfacos;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
55 alias atan2f cpfatan2;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
56 alias fmodf cpfmod;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
57 alias expf cpfexp;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
58 alias powf cpfpow;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
59 alias floorf cpffloor;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
60 alias ceilf cpfceil;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
61 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
62
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
63 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
64 cpfmax(cpFloat a, cpFloat b)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
65 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
66 return (a > b) ? a : b;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
67 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
68
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
69 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
70 cpfmin(cpFloat a, cpFloat b)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
71 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
72 return (a < b) ? a : b;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
73 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
74
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
75 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
76 cpfabs(cpFloat n)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
77 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
78 return (n < 0) ? -n : n;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
79 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
80
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
81 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
82 cpfclamp(cpFloat f, cpFloat min, cpFloat max)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
83 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
84 return cpfmin(cpfmax(f, min), max);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
85 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
86
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
87 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
88 cpflerp(cpFloat f1, cpFloat f2, cpFloat t)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
89 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
90 return f1*(1.0f - t) + f2*t;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
91 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
92
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
93 static cpFloat
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
94 cpflerpconst(cpFloat f1, cpFloat f2, cpFloat d)
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
95 {
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
96 return f1 + cpfclamp(f2 - f1, -d, d);
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
97 }
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
98
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
99 //#if TARGET_OS_IPHONE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
100 // // CGPoints are structurally the same, and allow
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
101 // // easy interoperability with other iPhone libraries
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
102 // #import <CoreGraphics/CGGeometry.h>
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
103 // typedef CGPoint cpVect;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
104 //#else
17
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
105 struct cpVect
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
106 {
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
107 cpFloat x = 0; cpFloat y=0;
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
108
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
109 string toString() const
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
110 {
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
111 return .format("(%s,%s)",x,y);
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
112 }
131331ebb599 cpVect toString method and some cleanup
Extrawurst
parents: 15
diff changeset
113 }
15
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
114 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
115
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
116 alias uint cpHashValue;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
117
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
118 // Oh C, how we love to define our own boolean types to get compiler compatibility
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
119 //#ifdef CP_BOOL_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
120 // typedef CP_BOOL_TYPE cpBool;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
121 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
122 alias bool cpBool;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
123 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
124
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
125 //#ifndef cpTrue
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
126 enum cpTrue = true;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
127 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
128
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
129 //#ifndef cpFalse
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
130 enum cpFalse = false;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
131 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
132
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
133 //#ifdef CP_DATA_POINTER_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
134 // typedef CP_DATA_POINTER_TYPE cpDataPointer;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
135 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
136 alias void * cpDataPointer;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
137 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
138
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
139 //#ifdef CP_COLLISION_TYPE_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
140 // typedef CP_COLLISION_TYPE_TYPE cpCollisionType;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
141 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
142 alias uint cpCollisionType;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
143 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
144
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
145 //#ifdef CP_GROUP_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
146 // typedef CP_GROUP_TYPE cpGroup;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
147 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
148 alias uint cpGroup;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
149 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
150
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
151 //#ifdef CP_LAYERS_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
152 // typedef CP_GROUP_TYPE cpLayers;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
153 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
154 alias uint cpLayers;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
155 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
156
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
157 //#ifdef CP_TIMESTAMP_TYPE
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
158 // typedef CP_TIMESTAMP_TYPE cpTimestamp;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
159 //#else
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
160 alias uint cpTimestamp;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
161 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
162
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
163 //#ifndef CP_NO_GROUP
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
164 enum CP_NO_GROUP = 0;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
165 //#endif
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
166
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
167 //#ifndef CP_ALL_LAYERS
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
168 enum CP_ALL_LAYERS = ~0;
df4ebc8add66 rename/refactoring
Extrawurst
parents:
diff changeset
169 //#endif