OSDN Git Service

for metaseq v4.0
[tdcgexplorer/tso2mqo.git] / General.cs
index 9c18a85..8099b4a 100644 (file)
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace Tso2MqoGui\r
-{\r
-    public partial struct Point2\r
-    {\r
-        public float x, y;\r
-\r
-        public Point2(float x, float y)\r
-        {\r
-            this.x  = x;\r
-            this.y  = y;\r
-        }\r
-\r
-        public float    X   { get { return x; } set { x= value; } }\r
-        public float    Y   { get { return y; } set { y= value; } }\r
-\r
-        public override string ToString()\r
-        {\r
-            return X+","+Y;\r
-        }\r
-    }\r
-\r
-    public partial struct Point3\r
-    {\r
-        public float x, y, z;\r
-\r
-        public Point3(float x, float y, float z)\r
-        {\r
-            this.x  = x;\r
-            this.y  = y;\r
-            this.z  = z;\r
-        }\r
-\r
-        public float    X   { get { return x; } set { x= value; } }\r
-        public float    Y   { get { return y; } set { y= value; } }\r
-        public float    Z   { get { return z; } set { z= value; } }\r
-\r
-        public static Point3 operator+(Point3 a, Point3 b)\r
-        {\r
-            return new Point3(a.x+b.x, a.y+b.y, a.z+b.z);\r
-        }\r
-\r
-        public static Point3 operator-(Point3 a, Point3 b)\r
-        {\r
-            return new Point3(a.x-b.x, a.y-b.y, a.z-b.z);\r
-        }\r
-\r
-        public override string ToString()\r
-        {\r
-            return X+","+Y+","+Z;\r
-        }\r
-\r
-        public static Point3    Cross(Point3 p, Point3 q)\r
-        {\r
-            return new Point3(\r
-                p.y*q.z - p.z*q.y,\r
-                p.z*q.x - p.x*q.z,\r
-                p.x*q.y - p.y*q.x);\r
-        }\r
-\r
-        public static Point3    Normalize(Point3 p)\r
-        {\r
-            float   d   = p.x*p.x + p.y*p.y + p.z*p.z;\r
-\r
-            if(d < 0.00001f)\r
-                return p;\r
-\r
-            d           = (float)(1 / (Math.Sqrt(d)));\r
-            return new Point3(p.x*d, p.y*d, p.z*d);\r
-        }\r
-    }\r
-\r
-    public partial struct Point4\r
-    {\r
-        public float x, y, z, w;\r
-\r
-        public Point4(float x, float y, float z, float w)\r
-        {\r
-            this.x  = x;\r
-            this.y  = y;\r
-            this.z  = z;\r
-            this.w  = w;\r
-        }\r
-\r
-        public float    X   { get { return x; } set { x= value; } }\r
-        public float    Y   { get { return y; } set { y= value; } }\r
-        public float    Z   { get { return z; } set { z= value; } }\r
-        public float    W   { get { return w; } set { w= value; } }\r
-\r
-        public override string ToString()\r
-        {\r
-            return X+","+Y+","+Z+","+W;\r
-        }\r
-    }\r
-\r
-    public partial struct Color3\r
-    {\r
-        public float    r, g, b;\r
-        \r
-        public Color3(float r, float g, float b)\r
-        {\r
-            this.r  = r;\r
-            this.g  = g;\r
-            this.b  = b;\r
-        }\r
-\r
-        public float    R   { get { return r; } set { r= value; } }\r
-        public float    G   { get { return g; } set { g= value; } }\r
-        public float    B   { get { return b; } set { b= value; } }\r
-\r
-        public override string ToString()\r
-        {\r
-            return R+","+G+","+B;\r
-        }\r
-    }\r
-\r
-    public partial struct Color3\r
-    {\r
-        public static Color3    Parse(string[] t, int  begin)\r
-        {\r
-            return new Color3(\r
-                float.Parse(t[begin+0]),\r
-                float.Parse(t[begin+1]),\r
-                float.Parse(t[begin+2]));\r
-        }\r
-    }\r
-\r
-    public partial struct Point2\r
-    {\r
-        public static Point2    Parse(string[] t, int  begin)\r
-        {\r
-            return new Point2(\r
-                float.Parse(t[begin+0]),\r
-                float.Parse(t[begin+1]));\r
-        }\r
-    }\r
-\r
-    public partial struct Point3\r
-    {\r
-        public static Point3    Parse(string[] t, int  begin)\r
-        {\r
-            return new Point3(\r
-                float.Parse(t[begin+0]),\r
-                float.Parse(t[begin+1]),\r
-                float.Parse(t[begin+2]));\r
-        }\r
-    }\r
-}\r
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tso2MqoGui
+{
+    public partial struct Point2 : IComparable<Point2>
+    {
+        public float x, y;
+
+        public Point2(float x, float y)
+        {
+            this.x = x;
+            this.y = y;
+        }
+
+        public float X { get { return x; } set { x = value; } }
+        public float Y { get { return y; } set { y = value; } }
+
+        public override string ToString()
+        {
+            return X + "," + Y;
+        }
+
+        public static Point2 Parse(string[] t, int begin)
+        {
+            return new Point2(
+                float.Parse(t[begin + 0]),
+                float.Parse(t[begin + 1]));
+        }
+
+        public int CompareTo(Point2 obj)
+        {
+            int cmp;
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;
+            cmp = y.CompareTo(obj.y);
+            return cmp;
+        }
+
+        public override int GetHashCode()
+        {
+            return x.GetHashCode() ^ y.GetHashCode();
+        }
+
+        public bool Equals(Point2 p)
+        {
+            return (x == p.x) && (y == p.y);
+        }
+    }
+
+    public partial struct Point3 : IComparable<Point3>
+    {
+        public float x, y, z;
+
+        public Point3(float x, float y, float z)
+        {
+            this.x = x;
+            this.y = y;
+            this.z = z;
+        }
+
+        public float X { get { return x; } set { x = value; } }
+        public float Y { get { return y; } set { y = value; } }
+        public float Z { get { return z; } set { z = value; } }
+
+        public static Point3 operator +(Point3 a, Point3 b)
+        {
+            return new Point3(a.x + b.x, a.y + b.y, a.z + b.z);
+        }
+
+        public static Point3 operator -(Point3 a, Point3 b)
+        {
+            return new Point3(a.x - b.x, a.y - b.y, a.z - b.z);
+        }
+
+        public override string ToString()
+        {
+            return X + "," + Y + "," + Z;
+        }
+
+        public static Point3 Cross(Point3 p, Point3 q)
+        {
+            return new Point3(
+                p.y * q.z - p.z * q.y,
+                p.z * q.x - p.x * q.z,
+                p.x * q.y - p.y * q.x);
+        }
+
+        public static Point3 Normalize(Point3 p)
+        {
+            float d = p.x * p.x + p.y * p.y + p.z * p.z;
+
+            if (d < 0.00001f)
+                return p;
+
+            d = (float)(1 / (Math.Sqrt(d)));
+            return new Point3(p.x * d, p.y * d, p.z * d);
+        }
+
+        public static Point3 Parse(string[] t, int begin)
+        {
+            return new Point3(
+                float.Parse(t[begin + 0]),
+                float.Parse(t[begin + 1]),
+                float.Parse(t[begin + 2]));
+        }
+
+        public int CompareTo(Point3 obj)
+        {
+            int cmp;
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;
+            cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;
+            cmp = z.CompareTo(obj.z);
+            return cmp;
+        }
+
+        public override int GetHashCode()
+        {
+            return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();
+        }
+
+        public bool Equals(Point3 p)
+        {
+            return (x == p.x) && (y == p.y) && (z == p.z);
+        }
+    }
+
+    public partial struct Point4 : IComparable<Point4>
+    {
+        public float x, y, z, w;
+
+        public Point4(float x, float y, float z, float w)
+        {
+            this.x = x;
+            this.y = y;
+            this.z = z;
+            this.w = w;
+        }
+
+        public float X { get { return x; } set { x = value; } }
+        public float Y { get { return y; } set { y = value; } }
+        public float Z { get { return z; } set { z = value; } }
+        public float W { get { return w; } set { w = value; } }
+
+        public override string ToString()
+        {
+            return X + "," + Y + "," + Z + "," + W;
+        }
+
+        public int CompareTo(Point4 obj)
+        {
+            int cmp;
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;
+            cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;
+            cmp = z.CompareTo(obj.z); if (cmp != 0) return cmp;
+            cmp = w.CompareTo(obj.w);
+            return cmp;
+        }
+
+        public override int GetHashCode()
+        {
+            return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode() ^ w.GetHashCode();
+        }
+
+        public bool Equals(Point4 p)
+        {
+            return (x == p.x) && (y == p.y) && (z == p.z) && (w == p.w);
+        }
+    }
+
+    public partial struct Color3
+    {
+        public float r, g, b;
+
+        public Color3(float r, float g, float b)
+        {
+            this.r = r;
+            this.g = g;
+            this.b = b;
+        }
+
+        public float R { get { return r; } set { r = value; } }
+        public float G { get { return g; } set { g = value; } }
+        public float B { get { return b; } set { b = value; } }
+
+        public override string ToString()
+        {
+            return R + "," + G + "," + B;
+        }
+
+        public static Color3 Parse(string[] t, int begin)
+        {
+            return new Color3(
+                float.Parse(t[begin + 0]),
+                float.Parse(t[begin + 1]),
+                float.Parse(t[begin + 2]));
+        }
+    }
+}
\ No newline at end of file