diff --git a/LibreMetaverse.sln b/LibreMetaverse.sln
index 396f3c46..72ef4399 100644
--- a/LibreMetaverse.sln
+++ b/LibreMetaverse.sln
@@ -31,7 +31,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VivoxTest", "Programs\Vivox
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.PrimMesher", "PrimMesher\LibreMetaverse.PrimMesher.csproj", "{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "mapgenerator", "Programs\mapgenerator\mapgenerator.csproj", "{2867B4B3-0000-0000-0000-000000000000}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MapGenerator", "Programs\mapgenerator\MapGenerator.csproj", "{2867B4B3-0000-0000-0000-000000000000}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F8CE4DE6-82E5-49D1-BCDF-BB3E63A52867}"
ProjectSection(SolutionItems) = preProject
@@ -51,6 +51,14 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
{27C70F3A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27C70F3A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{27C70F3A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -83,6 +91,10 @@ Global
{58443010-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58443010-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58443010-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
{EE4EA934-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE4EA934-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE4EA934-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -103,18 +115,6 @@ Global
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|Any CPU.Build.0 = Release|Any CPU
- {79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Programs/examples/PacketDump/PacketDump.cs b/Programs/examples/PacketDump/PacketDump.cs
index 0c90807c..b2e2db04 100644
--- a/Programs/examples/PacketDump/PacketDump.cs
+++ b/Programs/examples/PacketDump/PacketDump.cs
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2006-2016, openmetaverse.co
+ * Copyright (c) 2025, Sjofn LLC.
* All rights reserved.
*
* - Redistribution and use in source and binary forms, with or without
@@ -31,32 +32,36 @@ using OpenMetaverse.Packets;
namespace PacketDump
{
- class PacketDump
+ internal class PacketDump
{
- static bool LoginSuccess = false;
- static AutoResetEvent LoginEvent = new AutoResetEvent(false);
+ private static bool LoginSuccess = false;
+ private static AutoResetEvent LoginEvent = new AutoResetEvent(false);
///
/// The main entry point for the application.
///
[STAThread]
- static void Main(string[] args)
+ private static void Main(string[] args)
{
if (args.Length != 4)
{
- Console.WriteLine("Usage: PacketDump [firstname] [lastname] [password] [seconds (0 for infinite)]");
+ Console.WriteLine("Usage: LMV.PacketDump [firstname] [lastname] [password] [seconds (0 for infinite)]");
return;
}
- var client = new GridClient();
- // Turn off some unnecessary things
- client.Settings.MULTIPLE_SIMS = false;
- // Throttle packets that we don't want all the way down
- client.Throttle.Land = 0;
- client.Throttle.Wind = 0;
- client.Throttle.Cloud = 0;
+ var client = new GridClient
+ {
+ Settings = { MULTIPLE_SIMS = false },
+ Throttle =
+ {
+ // Throttle packets that we don't want all the way down
+ Land = 0,
+ Wind = 0,
+ Cloud = 0
+ }
+ };
- // Setup a packet callback that is called for every packet (PacketType.Default)
+ // Setup a packet callback that is called for every packet (PacketType.Default)
client.Network.RegisterCallback(PacketType.Default, DefaultHandler);
// Register handlers for when we login, and when we are disconnected
@@ -75,9 +80,9 @@ namespace PacketDump
Logger.Log("Message of the day: " + client.Network.LoginMessage, Helpers.LogLevel.Info);
// Determine how long to run for
- int start = Environment.TickCount;
- int milliseconds = int.Parse(args[3]) * 1000;
- bool forever = (milliseconds <= 0);
+ var start = Environment.TickCount;
+ var milliseconds = int.Parse(args[3]) * 1000;
+ var forever = (milliseconds <= 0);
// Packet handling is done with asynchronous callbacks. Run a sleeping loop in the main
// thread until we run out of time or the program is closed
@@ -103,7 +108,7 @@ namespace PacketDump
}
}
- static void LoginHandler(object sender, LoginProgressEventArgs e)
+ private static void LoginHandler(object sender, LoginProgressEventArgs e)
{
Logger.Log($"Login: {e.Status} ({e.Message})", Helpers.LogLevel.Info);
diff --git a/Programs/examples/PacketDump/PacketDump.csproj b/Programs/examples/PacketDump/PacketDump.csproj
index 12758b99..cc97bdce 100644
--- a/Programs/examples/PacketDump/PacketDump.csproj
+++ b/Programs/examples/PacketDump/PacketDump.csproj
@@ -1,7 +1,6 @@
- PacketDump
- PacketDump
+ LibreMetaverse.PacketDump
Exe
true
..\..\..\bin\
@@ -9,6 +8,8 @@
AnyCPU
true
snupkg
+ true
+ LMV.PacketDump
diff --git a/Programs/mapgenerator/ProtocolManager.cs b/Programs/mapgenerator/ProtocolManager.cs
index 63098aed..491bdf7d 100644
--- a/Programs/mapgenerator/ProtocolManager.cs
+++ b/Programs/mapgenerator/ProtocolManager.cs
@@ -1,3 +1,30 @@
+/*
+ * Copyright (c) 2006-2016, openmetaverse.co
+ * Copyright (c) 2025, Sjofn LLC.
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
using System;
using System.Collections.Generic;
using System.IO;
@@ -87,24 +114,22 @@ namespace Mapgenerator
///
public int CompareTo(object obj)
{
- MapField temp = (MapField)obj;
+ var temp = (MapField)obj;
if (KeywordPosition > temp.KeywordPosition)
{
return 1;
}
- else
- {
- if(temp.KeywordPosition == KeywordPosition)
- {
- return 0;
- }
- else
- {
- return -1;
- }
- }
- }
+
+ if(temp.KeywordPosition == KeywordPosition)
+ {
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+ }
}
///
@@ -128,24 +153,22 @@ namespace Mapgenerator
///
public int CompareTo(object obj)
{
- MapBlock temp = (MapBlock)obj;
+ var temp = (MapBlock)obj;
if (KeywordPosition > temp.KeywordPosition)
{
return 1;
}
- else
- {
- if(temp.KeywordPosition == KeywordPosition)
- {
- return 0;
- }
- else
- {
- return -1;
- }
- }
- }
+
+ if(temp.KeywordPosition == KeywordPosition)
+ {
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+ }
}
///
@@ -229,38 +252,35 @@ namespace Mapgenerator
///
public MapPacket Command(string command)
{
- foreach (MapPacket map in HighMaps)
- {
- if (map != null)
- {
- if (command == map.Name)
- {
- return map;
- }
- }
- }
+ foreach (var map in HighMaps)
+ {
+ if (map == null) { continue; }
- foreach (MapPacket map in MediumMaps)
- {
- if (map != null)
- {
- if (command == map.Name)
- {
- return map;
- }
- }
- }
+ if (command == map.Name)
+ {
+ return map;
+ }
+ }
- foreach (MapPacket map in LowMaps)
- {
- if (map != null)
- {
- if (command == map.Name)
- {
- return map;
- }
- }
- }
+ foreach (var map in MediumMaps)
+ {
+ if (map == null) { continue; }
+
+ if (command == map.Name)
+ {
+ return map;
+ }
+ }
+
+ foreach (var map in LowMaps)
+ {
+ if (map == null) { continue; }
+
+ if (command == map.Name)
+ {
+ return map;
+ }
+ }
throw new Exception("Cannot find map for command \"" + command + "\"");
}
@@ -343,32 +363,31 @@ namespace Mapgenerator
int i;
for (i = 0; i < map.Length; ++i)
- {
- if (map[i] != null)
- {
- writer.WriteLine("{0} {1,5} - {2} - {3} - {4}", frequency, i, map[i].Name,
- map[i].Trusted ? "Trusted" : "Untrusted",
- map[i].Encoded ? "Zerocoded" : "Unencoded");
+ {
+ if (map[i] == null) { continue; }
- foreach (MapBlock block in map[i].Blocks)
- {
- if (block.Count == -1)
- {
- writer.WriteLine("\t{0,4} {1} (Variable)", block.KeywordPosition, block.Name);
- }
- else
- {
- writer.WriteLine("\t{0,4} {1} ({2})", block.KeywordPosition, block.Name, block.Count);
- }
+ writer.WriteLine("{0} {1,5} - {2} - {3} - {4}", frequency, i, map[i].Name,
+ map[i].Trusted ? "Trusted" : "Untrusted",
+ map[i].Encoded ? "Zerocoded" : "Unencoded");
- foreach (MapField field in block.Fields)
- {
- writer.WriteLine("\t\t{0,4} {1} ({2} / {3})", field.KeywordPosition, field.Name,
- field.Type, field.Count);
- }
- }
- }
- }
+ foreach (var block in map[i].Blocks)
+ {
+ if (block.Count == -1)
+ {
+ writer.WriteLine("\t{0,4} {1} (Variable)", block.KeywordPosition, block.Name);
+ }
+ else
+ {
+ writer.WriteLine("\t{0,4} {1} ({2})", block.KeywordPosition, block.Name, block.Count);
+ }
+
+ foreach (var field in block.Fields)
+ {
+ writer.WriteLine("\t\t{0,4} {1} ({2} / {3})", field.KeywordPosition, field.Name,
+ field.Type, field.Count);
+ }
+ }
+ }
}
///
@@ -379,7 +398,7 @@ namespace Mapgenerator
public static void DecodeMapFile(string mapFile, string outputFile)
{
byte magicKey = 0;
- byte[] buffer = new byte[2048];
+ var buffer = new byte[2048];
int nread;
BinaryReader map;
BinaryWriter output;
@@ -404,7 +423,7 @@ namespace Mapgenerator
while ((nread = map.Read(buffer, 0, 2048)) != 0)
{
- for (int i = 0; i < nread; ++i)
+ for (var i = 0; i < nread; ++i)
{
buffer[i] ^= magicKey;
magicKey += 43;
@@ -435,28 +454,26 @@ namespace Mapgenerator
throw new Exception("Map file error", e);
}
- StreamReader r = new StreamReader(map);
+ var r = new StreamReader(map);
r.BaseStream.Seek(0, SeekOrigin.Begin);
- string newline;
- string trimmedline;
- bool inPacket = false;
- bool inBlock = false;
+ var inPacket = false;
+ var inBlock = false;
MapPacket currentPacket = null;
MapBlock currentBlock = null;
- char[] trimArray = new char[] {' ', '\t'};
+ var trimArray = new char[] {' ', '\t'};
// While not at the end of the file
while (r.Peek() > -1)
{
#region ParseMap
- newline = r.ReadLine();
- trimmedline = System.Text.RegularExpressions.Regex.Replace(newline, @"\s+", " ");
+ var newline = r.ReadLine();
+ var trimmedline = System.Text.RegularExpressions.Regex.Replace(newline, @"\s+", " ");
trimmedline = trimmedline.Trim(trimArray);
if (!inPacket)
{
- // Outside of all packet blocks
+ // Outside all packet blocks
if (trimmedline == "{")
{
@@ -465,11 +482,11 @@ namespace Mapgenerator
}
else
{
- // Inside of a packet block
+ // Inside a packet block
if (!inBlock)
{
- // Inside a packet block, outside of the blocks
+ // Inside a packet block, outside the blocks
if (trimmedline == "{")
{
@@ -490,7 +507,7 @@ namespace Mapgenerator
#region ParsePacketHeader
// Splice the string in to tokens
- string[] tokens = trimmedline.Split(new char[] {' ', '\t'});
+ var tokens = trimmedline.Split(new char[] {' ', '\t'});
if (tokens.Length > 3)
{
@@ -588,10 +605,10 @@ namespace Mapgenerator
// A field
#region ParseField
- MapField field = new MapField();
+ var field = new MapField();
// Splice the string in to tokens
- string[] tokens = trimmedline.Split(new char[] {' ', '\t'});
+ var tokens = trimmedline.Split(new char[] {' ', '\t'});
field.Name = tokens[1];
field.KeywordPosition = KeywordPosition(field.Name);
@@ -617,7 +634,7 @@ namespace Mapgenerator
currentBlock = new MapBlock();
// Splice the string in to tokens
- string[] tokens = trimmedline.Split(new char[] {' ', '\t'});
+ var tokens = trimmedline.Split(new char[] {' ', '\t'});
currentBlock.Name = tokens[0];
currentBlock.KeywordPosition = KeywordPosition(currentBlock.Name);
@@ -656,12 +673,12 @@ namespace Mapgenerator
private int KeywordPosition(string keyword)
{
- if (KeywordPositions.ContainsKey(keyword))
+ if (KeywordPositions.TryGetValue(keyword, out var position))
{
- return KeywordPositions[keyword];
+ return position;
}
- int hash = 0;
+ var hash = 0;
for (var i = 1; i < keyword.Length; ++i)
{
hash = (hash + (int)(keyword[i])) * 2;
@@ -669,7 +686,7 @@ namespace Mapgenerator
hash *= 2;
hash &= 0x1FFF;
- int startHash = hash;
+ var startHash = hash;
while (KeywordPositions.ContainsValue(hash))
{
diff --git a/Programs/mapgenerator/mapgenerator.cs b/Programs/mapgenerator/mapgenerator.cs
index 6d16e354..4dad562d 100644
--- a/Programs/mapgenerator/mapgenerator.cs
+++ b/Programs/mapgenerator/mapgenerator.cs
@@ -1,14 +1,41 @@
+/*
+ * Copyright (c) 2006-2016, openmetaverse.co
+ * Copyright (c) 2025, Sjofn LLC.
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
using System;
using System.Collections.Generic;
using System.IO;
namespace Mapgenerator
{
- class Mapgenerator
+ internal class MapGenerator
{
- static void WriteFieldMember(TextWriter writer, MapField field)
+ private static void WriteFieldMember(TextWriter writer, MapField field)
{
- string type = string.Empty;
+ var type = string.Empty;
switch (field.Type)
{
@@ -89,7 +116,7 @@ namespace Mapgenerator
}
}
- static void WriteFieldFromBytes(TextWriter writer, MapField field)
+ private static void WriteFieldFromBytes(TextWriter writer, MapField field)
{
switch (field.Type)
{
@@ -180,7 +207,7 @@ namespace Mapgenerator
}
}
- static void WriteFieldToBytes(TextWriter writer, MapField field)
+ private static void WriteFieldToBytes(TextWriter writer, MapField field)
{
writer.Write(" ");
@@ -258,7 +285,7 @@ namespace Mapgenerator
}
}
- static int GetFieldLength(TextWriter writer, MapField field)
+ private static int GetFieldLength(TextWriter writer, MapField field)
{
switch (field.Type)
{
@@ -296,15 +323,15 @@ namespace Mapgenerator
}
}
- static void WriteBlockClass(TextWriter writer, MapBlock block, MapPacket packet)
+ private static void WriteBlockClass(TextWriter writer, MapBlock block, MapPacket packet)
{
- int variableFieldCountBytes = 0;
+ var variableFieldCountBytes = 0;
//writer.WriteLine(" /// " + block.Name + " block");
writer.WriteLine(" /// ");
writer.WriteLine(" public sealed class " + block.Name + "Block : PacketBlock" + Environment.NewLine + " {");
- foreach (MapField field in block.Fields)
+ foreach (var field in block.Fields)
{
WriteFieldMember(writer, field);
if (field.Type == FieldType.Variable) { variableFieldCountBytes += field.Count; }
@@ -317,10 +344,10 @@ namespace Mapgenerator
" {" + Environment.NewLine +
" get" + Environment.NewLine +
" {");
- int length = variableFieldCountBytes;
+ var length = variableFieldCountBytes;
// Figure out the length of this block
- foreach (MapField field in block.Fields)
+ foreach (var field in block.Fields)
{
length += GetFieldLength(writer, field);
}
@@ -333,7 +360,7 @@ namespace Mapgenerator
{
writer.WriteLine(" int length = " + length + ";");
- foreach (MapField field in block.Fields)
+ foreach (var field in block.Fields)
{
if (field.Type == FieldType.Variable)
{
@@ -368,7 +395,7 @@ namespace Mapgenerator
// Start of the try catch block
writer.WriteLine(" try" + Environment.NewLine + " {");
- foreach (MapField field in block.Fields)
+ foreach (var field in block.Fields)
{
WriteFieldFromBytes(writer, field);
}
@@ -384,7 +411,7 @@ namespace Mapgenerator
writer.WriteLine(" public override void ToBytes(byte[] bytes, ref int i)" + Environment.NewLine +
" {");
- foreach (MapField field in block.Fields)
+ foreach (var field in block.Fields)
{
WriteFieldToBytes(writer, field);
}
@@ -393,9 +420,9 @@ namespace Mapgenerator
writer.WriteLine(" }" + Environment.NewLine);
}
- static void WritePacketClass(TextWriter writer, MapPacket packet)
+ private static void WritePacketClass(TextWriter writer, MapPacket packet)
{
- bool hasVariableBlocks = false;
+ var hasVariableBlocks = false;
string sanitizedName;
//writer.WriteLine(" /// " + packet.Name + " packet");
@@ -403,7 +430,7 @@ namespace Mapgenerator
writer.WriteLine(" public sealed class " + packet.Name + "Packet : Packet" + Environment.NewLine + " {");
// Write out each block class
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
WriteBlockClass(writer, block, packet);
}
@@ -413,12 +440,12 @@ namespace Mapgenerator
" {" + Environment.NewLine + " get" + Environment.NewLine +
" {");
- int length = 0;
+ var length = 0;
if (packet.Frequency == PacketFrequency.Low) { length = 10; }
else if (packet.Frequency == PacketFrequency.Medium) { length = 8; }
else { length = 7; }
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Count == -1)
{
@@ -429,7 +456,7 @@ namespace Mapgenerator
writer.WriteLine(" int length = " + length + ";");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -455,7 +482,7 @@ namespace Mapgenerator
writer.WriteLine(" }" + Environment.NewLine + " }");
// Block members
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
// TODO: More thorough name blacklisting
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -478,7 +505,7 @@ namespace Mapgenerator
writer.WriteLine(" Header.ID = " + packet.ID + ";");
writer.WriteLine(" Header.Reliable = true;"); // Turn the reliable flag on by default
if (packet.Encoded) { writer.WriteLine(" Header.Zerocoded = true;"); }
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -502,7 +529,7 @@ namespace Mapgenerator
writer.WriteLine(" }" + Environment.NewLine);
// Constructor that takes a byte array and beginning position only (no prebuilt header)
- bool seenVariable = false;
+ var seenVariable = false;
//writer.WriteLine(" /// Constructor that takes a byte array and beginning position (no prebuilt header)");
writer.WriteLine(" public " + packet.Name + "Packet(byte[] bytes, ref int i) : this()" + Environment.NewLine +
" {" + Environment.NewLine +
@@ -518,7 +545,7 @@ namespace Mapgenerator
writer.WriteLine(" bytes = zeroBuffer;");
writer.WriteLine(" }");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -575,7 +602,7 @@ namespace Mapgenerator
writer.WriteLine(" override public void FromBytes(Header header, byte[] bytes, ref int i, ref int packetEnd)" + Environment.NewLine +
" {");
writer.WriteLine(" Header = header;");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -629,7 +656,7 @@ namespace Mapgenerator
else if (packet.Frequency == PacketFrequency.Medium) { writer.WriteLine("8;"); }
else { writer.WriteLine("7;"); }
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -641,7 +668,7 @@ namespace Mapgenerator
}
}
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -663,7 +690,7 @@ namespace Mapgenerator
writer.WriteLine(" byte[] bytes = new byte[length];");
writer.WriteLine(" int i = 0;");
writer.WriteLine(" Header.ToBytes(bytes, ref i);");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
else { sanitizedName = block.Name; }
@@ -697,16 +724,16 @@ namespace Mapgenerator
writer.WriteLine(" }" + Environment.NewLine);
}
- static void WriteToBytesMultiple(TextWriter writer, MapPacket packet)
+ private static void WriteToBytesMultiple(TextWriter writer, MapPacket packet)
{
writer.WriteLine(
" public override byte[][] ToBytesMultiple()" + Environment.NewLine +
" {");
// Check if there are any variable blocks
- bool hasVariable = false;
- bool cannotSplit = false;
- foreach (MapBlock block in packet.Blocks)
+ var hasVariable = false;
+ var cannotSplit = false;
+ foreach (var block in packet.Blocks)
{
if (block.Count == -1)
{
@@ -745,7 +772,7 @@ namespace Mapgenerator
writer.WriteLine();
// Count fixed blocks
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -768,7 +795,7 @@ namespace Mapgenerator
" byte[] fixedBytes = new byte[fixedLength];");
writer.WriteLine(
" Header.ToBytes(fixedBytes, ref i);");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -786,8 +813,8 @@ namespace Mapgenerator
}
}
- int variableCountBlock = 0;
- foreach (MapBlock block in packet.Blocks)
+ var variableCountBlock = 0;
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -802,7 +829,7 @@ namespace Mapgenerator
writer.WriteLine(" fixedLength += " + variableCountBlock + ";");
writer.WriteLine();
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -821,7 +848,7 @@ namespace Mapgenerator
// Count how many variable blocks can go in this packet
writer.WriteLine(" int variableLength = 0;");
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -835,7 +862,7 @@ namespace Mapgenerator
}
writer.WriteLine();
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -866,7 +893,7 @@ namespace Mapgenerator
writer.WriteLine(" if (packets.Count > 0) { packet[0] = (byte)(packet[0] & ~0x10); }");
writer.WriteLine();
- foreach (MapBlock block in packet.Blocks)
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -892,8 +919,8 @@ namespace Mapgenerator
writer.WriteLine(" packets.Add(packet);");
writer.WriteLine(" } while (");
- bool first = true;
- foreach (MapBlock block in packet.Blocks)
+ var first = true;
+ foreach (var block in packet.Blocks)
{
string sanitizedName;
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -920,10 +947,10 @@ namespace Mapgenerator
}
}
- static int Main(string[] args)
+ private static int Main(string[] args)
{
ProtocolManager protocol;
- List unused = new List();
+ var unused = new List();
StreamWriter writer;
try
@@ -938,11 +965,11 @@ namespace Mapgenerator
protocol = new ProtocolManager(args[0]);
// Build a list of unused packets
- using (StreamReader unusedReader = new StreamReader(args[2]))
+ using (var unusedReader = new StreamReader(args[2]))
{
while (unusedReader.Peek() >= 0)
{
- unused.Add(unusedReader.ReadLine().Trim());
+ unused.Add(unusedReader.ReadLine()?.Trim());
}
}
@@ -958,23 +985,23 @@ namespace Mapgenerator
}
- // Prune all of the unused packets out of the protocol
- int i = 0;
- foreach (MapPacket packet in protocol.LowMaps)
+ // Prune all the unused packets out of the protocol
+ var i = 0;
+ foreach (var packet in protocol.LowMaps)
{
if (packet != null && unused.Contains(packet.Name))
protocol.LowMaps[i] = null;
i++;
}
i = 0;
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
{
if (packet != null && unused.Contains(packet.Name))
protocol.MediumMaps[i] = null;
i++;
}
i = 0;
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
{
if (packet != null && unused.Contains(packet.Name))
protocol.HighMaps[i] = null;
@@ -986,13 +1013,13 @@ namespace Mapgenerator
writer.WriteLine(" public enum PacketType" + Environment.NewLine + " {" + Environment.NewLine +
" /// A generic value, not an actual packet type" + Environment.NewLine +
" Default,");
- foreach (MapPacket packet in protocol.LowMaps)
+ foreach (var packet in protocol.LowMaps)
if (packet != null)
writer.WriteLine(" " + packet.Name + " = " + (0x10000 | packet.ID) + ",");
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
if (packet != null)
writer.WriteLine(" " + packet.Name + " = " + (0x20000 | packet.ID) + ",");
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
if (packet != null)
writer.WriteLine(" " + packet.Name + " = " + (0x30000 | packet.ID) + ",");
writer.WriteLine(" }" + Environment.NewLine);
@@ -1022,21 +1049,21 @@ namespace Mapgenerator
" case PacketFrequency.Low:" + Environment.NewLine +
" switch (id)" + Environment.NewLine +
" {");
- foreach (MapPacket packet in protocol.LowMaps)
+ foreach (var packet in protocol.LowMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return PacketType." + packet.Name + ";");
writer.WriteLine(" }" + Environment.NewLine +
" break;" + Environment.NewLine +
" case PacketFrequency.Medium:" + Environment.NewLine +
" switch (id)" + Environment.NewLine + " {");
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return PacketType." + packet.Name + ";");
writer.WriteLine(" }" + Environment.NewLine +
" break;" + Environment.NewLine +
" case PacketFrequency.High:" + Environment.NewLine +
" switch (id)" + Environment.NewLine + " {");
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return PacketType." + packet.Name + ";");
writer.WriteLine(" }" + Environment.NewLine +
@@ -1046,13 +1073,13 @@ namespace Mapgenerator
// Write the Packet.BuildPacket(PacketType) function
writer.WriteLine(" public static Packet BuildPacket(PacketType type)");
writer.WriteLine(" {");
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
if (packet != null)
writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();");
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
if (packet != null)
writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();");
- foreach (MapPacket packet in protocol.LowMaps)
+ foreach (var packet in protocol.LowMaps)
if (packet != null)
writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();");
writer.WriteLine(" return null;" + Environment.NewLine);
@@ -1081,7 +1108,7 @@ namespace Mapgenerator
case PacketFrequency.Low:
switch (header.ID)
{");
- foreach (MapPacket packet in protocol.LowMaps)
+ foreach (var packet in protocol.LowMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return new " + packet.Name + "Packet(header, bytes, ref i);");
writer.WriteLine(@"
@@ -1090,7 +1117,7 @@ namespace Mapgenerator
case PacketFrequency.Medium:
switch (header.ID)
{");
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return new " + packet.Name + "Packet(header, bytes, ref i);");
writer.WriteLine(@"
@@ -1099,7 +1126,7 @@ namespace Mapgenerator
case PacketFrequency.High:
switch (header.ID)
{");
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
if (packet != null)
writer.WriteLine(" case " + packet.ID + ": return new " + packet.Name + "Packet(header, bytes, ref i);");
writer.WriteLine(@"
@@ -1112,11 +1139,11 @@ namespace Mapgenerator
}");
// Write the packet classes
- foreach (MapPacket packet in protocol.LowMaps)
+ foreach (var packet in protocol.LowMaps)
if (packet != null) { WritePacketClass(writer, packet); }
- foreach (MapPacket packet in protocol.MediumMaps)
+ foreach (var packet in protocol.MediumMaps)
if (packet != null) { WritePacketClass(writer, packet); }
- foreach (MapPacket packet in protocol.HighMaps)
+ foreach (var packet in protocol.HighMaps)
if (packet != null) { WritePacketClass(writer, packet); }
diff --git a/Programs/mapgenerator/mapgenerator.csproj b/Programs/mapgenerator/mapgenerator.csproj
index bf29ab92..438969f4 100644
--- a/Programs/mapgenerator/mapgenerator.csproj
+++ b/Programs/mapgenerator/mapgenerator.csproj
@@ -1,14 +1,15 @@
- MapGenerator
+ LibreMetaverse.MapGenerator
Exe
true
..\..\bin\
- LibreMetaverse.MapGenerator
net8.0;net9.0
AnyCPU
true
snupkg
+ true
+ LMV.MapGenerator