public void GetPointWithOffset(string center, double radius, double offset, double degrees, string expected) { var arc = new ArcInfo(center.AsPoint(), radius, Angle.DefaultStart, Angle.DefaultEnd); var actual = arc.GetPointAtRadiusOffset(Angle.FromDegrees(degrees), offset); Assert.AreEqual(expected, actual.ToString("F0")); }
public void InterpolateArc(double value, string arcString, bool isDirectionReversed, string expected) { var interpolation = new Interpolation(value); var arc = ArcInfo.Parse(arcString); Assert.AreEqual(expected, interpolation.Interpolate(arc, isDirectionReversed).ToString("F0")); }
public void GetTangent(double degrees, string expected) { var angle = Angle.FromDegrees(degrees); var arc = new ArcInfo(default(Point), 1, angle, Angle.Zero); Assert.AreEqual(expected, arc.GetTangent(angle).ToString("F0")); }
public void FitZeroPadding(string ss, double start, double end, string expectedCentre, double expectedRadius) { var availableSize = ss.AsSize(); var arc = ArcInfo.Fit(availableSize, default(Thickness), Angle.FromDegrees(start), Angle.FromDegrees(end)); Assert.AreEqual(expectedCentre, arc.Center.ToString("F0")); Assert.AreEqual(expectedRadius, arc.Radius, 1e-6); }
public void CreateArcPathFigureTests(double start, double end, string expected) { var arcInfo = new ArcInfo(new Point(100, 100), 80, Angle.FromDegrees(start), Angle.FromDegrees(end)); var result = AngularTick.CreateArcPathFigure(arcInfo, Angle.FromDegrees(start), Angle.FromDegrees(end), 10, 0); var path = result.ToString(CultureInfo.InvariantCulture).Replace(";", " "); Assert.AreEqual(expected, path); }
private void ToggleAbility(bool isActive) { ArcInfo rearArc = HostShip.ArcInfo.GetAllArcs()[1]; rearArc.ShotPermissions.CanShootCannon = isActive; rearArc.ShotPermissions.CanShootTorpedoes = isActive; rearArc.ShotPermissions.CanShootMissiles = isActive; }
public void GetRectAtOffsetSize0(double centerX, double centerY, double radius, double angle, double offset) { var arc = new ArcInfo(new Point(centerX, centerY), radius, Angle.FromDegrees(0), Angle.FromDegrees(360)); var textSize = new Size(0, 0); var pointFromRectAtOffset = arc.GetUpperLeftPointAtOffset(textSize, Angle.FromDegrees(angle), offset); var pointFromAtRadius = arc.GetPointAtRadius(Angle.FromDegrees(angle), arc.Radius + offset); Assert.AreEqual(pointFromAtRadius.X, pointFromRectAtOffset.X); Assert.AreEqual(pointFromAtRadius.Y, pointFromRectAtOffset.Y); }
public void GetRectAtOffsetAt90Degrees() { var arc = new ArcInfo(new Point(100, 100), 100, Angle.FromDegrees(0), Angle.FromDegrees(360)); var positionAtZero = arc.GetPointAtRadius(Angle.FromDegrees(90), arc.Radius); var textSize = new Size(10, 10); var newPos = arc.GetUpperLeftPointAtOffset(textSize, Angle.FromDegrees(90), 0); Console.WriteLine(newPos); Console.WriteLine(positionAtZero + new Vector(-10, -5)); }
private static void WriteArc(Stream arcstr, string dir, ArcInfo ai) { arcstr.Write(RARC, 0, 4); ai.head.Write(arcstr); foreach (ArcNode an in ai.nodes) { an.Write(arcstr); } Data.WritePadding(arcstr, (int)(ai.FileStart() - arcstr.Length)); foreach (ArcFileEntry afe in ai.files) { afe.Write(arcstr); } Data.WritePadding(arcstr, (int)(ai.StringStart() - arcstr.Length)); foreach (string str in ai.strings) { Data.WriteString(arcstr, str); } dir += "/../"; foreach (ArcFileEntry afe in ai.files) { if (afe.id == 0xFFFF) { continue; } if (arcstr.Position % 32 != 0) { Data.WritePadding(arcstr, (int)(32 - arcstr.Position % 32)); } FileStream fs = new FileStream(dir + "/" + afe.WritePath, FileMode.Open, FileAccess.Read); int read = 0; byte[] buff = new byte[1024]; while (read < afe.dataSize) { int r = fs.Read(buff, 0, (int)Math.Min(1024, afe.dataSize - read)); arcstr.Write(buff, 0, r); read += r; } fs.Close(); } arcstr.Close(); }
public static void CreateArc(string dir, string dest) { ArcHeader head = new ArcHeader(); //Build dir info ArcInfo ai = new ArcInfo(head); ai.strings.Add("."); ai.strings.Add(".."); ai = BuildArcInfo(dir, "", 0xFFFF, new Dictionary <string, ushort>(), ai); ai.AlignHead(); FileStream arcstr = new FileStream(dest, FileMode.Create); WriteArc(arcstr, dir, ai); }
// Use this for initialization void Start() { menu_rect.x = 100f; menu_rect.y = 300f; menu_rect.width = 300f; menu_rect.height = 180f; lineDrawer = new LineInfo(); arcDrawer = new ArcInfo(); lineOriginalDrawer = new LineInfo(); try { lineRef = GameObject.Find("GameObject").transform; } catch { Debug.LogError("请手动添加一个空物体GameObject."); return; } lineRef.name = "Line Reference"; lineRef.parent = GameObject.Find("main axle_4").transform; lineRef.localPosition = new Vector3(0, -0.731137f, 0.0003082752f); lineRef.localEulerAngles = new Vector3(90, 270, 0); lineRef.parent = GameObject.Find("workbench_1").transform; try { lineMaterial = (Material)Resources.Load("Materials/LineMaterial"); } catch { Debug.LogError(Application.dataPath + "/Materials/中不存在LineMaterial, 请添加相应的Material."); return; } // lineDrawer.Add(0, new Vector3(-0.8f, -0.5f, -0.51f), new Vector3(0, -0.5f, -0.51f), Color.red); // lineDrawer.Add(0, new Vector3(-0.8f, -0.5f, -0.51f), new Vector3(-0.8f, 0, -0.51f), Color.green); // lineDrawer.Add(0, new Vector3(-0.8f, -0.5f, -0.51f), new Vector3(-0.8f, -0.5f, 0), Color.blue); Main = GameObject.Find("MainScript").GetComponent <ControlPanel>(); }
private static ArcInfo BuildArcInfo(string dir, string arcdir, long parent, Dictionary <string, ushort> dirStrings, ArcInfo ai) { DirectoryInfo di = new DirectoryInfo(dir); string curdir; if (arcdir != "") { curdir = arcdir + "/" + di.Name; } else { curdir = di.Name; } ArcNode dirNode = new ArcNode(); if (!dirStrings.ContainsKey(dir)) { dirNode.filenameOffset = (uint)ai.AddString(di.Name); } else { dirNode.filenameOffset = dirStrings[dir]; } dirNode.unknown = GCN.CreateHash(di.Name); dirNode.entryOffset = (uint)(ai.files.Count); dirNode.entryCount = 0; dirNode.WritePath = curdir; if (ai.nodes.Count == 0) { dirNode.type = BitConverter.ToUInt32(new byte[4] { (byte)'T', (byte)'O', (byte)'O', (byte)'R' }, 0); } else { byte[] type = new byte[4]; for (int i = 0; i < 4; i++) { if (i < di.Name.Length) { type[3 - i] = (byte)(di.Name.ToUpper())[i]; } else { type[3 - i] = 0x20; } } dirNode.type = BitConverter.ToUInt32(type, 0); } long coffset = ai.AddNode(dirNode); string[] files = Directory.EnumerateFiles(dir, "*", SearchOption.TopDirectoryOnly).ToArray(); foreach (string file in files) { FileInfo fi = new FileInfo(file); ArcFileEntry fentry = new ArcFileEntry(); fentry.id = 0; if (dirStrings.ContainsKey(file)) { fentry.filenameOffset = dirStrings[file]; } else { fentry.filenameOffset = (ushort)ai.AddString(fi.Name); } fentry.dataOffset = (uint)ai.CountData(file, out fentry.dataSize); fentry.WritePath = curdir + "/" + fi.Name; fentry.unknown = GCN.CreateHash(fi.Name); fentry.unknown2 = 0x1100; ai.AddFile(fentry); dirNode.entryCount++; } long fileoff = coffset; string[] dirs = Directory.EnumerateDirectories(dir, "*", SearchOption.TopDirectoryOnly).ToArray(); foreach (string idir in dirs) { DirectoryInfo idi = new DirectoryInfo(idir); ArcFileEntry dentry = new ArcFileEntry(); dentry.id = 0xFFFF; dentry.filenameOffset = (ushort)ai.AddString(idi.Name); dirStrings.Add(idir, dentry.filenameOffset); dentry.dataOffset = (uint)(++fileoff); fileoff += Directory.EnumerateDirectories(idir, "*", SearchOption.AllDirectories).Count(); dentry.dataSize = 16; dentry.WritePath = curdir; dentry.unknown = GCN.CreateHash(idi.Name); dentry.unknown2 = 0x0200; ai.AddFile(dentry); dirNode.entryCount++; } ArcFileEntry cEntry = new ArcFileEntry(); cEntry.id = 0xFFFF; cEntry.filenameOffset = 0; cEntry.WritePath = curdir; cEntry.dataOffset = (uint)coffset; cEntry.dataSize = 16; cEntry.unknown = 0x2E; cEntry.unknown2 = 0x0200; ai.AddFile(cEntry); ArcFileEntry pEntry = new ArcFileEntry(); pEntry.filenameOffset = 2; pEntry.id = 0xFFFF; pEntry.WritePath = arcdir; pEntry.dataOffset = (uint)parent; pEntry.dataSize = 16; pEntry.unknown = 0xB8; pEntry.unknown2 = 0x0200; ai.AddFile(pEntry); dirNode.entryCount += 2; ai.nodes[ai.nodes.Count - 1] = dirNode; foreach (string idir in dirs) { ai = BuildArcInfo(idir, curdir, coffset, dirStrings, ai); } return(ai); }
protected virtual void OnArcExit(ArcInfo arc_info) { }
protected virtual void OnArcStay(ArcInfo arc_info) { }
public void EndPoint(string center, double radius, double end, string expected) { var arc = new ArcInfo(center.AsPoint(), radius, Angle.Zero, Angle.FromDegrees(end)); Assert.AreEqual(expected, arc.EndPoint.ToString("F0")); }
public void StartPoint(string center, double radius, double start, string expected) { var arc = new ArcInfo(center.AsPoint(), radius, Angle.FromDegrees(start), Angle.Zero); Assert.AreEqual(expected, arc.StartPoint.ToString("F0")); }
protected virtual void OnArcEnter(ArcInfo arc_info) { }
public void QuadrantPoints(string center, double radius, double start, double end, string expected) { var arc = new ArcInfo(center.AsPoint(), radius, Angle.FromDegrees(start), Angle.FromDegrees(end)); Assert.AreEqual(expected, string.Join(" ", arc.QuadrantPoints.Select(p => p.ToString("F0")))); }