OSDN Git Service

SkinWeightはGetHashCodeに入れない
[tdcgexplorer/tso2mqo.git] / General.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 \r
5 namespace Tso2MqoGui\r
6 {\r
7     public partial struct Point2 : IComparable<Point2>\r
8     {\r
9         public float x, y;\r
10 \r
11         public Point2(float x, float y)\r
12         {\r
13             this.x  = x;\r
14             this.y  = y;\r
15         }\r
16 \r
17         public float    X   { get { return x; } set { x= value; } }\r
18         public float    Y   { get { return y; } set { y= value; } }\r
19 \r
20         public override string ToString()\r
21         {\r
22             return X+","+Y;\r
23         }\r
24 \r
25         public static Point2    Parse(string[] t, int  begin)\r
26         {\r
27             return new Point2(\r
28                 float.Parse(t[begin+0]),\r
29                 float.Parse(t[begin+1]));\r
30         }\r
31 \r
32         public int CompareTo(Point2 obj)\r
33         {\r
34             int cmp;\r
35             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
36             cmp = y.CompareTo(obj.y);\r
37             return cmp;\r
38         }\r
39 \r
40         public override int GetHashCode()\r
41         {\r
42             return x.GetHashCode() ^ y.GetHashCode();\r
43         }\r
44 \r
45         public bool Equals(Point2 p)\r
46         {\r
47             return (x == p.x) && (y == p.y);\r
48         }\r
49     }\r
50 \r
51     public partial struct Point3 : IComparable<Point3>\r
52     {\r
53         public float x, y, z;\r
54 \r
55         public Point3(float x, float y, float z)\r
56         {\r
57             this.x  = x;\r
58             this.y  = y;\r
59             this.z  = z;\r
60         }\r
61 \r
62         public float    X   { get { return x; } set { x= value; } }\r
63         public float    Y   { get { return y; } set { y= value; } }\r
64         public float    Z   { get { return z; } set { z= value; } }\r
65 \r
66         public static Point3 operator+(Point3 a, Point3 b)\r
67         {\r
68             return new Point3(a.x+b.x, a.y+b.y, a.z+b.z);\r
69         }\r
70 \r
71         public static Point3 operator-(Point3 a, Point3 b)\r
72         {\r
73             return new Point3(a.x-b.x, a.y-b.y, a.z-b.z);\r
74         }\r
75 \r
76         public override string ToString()\r
77         {\r
78             return X+","+Y+","+Z;\r
79         }\r
80 \r
81         public static Point3    Cross(Point3 p, Point3 q)\r
82         {\r
83             return new Point3(\r
84                 p.y*q.z - p.z*q.y,\r
85                 p.z*q.x - p.x*q.z,\r
86                 p.x*q.y - p.y*q.x);\r
87         }\r
88 \r
89         public static Point3    Normalize(Point3 p)\r
90         {\r
91             float   d   = p.x*p.x + p.y*p.y + p.z*p.z;\r
92 \r
93             if(d < 0.00001f)\r
94                 return p;\r
95 \r
96             d           = (float)(1 / (Math.Sqrt(d)));\r
97             return new Point3(p.x*d, p.y*d, p.z*d);\r
98         }\r
99 \r
100         public static Point3    Parse(string[] t, int  begin)\r
101         {\r
102             return new Point3(\r
103                 float.Parse(t[begin+0]),\r
104                 float.Parse(t[begin+1]),\r
105                 float.Parse(t[begin+2]));\r
106         }\r
107 \r
108         public int CompareTo(Point3 obj)\r
109         {\r
110             int cmp;\r
111             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
112             cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
113             cmp = z.CompareTo(obj.z);\r
114             return cmp;\r
115         }\r
116 \r
117         public override int GetHashCode()\r
118         {\r
119             return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();\r
120         }\r
121 \r
122         public bool Equals(Point3 p)\r
123         {\r
124             return (x == p.x) && (y == p.y) && (z == p.z);\r
125         }\r
126     }\r
127 \r
128     public partial struct Point4 : IComparable<Point4>\r
129     {\r
130         public float x, y, z, w;\r
131 \r
132         public Point4(float x, float y, float z, float w)\r
133         {\r
134             this.x  = x;\r
135             this.y  = y;\r
136             this.z  = z;\r
137             this.w  = w;\r
138         }\r
139 \r
140         public float    X   { get { return x; } set { x= value; } }\r
141         public float    Y   { get { return y; } set { y= value; } }\r
142         public float    Z   { get { return z; } set { z= value; } }\r
143         public float    W   { get { return w; } set { w= value; } }\r
144 \r
145         public override string ToString()\r
146         {\r
147             return X+","+Y+","+Z+","+W;\r
148         }\r
149 \r
150         public int CompareTo(Point4 obj)\r
151         {\r
152             int cmp;\r
153             cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
154             cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
155             cmp = z.CompareTo(obj.z); if (cmp != 0) return cmp;\r
156             cmp = w.CompareTo(obj.w);\r
157             return cmp;\r
158         }\r
159 \r
160         public override int GetHashCode()\r
161         {\r
162             return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode() ^ w.GetHashCode();\r
163         }\r
164 \r
165         public bool Equals(Point4 p)\r
166         {\r
167             return (x == p.x) && (y == p.y) && (z == p.z) && (w == p.w);\r
168         }\r
169     }\r
170 \r
171     public partial struct Color3\r
172     {\r
173         public float    r, g, b;\r
174         \r
175         public Color3(float r, float g, float b)\r
176         {\r
177             this.r  = r;\r
178             this.g  = g;\r
179             this.b  = b;\r
180         }\r
181 \r
182         public float    R   { get { return r; } set { r= value; } }\r
183         public float    G   { get { return g; } set { g= value; } }\r
184         public float    B   { get { return b; } set { b= value; } }\r
185 \r
186         public override string ToString()\r
187         {\r
188             return R+","+G+","+B;\r
189         }\r
190 \r
191         public static Color3    Parse(string[] t, int  begin)\r
192         {\r
193             return new Color3(\r
194                 float.Parse(t[begin+0]),\r
195                 float.Parse(t[begin+1]),\r
196                 float.Parse(t[begin+2]));\r
197         }\r
198     }\r
199 }\r