diff --git a/.dockerignore b/.dockerignore index ce59afa..f493380 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,24 +1,24 @@ -**/.classpath -**/.dockerignore -**/.env -**/.gitignore -**/.project -**/.settings -**/.toolstarget -**/.vs -**/.vscode -**/*.*proj.user -**/*.dbmdl -**/*.jfm -**/azds.yaml -**/bin -**/charts -**/docker-compose* -**/Dockerfile* -**/node_modules -**/npm-debug.log -**/obj -**/secrets.dev.yaml -**/values.dev.yaml -LICENSE +**/.classpath +**/.dockerignore +**/.env +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE README.md \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index ecc0dc3..c2a0989 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,33 +1,33 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: Madpeterz - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Hardware (please complete the following information):** - - OS: [e.g. iOS] - - Version [e.g. 22] - - Running in docker: [Yes/No] - - Running as linux service: [Yes/No] - -**Additional context** -Add any other context about the problem here. +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: Madpeterz + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Hardware (please complete the following information):** + - OS: [e.g. iOS] + - Version [e.g. 22] + - Running in docker: [Yes/No] + - Running as linux service: [Yes/No] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 060d091..f94a7d9 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,20 +1,20 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: enhancement -assignees: Madpeterz - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: Madpeterz + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml index f734ea7..c2a722b 100644 --- a/.github/workflows/dotnetcore.yml +++ b/.github/workflows/dotnetcore.yml @@ -1,25 +1,25 @@ -name: .NET Core - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.101 - - name: Install dependencies - run: dotnet restore - - name: Build - run: dotnet build --configuration Release --no-restore - - name: Test - run: dotnet test --no-restore --verbosity normal +name: .NET Core + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.101 + - name: Install dependencies + run: dotnet restore + - name: Build + run: dotnet build --configuration Release --no-restore + - name: Test + run: dotnet test --no-restore --verbosity normal diff --git a/BSBshared/BSBshared.csproj b/BSBshared/BSBshared.csproj deleted file mode 100644 index 43abe98..0000000 --- a/BSBshared/BSBshared.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - netcoreapp3.1 - Debug;Release;DockerBuild - x64 - - - none - Linux - false - false - false - linux-x64 - - - - - - - - - - - diff --git a/BetterSecondBot.sln b/BetterSecondBot.sln index 6a09d93..db5079f 100644 --- a/BetterSecondBot.sln +++ b/BetterSecondBot.sln @@ -1,108 +1,74 @@ + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 -VisualStudioVersion = 16.0.29123.88 +VisualStudioVersion = 16.0.30907.101 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BSB", "Core\BSB.csproj", "{077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Secondbot", "Secondbot", "{4388BA41-F3FC-4A0E-AA00-50E9ED45A027}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterSecondBot", "CLI\BetterSecondBot.csproj", "{E34873C1-3860-430A-8AE5-6289C4E68AC7}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metaverse", "Metaverse", "{E9B97D05-D5FB-4CA9-99C3-839248621C21}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BSBshared", "BSBshared\BSBshared.csproj", "{42075C8C-8055-4178-8C12-AE97DAFE8484}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse", "libremetaverse-core\LibreMetaverse\LibreMetaverse.csproj", "{27C70F3A-0000-0000-0000-000000000000}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libmeta-core", "Libmeta-core", "{7538B15D-152B-4A0F-A24D-A89EDC382564}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.StructuredData", "libremetaverse-core\LibreMetaverse.StructuredData\LibreMetaverse.StructuredData.csproj", "{89D7A3E5-0000-0000-0000-000000000000}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B861AB1B-8F09-41A9-8817-CB8A2E961E4C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Types", "libremetaverse-core\LibreMetaverseTypes\LibreMetaverse.Types.csproj", "{B37B02AD-0000-0000-0000-000000000000}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Secondbot\Shared\Shared.csproj", "{55CFC932-BECF-4FDE-A48A-3C282E080F56}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "Secondbot\Core\Core.csproj", "{D19B5D86-4680-4CC0-87BC-07B7BDF83FC0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterSecondbot", "Secondbot\BetterSecondbot\BetterSecondbot.csproj", "{513D7ED1-519E-47C0-BB28-29275BE041DC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Items", "Project Items", "{C343303B-F9BF-46B3-BBB5-5596823EC71C}" ProjectSection(SolutionItems) = preProject Dockerfile = Dockerfile NuGet.Config = NuGet.Config README.md = README.md EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core", "libremetaverse-core\Libremetaverse\LibreMetaverse-core.csproj", "{467F6546-8053-4B59-8C4E-65E621B1A0A6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core.StructuredData", "libremetaverse-core\Libremetaverse.structureddata\LibreMetaverse-core.StructuredData.csproj", "{67E9D8FC-29C6-470C-90C7-A38B60622133}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core.Types", "libremetaverse-core\Libremetaverse.types\LibreMetaverse-core.Types.csproj", "{69DE5884-FD5F-4040-9C8F-DBADE189902B}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - DockerBuild|Any CPU = DockerBuild|Any CPU - DockerBuild|x64 = DockerBuild|x64 Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Debug|x64.ActiveCfg = Debug|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Debug|x64.Build.0 = Debug|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.DockerBuild|Any CPU.Build.0 = DockerBuild|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Release|Any CPU.Build.0 = Release|Any CPU - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Release|x64.ActiveCfg = Release|x64 - {077DC0CD-6B3D-4BD9-83ED-9E098768AAA8}.Release|x64.Build.0 = Release|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Debug|x64.ActiveCfg = Debug|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Debug|x64.Build.0 = Debug|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.DockerBuild|Any CPU.Build.0 = DockerBuild|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.DockerBuild|x64.ActiveCfg = DockerBuild|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.DockerBuild|x64.Build.0 = DockerBuild|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Release|Any CPU.Build.0 = Release|Any CPU - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Release|x64.ActiveCfg = Release|x64 - {E34873C1-3860-430A-8AE5-6289C4E68AC7}.Release|x64.Build.0 = Release|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Debug|Any CPU.ActiveCfg = Debug|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Debug|x64.ActiveCfg = Debug|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Debug|x64.Build.0 = Debug|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Release|Any CPU.ActiveCfg = Release|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Release|x64.ActiveCfg = Release|x64 - {42075C8C-8055-4178-8C12-AE97DAFE8484}.Release|x64.Build.0 = Release|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Debug|Any CPU.ActiveCfg = Debug|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Debug|x64.ActiveCfg = Debug|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Debug|x64.Build.0 = Debug|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Release|Any CPU.ActiveCfg = Release|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Release|x64.ActiveCfg = Release|x64 - {467F6546-8053-4B59-8C4E-65E621B1A0A6}.Release|x64.Build.0 = Release|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Debug|Any CPU.ActiveCfg = Debug|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Debug|x64.ActiveCfg = Debug|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Debug|x64.Build.0 = Debug|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Release|Any CPU.ActiveCfg = Release|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Release|x64.ActiveCfg = Release|x64 - {67E9D8FC-29C6-470C-90C7-A38B60622133}.Release|x64.Build.0 = Release|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Debug|Any CPU.ActiveCfg = Debug|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Debug|x64.ActiveCfg = Debug|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Debug|x64.Build.0 = Debug|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.DockerBuild|Any CPU.ActiveCfg = DockerBuild|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Release|Any CPU.ActiveCfg = Release|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Release|x64.ActiveCfg = Release|x64 - {69DE5884-FD5F-4040-9C8F-DBADE189902B}.Release|x64.Build.0 = Release|x64 + {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 + {27C70F3A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU + {89D7A3E5-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89D7A3E5-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89D7A3E5-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89D7A3E5-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU + {B37B02AD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B37B02AD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B37B02AD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B37B02AD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU + {55CFC932-BECF-4FDE-A48A-3C282E080F56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55CFC932-BECF-4FDE-A48A-3C282E080F56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55CFC932-BECF-4FDE-A48A-3C282E080F56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55CFC932-BECF-4FDE-A48A-3C282E080F56}.Release|Any CPU.Build.0 = Release|Any CPU + {D19B5D86-4680-4CC0-87BC-07B7BDF83FC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D19B5D86-4680-4CC0-87BC-07B7BDF83FC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D19B5D86-4680-4CC0-87BC-07B7BDF83FC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D19B5D86-4680-4CC0-87BC-07B7BDF83FC0}.Release|Any CPU.Build.0 = Release|Any CPU + {513D7ED1-519E-47C0-BB28-29275BE041DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {513D7ED1-519E-47C0-BB28-29275BE041DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {513D7ED1-519E-47C0-BB28-29275BE041DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {513D7ED1-519E-47C0-BB28-29275BE041DC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {467F6546-8053-4B59-8C4E-65E621B1A0A6} = {7538B15D-152B-4A0F-A24D-A89EDC382564} - {67E9D8FC-29C6-470C-90C7-A38B60622133} = {7538B15D-152B-4A0F-A24D-A89EDC382564} - {69DE5884-FD5F-4040-9C8F-DBADE189902B} = {7538B15D-152B-4A0F-A24D-A89EDC382564} + {27C70F3A-0000-0000-0000-000000000000} = {E9B97D05-D5FB-4CA9-99C3-839248621C21} + {89D7A3E5-0000-0000-0000-000000000000} = {E9B97D05-D5FB-4CA9-99C3-839248621C21} + {B37B02AD-0000-0000-0000-000000000000} = {E9B97D05-D5FB-4CA9-99C3-839248621C21} + {55CFC932-BECF-4FDE-A48A-3C282E080F56} = {4388BA41-F3FC-4A0E-AA00-50E9ED45A027} + {D19B5D86-4680-4CC0-87BC-07B7BDF83FC0} = {4388BA41-F3FC-4A0E-AA00-50E9ED45A027} + {513D7ED1-519E-47C0-BB28-29275BE041DC} = {4388BA41-F3FC-4A0E-AA00-50E9ED45A027} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {39A7E333-AFC1-4BA8-9EBC-9298791FDC78} + SolutionGuid = {EC43F382-FAF2-49CC-8E23-5DDF87592DFA} EndGlobalSection EndGlobal diff --git a/BetterSecondBot.sln.DotSettings b/BetterSecondBot.sln.DotSettings deleted file mode 100644 index f70c8c4..0000000 --- a/BetterSecondBot.sln.DotSettings +++ /dev/null @@ -1,4 +0,0 @@ - - True - True - \ No newline at end of file diff --git a/CLI/BetterSecondBot.csproj b/CLI/BetterSecondBot.csproj deleted file mode 100644 index c3943f3..0000000 --- a/CLI/BetterSecondBot.csproj +++ /dev/null @@ -1,47 +0,0 @@ - - - AnyCPU;x64 - - - - - - git rev-parse --short HEAD - False - False - - - Exe - netcoreapp3.1 - BetterSecondBot.Program - Debug;Release;DockerBuild;Windows - Linux - - - none - Linux - false - false - false - linux-x64 - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - diff --git a/CLI/Properties/PublishProfiles/Linux-x64.pubxml b/CLI/Properties/PublishProfiles/Linux-x64.pubxml deleted file mode 100644 index 049c070..0000000 --- a/CLI/Properties/PublishProfiles/Linux-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - Release - x64 - netcoreapp3.1 - ..\Publish\linux-x64 - linux-x64 - true - True - False - False - - \ No newline at end of file diff --git a/CLI/Properties/PublishProfiles/Windows-64bit.pubxml b/CLI/Properties/PublishProfiles/Windows-64bit.pubxml deleted file mode 100644 index 2e54755..0000000 --- a/CLI/Properties/PublishProfiles/Windows-64bit.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - Release - x64 - netcoreapp3.1 - ..\Publish\windows_x64 - win-x64 - true - True - False - False - - \ No newline at end of file diff --git a/Core/BSB.csproj b/Core/BSB.csproj deleted file mode 100644 index 559d3b5..0000000 --- a/Core/BSB.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - netcoreapp3.1 - Debug;Release;DockerBuild - x64;AnyCPU - - - none - Linux - false - false - false - linux-x64 - - - none - Linux - false - false - false - linux-x64 - - - - - - - - - diff --git a/Dockerfile b/Dockerfile index 8e92978..9bfa2ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,74 +1,72 @@ -#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. - -FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base -WORKDIR /app - -FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build -WORKDIR /src -COPY ["NuGet.Config", ""] -COPY ["CLI/BetterSecondBot.csproj", "CLI/"] -COPY ["Core/BSB.csproj", "Core/"] -COPY ["BSBshared/BSBshared.csproj", "BSBshared/"] -COPY ["libremetaverse-core/Libremetaverse/LibreMetaverse-core.csproj", "libremetaverse-core/Libremetaverse/"] -COPY ["libremetaverse-core/Libremetaverse.structureddata/LibreMetaverse-core.StructuredData.csproj", "libremetaverse-core/Libremetaverse.structureddata/"] -COPY ["libremetaverse-core/Libremetaverse.types/LibreMetaverse-core.Types.csproj", "libremetaverse-core/Libremetaverse.types/"] -RUN dotnet restore "CLI/BetterSecondBot.csproj" -COPY . . -WORKDIR "/src/CLI" -RUN dotnet build "BetterSecondBot.csproj" -c DockerBuild -o /app/build - -FROM build AS publish -RUN dotnet publish "BetterSecondBot.csproj" -c DockerBuild -o /app/publish - -FROM base AS final -WORKDIR /app -COPY --from=publish /app/publish . - -# --- Update your settings --- - -ENV Basic_BotUserName='' -ENV Basic_BotPassword='' -ENV Basic_HomeRegions='http://maps.secondlife.com/secondlife/Viserion/50/140/23' -ENV Basic_LoginLocation='home' - -ENV Security_MasterUsername='Madpeter Zond' -ENV Security_SubMasters='X X,Y Y,Z Z' -ENV Security_SignedCommandkey='' -ENV Security_WebUIKey='' - -ENV Setting_AllowRLV='false' -ENV Setting_AllowFunds='false' -ENV Setting_LogCommands='false' -ENV Setting_RelayImToAvatarUUID='' -ENV Setting_DefaultSit_UUID='' -ENV Setting_loginURI='secondlife' - -ENV DiscordRelay_URL='' -ENV DiscordRelay_GroupUUID='' -ENV DiscordFull_Enable='false' -ENV DiscordFull_Token='' -ENV DiscordFull_ServerID='' -ENV DiscordFull_Keep_GroupChat='false' - -ENV Http_Enable='false' -ENV Http_Host='docker' - -ENV Name2Key_Enable='false' -ENV Name2Key_Url='http://localhost:1234' -ENV Name2Key_Key='magic' - -ENV DiscordTTS_Enable='false' -ENV DiscordTTS_server_id='' -ENV DiscordTTS_channel_name='' -ENV DiscordTTS_avatar_uuid='' -ENV DiscordTTS_Nickname='' - -ENV Log2File_Enable='false' -ENV Log2File_Level=1 - -EXPOSE 80 -ENV ASPNETCORE_URLS http://+:80 - -# --- End of settings --- - -ENTRYPOINT ["/app/BetterSecondBot"] +#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build +WORKDIR /src +COPY ["Secondbot/BetterSecondbot/BetterSecondbot.csproj", "Secondbot/BetterSecondbot/"] +COPY ["Secondbot/Core/Core.csproj", "Secondbot/Core/"] +COPY ["Secondbot/Shared/Shared.csproj", "Secondbot/Shared/"] +COPY ["libremetaverse-core/LibreMetaverse/LibreMetaverse.csproj", "libremetaverse-core/LibreMetaverse/"] +COPY ["libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj", "libremetaverse-core/LibreMetaverse.StructuredData/"] +COPY ["libremetaverse-core/LibreMetaverseTypes/LibreMetaverse.Types.csproj", "libremetaverse-core/LibreMetaverseTypes/"] +RUN dotnet restore "Secondbot/BetterSecondbot/BetterSecondbot.csproj" +COPY . . +WORKDIR "/src/Secondbot/BetterSecondbot" +RUN dotnet build "BetterSecondbot.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "BetterSecondbot.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +# --- Update your settings --- + +ENV Basic_BotUserName='' +ENV Basic_BotPassword='' +ENV Basic_HomeRegions='http://maps.secondlife.com/secondlife/Viserion/50/140/23' +ENV Basic_LoginLocation='home' + +ENV Security_MasterUsername='Madpeter Zond' +ENV Security_SubMasters='X X,Y Y,Z Z' +ENV Security_SignedCommandkey='' +ENV Security_WebUIKey='' + +ENV Setting_AllowRLV='false' +ENV Setting_AllowFunds='false' +ENV Setting_LogCommands='false' +ENV Setting_RelayImToAvatarUUID='' +ENV Setting_DefaultSit_UUID='' +ENV Setting_loginURI='secondlife' + +ENV DiscordRelay_URL='' +ENV DiscordRelay_GroupUUID='' +ENV DiscordFull_Enable='false' +ENV DiscordFull_Token='' +ENV DiscordFull_ServerID='' +ENV DiscordFull_Keep_GroupChat='false' + +ENV Http_Enable='false' +ENV Http_Host='docker' + +ENV Name2Key_Enable='false' +ENV Name2Key_Url='http://localhost:1234' +ENV Name2Key_Key='magic' + +ENV DiscordTTS_Enable='false' +ENV DiscordTTS_server_id='' +ENV DiscordTTS_channel_name='' +ENV DiscordTTS_avatar_uuid='' +ENV DiscordTTS_Nickname='' + +ENV Log2File_Enable='false' +ENV Log2File_Level=1 + +EXPOSE 80 +ENV ASPNETCORE_URLS http://+:80 + +# --- End of settings --- + +ENTRYPOINT ["/app/BetterSecondBot"] \ No newline at end of file diff --git a/CLI/BetterRelayService/BetterRelay.cs b/Secondbot/BetterSecondbot/BetterRelayService/BetterRelay.cs similarity index 100% rename from CLI/BetterRelayService/BetterRelay.cs rename to Secondbot/BetterSecondbot/BetterRelayService/BetterRelay.cs diff --git a/CLI/Cli.cs b/Secondbot/BetterSecondbot/BetterSecondbot.cs similarity index 100% rename from CLI/Cli.cs rename to Secondbot/BetterSecondbot/BetterSecondbot.cs diff --git a/Secondbot/BetterSecondbot/BetterSecondbot.csproj b/Secondbot/BetterSecondbot/BetterSecondbot.csproj new file mode 100644 index 0000000..6cf4d69 --- /dev/null +++ b/Secondbot/BetterSecondbot/BetterSecondbot.csproj @@ -0,0 +1,23 @@ + + + + Exe + netcoreapp3.1 + Linux + ..\.. + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/CLI/CliDocker.cs b/Secondbot/BetterSecondbot/CliDocker.cs similarity index 100% rename from CLI/CliDocker.cs rename to Secondbot/BetterSecondbot/CliDocker.cs diff --git a/CLI/CliExitOnLogout.cs b/Secondbot/BetterSecondbot/CliExitOnLogout.cs similarity index 100% rename from CLI/CliExitOnLogout.cs rename to Secondbot/BetterSecondbot/CliExitOnLogout.cs diff --git a/CLI/CliHardware.cs b/Secondbot/BetterSecondbot/CliHardware.cs similarity index 100% rename from CLI/CliHardware.cs rename to Secondbot/BetterSecondbot/CliHardware.cs diff --git a/CLI/DiscordSupervisor/ChannelControl.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/ChannelControl.cs similarity index 100% rename from CLI/DiscordSupervisor/ChannelControl.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/ChannelControl.cs diff --git a/CLI/DiscordSupervisor/Discord-super.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/Discord-super.cs similarity index 100% rename from CLI/DiscordSupervisor/Discord-super.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/Discord-super.cs diff --git a/CLI/DiscordSupervisor/DiscordBot.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/DiscordBot.cs similarity index 100% rename from CLI/DiscordSupervisor/DiscordBot.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/DiscordBot.cs diff --git a/CLI/DiscordSupervisor/DiscordEvents.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/DiscordEvents.cs similarity index 100% rename from CLI/DiscordSupervisor/DiscordEvents.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/DiscordEvents.cs diff --git a/CLI/DiscordSupervisor/DiscordTTS/DiscordTTS.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/DiscordTTS/DiscordTTS.cs similarity index 100% rename from CLI/DiscordSupervisor/DiscordTTS/DiscordTTS.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/DiscordTTS/DiscordTTS.cs diff --git a/CLI/DiscordSupervisor/Functions.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/Functions.cs similarity index 100% rename from CLI/DiscordSupervisor/Functions.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/Functions.cs diff --git a/CLI/DiscordSupervisor/Inbound.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/Inbound.cs similarity index 96% rename from CLI/DiscordSupervisor/Inbound.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/Inbound.cs index 0dc2435..6af6d3f 100644 --- a/CLI/DiscordSupervisor/Inbound.cs +++ b/Secondbot/BetterSecondbot/DiscordSupervisor/Inbound.cs @@ -307,7 +307,11 @@ namespace BetterSecondBot.DiscordSupervisor { ITextChannel Chan = (ITextChannel)message.Channel; IGuildUser user = await Chan.Guild.GetUserAsync(message.Author.Id).ConfigureAwait(true); - On_MessageEvent(new DiscordMessageEvent(Chan.GuildId, Chan.Id, user.Nickname, message.Content)); + string username = user.Nickname; + if(username == null) { + username = message.Author.Username; + } + On_MessageEvent(new DiscordMessageEvent(Chan.GuildId, Chan.Id, username, message.Content)); if (message.Content.StartsWith("!clear") == true) { await CleanDiscordChannel(Chan, 0, true).ConfigureAwait(false); diff --git a/CLI/DiscordSupervisor/Status.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/Status.cs similarity index 100% rename from CLI/DiscordSupervisor/Status.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/Status.cs diff --git a/CLI/DiscordSupervisor/Values.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/Values.cs similarity index 100% rename from CLI/DiscordSupervisor/Values.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/Values.cs diff --git a/CLI/DiscordSupervisor/relay.cs b/Secondbot/BetterSecondbot/DiscordSupervisor/relay.cs similarity index 100% rename from CLI/DiscordSupervisor/relay.cs rename to Secondbot/BetterSecondbot/DiscordSupervisor/relay.cs diff --git a/Secondbot/BetterSecondbot/Dockerfile b/Secondbot/BetterSecondbot/Dockerfile new file mode 100644 index 0000000..9bfa2ff --- /dev/null +++ b/Secondbot/BetterSecondbot/Dockerfile @@ -0,0 +1,72 @@ +#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build +WORKDIR /src +COPY ["Secondbot/BetterSecondbot/BetterSecondbot.csproj", "Secondbot/BetterSecondbot/"] +COPY ["Secondbot/Core/Core.csproj", "Secondbot/Core/"] +COPY ["Secondbot/Shared/Shared.csproj", "Secondbot/Shared/"] +COPY ["libremetaverse-core/LibreMetaverse/LibreMetaverse.csproj", "libremetaverse-core/LibreMetaverse/"] +COPY ["libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj", "libremetaverse-core/LibreMetaverse.StructuredData/"] +COPY ["libremetaverse-core/LibreMetaverseTypes/LibreMetaverse.Types.csproj", "libremetaverse-core/LibreMetaverseTypes/"] +RUN dotnet restore "Secondbot/BetterSecondbot/BetterSecondbot.csproj" +COPY . . +WORKDIR "/src/Secondbot/BetterSecondbot" +RUN dotnet build "BetterSecondbot.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "BetterSecondbot.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +# --- Update your settings --- + +ENV Basic_BotUserName='' +ENV Basic_BotPassword='' +ENV Basic_HomeRegions='http://maps.secondlife.com/secondlife/Viserion/50/140/23' +ENV Basic_LoginLocation='home' + +ENV Security_MasterUsername='Madpeter Zond' +ENV Security_SubMasters='X X,Y Y,Z Z' +ENV Security_SignedCommandkey='' +ENV Security_WebUIKey='' + +ENV Setting_AllowRLV='false' +ENV Setting_AllowFunds='false' +ENV Setting_LogCommands='false' +ENV Setting_RelayImToAvatarUUID='' +ENV Setting_DefaultSit_UUID='' +ENV Setting_loginURI='secondlife' + +ENV DiscordRelay_URL='' +ENV DiscordRelay_GroupUUID='' +ENV DiscordFull_Enable='false' +ENV DiscordFull_Token='' +ENV DiscordFull_ServerID='' +ENV DiscordFull_Keep_GroupChat='false' + +ENV Http_Enable='false' +ENV Http_Host='docker' + +ENV Name2Key_Enable='false' +ENV Name2Key_Url='http://localhost:1234' +ENV Name2Key_Key='magic' + +ENV DiscordTTS_Enable='false' +ENV DiscordTTS_server_id='' +ENV DiscordTTS_channel_name='' +ENV DiscordTTS_avatar_uuid='' +ENV DiscordTTS_Nickname='' + +ENV Log2File_Enable='false' +ENV Log2File_Level=1 + +EXPOSE 80 +ENV ASPNETCORE_URLS http://+:80 + +# --- End of settings --- + +ENTRYPOINT ["/app/BetterSecondBot"] \ No newline at end of file diff --git a/CLI/HttpService/Chat.cs b/Secondbot/BetterSecondbot/HttpService/Chat.cs similarity index 100% rename from CLI/HttpService/Chat.cs rename to Secondbot/BetterSecondbot/HttpService/Chat.cs diff --git a/CLI/HttpService/Core.cs b/Secondbot/BetterSecondbot/HttpService/Core.cs similarity index 100% rename from CLI/HttpService/Core.cs rename to Secondbot/BetterSecondbot/HttpService/Core.cs diff --git a/CLI/HttpService/Group.cs b/Secondbot/BetterSecondbot/HttpService/Group.cs similarity index 100% rename from CLI/HttpService/Group.cs rename to Secondbot/BetterSecondbot/HttpService/Group.cs diff --git a/CLI/HttpService/HttpAsService.cs b/Secondbot/BetterSecondbot/HttpService/HttpAsService.cs similarity index 100% rename from CLI/HttpService/HttpAsService.cs rename to Secondbot/BetterSecondbot/HttpService/HttpAsService.cs diff --git a/CLI/HttpService/Im.cs b/Secondbot/BetterSecondbot/HttpService/Im.cs similarity index 100% rename from CLI/HttpService/Im.cs rename to Secondbot/BetterSecondbot/HttpService/Im.cs diff --git a/CLI/HttpService/Inventory.cs b/Secondbot/BetterSecondbot/HttpService/Inventory.cs similarity index 100% rename from CLI/HttpService/Inventory.cs rename to Secondbot/BetterSecondbot/HttpService/Inventory.cs diff --git a/CLI/HttpService/ParcelEstate.cs b/Secondbot/BetterSecondbot/HttpService/ParcelEstate.cs similarity index 100% rename from CLI/HttpService/ParcelEstate.cs rename to Secondbot/BetterSecondbot/HttpService/ParcelEstate.cs diff --git a/CLI/Properties/launchSettings.json b/Secondbot/BetterSecondbot/Properties/launchSettings.json similarity index 76% rename from CLI/Properties/launchSettings.json rename to Secondbot/BetterSecondbot/Properties/launchSettings.json index 1aa4c7c..ec7d149 100644 --- a/CLI/Properties/launchSettings.json +++ b/Secondbot/BetterSecondbot/Properties/launchSettings.json @@ -1,10 +1,10 @@ -{ - "profiles": { - "BetterSecondBot": { - "commandName": "Project" - }, - "Docker": { - "commandName": "Docker" - } - } +{ + "profiles": { + "BetterSecondbot": { + "commandName": "Project" + }, + "Docker": { + "commandName": "Docker" + } + } } \ No newline at end of file diff --git a/CLI/WikiMake/wiki_footer.txt b/Secondbot/BetterSecondbot/WikiMake/wiki_footer.txt similarity index 97% rename from CLI/WikiMake/wiki_footer.txt rename to Secondbot/BetterSecondbot/WikiMake/wiki_footer.txt index dcd1b1f..5939521 100644 --- a/CLI/WikiMake/wiki_footer.txt +++ b/Secondbot/BetterSecondbot/WikiMake/wiki_footer.txt @@ -1,11 +1,11 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/CLI/WikiMake/wiki_header.txt b/Secondbot/BetterSecondbot/WikiMake/wiki_header.txt similarity index 100% rename from CLI/WikiMake/wiki_header.txt rename to Secondbot/BetterSecondbot/WikiMake/wiki_header.txt diff --git a/CLI/WikiMake/wikimake.cs b/Secondbot/BetterSecondbot/WikiMake/wikimake.cs similarity index 98% rename from CLI/WikiMake/wikimake.cs rename to Secondbot/BetterSecondbot/WikiMake/wikimake.cs index 97c05d2..3d381b6 100644 --- a/CLI/WikiMake/wikimake.cs +++ b/Secondbot/BetterSecondbot/WikiMake/wikimake.cs @@ -289,12 +289,12 @@ namespace BetterSecondBot.WikiMake InterfaceWiki("JSON", defaultJson); // CMD - BSB.Commands.CoreCommandsInterface cmd = new BSB.Commands.CoreCommandsInterface(null,true); + BSB.Commands.CoreCommandsInterface cmd = new BSB.Commands.CoreCommandsInterface(null); api_reports.Add("Core", new KeyValuePair(cmd.ApiCommandsCount, "Good")); InterfaceWiki("Core", cmd, true); // RLVapi - BSB.RLV.RLVcontrol RLVapi = new BSB.RLV.RLVcontrol(null,true); + BSB.RLV.RLVcontrol RLVapi = new BSB.RLV.RLVcontrol(null); api_reports.Add("RLVapi", new KeyValuePair(RLVapi.ApiCommandsCount, "Limited")); InterfaceWiki("RLVapi", RLVapi, true); diff --git a/Core/Commands/Animation/PlayGesture.cs b/Secondbot/Core/Commands/Animation/PlayGesture.cs similarity index 100% rename from Core/Commands/Animation/PlayGesture.cs rename to Secondbot/Core/Commands/Animation/PlayGesture.cs diff --git a/Core/Commands/Animation/addToAnimations.cs b/Secondbot/Core/Commands/Animation/addToAnimations.cs similarity index 100% rename from Core/Commands/Animation/addToAnimations.cs rename to Secondbot/Core/Commands/Animation/addToAnimations.cs diff --git a/Core/Commands/Animation/resetAnimations.cs b/Secondbot/Core/Commands/Animation/resetAnimations.cs similarity index 100% rename from Core/Commands/Animation/resetAnimations.cs rename to Secondbot/Core/Commands/Animation/resetAnimations.cs diff --git a/Core/Commands/Avatars/NearMe.cs b/Secondbot/Core/Commands/Avatars/NearMe.cs similarity index 100% rename from Core/Commands/Avatars/NearMe.cs rename to Secondbot/Core/Commands/Avatars/NearMe.cs diff --git a/Core/Commands/Avatars/PayAvatar.cs b/Secondbot/Core/Commands/Avatars/PayAvatar.cs similarity index 100% rename from Core/Commands/Avatars/PayAvatar.cs rename to Secondbot/Core/Commands/Avatars/PayAvatar.cs diff --git a/Core/Commands/Chat/LocalChatHistory.cs b/Secondbot/Core/Commands/Chat/LocalChatHistory.cs similarity index 100% rename from Core/Commands/Chat/LocalChatHistory.cs rename to Secondbot/Core/Commands/Chat/LocalChatHistory.cs diff --git a/Core/Commands/Chat/im.cs b/Secondbot/Core/Commands/Chat/im.cs similarity index 100% rename from Core/Commands/Chat/im.cs rename to Secondbot/Core/Commands/Chat/im.cs diff --git a/Core/Commands/Chat/say.cs b/Secondbot/Core/Commands/Chat/say.cs similarity index 100% rename from Core/Commands/Chat/say.cs rename to Secondbot/Core/Commands/Chat/say.cs diff --git a/Core/Commands/Dialogs/DialogRelay.cs b/Secondbot/Core/Commands/Dialogs/DialogRelay.cs similarity index 100% rename from Core/Commands/Dialogs/DialogRelay.cs rename to Secondbot/Core/Commands/Dialogs/DialogRelay.cs diff --git a/Core/Commands/Dialogs/DialogResponce.cs b/Secondbot/Core/Commands/Dialogs/DialogResponce.cs similarity index 100% rename from Core/Commands/Dialogs/DialogResponce.cs rename to Secondbot/Core/Commands/Dialogs/DialogResponce.cs diff --git a/Core/Commands/Dialogs/DialogTrack.cs b/Secondbot/Core/Commands/Dialogs/DialogTrack.cs similarity index 100% rename from Core/Commands/Dialogs/DialogTrack.cs rename to Secondbot/Core/Commands/Dialogs/DialogTrack.cs diff --git a/Core/Commands/DiscordAPI/AddRole.cs b/Secondbot/Core/Commands/DiscordAPI/AddRole.cs similarity index 100% rename from Core/Commands/DiscordAPI/AddRole.cs rename to Secondbot/Core/Commands/DiscordAPI/AddRole.cs diff --git a/Core/Commands/DiscordAPI/Ban_Member.cs b/Secondbot/Core/Commands/DiscordAPI/Ban_Member.cs similarity index 100% rename from Core/Commands/DiscordAPI/Ban_Member.cs rename to Secondbot/Core/Commands/DiscordAPI/Ban_Member.cs diff --git a/Core/Commands/DiscordAPI/BulkClear_Messages.cs b/Secondbot/Core/Commands/DiscordAPI/BulkClear_Messages.cs similarity index 100% rename from Core/Commands/DiscordAPI/BulkClear_Messages.cs rename to Secondbot/Core/Commands/DiscordAPI/BulkClear_Messages.cs diff --git a/Core/Commands/DiscordAPI/Dm_Member.cs b/Secondbot/Core/Commands/DiscordAPI/Dm_Member.cs similarity index 100% rename from Core/Commands/DiscordAPI/Dm_Member.cs rename to Secondbot/Core/Commands/DiscordAPI/Dm_Member.cs diff --git a/Core/Commands/DiscordAPI/MembersList.cs b/Secondbot/Core/Commands/DiscordAPI/MembersList.cs similarity index 100% rename from Core/Commands/DiscordAPI/MembersList.cs rename to Secondbot/Core/Commands/DiscordAPI/MembersList.cs diff --git a/Core/Commands/DiscordAPI/MessageChannel.cs b/Secondbot/Core/Commands/DiscordAPI/MessageChannel.cs similarity index 100% rename from Core/Commands/DiscordAPI/MessageChannel.cs rename to Secondbot/Core/Commands/DiscordAPI/MessageChannel.cs diff --git a/Core/Commands/DiscordAPI/MuteMember.cs b/Secondbot/Core/Commands/DiscordAPI/MuteMember.cs similarity index 100% rename from Core/Commands/DiscordAPI/MuteMember.cs rename to Secondbot/Core/Commands/DiscordAPI/MuteMember.cs diff --git a/Core/Commands/DiscordAPI/RoleCreate.cs b/Secondbot/Core/Commands/DiscordAPI/RoleCreate.cs similarity index 100% rename from Core/Commands/DiscordAPI/RoleCreate.cs rename to Secondbot/Core/Commands/DiscordAPI/RoleCreate.cs diff --git a/Core/Commands/DiscordAPI/RoleList.cs b/Secondbot/Core/Commands/DiscordAPI/RoleList.cs similarity index 100% rename from Core/Commands/DiscordAPI/RoleList.cs rename to Secondbot/Core/Commands/DiscordAPI/RoleList.cs diff --git a/Core/Commands/DiscordAPI/RoleRemove.cs b/Secondbot/Core/Commands/DiscordAPI/RoleRemove.cs similarity index 100% rename from Core/Commands/DiscordAPI/RoleRemove.cs rename to Secondbot/Core/Commands/DiscordAPI/RoleRemove.cs diff --git a/Core/Commands/DiscordAPI/Role_GetSettings.cs b/Secondbot/Core/Commands/DiscordAPI/Role_GetSettings.cs similarity index 100% rename from Core/Commands/DiscordAPI/Role_GetSettings.cs rename to Secondbot/Core/Commands/DiscordAPI/Role_GetSettings.cs diff --git a/Core/Commands/DiscordAPI/Role_UpdatePerms.cs b/Secondbot/Core/Commands/DiscordAPI/Role_UpdatePerms.cs similarity index 100% rename from Core/Commands/DiscordAPI/Role_UpdatePerms.cs rename to Secondbot/Core/Commands/DiscordAPI/Role_UpdatePerms.cs diff --git a/Core/Commands/DiscordAPI/TextChannels_List.cs b/Secondbot/Core/Commands/DiscordAPI/TextChannels_List.cs similarity index 100% rename from Core/Commands/DiscordAPI/TextChannels_List.cs rename to Secondbot/Core/Commands/DiscordAPI/TextChannels_List.cs diff --git a/Core/Commands/Estate/EstateParcelReclaim.cs b/Secondbot/Core/Commands/Estate/EstateParcelReclaim.cs similarity index 100% rename from Core/Commands/Estate/EstateParcelReclaim.cs rename to Secondbot/Core/Commands/Estate/EstateParcelReclaim.cs diff --git a/Core/Commands/Estate/GetSimGlobalPos.cs b/Secondbot/Core/Commands/Estate/GetSimGlobalPos.cs similarity index 100% rename from Core/Commands/Estate/GetSimGlobalPos.cs rename to Secondbot/Core/Commands/Estate/GetSimGlobalPos.cs diff --git a/Core/Commands/Estate/GetSimTexture.cs b/Secondbot/Core/Commands/Estate/GetSimTexture.cs similarity index 100% rename from Core/Commands/Estate/GetSimTexture.cs rename to Secondbot/Core/Commands/Estate/GetSimTexture.cs diff --git a/Core/Commands/Estate/SimMessage.cs b/Secondbot/Core/Commands/Estate/SimMessage.cs similarity index 100% rename from Core/Commands/Estate/SimMessage.cs rename to Secondbot/Core/Commands/Estate/SimMessage.cs diff --git a/Core/Commands/Estate/SimRestart.cs b/Secondbot/Core/Commands/Estate/SimRestart.cs similarity index 100% rename from Core/Commands/Estate/SimRestart.cs rename to Secondbot/Core/Commands/Estate/SimRestart.cs diff --git a/Core/Commands/Friends/FriendFullPerms.cs b/Secondbot/Core/Commands/Friends/FriendFullPerms.cs similarity index 100% rename from Core/Commands/Friends/FriendFullPerms.cs rename to Secondbot/Core/Commands/Friends/FriendFullPerms.cs diff --git a/Core/Commands/Friends/FriendRequest.cs b/Secondbot/Core/Commands/Friends/FriendRequest.cs similarity index 100% rename from Core/Commands/Friends/FriendRequest.cs rename to Secondbot/Core/Commands/Friends/FriendRequest.cs diff --git a/Core/Commands/Friends/Friendslist.cs b/Secondbot/Core/Commands/Friends/Friendslist.cs similarity index 100% rename from Core/Commands/Friends/Friendslist.cs rename to Secondbot/Core/Commands/Friends/Friendslist.cs diff --git a/Core/Commands/Group/GroupActiveGroup.cs b/Secondbot/Core/Commands/Group/GroupActiveGroup.cs similarity index 100% rename from Core/Commands/Group/GroupActiveGroup.cs rename to Secondbot/Core/Commands/Group/GroupActiveGroup.cs diff --git a/Core/Commands/Group/GroupActiveTitle.cs b/Secondbot/Core/Commands/Group/GroupActiveTitle.cs similarity index 100% rename from Core/Commands/Group/GroupActiveTitle.cs rename to Secondbot/Core/Commands/Group/GroupActiveTitle.cs diff --git a/Core/Commands/Group/GroupAddRole.cs b/Secondbot/Core/Commands/Group/GroupAddRole.cs similarity index 100% rename from Core/Commands/Group/GroupAddRole.cs rename to Secondbot/Core/Commands/Group/GroupAddRole.cs diff --git a/Core/Commands/Group/GroupEject.cs b/Secondbot/Core/Commands/Group/GroupEject.cs similarity index 100% rename from Core/Commands/Group/GroupEject.cs rename to Secondbot/Core/Commands/Group/GroupEject.cs diff --git a/Core/Commands/Group/GroupInvite.cs b/Secondbot/Core/Commands/Group/GroupInvite.cs similarity index 100% rename from Core/Commands/Group/GroupInvite.cs rename to Secondbot/Core/Commands/Group/GroupInvite.cs diff --git a/Core/Commands/Group/GroupInviteNoLimiter.cs b/Secondbot/Core/Commands/Group/GroupInviteNoLimiter.cs similarity index 100% rename from Core/Commands/Group/GroupInviteNoLimiter.cs rename to Secondbot/Core/Commands/Group/GroupInviteNoLimiter.cs diff --git a/Core/Commands/Group/GroupNotice.cs b/Secondbot/Core/Commands/Group/GroupNotice.cs similarity index 100% rename from Core/Commands/Group/GroupNotice.cs rename to Secondbot/Core/Commands/Group/GroupNotice.cs diff --git a/Core/Commands/Group/IsGroupMember.cs b/Secondbot/Core/Commands/Group/IsGroupMember.cs similarity index 100% rename from Core/Commands/Group/IsGroupMember.cs rename to Secondbot/Core/Commands/Group/IsGroupMember.cs diff --git a/Core/Commands/Group/getGroupList.cs b/Secondbot/Core/Commands/Group/getGroupList.cs similarity index 100% rename from Core/Commands/Group/getGroupList.cs rename to Secondbot/Core/Commands/Group/getGroupList.cs diff --git a/Core/Commands/Group/getGroupMembers.cs b/Secondbot/Core/Commands/Group/getGroupMembers.cs similarity index 100% rename from Core/Commands/Group/getGroupMembers.cs rename to Secondbot/Core/Commands/Group/getGroupMembers.cs diff --git a/Core/Commands/Group/getGroupRoles.cs b/Secondbot/Core/Commands/Group/getGroupRoles.cs similarity index 100% rename from Core/Commands/Group/getGroupRoles.cs rename to Secondbot/Core/Commands/Group/getGroupRoles.cs diff --git a/Core/Commands/Group/group.cs b/Secondbot/Core/Commands/Group/group.cs similarity index 100% rename from Core/Commands/Group/group.cs rename to Secondbot/Core/Commands/Group/group.cs diff --git a/Core/Commands/Group/groupchat.cs b/Secondbot/Core/Commands/Group/groupchat.cs similarity index 100% rename from Core/Commands/Group/groupchat.cs rename to Secondbot/Core/Commands/Group/groupchat.cs diff --git a/Core/Commands/Group/groupchatAnyUnread.cs b/Secondbot/Core/Commands/Group/groupchatAnyUnread.cs similarity index 100% rename from Core/Commands/Group/groupchatAnyUnread.cs rename to Secondbot/Core/Commands/Group/groupchatAnyUnread.cs diff --git a/Core/Commands/Group/groupchatClearAll.cs b/Secondbot/Core/Commands/Group/groupchatClearAll.cs similarity index 100% rename from Core/Commands/Group/groupchatClearAll.cs rename to Secondbot/Core/Commands/Group/groupchatClearAll.cs diff --git a/Core/Commands/Group/groupchatGroupHasUnread.cs b/Secondbot/Core/Commands/Group/groupchatGroupHasUnread.cs similarity index 100% rename from Core/Commands/Group/groupchatGroupHasUnread.cs rename to Secondbot/Core/Commands/Group/groupchatGroupHasUnread.cs diff --git a/Core/Commands/Group/groupchatHistory.cs b/Secondbot/Core/Commands/Group/groupchatHistory.cs similarity index 100% rename from Core/Commands/Group/groupchatHistory.cs rename to Secondbot/Core/Commands/Group/groupchatHistory.cs diff --git a/Core/Commands/Group/groupchatListAllUnreadGroups.cs b/Secondbot/Core/Commands/Group/groupchatListAllUnreadGroups.cs similarity index 100% rename from Core/Commands/Group/groupchatListAllUnreadGroups.cs rename to Secondbot/Core/Commands/Group/groupchatListAllUnreadGroups.cs diff --git a/Core/Commands/Helpers/delay.cs b/Secondbot/Core/Commands/Helpers/delay.cs similarity index 100% rename from Core/Commands/Helpers/delay.cs rename to Secondbot/Core/Commands/Helpers/delay.cs diff --git a/Core/Commands/Home/GoHome.cs b/Secondbot/Core/Commands/Home/GoHome.cs similarity index 100% rename from Core/Commands/Home/GoHome.cs rename to Secondbot/Core/Commands/Home/GoHome.cs diff --git a/Core/Commands/Home/resetAtHome.cs b/Secondbot/Core/Commands/Home/resetAtHome.cs similarity index 100% rename from Core/Commands/Home/resetAtHome.cs rename to Secondbot/Core/Commands/Home/resetAtHome.cs diff --git a/Core/Commands/Info/Balance.cs b/Secondbot/Core/Commands/Info/Balance.cs similarity index 100% rename from Core/Commands/Info/Balance.cs rename to Secondbot/Core/Commands/Info/Balance.cs diff --git a/Core/Commands/Info/GetPosition.cs b/Secondbot/Core/Commands/Info/GetPosition.cs similarity index 100% rename from Core/Commands/Info/GetPosition.cs rename to Secondbot/Core/Commands/Info/GetPosition.cs diff --git a/Core/Commands/Info/ParcelName.cs b/Secondbot/Core/Commands/Info/ParcelName.cs similarity index 100% rename from Core/Commands/Info/ParcelName.cs rename to Secondbot/Core/Commands/Info/ParcelName.cs diff --git a/Core/Commands/Info/SimName.cs b/Secondbot/Core/Commands/Info/SimName.cs similarity index 100% rename from Core/Commands/Info/SimName.cs rename to Secondbot/Core/Commands/Info/SimName.cs diff --git a/Core/Commands/Info/UnixTimeNow.cs b/Secondbot/Core/Commands/Info/UnixTimeNow.cs similarity index 100% rename from Core/Commands/Info/UnixTimeNow.cs rename to Secondbot/Core/Commands/Info/UnixTimeNow.cs diff --git a/Core/Commands/Inventory/DeleteInventory.cs b/Secondbot/Core/Commands/Inventory/DeleteInventory.cs similarity index 100% rename from Core/Commands/Inventory/DeleteInventory.cs rename to Secondbot/Core/Commands/Inventory/DeleteInventory.cs diff --git a/Core/Commands/Inventory/InventoryPurgeNotecards.cs b/Secondbot/Core/Commands/Inventory/InventoryPurgeNotecards.cs similarity index 100% rename from Core/Commands/Inventory/InventoryPurgeNotecards.cs rename to Secondbot/Core/Commands/Inventory/InventoryPurgeNotecards.cs diff --git a/Core/Commands/Inventory/RenameInventory.cs b/Secondbot/Core/Commands/Inventory/RenameInventory.cs similarity index 100% rename from Core/Commands/Inventory/RenameInventory.cs rename to Secondbot/Core/Commands/Inventory/RenameInventory.cs diff --git a/Core/Commands/Inventory/attach.cs b/Secondbot/Core/Commands/Inventory/attach.cs similarity index 100% rename from Core/Commands/Inventory/attach.cs rename to Secondbot/Core/Commands/Inventory/attach.cs diff --git a/Core/Commands/Inventory/getRealUUID.cs b/Secondbot/Core/Commands/Inventory/getRealUUID.cs similarity index 100% rename from Core/Commands/Inventory/getRealUUID.cs rename to Secondbot/Core/Commands/Inventory/getRealUUID.cs diff --git a/Core/Commands/Inventory/inventoryContents.cs b/Secondbot/Core/Commands/Inventory/inventoryContents.cs similarity index 100% rename from Core/Commands/Inventory/inventoryContents.cs rename to Secondbot/Core/Commands/Inventory/inventoryContents.cs diff --git a/Core/Commands/Inventory/inventoryFolders.cs b/Secondbot/Core/Commands/Inventory/inventoryFolders.cs similarity index 100% rename from Core/Commands/Inventory/inventoryFolders.cs rename to Secondbot/Core/Commands/Inventory/inventoryFolders.cs diff --git a/Core/Commands/Inventory/outfit.cs b/Secondbot/Core/Commands/Inventory/outfit.cs similarity index 100% rename from Core/Commands/Inventory/outfit.cs rename to Secondbot/Core/Commands/Inventory/outfit.cs diff --git a/Core/Commands/Inventory/sendFolder.cs b/Secondbot/Core/Commands/Inventory/sendFolder.cs similarity index 100% rename from Core/Commands/Inventory/sendFolder.cs rename to Secondbot/Core/Commands/Inventory/sendFolder.cs diff --git a/Core/Commands/Inventory/sendItem.cs b/Secondbot/Core/Commands/Inventory/sendItem.cs similarity index 100% rename from Core/Commands/Inventory/sendItem.cs rename to Secondbot/Core/Commands/Inventory/sendItem.cs diff --git a/Core/Commands/Movement/AutoPilot.cs b/Secondbot/Core/Commands/Movement/AutoPilot.cs similarity index 100% rename from Core/Commands/Movement/AutoPilot.cs rename to Secondbot/Core/Commands/Movement/AutoPilot.cs diff --git a/Core/Commands/Movement/AutoPilotStop.cs b/Secondbot/Core/Commands/Movement/AutoPilotStop.cs similarity index 100% rename from Core/Commands/Movement/AutoPilotStop.cs rename to Secondbot/Core/Commands/Movement/AutoPilotStop.cs diff --git a/Core/Commands/Movement/Fly.cs b/Secondbot/Core/Commands/Movement/Fly.cs similarity index 100% rename from Core/Commands/Movement/Fly.cs rename to Secondbot/Core/Commands/Movement/Fly.cs diff --git a/Core/Commands/Movement/RequestTeleport.cs b/Secondbot/Core/Commands/Movement/RequestTeleport.cs similarity index 100% rename from Core/Commands/Movement/RequestTeleport.cs rename to Secondbot/Core/Commands/Movement/RequestTeleport.cs diff --git a/Core/Commands/Movement/RotateToFace.cs b/Secondbot/Core/Commands/Movement/RotateToFace.cs similarity index 100% rename from Core/Commands/Movement/RotateToFace.cs rename to Secondbot/Core/Commands/Movement/RotateToFace.cs diff --git a/Core/Commands/Movement/RotateToFaceVector.cs b/Secondbot/Core/Commands/Movement/RotateToFaceVector.cs similarity index 100% rename from Core/Commands/Movement/RotateToFaceVector.cs rename to Secondbot/Core/Commands/Movement/RotateToFaceVector.cs diff --git a/Core/Commands/Movement/SendTeleportLure.cs b/Secondbot/Core/Commands/Movement/SendTeleportLure.cs similarity index 100% rename from Core/Commands/Movement/SendTeleportLure.cs rename to Secondbot/Core/Commands/Movement/SendTeleportLure.cs diff --git a/Core/Commands/Movement/rotateTo.cs b/Secondbot/Core/Commands/Movement/rotateTo.cs similarity index 100% rename from Core/Commands/Movement/rotateTo.cs rename to Secondbot/Core/Commands/Movement/rotateTo.cs diff --git a/Core/Commands/Movement/teleport.cs b/Secondbot/Core/Commands/Movement/teleport.cs similarity index 100% rename from Core/Commands/Movement/teleport.cs rename to Secondbot/Core/Commands/Movement/teleport.cs diff --git a/Core/Commands/Notecard/notecardAdd.cs b/Secondbot/Core/Commands/Notecard/notecardAdd.cs similarity index 100% rename from Core/Commands/Notecard/notecardAdd.cs rename to Secondbot/Core/Commands/Notecard/notecardAdd.cs diff --git a/Core/Commands/Notecard/notecardClear.cs b/Secondbot/Core/Commands/Notecard/notecardClear.cs similarity index 100% rename from Core/Commands/Notecard/notecardClear.cs rename to Secondbot/Core/Commands/Notecard/notecardClear.cs diff --git a/Core/Commands/Notecard/notecardSend.cs b/Secondbot/Core/Commands/Notecard/notecardSend.cs similarity index 100% rename from Core/Commands/Notecard/notecardSend.cs rename to Secondbot/Core/Commands/Notecard/notecardSend.cs diff --git a/Core/Commands/Parcel/AbandonLand.cs b/Secondbot/Core/Commands/Parcel/AbandonLand.cs similarity index 100% rename from Core/Commands/Parcel/AbandonLand.cs rename to Secondbot/Core/Commands/Parcel/AbandonLand.cs diff --git a/Core/Commands/Parcel/GetParcelBanlist.cs b/Secondbot/Core/Commands/Parcel/GetParcelBanlist.cs similarity index 100% rename from Core/Commands/Parcel/GetParcelBanlist.cs rename to Secondbot/Core/Commands/Parcel/GetParcelBanlist.cs diff --git a/Core/Commands/Parcel/GetParcelDesc.cs b/Secondbot/Core/Commands/Parcel/GetParcelDesc.cs similarity index 100% rename from Core/Commands/Parcel/GetParcelDesc.cs rename to Secondbot/Core/Commands/Parcel/GetParcelDesc.cs diff --git a/Core/Commands/Parcel/GetParcelFlags.cs b/Secondbot/Core/Commands/Parcel/GetParcelFlags.cs similarity index 100% rename from Core/Commands/Parcel/GetParcelFlags.cs rename to Secondbot/Core/Commands/Parcel/GetParcelFlags.cs diff --git a/Core/Commands/Parcel/ParcelBan.cs b/Secondbot/Core/Commands/Parcel/ParcelBan.cs similarity index 100% rename from Core/Commands/Parcel/ParcelBan.cs rename to Secondbot/Core/Commands/Parcel/ParcelBan.cs diff --git a/Core/Commands/Parcel/ParcelBuy.cs b/Secondbot/Core/Commands/Parcel/ParcelBuy.cs similarity index 100% rename from Core/Commands/Parcel/ParcelBuy.cs rename to Secondbot/Core/Commands/Parcel/ParcelBuy.cs diff --git a/Core/Commands/Parcel/ParcelCleanAndSell.cs b/Secondbot/Core/Commands/Parcel/ParcelCleanAndSell.cs similarity index 100% rename from Core/Commands/Parcel/ParcelCleanAndSell.cs rename to Secondbot/Core/Commands/Parcel/ParcelCleanAndSell.cs diff --git a/Core/Commands/Parcel/ParcelCommandHelper.cs b/Secondbot/Core/Commands/Parcel/ParcelCommandHelper.cs similarity index 100% rename from Core/Commands/Parcel/ParcelCommandHelper.cs rename to Secondbot/Core/Commands/Parcel/ParcelCommandHelper.cs diff --git a/Core/Commands/Parcel/ParcelDeedToGroup.cs b/Secondbot/Core/Commands/Parcel/ParcelDeedToGroup.cs similarity index 100% rename from Core/Commands/Parcel/ParcelDeedToGroup.cs rename to Secondbot/Core/Commands/Parcel/ParcelDeedToGroup.cs diff --git a/Core/Commands/Parcel/ParcelFreeze.cs b/Secondbot/Core/Commands/Parcel/ParcelFreeze.cs similarity index 100% rename from Core/Commands/Parcel/ParcelFreeze.cs rename to Secondbot/Core/Commands/Parcel/ParcelFreeze.cs diff --git a/Core/Commands/Parcel/ParcelPrimCountAvatar.cs b/Secondbot/Core/Commands/Parcel/ParcelPrimCountAvatar.cs similarity index 100% rename from Core/Commands/Parcel/ParcelPrimCountAvatar.cs rename to Secondbot/Core/Commands/Parcel/ParcelPrimCountAvatar.cs diff --git a/Core/Commands/Parcel/ParcelPrimCountTotal.cs b/Secondbot/Core/Commands/Parcel/ParcelPrimCountTotal.cs similarity index 100% rename from Core/Commands/Parcel/ParcelPrimCountTotal.cs rename to Secondbot/Core/Commands/Parcel/ParcelPrimCountTotal.cs diff --git a/Core/Commands/Parcel/ParcelReturnObjects.cs b/Secondbot/Core/Commands/Parcel/ParcelReturnObjects.cs similarity index 100% rename from Core/Commands/Parcel/ParcelReturnObjects.cs rename to Secondbot/Core/Commands/Parcel/ParcelReturnObjects.cs diff --git a/Core/Commands/Parcel/ParcelReturnTargeted.cs b/Secondbot/Core/Commands/Parcel/ParcelReturnTargeted.cs similarity index 100% rename from Core/Commands/Parcel/ParcelReturnTargeted.cs rename to Secondbot/Core/Commands/Parcel/ParcelReturnTargeted.cs diff --git a/Core/Commands/Parcel/ParcelSetMedia.cs b/Secondbot/Core/Commands/Parcel/ParcelSetMedia.cs similarity index 100% rename from Core/Commands/Parcel/ParcelSetMedia.cs rename to Secondbot/Core/Commands/Parcel/ParcelSetMedia.cs diff --git a/Core/Commands/Parcel/SetParcelDesc.cs b/Secondbot/Core/Commands/Parcel/SetParcelDesc.cs similarity index 100% rename from Core/Commands/Parcel/SetParcelDesc.cs rename to Secondbot/Core/Commands/Parcel/SetParcelDesc.cs diff --git a/Core/Commands/Parcel/SetParcelFlag.cs b/Secondbot/Core/Commands/Parcel/SetParcelFlag.cs similarity index 100% rename from Core/Commands/Parcel/SetParcelFlag.cs rename to Secondbot/Core/Commands/Parcel/SetParcelFlag.cs diff --git a/Core/Commands/Parcel/SetParcelMusic.cs b/Secondbot/Core/Commands/Parcel/SetParcelMusic.cs similarity index 100% rename from Core/Commands/Parcel/SetParcelMusic.cs rename to Secondbot/Core/Commands/Parcel/SetParcelMusic.cs diff --git a/Core/Commands/Parcel/SetParcelName.cs b/Secondbot/Core/Commands/Parcel/SetParcelName.cs similarity index 100% rename from Core/Commands/Parcel/SetParcelName.cs rename to Secondbot/Core/Commands/Parcel/SetParcelName.cs diff --git a/Core/Commands/Parcel/SetParcelSale.cs b/Secondbot/Core/Commands/Parcel/SetParcelSale.cs similarity index 100% rename from Core/Commands/Parcel/SetParcelSale.cs rename to Secondbot/Core/Commands/Parcel/SetParcelSale.cs diff --git a/Core/Commands/Parcel/eject.cs b/Secondbot/Core/Commands/Parcel/eject.cs similarity index 100% rename from Core/Commands/Parcel/eject.cs rename to Secondbot/Core/Commands/Parcel/eject.cs diff --git a/Core/Commands/Prims/RezObject.cs b/Secondbot/Core/Commands/Prims/RezObject.cs similarity index 100% rename from Core/Commands/Prims/RezObject.cs rename to Secondbot/Core/Commands/Prims/RezObject.cs diff --git a/Core/Commands/Prims/TransferInventoryToObject.cs b/Secondbot/Core/Commands/Prims/TransferInventoryToObject.cs similarity index 100% rename from Core/Commands/Prims/TransferInventoryToObject.cs rename to Secondbot/Core/Commands/Prims/TransferInventoryToObject.cs diff --git a/Core/Commands/Prims/UnRezObject.cs b/Secondbot/Core/Commands/Prims/UnRezObject.cs similarity index 100% rename from Core/Commands/Prims/UnRezObject.cs rename to Secondbot/Core/Commands/Prims/UnRezObject.cs diff --git a/Core/Commands/Script/scriptHttp.cs b/Secondbot/Core/Commands/Script/scriptHttp.cs similarity index 100% rename from Core/Commands/Script/scriptHttp.cs rename to Secondbot/Core/Commands/Script/scriptHttp.cs diff --git a/Core/Commands/Script/scriptSend.cs b/Secondbot/Core/Commands/Script/scriptSend.cs similarity index 100% rename from Core/Commands/Script/scriptSend.cs rename to Secondbot/Core/Commands/Script/scriptSend.cs diff --git a/Core/Commands/Self/CickObject.cs b/Secondbot/Core/Commands/Self/CickObject.cs similarity index 100% rename from Core/Commands/Self/CickObject.cs rename to Secondbot/Core/Commands/Self/CickObject.cs diff --git a/Core/Commands/Self/GetLastCommands.cs b/Secondbot/Core/Commands/Self/GetLastCommands.cs similarity index 100% rename from Core/Commands/Self/GetLastCommands.cs rename to Secondbot/Core/Commands/Self/GetLastCommands.cs diff --git a/Core/Commands/Self/Help.cs b/Secondbot/Core/Commands/Self/Help.cs similarity index 100% rename from Core/Commands/Self/Help.cs rename to Secondbot/Core/Commands/Self/Help.cs diff --git a/Core/Commands/Self/PayObject.cs b/Secondbot/Core/Commands/Self/PayObject.cs similarity index 100% rename from Core/Commands/Self/PayObject.cs rename to Secondbot/Core/Commands/Self/PayObject.cs diff --git a/Core/Commands/Self/SetPermFlag.cs b/Secondbot/Core/Commands/Self/SetPermFlag.cs similarity index 100% rename from Core/Commands/Self/SetPermFlag.cs rename to Secondbot/Core/Commands/Self/SetPermFlag.cs diff --git a/Core/Commands/Self/botVersion.cs b/Secondbot/Core/Commands/Self/botVersion.cs similarity index 100% rename from Core/Commands/Self/botVersion.cs rename to Secondbot/Core/Commands/Self/botVersion.cs diff --git a/Core/Commands/Self/logout.cs b/Secondbot/Core/Commands/Self/logout.cs similarity index 100% rename from Core/Commands/Self/logout.cs rename to Secondbot/Core/Commands/Self/logout.cs diff --git a/Core/Commands/Self/pointAt.cs b/Secondbot/Core/Commands/Self/pointAt.cs similarity index 100% rename from Core/Commands/Self/pointAt.cs rename to Secondbot/Core/Commands/Self/pointAt.cs diff --git a/Core/Commands/Self/sit.cs b/Secondbot/Core/Commands/Self/sit.cs similarity index 100% rename from Core/Commands/Self/sit.cs rename to Secondbot/Core/Commands/Self/sit.cs diff --git a/Core/Commands/Self/stand.cs b/Secondbot/Core/Commands/Self/stand.cs similarity index 100% rename from Core/Commands/Self/stand.cs rename to Secondbot/Core/Commands/Self/stand.cs diff --git a/Core/Commands/StreamAdmin/FetchNextNotecard.cs b/Secondbot/Core/Commands/StreamAdmin/FetchNextNotecard.cs similarity index 100% rename from Core/Commands/StreamAdmin/FetchNextNotecard.cs rename to Secondbot/Core/Commands/StreamAdmin/FetchNextNotecard.cs diff --git a/Core/Commands/commandlib.cs b/Secondbot/Core/Commands/commandlib.cs similarity index 99% rename from Core/Commands/commandlib.cs rename to Secondbot/Core/Commands/commandlib.cs index b76cea0..ab0f835 100644 --- a/Core/Commands/commandlib.cs +++ b/Secondbot/Core/Commands/commandlib.cs @@ -125,11 +125,11 @@ namespace BSB.Commands } } - public CoreCommandsInterface(CommandsBot linktobot, bool wikimode) + public CoreCommandsInterface(CommandsBot linktobot) { bot = linktobot; API_type = typeof(CoreCommand); - LoadCommandsList(wikimode); + LoadCommandsList(); } protected HttpClient HTTPclient = new HttpClient(); diff --git a/Secondbot/Core/Core.csproj b/Secondbot/Core/Core.csproj new file mode 100644 index 0000000..4a60d50 --- /dev/null +++ b/Secondbot/Core/Core.csproj @@ -0,0 +1,18 @@ + + + + Library + netcoreapp3.1 + + + + + + + + + + + + + diff --git a/Core/RLV/Blacklist/getblacklist.cs b/Secondbot/Core/RLV/Blacklist/getblacklist.cs similarity index 100% rename from Core/RLV/Blacklist/getblacklist.cs rename to Secondbot/Core/RLV/Blacklist/getblacklist.cs diff --git a/Core/RLV/Blacklist/versionnumbl.cs b/Secondbot/Core/RLV/Blacklist/versionnumbl.cs similarity index 100% rename from Core/RLV/Blacklist/versionnumbl.cs rename to Secondbot/Core/RLV/Blacklist/versionnumbl.cs diff --git a/Core/RLV/Camera/camavdist.cs b/Secondbot/Core/RLV/Camera/camavdist.cs similarity index 100% rename from Core/RLV/Camera/camavdist.cs rename to Secondbot/Core/RLV/Camera/camavdist.cs diff --git a/Core/RLV/Camera/camdistmax.cs b/Secondbot/Core/RLV/Camera/camdistmax.cs similarity index 100% rename from Core/RLV/Camera/camdistmax.cs rename to Secondbot/Core/RLV/Camera/camdistmax.cs diff --git a/Core/RLV/Camera/camdistmin.cs b/Secondbot/Core/RLV/Camera/camdistmin.cs similarity index 100% rename from Core/RLV/Camera/camdistmin.cs rename to Secondbot/Core/RLV/Camera/camdistmin.cs diff --git a/Core/RLV/Camera/camdrawalphamax.cs b/Secondbot/Core/RLV/Camera/camdrawalphamax.cs similarity index 100% rename from Core/RLV/Camera/camdrawalphamax.cs rename to Secondbot/Core/RLV/Camera/camdrawalphamax.cs diff --git a/Core/RLV/Camera/camdrawalphamin.cs b/Secondbot/Core/RLV/Camera/camdrawalphamin.cs similarity index 100% rename from Core/RLV/Camera/camdrawalphamin.cs rename to Secondbot/Core/RLV/Camera/camdrawalphamin.cs diff --git a/Core/RLV/Camera/camdrawcolor.cs b/Secondbot/Core/RLV/Camera/camdrawcolor.cs similarity index 100% rename from Core/RLV/Camera/camdrawcolor.cs rename to Secondbot/Core/RLV/Camera/camdrawcolor.cs diff --git a/Core/RLV/Camera/camdrawmax.cs b/Secondbot/Core/RLV/Camera/camdrawmax.cs similarity index 100% rename from Core/RLV/Camera/camdrawmax.cs rename to Secondbot/Core/RLV/Camera/camdrawmax.cs diff --git a/Core/RLV/Camera/camdrawmin.cs b/Secondbot/Core/RLV/Camera/camdrawmin.cs similarity index 100% rename from Core/RLV/Camera/camdrawmin.cs rename to Secondbot/Core/RLV/Camera/camdrawmin.cs diff --git a/Core/RLV/Camera/camtextures.cs b/Secondbot/Core/RLV/Camera/camtextures.cs similarity index 100% rename from Core/RLV/Camera/camtextures.cs rename to Secondbot/Core/RLV/Camera/camtextures.cs diff --git a/Core/RLV/Camera/camunlock.cs b/Secondbot/Core/RLV/Camera/camunlock.cs similarity index 100% rename from Core/RLV/Camera/camunlock.cs rename to Secondbot/Core/RLV/Camera/camunlock.cs diff --git a/Core/RLV/Camera/camzoommax.cs b/Secondbot/Core/RLV/Camera/camzoommax.cs similarity index 100% rename from Core/RLV/Camera/camzoommax.cs rename to Secondbot/Core/RLV/Camera/camzoommax.cs diff --git a/Core/RLV/Camera/camzoommin.cs b/Secondbot/Core/RLV/Camera/camzoommin.cs similarity index 100% rename from Core/RLV/Camera/camzoommin.cs rename to Secondbot/Core/RLV/Camera/camzoommin.cs diff --git a/Core/RLV/Camera/getcam_avdistmax.cs b/Secondbot/Core/RLV/Camera/getcam_avdistmax.cs similarity index 100% rename from Core/RLV/Camera/getcam_avdistmax.cs rename to Secondbot/Core/RLV/Camera/getcam_avdistmax.cs diff --git a/Core/RLV/Camera/getcam_avdistmin.cs b/Secondbot/Core/RLV/Camera/getcam_avdistmin.cs similarity index 100% rename from Core/RLV/Camera/getcam_avdistmin.cs rename to Secondbot/Core/RLV/Camera/getcam_avdistmin.cs diff --git a/Core/RLV/Camera/getcam_fov.cs b/Secondbot/Core/RLV/Camera/getcam_fov.cs similarity index 100% rename from Core/RLV/Camera/getcam_fov.cs rename to Secondbot/Core/RLV/Camera/getcam_fov.cs diff --git a/Core/RLV/Camera/getcam_fovmax.cs b/Secondbot/Core/RLV/Camera/getcam_fovmax.cs similarity index 100% rename from Core/RLV/Camera/getcam_fovmax.cs rename to Secondbot/Core/RLV/Camera/getcam_fovmax.cs diff --git a/Core/RLV/Camera/getcam_fovmin.cs b/Secondbot/Core/RLV/Camera/getcam_fovmin.cs similarity index 100% rename from Core/RLV/Camera/getcam_fovmin.cs rename to Secondbot/Core/RLV/Camera/getcam_fovmin.cs diff --git a/Core/RLV/Camera/getcam_zoommin.cs b/Secondbot/Core/RLV/Camera/getcam_zoommin.cs similarity index 100% rename from Core/RLV/Camera/getcam_zoommin.cs rename to Secondbot/Core/RLV/Camera/getcam_zoommin.cs diff --git a/Core/RLV/Camera/setcam_avdistmax.cs b/Secondbot/Core/RLV/Camera/setcam_avdistmax.cs similarity index 100% rename from Core/RLV/Camera/setcam_avdistmax.cs rename to Secondbot/Core/RLV/Camera/setcam_avdistmax.cs diff --git a/Core/RLV/Camera/setcam_avdistmin.cs b/Secondbot/Core/RLV/Camera/setcam_avdistmin.cs similarity index 100% rename from Core/RLV/Camera/setcam_avdistmin.cs rename to Secondbot/Core/RLV/Camera/setcam_avdistmin.cs diff --git a/Core/RLV/Camera/setcam_fov.cs b/Secondbot/Core/RLV/Camera/setcam_fov.cs similarity index 100% rename from Core/RLV/Camera/setcam_fov.cs rename to Secondbot/Core/RLV/Camera/setcam_fov.cs diff --git a/Core/RLV/Camera/setcam_fovmax.cs b/Secondbot/Core/RLV/Camera/setcam_fovmax.cs similarity index 100% rename from Core/RLV/Camera/setcam_fovmax.cs rename to Secondbot/Core/RLV/Camera/setcam_fovmax.cs diff --git a/Core/RLV/Camera/setcam_fovmin.cs b/Secondbot/Core/RLV/Camera/setcam_fovmin.cs similarity index 100% rename from Core/RLV/Camera/setcam_fovmin.cs rename to Secondbot/Core/RLV/Camera/setcam_fovmin.cs diff --git a/Core/RLV/Camera/setcam_textures.cs b/Secondbot/Core/RLV/Camera/setcam_textures.cs similarity index 100% rename from Core/RLV/Camera/setcam_textures.cs rename to Secondbot/Core/RLV/Camera/setcam_textures.cs diff --git a/Core/RLV/Camera/setcam_unlock.cs b/Secondbot/Core/RLV/Camera/setcam_unlock.cs similarity index 100% rename from Core/RLV/Camera/setcam_unlock.cs rename to Secondbot/Core/RLV/Camera/setcam_unlock.cs diff --git a/Core/RLV/Chat/chatnormal.cs b/Secondbot/Core/RLV/Chat/chatnormal.cs similarity index 100% rename from Core/RLV/Chat/chatnormal.cs rename to Secondbot/Core/RLV/Chat/chatnormal.cs diff --git a/Core/RLV/Chat/chatshout.cs b/Secondbot/Core/RLV/Chat/chatshout.cs similarity index 100% rename from Core/RLV/Chat/chatshout.cs rename to Secondbot/Core/RLV/Chat/chatshout.cs diff --git a/Core/RLV/Chat/chatwhisper.cs b/Secondbot/Core/RLV/Chat/chatwhisper.cs similarity index 100% rename from Core/RLV/Chat/chatwhisper.cs rename to Secondbot/Core/RLV/Chat/chatwhisper.cs diff --git a/Core/RLV/Chat/recvchat.cs b/Secondbot/Core/RLV/Chat/recvchat.cs similarity index 100% rename from Core/RLV/Chat/recvchat.cs rename to Secondbot/Core/RLV/Chat/recvchat.cs diff --git a/Core/RLV/Chat/recvchat_sec.cs b/Secondbot/Core/RLV/Chat/recvchat_sec.cs similarity index 100% rename from Core/RLV/Chat/recvchat_sec.cs rename to Secondbot/Core/RLV/Chat/recvchat_sec.cs diff --git a/Core/RLV/Chat/recvchatfrom.cs b/Secondbot/Core/RLV/Chat/recvchatfrom.cs similarity index 100% rename from Core/RLV/Chat/recvchatfrom.cs rename to Secondbot/Core/RLV/Chat/recvchatfrom.cs diff --git a/Core/RLV/Chat/redirchat.cs b/Secondbot/Core/RLV/Chat/redirchat.cs similarity index 100% rename from Core/RLV/Chat/redirchat.cs rename to Secondbot/Core/RLV/Chat/redirchat.cs diff --git a/Core/RLV/Chat/sendchat.cs b/Secondbot/Core/RLV/Chat/sendchat.cs similarity index 100% rename from Core/RLV/Chat/sendchat.cs rename to Secondbot/Core/RLV/Chat/sendchat.cs diff --git a/Core/RLV/Chat/sendgesture.cs b/Secondbot/Core/RLV/Chat/sendgesture.cs similarity index 100% rename from Core/RLV/Chat/sendgesture.cs rename to Secondbot/Core/RLV/Chat/sendgesture.cs diff --git a/Core/RLV/Emotes/emote.cs b/Secondbot/Core/RLV/Emotes/emote.cs similarity index 100% rename from Core/RLV/Emotes/emote.cs rename to Secondbot/Core/RLV/Emotes/emote.cs diff --git a/Core/RLV/Emotes/recvemote.cs b/Secondbot/Core/RLV/Emotes/recvemote.cs similarity index 100% rename from Core/RLV/Emotes/recvemote.cs rename to Secondbot/Core/RLV/Emotes/recvemote.cs diff --git a/Core/RLV/Emotes/recvemote_sec.cs b/Secondbot/Core/RLV/Emotes/recvemote_sec.cs similarity index 100% rename from Core/RLV/Emotes/recvemote_sec.cs rename to Secondbot/Core/RLV/Emotes/recvemote_sec.cs diff --git a/Core/RLV/Emotes/rediremote.cs b/Secondbot/Core/RLV/Emotes/rediremote.cs similarity index 100% rename from Core/RLV/Emotes/rediremote.cs rename to Secondbot/Core/RLV/Emotes/rediremote.cs diff --git a/Core/RLV/InstantMessages/sendim.cs b/Secondbot/Core/RLV/InstantMessages/sendim.cs similarity index 100% rename from Core/RLV/InstantMessages/sendim.cs rename to Secondbot/Core/RLV/InstantMessages/sendim.cs diff --git a/Core/RLV/InstantMessages/sendim_sec.cs b/Secondbot/Core/RLV/InstantMessages/sendim_sec.cs similarity index 100% rename from Core/RLV/InstantMessages/sendim_sec.cs rename to Secondbot/Core/RLV/InstantMessages/sendim_sec.cs diff --git a/Core/RLV/Miscellaneous/clear.cs b/Secondbot/Core/RLV/Miscellaneous/clear.cs similarity index 100% rename from Core/RLV/Miscellaneous/clear.cs rename to Secondbot/Core/RLV/Miscellaneous/clear.cs diff --git a/Core/RLV/Miscellaneous/getstatus.cs b/Secondbot/Core/RLV/Miscellaneous/getstatus.cs similarity index 100% rename from Core/RLV/Miscellaneous/getstatus.cs rename to Secondbot/Core/RLV/Miscellaneous/getstatus.cs diff --git a/Core/RLV/Miscellaneous/getstatusall.cs b/Secondbot/Core/RLV/Miscellaneous/getstatusall.cs similarity index 100% rename from Core/RLV/Miscellaneous/getstatusall.cs rename to Secondbot/Core/RLV/Miscellaneous/getstatusall.cs diff --git a/Core/RLV/Miscellaneous/notify.cs b/Secondbot/Core/RLV/Miscellaneous/notify.cs similarity index 100% rename from Core/RLV/Miscellaneous/notify.cs rename to Secondbot/Core/RLV/Miscellaneous/notify.cs diff --git a/Core/RLV/Miscellaneous/permissive.cs b/Secondbot/Core/RLV/Miscellaneous/permissive.cs similarity index 100% rename from Core/RLV/Miscellaneous/permissive.cs rename to Secondbot/Core/RLV/Miscellaneous/permissive.cs diff --git a/Core/RLV/Movement/adjustheight.cs b/Secondbot/Core/RLV/Movement/adjustheight.cs similarity index 100% rename from Core/RLV/Movement/adjustheight.cs rename to Secondbot/Core/RLV/Movement/adjustheight.cs diff --git a/Core/RLV/Movement/alwaysrun.cs b/Secondbot/Core/RLV/Movement/alwaysrun.cs similarity index 100% rename from Core/RLV/Movement/alwaysrun.cs rename to Secondbot/Core/RLV/Movement/alwaysrun.cs diff --git a/Core/RLV/Movement/fly.cs b/Secondbot/Core/RLV/Movement/fly.cs similarity index 100% rename from Core/RLV/Movement/fly.cs rename to Secondbot/Core/RLV/Movement/fly.cs diff --git a/Core/RLV/Movement/setrot.cs b/Secondbot/Core/RLV/Movement/setrot.cs similarity index 100% rename from Core/RLV/Movement/setrot.cs rename to Secondbot/Core/RLV/Movement/setrot.cs diff --git a/Core/RLV/Movement/temprun.cs b/Secondbot/Core/RLV/Movement/temprun.cs similarity index 100% rename from Core/RLV/Movement/temprun.cs rename to Secondbot/Core/RLV/Movement/temprun.cs diff --git a/Core/RLV/PrivateChannels/sendchannel.cs b/Secondbot/Core/RLV/PrivateChannels/sendchannel.cs similarity index 100% rename from Core/RLV/PrivateChannels/sendchannel.cs rename to Secondbot/Core/RLV/PrivateChannels/sendchannel.cs diff --git a/Core/RLV/PrivateChannels/sendchannel_except.cs b/Secondbot/Core/RLV/PrivateChannels/sendchannel_except.cs similarity index 100% rename from Core/RLV/PrivateChannels/sendchannel_except.cs rename to Secondbot/Core/RLV/PrivateChannels/sendchannel_except.cs diff --git a/Core/RLV/PrivateChannels/sendchannel_sec.cs b/Secondbot/Core/RLV/PrivateChannels/sendchannel_sec.cs similarity index 100% rename from Core/RLV/PrivateChannels/sendchannel_sec.cs rename to Secondbot/Core/RLV/PrivateChannels/sendchannel_sec.cs diff --git a/Core/RLV/RLV_commandlib.cs b/Secondbot/Core/RLV/RLV_commandlib.cs similarity index 98% rename from Core/RLV/RLV_commandlib.cs rename to Secondbot/Core/RLV/RLV_commandlib.cs index 2adf549..58fe378 100644 --- a/Core/RLV/RLV_commandlib.cs +++ b/Secondbot/Core/RLV/RLV_commandlib.cs @@ -21,11 +21,11 @@ namespace BSB.RLV last_caller_uuid = callerUUID; } - public RLVcontrol(RLVbot linktobot, bool wikimode) + public RLVcontrol(RLVbot linktobot) { bot = linktobot; API_type = typeof(RLV_command); - LoadCommandsList(wikimode); + LoadCommandsList(); } protected List suppress_warning = new List(); diff --git a/Core/RLV/Sitting/getsitid.cs b/Secondbot/Core/RLV/Sitting/getsitid.cs similarity index 100% rename from Core/RLV/Sitting/getsitid.cs rename to Secondbot/Core/RLV/Sitting/getsitid.cs diff --git a/Core/RLV/Sitting/sit.cs b/Secondbot/Core/RLV/Sitting/sit.cs similarity index 100% rename from Core/RLV/Sitting/sit.cs rename to Secondbot/Core/RLV/Sitting/sit.cs diff --git a/Core/RLV/Sitting/unsit.cs b/Secondbot/Core/RLV/Sitting/unsit.cs similarity index 100% rename from Core/RLV/Sitting/unsit.cs rename to Secondbot/Core/RLV/Sitting/unsit.cs diff --git a/Core/RLV/Version/version.cs b/Secondbot/Core/RLV/Version/version.cs similarity index 100% rename from Core/RLV/Version/version.cs rename to Secondbot/Core/RLV/Version/version.cs diff --git a/Core/RLV/Version/versionnew.cs b/Secondbot/Core/RLV/Version/versionnew.cs similarity index 100% rename from Core/RLV/Version/versionnew.cs rename to Secondbot/Core/RLV/Version/versionnew.cs diff --git a/Core/RLV/Version/versionnum.cs b/Secondbot/Core/RLV/Version/versionnum.cs similarity index 100% rename from Core/RLV/Version/versionnum.cs rename to Secondbot/Core/RLV/Version/versionnum.cs diff --git a/Core/Static/Inventory.cs b/Secondbot/Core/Static/Inventory.cs similarity index 100% rename from Core/Static/Inventory.cs rename to Secondbot/Core/Static/Inventory.cs diff --git a/Core/Static/parcel.cs b/Secondbot/Core/Static/parcel.cs similarity index 100% rename from Core/Static/parcel.cs rename to Secondbot/Core/Static/parcel.cs diff --git a/Core/bottypes/AVstorageBot.cs b/Secondbot/Core/bottypes/AVstorageBot.cs similarity index 100% rename from Core/bottypes/AVstorageBot.cs rename to Secondbot/Core/bottypes/AVstorageBot.cs diff --git a/Core/bottypes/ActionsAutoAcceptBot.cs b/Secondbot/Core/bottypes/ActionsAutoAcceptBot.cs similarity index 100% rename from Core/bottypes/ActionsAutoAcceptBot.cs rename to Secondbot/Core/bottypes/ActionsAutoAcceptBot.cs diff --git a/Core/bottypes/AnimationsBot.cs b/Secondbot/Core/bottypes/AnimationsBot.cs similarity index 100% rename from Core/bottypes/AnimationsBot.cs rename to Secondbot/Core/bottypes/AnimationsBot.cs diff --git a/Core/bottypes/AwaitReplyEventBot.cs b/Secondbot/Core/bottypes/AwaitReplyEventBot.cs similarity index 100% rename from Core/bottypes/AwaitReplyEventBot.cs rename to Secondbot/Core/bottypes/AwaitReplyEventBot.cs diff --git a/Core/bottypes/CommandsBot.cs b/Secondbot/Core/bottypes/CommandsBot.cs similarity index 99% rename from Core/bottypes/CommandsBot.cs rename to Secondbot/Core/bottypes/CommandsBot.cs index 131d3e5..098d4d1 100644 --- a/Core/bottypes/CommandsBot.cs +++ b/Secondbot/Core/bottypes/CommandsBot.cs @@ -14,7 +14,7 @@ namespace BSB.bottypes { protected CommandsBot() { - CommandsInterface = new Commands.CoreCommandsInterface(this,false); + CommandsInterface = new Commands.CoreCommandsInterface(this); } protected List CommandHistory = new List(); @@ -194,7 +194,7 @@ namespace BSB.bottypes { if (reconnect == false) { - CommandsInterface = new Commands.CoreCommandsInterface(this,false); + CommandsInterface = new Commands.CoreCommandsInterface(this); } Client.Self.RequestBalance(); base.AfterBotLoginHandler(); diff --git a/Core/bottypes/DialogsBot.cs b/Secondbot/Core/bottypes/DialogsBot.cs similarity index 100% rename from Core/bottypes/DialogsBot.cs rename to Secondbot/Core/bottypes/DialogsBot.cs diff --git a/Core/bottypes/EventsBot.cs b/Secondbot/Core/bottypes/EventsBot.cs similarity index 100% rename from Core/bottypes/EventsBot.cs rename to Secondbot/Core/bottypes/EventsBot.cs diff --git a/Core/bottypes/Log2FileBot.cs b/Secondbot/Core/bottypes/Log2FileBot.cs similarity index 100% rename from Core/bottypes/Log2FileBot.cs rename to Secondbot/Core/bottypes/Log2FileBot.cs diff --git a/Core/bottypes/MessageSwitcherBot.cs b/Secondbot/Core/bottypes/MessageSwitcherBot.cs similarity index 100% rename from Core/bottypes/MessageSwitcherBot.cs rename to Secondbot/Core/bottypes/MessageSwitcherBot.cs diff --git a/Core/bottypes/RLVbot.cs b/Secondbot/Core/bottypes/RLVbot.cs similarity index 99% rename from Core/bottypes/RLVbot.cs rename to Secondbot/Core/bottypes/RLVbot.cs index 68dade0..05484fe 100644 --- a/Core/bottypes/RLVbot.cs +++ b/Secondbot/Core/bottypes/RLVbot.cs @@ -21,7 +21,7 @@ namespace BSB.bottypes if (myconfig.Setting_AllowRLV == true) { Info("RLV: Enabled"); - RLVinterface = new RLV.RLVcontrol(this,false); + RLVinterface = new RLV.RLVcontrol(this); } } } diff --git a/Core/bottypes/SecondBot.cs b/Secondbot/Core/bottypes/SecondBot.cs similarity index 100% rename from Core/bottypes/SecondBot.cs rename to Secondbot/Core/bottypes/SecondBot.cs diff --git a/Core/bottypes/VirtualsBot.cs b/Secondbot/Core/bottypes/VirtualsBot.cs similarity index 100% rename from Core/bottypes/VirtualsBot.cs rename to Secondbot/Core/bottypes/VirtualsBot.cs diff --git a/Core/bottypes/athome.cs b/Secondbot/Core/bottypes/athome.cs similarity index 100% rename from Core/bottypes/athome.cs rename to Secondbot/Core/bottypes/athome.cs diff --git a/Core/bottypes/chatrelay.cs b/Secondbot/Core/bottypes/chatrelay.cs similarity index 100% rename from Core/bottypes/chatrelay.cs rename to Secondbot/Core/bottypes/chatrelay.cs diff --git a/Core/bottypes/loadorder.txt b/Secondbot/Core/bottypes/loadorder.txt similarity index 100% rename from Core/bottypes/loadorder.txt rename to Secondbot/Core/bottypes/loadorder.txt diff --git a/BSBshared/API/API_interface.cs b/Secondbot/Shared/API/API_interface.cs similarity index 92% rename from BSBshared/API/API_interface.cs rename to Secondbot/Shared/API/API_interface.cs index d257171..e23b239 100644 --- a/BSBshared/API/API_interface.cs +++ b/Secondbot/Shared/API/API_interface.cs @@ -9,9 +9,7 @@ namespace BetterSecondBotShared.API { public abstract class API_interface { - public string CommandName { get { return GetType().Name; } } - - public string CommandNameLower { get { return GetType().Name.ToLowerInvariant(); } } + public string CommandName { get { return GetType().Name.ToLowerInvariant(); ; } } public virtual int Min_Required_args { get { return 0; } } public virtual string Helpfile { get { return "No help given"; } } public virtual string[] ArgTypes { get { return new string[] { }; } } @@ -36,7 +34,7 @@ namespace BetterSecondBotShared.API } return null; } - protected virtual void LoadCommandsList(bool wikimode) + protected virtual void LoadCommandsList() { foreach (var com in GetAPICommandClasses()) { @@ -47,11 +45,7 @@ namespace BetterSecondBotShared.API API_interface D = (API_interface)Activator.CreateInstance(com); if (D != null) { - string name = D.CommandNameLower; - if(wikimode == true) - { - name = D.CommandName; - } + string name = D.CommandName; if (subtype_map.ContainsKey(name) == false) { string worknamespace = com.Namespace; @@ -107,7 +101,7 @@ namespace BetterSecondBotShared.API { if (subtype_map.Count() == 0) { - LoadCommandsList(false); + LoadCommandsList(); } return subtype_map.ContainsKey(command); } diff --git a/BSBshared/BotTypes/BasicBot.cs b/Secondbot/Shared/BotTypes/BasicBot.cs similarity index 100% rename from BSBshared/BotTypes/BasicBot.cs rename to Secondbot/Shared/BotTypes/BasicBot.cs diff --git a/BSBshared/IO/SimpleIO.cs b/Secondbot/Shared/IO/SimpleIO.cs similarity index 100% rename from BSBshared/IO/SimpleIO.cs rename to Secondbot/Shared/IO/SimpleIO.cs diff --git a/BSBshared/Json/JsonConfig.cs b/Secondbot/Shared/Json/JsonConfig.cs similarity index 100% rename from BSBshared/Json/JsonConfig.cs rename to Secondbot/Shared/Json/JsonConfig.cs diff --git a/BSBshared/Json/JsonConfigApi.cs b/Secondbot/Shared/Json/JsonConfigApi.cs similarity index 100% rename from BSBshared/Json/JsonConfigApi.cs rename to Secondbot/Shared/Json/JsonConfigApi.cs diff --git a/Secondbot/Shared/Shared.csproj b/Secondbot/Shared/Shared.csproj new file mode 100644 index 0000000..05f498d --- /dev/null +++ b/Secondbot/Shared/Shared.csproj @@ -0,0 +1,18 @@ + + + + Library + netcoreapp3.1 + + + + + + + + + + + + + diff --git a/BSBshared/Staic/Helpers.cs b/Secondbot/Shared/Staic/Helpers.cs similarity index 100% rename from BSBshared/Staic/Helpers.cs rename to Secondbot/Shared/Staic/Helpers.cs diff --git a/BSBshared/Staic/LogFormater.cs b/Secondbot/Shared/Staic/LogFormater.cs similarity index 100% rename from BSBshared/Staic/LogFormater.cs rename to Secondbot/Shared/Staic/LogFormater.cs diff --git a/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.XML b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.XML new file mode 100644 index 0000000..29b150a --- /dev/null +++ b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.XML @@ -0,0 +1,317 @@ + + + + LibreMetaverse.StructuredData + + + + + + + + + + + + + + + + Deserializes binary LLSD + + Serialized data + OSD containting deserialized data + + + + Deserializes binary LLSD + + Stream to read the data from + OSD containting deserialized data + + + + Serializes OSD to binary format. It does no prepend header + + OSD to serialize + Serialized data + + + + Serializes OSD to binary format + + OSD to serialize + + Serialized data + + + + Serializes OSD to binary format. It does no prepend header + + OSD to serialize + Serialized data + + + + Serializes OSD to binary format + + OSD to serialize + + Serialized data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OSD Exception + + + + + OSD element base class + + + + + Uses reflection to create an SDMap from all of the SD + serializable types in an object + + Class or struct containing serializable types + An SDMap holding the serialized values from the + container object + + + + Uses reflection to deserialize member variables in an object from + an SDMap + + Reference to an object to fill with deserialized + values + Serialized values to put in the target + object + + + + OSD Boolean Element + + + + + OSD Integer Element + + + + + OSD Floating point Element + + + + + OSD LLSD-XML Element + + + + + OSD String Element + + + + + OSD UUID Element + + + + + OSD DateTime Element + + + + + OSD Uri Element + + + + + OSD Binary Element + + + + + OSD Map Element + + + + + OSD Array Element + + + + diff --git a/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj new file mode 100644 index 0000000..35228d6 --- /dev/null +++ b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj @@ -0,0 +1,91 @@ + + + Local + 14.0.25123 + 2.0 + {89D7A3E5-0000-0000-0000-000000000000} + Debug + LibreMetaverse.StructuredData + JScript + Grid + IE50 + false + netcoreapp3.1 + Debug;Release;DockerBuild + Library + LibreMetaverse.StructuredData + true + + + True + 285212672 + False + + + TRACE;DEBUG + True + 4096 + False + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + none + Linux + false + false + false + linux-x64 + + + True + 285212672 + False + TRACE + LibreMetaverse.StructuredData.XML + False + 4096 + True + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + + + + + + + + True + + + + + + + + + 1.2.0 + Sjofn LLC, OpenMetaverse Developers + LibreMetaverse.StructuredData + Copyright © OpenMetaverse Developers 2008, 2017. Copyright © Sjofn LLC 2018-2019. All rights reserved. + LICENSE.txt + https://github.com/cinderblocks/libremetaverse + + + true + + \ No newline at end of file diff --git a/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.nuspec b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.nuspec new file mode 100644 index 0000000..aac0f8b --- /dev/null +++ b/libremetaverse-core/LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.nuspec @@ -0,0 +1,15 @@ + + + + LibreMetaverse.StructuredData + $version$ + Cinder Biscuits + Cinder Biscuits + https://github.com/cinderblocks/libremetaverse/blob/master/LICENSE.txt + https://github.com/cinderblocks/libremetaverse + false + LibreMetaverse structured data library + Copyright 2017 + LMV OMV OpenMetaverse OpenSim Halcyon OpenMetaverseFoundation VirtualWorld Radegast SecondLife + + \ No newline at end of file diff --git a/libremetaverse-core/LibreMetaverse/LibreMetaverse.XML b/libremetaverse-core/LibreMetaverse/LibreMetaverse.XML new file mode 100644 index 0000000..1a7113b --- /dev/null +++ b/libremetaverse-core/LibreMetaverse/LibreMetaverse.XML @@ -0,0 +1,36652 @@ + + + + LibreMetaverse + + + + + Permission request flags, asked when a script wants to control an Avatar + + + + Placeholder for empty values, shouldn't ever see this + + + Script wants ability to take money from you + + + Script wants to take camera controls for you + + + Script wants to remap avatars controls + + + Script wants to trigger avatar animations + This function is not implemented on the grid + + + Script wants to attach or detach the prim or primset to your avatar + + + Script wants permission to release ownership + This function is not implemented on the grid + The concept of "public" objects does not exist anymore. + + + Script wants ability to link/delink with other prims + + + Script wants permission to change joints + This function is not implemented on the grid + + + Script wants permissions to change permissions + This function is not implemented on the grid + + + Script wants to track avatars camera position and rotation + + + Script wants to control your camera + + + Script wants the ability to teleport you + + + + Special commands used in Instant Messages + + + + Indicates a regular IM from another agent + + + Simple notification box with an OK button + + + You've been invited to join a group. + + + Inventory offer + + + Accepted inventory offer + + + Declined inventory offer + + + Group vote + + + An object is offering its inventory + + + Accept an inventory offer from an object + + + Decline an inventory offer from an object + + + Unknown + + + Start a session, or add users to a session + + + Start a session, but don't prune offline users + + + Start a session with your group + + + Start a session without a calling card (finder or objects) + + + Send a message to a session + + + Leave a session + + + Indicates that the IM is from an object + + + Sent an IM to a busy user, this is the auto response + + + Shows the message in the console and chat history + + + Send a teleport lure + + + Response sent to the agent which inititiated a teleport invitation + + + Response sent to the agent which inititiated a teleport invitation + + + Only useful if you have Linden permissions + + + Request a teleport lure + + + IM to tell the user to go to an URL + + + IM for help + + + IM sent automatically on call for help, sends a lure + to each Helper reached + + + Like an IM but won't go to email + + + IM from a group officer to all group members + + + Unknown + + + Unknown + + + Accept a group invitation + + + Decline a group invitation + + + Unknown + + + An avatar is offering you friendship + + + An avatar has accepted your friendship offer + + + An avatar has declined your friendship offer + + + Indicates that a user has started typing + + + Indicates that a user has stopped typing + + + + Flag in Instant Messages, whether the IM should be delivered to + offline avatars as well + + + + Only deliver to online avatars + + + If the avatar is offline the message will be held until + they login next, and possibly forwarded to their e-mail account + + + + Conversion type to denote Chat Packet types in an easier-to-understand format + + + + Whisper (5m radius) + + + Normal chat (10/20m radius), what the official viewer typically sends + + + Shouting! (100m radius) + + + Event message when an Avatar has begun to type + + + Event message when an Avatar has stopped typing + + + Send the message to the debug channel + + + Event message when an object uses llOwnerSay + + + Event message when an object uses llRegionSayTo + + + Special value to support llRegionSay, never sent to the client + + + + Identifies the source of a chat message + + + + Chat from the grid or simulator + + + Chat from another avatar + + + Chat from an object + + + + + + + + + + + + + + + + + + Effect type used in ViewerEffect packets + + + + + + + + + + + + + + + + + + + + + + + + + Project a beam from a source to a destination, such as + the one used when editing an object + + + + + + + + + + + + Create a swirl of particles around an object + + + + + + + + + Cause an avatar to look at an object + + + Cause an avatar to point at an object + + + + The action an avatar is doing when looking at something, used in + ViewerEffect packets for the LookAt effect + + + + + + + + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + + The action an avatar is doing when pointing at something, used in + ViewerEffect packets for the PointAt effect + + + + + + + + + + + + + + + + + Money transaction types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Flags sent when a script takes or releases a control + + NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, + + + No Flags set + + + Forward (W or up Arrow) + + + Back (S or down arrow) + + + Move left (shift+A or left arrow) + + + Move right (shift+D or right arrow) + + + Up (E or PgUp) + + + Down (C or PgDown) + + + Rotate left (A or left arrow) + + + Rotate right (D or right arrow) + + + Left Mouse Button + + + Left Mouse button in MouseLook + + + + Currently only used to hide your group title + + + + No flags set + + + Hide your group title + + + + Action state of the avatar, which can currently be typing and + editing + + + + + + + + + + + + + + Current teleport status + + + + Unknown status + + + Teleport initialized + + + Teleport in progress + + + Teleport failed + + + Teleport completed + + + Teleport cancelled + + + + + + + + No flags set, or teleport failed + + + Set when newbie leaves help island for first time + + + + + + Via Lure + + + Via Landmark + + + Via Location + + + Via Home + + + Via Telehub + + + Via Login + + + Linden Summoned + + + Linden Forced me + + + + + + Agent Teleported Home via Script + + + + + + + + + + + + forced to new location for example when avatar is banned or ejected + + + Teleport Finished via a Lure + + + Finished, Sim Changed + + + Finished, Same Sim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Type of mute entry + + + + Object muted by name + + + Muted residet + + + Object muted by UUID + + + Muted group + + + Muted external entry + + + + Flags of mute entry + + + + No exceptions + + + Don't mute text chat + + + Don't mute voice chat + + + Don't mute particles + + + Don't mute sounds + + + Don't mute + + + + Instant Message + + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Print the struct data as a string + A string containing the field name, and field value + + + Represents muted object or resident + + + Type of the mute entry + + + UUID of the mute etnry + + + Mute entry name + + + Mute flags + + + Transaction detail sent with MoneyBalanceReply message + + + Type of the transaction + + + UUID of the transaction source + + + Is the transaction source a group + + + UUID of the transaction destination + + + Is transaction destination a group + + + Transaction amount + + + Transaction description + + + + Manager class for our own avatar + + + + + Called once attachment resource usage information has been collected + + Indicates if operation was successfull + Attachment resource usage information + + + The event subscribers. null if no subcribers + + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a scripted object or agent within range sends a public message + + + The event subscribers. null if no subcribers + + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to + + + The event subscribers. null if no subcribers + + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an object requests a change in the permissions an agent has permitted + + + The event subscribers. null if no subcribers + + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a script requests an agent open the specified URL + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an agents currency balance is updated + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a transaction occurs involving currency such as a land purchase + + + The event subscribers. null if no subcribers + + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + The event subscribers. null if no subcribers + + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request + + + The event subscribers. null if no subcribers + + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a simulator sends agent specific information for our avatar. + + + The event subscribers. null if no subcribers + + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when our agents animation playlist changes + + + The event subscribers. null if no subcribers + + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an object or avatar forcefully collides with our agent + + + The event subscribers. null if no subcribers + + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when our agent crosses a region border into another region + + + The event subscribers. null if no subcribers + + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when our agent succeeds or fails to join a group chat session + + + The event subscribers. null if no subcribers + + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + + The event subscribers. null if no subcribers + + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a script attempts to take or release specified controls for our agent + + + The event subscribers. null if no subcribers + + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator detects our agent is trying to view something + beyond its limits + + + The event subscribers. null if no subcribers + + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a script sensor reply is received from a simulator + + + The event subscribers. null if no subcribers + + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised in response to a request + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an avatar enters a group chat session we are participating in + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when an agent exits a group chat session we are participating in + + + The event subscribers, null of no subscribers + + + Raises the SetDisplayNameReply Event + A SetDisplayNameReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the details of display name change + + + The event subscribers. null if no subcribers + + + Raises the MuteListUpdated event + A EventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a scripted object or agent within range sends a public message + + + Reference to the GridClient instance + + + Used for movement and camera tracking + + + Currently playing animations for the agent. Can be used to + check the current movement status such as walking, hovering, aiming, + etc. by checking against system animations found in the Animations class + + + Dictionary containing current Group Chat sessions and members + + + Dictionary containing mute list keyead on mute name and key + + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing + + + Temporary assigned to this session, used for + verifying our identity in packets + + + Shared secret that is never sent over the wire + + + Your (client) avatar ID, local to the current region/sim + + + Where the avatar started at login. Can be "last", "home" + or a login + + + The access level of this agent, usually M, PG or A + + + The CollisionPlane of Agent + + + An representing the velocity of our agent + + + An representing the acceleration of our agent + + + A which specifies the angular speed, and axis about which an Avatar is rotating. + + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. + + + LookAt point saved/restored with HomePosition + + + Avatar First Name (i.e. Philip) + + + Avatar Last Name (i.e. Linden) + + + LookAt point received with the login response message + + + Avatar Full Name (i.e. Philip Linden) + + + Gets the health of the agent + + + Gets the current balance of the agent + + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting + + + Gets the of the agents active group. + + + Gets the Agents powers in the currently active group + + + Current status message for teleporting + + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something + + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something + + + Current position of the agent in the simulator + + + + A representing the agents current rotation + + + + Returns the global grid position of the avatar + + + Various abilities and preferences sent by the grid + + + + Constructor, setup callbacks for packets related to our avatar + + A reference to the Class + + + + Send a text message from the Agent to the Simulator + + A containing the message + The channel to send the message on, 0 is the public channel. Channels above 0 + can be used however only scripts listening on the specified channel will see the message + Denotes the type of message being sent, shout, whisper, etc. + Enables large messages to be split into chunks of 900 with [CHUNKGROUPID|CHUNKID|TOTALCHUNKS] at the start + Hides [CHUNKGROUPID|CHUNKID|TOTALCHUNKS] at the start of chunked messages + + + + Request any instant messages sent while the client was offline to be resent. + + + + + Send an Instant Message to another Avatar + + The recipients + A containing the message to send + + + + Send an Instant Message to an existing group chat or conference chat + + The recipients + A containing the message to send + IM session ID (to differentiate between IM windows) + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + IDs of sessions for a conference + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + Type of instant message to send + Whether to IM offline avatars as well + Senders Position + RegionID Sender is In + Packed binary data that is specific to + the dialog type + + + + Send an Instant Message to a group + + of the group to send message to + Text Message being sent. + + + + Send an Instant Message to a group the agent is a member of + + The name this IM will show up as being from + of the group to send message to + Text message being sent + + + + Send a request to join a group chat session + + of Group to leave + + + + Exit a group chat session. This will stop further Group chat messages + from being sent until session is rejoined. + + of Group chat session to leave + + + + Reply to script dialog questions. + + Channel initial request came on + Index of button you're "clicking" + Label of button you're "clicking" + of Object that sent the dialog request + + + + + Accept invite for to a chatterbox session + + of session to accept invite to + + + + Start a friends conference + + List of UUIDs to start a conference with + the temporary session ID returned in the callback> + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + + The type from the enum + A unique for this effect + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + of the Effect + + + + Create a particle beam between an avatar and an primitive + + The ID of source avatar + The ID of the target primitive + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + + Create a particle swirl around a target position using a packet + + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + Sends a request to sit on the specified object + + of the object to sit on + Sit at offset + + + + Follows a call to to actually sit on the object + + + + Stands up from sitting on a prim or the ground + true of AgentUpdate was sent + + + + Does a "ground sit" at the avatar's current position + + + + + Starts or stops flying + + True to start flying, false to stop flying + + + + Starts or stops crouching + + True to start crouching, false to stop crouching + + + + Starts a jump (begin holding the jump key) + + + + + Use the autopilot sim function to move the avatar to a new + position. Uses double precision to get precise movements + + The z value is currently not handled properly by the simulator + Global X coordinate to move to + Global Y coordinate to move to + Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the global X coordinate to move to + Integer value for the global Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the local X coordinate to move to + Integer value for the local Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + Macro to cancel autopilot sim function + Not certain if this is how it is really done + true if control flags were set and AgentUpdate was sent to the simulator + + + + Grabs an object + + an unsigned integer of the objects ID within the simulator + + + + + Overload: Grab a simulated object + + an unsigned integer of the objects ID within the simulator + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpendicular to the surface) + The surface bi-normal of the position to grab (A bi-normal is a vector tangent to the surface + pointing along the U direction of the tangent space + + + + Drag an object + + of the object to drag + Drag target in region coordinates + + + + Overload: Drag an object + + of the object to drag + Drag target in region coordinates + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpendicular to the surface) + The surface bi-normal of the position to grab (A bi-normal is a vector tangent to the surface + pointing along the U direction of the tangent space + + + + Release a grabbed object + + The Objects Simulator Local ID + + + + + + + Release a grabbed object + + The Objects Simulator Local ID + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpendicular to the surface) + The surface bi-normal of the position to grab (A bi-normal is a vector tangent to the surface + pointing along the U direction of the tangent space + + + + Touches an object + + an unsigned integer of the objects ID within the simulator + + + + + Request the current L$ balance + + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + Description that will show up in the + recipients transaction history + + + + Give L$ to an object + + object to give money to + amount of L$ to give + name of object + + + + Give L$ to a group + + group to give money to + amount of L$ to give + + + + Give L$ to a group + + group to give money to + amount of L$ to give + description of transaction + + + + Pay texture/animation upload fee + + + + + Pay texture/animation upload fee + + description of the transaction + + + + Give Money to destination Object or Avatar + + UUID of the Target Object/Avatar + Amount in L$ + Reason (Optional normally) + The type of transaction + Transaction flags, mostly for identifying group + transactions + + + + Plays a gesture + + Asset of the gesture + + + + Mark gesture active + + Inventory of the gesture + Asset of the gesture + + + + Mark gesture inactive + + Inventory of the gesture + + + + Send an AgentAnimation packet that toggles a single animation on + + The of the animation to start playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that toggles a single animation off + + The of a + currently playing animation to stop playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that will toggle animations on or off + + A list of animation s, and whether to + turn that animation on or off + Whether to ensure delivery of this packet or not + + + + Teleports agent to their stored home location + + true on successful teleport to home location + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + true on success, false on failure + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + True if the lookup and teleport were successful, otherwise + false + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + Target to look at + True if the lookup and teleport were successful, otherwise + false + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + true on success, false on failure + This call is blocking + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + true on success, false on failure + This call is blocking + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + + + + Send a teleport lure to another avatar with default "Join me in ..." invitation message + + target avatars to lure + + + + Send a teleport lure to another avatar with custom invitation message + + target avatars to lure + custom message to send with invitation + + + + Respond to a teleport lure by either accepting it and initiating + the teleport, or denying it + + of the avatar sending the lure + IM session of the incoming lure request + true to accept the lure, false to decline it + + + + Request a teleport lure from another agent + + of the avatar lure is being requested from + IM session + message to send with request + + + + Update agent profile + + struct containing updated + profile information + + + + Update agents profile interests + + selection of interests from struct + + + + Set the height and the width of the client window. This is used + by the server to build a virtual camera frustum for our avatar + + New height of the viewer window + New width of the viewer window + + + + Request the list of muted objects and avatars for this agent + + + + + Mute an object, resident, etc. + + Mute type + Mute UUID + Mute name + + + + Mute an object, resident, etc. + + Mute type + Mute UUID + Mute name + Mute flags + + + + Unmute an object, resident, etc. + + Mute UUID + Mute name + + + + Sets home location to agents current position + + will fire an AlertMessage () with + success or failure message + + + + Move an agent in to a simulator. This packet is the last packet + needed to complete the transition in to a new simulator + + Object + + + + Reply to script permissions request + + Object + of the itemID requesting permissions + of the taskID requesting permissions + list of permissions to allow + + + + Respond to a group invitation by either accepting or denying it + + UUID of the group (sent in the AgentID field of the invite message) + IM Session ID from the group invitation message + Accept the group invitation or deny it + + + + Requests script detection of objects and avatars + + name of the object/avatar to search for + UUID of the object or avatar to search for + Type of search from ScriptSensorTypeFlags + range of scan (96 max?) + the arc in radians to search within + an user generated ID to correlate replies with + Simulator to perform search in + + + + Create or update profile pick + + UUID of the pick to update, or random UUID to create a new pick + Is this a top pick? (typically false) + UUID of the parcel (UUID.Zero for the current parcel) + Name of the pick + Global position of the pick landmark + UUID of the image displayed with the pick + Long description of the pick + + + + Delete profile pick + + UUID of the pick to delete + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what category the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Global position of the classified landmark + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what category the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Delete a classified ad + + The classified ads ID + + + + Fetches resource usage by agents attachments + + Called when the requested information is collected + + + + Initiates request to set a new display name + + Previous display name + Desired new display name + + + + Tells the sim what UI language is used, and if it's ok to share that with scripts + + Two letter language code + Share language info with scripts + + + + Sets agents maturity access level + + PG, M or A + + + + Sets agents maturity access level + + PG, M or A + Callback function + + + + Sets agents hover height. + + Hover height [-2.0, 2.0] + + + + Take an incoming ImprovedInstantMessage packet, auto-parse, and if + OnInstantMessage is defined call that with the appropriate arguments + + The sender + The EventArgs object containing the packet data + + + + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llDialogs + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llRequestPermissions dialogs + + The sender + The EventArgs object containing the packet data + + + + Handles Script Control changes when Script with permissions releases or takes a control + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llLoadURL Dialogs + + The sender + The EventArgs object containing the packet data + + + + Update client's Position, LookAt and region handle from incoming packet + + The sender + The EventArgs object containing the packet data + This occurs when after an avatar moves into a new sim + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + EQ Message fired with the result of SetDisplayName request + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + + Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + + The Message Key + An IMessage object Deserialized from the recieved message event + The simulator originating the event message + + + + Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + + The message system key for this event + IMessage object containing decoded data from OSD + The simulator originating the event message + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + This packet is now being sent via the EventQueue + + + + Group Chat event handler + + The capability Key + IMessage object containing decoded data from OSD + + + + + Response from request to join a group chat + + + IMessage object containing decoded data from OSD + + + + + Someone joined or left group chat + + + IMessage object containing decoded data from OSD + + + + + Handle a group chat Invitation + + Caps Key + IMessage object containing decoded data from OSD + Originating Simulator + + + + Moderate a chat session + + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate + Either "voice" to moderate users voice, or "text" to moderate users text session + true to moderate (silence user), false to allow avatar to speak + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Agent movement and camera control + + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties + + + + + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets + + + + + + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens + + + + + + + + + + + + + + + + Default constructor + + + + Move agent positive along the X axis + + + Move agent negative along the X axis + + + Move agent positive along the Y axis + + + Move agent negative along the Y axis + + + Move agent positive along the Z axis + + + Move agent negative along the Z axis + + + + + + + + + + + + + + + + + + + + + + + + Causes simulator to make agent fly + + + Stop movement + + + Finish animation + + + Stand up from a sit + + + Tells simulator to sit agent on ground + + + Place agent into mouselook mode + + + Nudge agent positive along the X axis + + + Nudge agent negative along the X axis + + + Nudge agent positive along the Y axis + + + Nudge agent negative along the Y axis + + + Nudge agent positive along the Z axis + + + Nudge agent negative along the Z axis + + + + + + + + + Tell simulator to mark agent as away + + + + + + + + + + + + + + + + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + + + + The current value of the agent control flags + + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable + + + Gets or sets whether AgentUpdate packets are sent to + the current simulator + + + Reset movement controls every time we send an update + + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timer for sending AgentUpdate packets + + + Default constructor + + + + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not + + + + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + + Region coordinates to turn toward + + + + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + + Region coordinates to turn toward + whether to send update or not + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + Simulator to send the update to + + + + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way + + + + + + + + + + + + + + + + Sends update of Field of Vision vertical angle to the simulator + + Angle in radians + + + + Used to specify movement actions for your agent + + + + Empty flag + + + Move Forward (SL Keybinding: W/Up Arrow) + + + Move Backward (SL Keybinding: S/Down Arrow) + + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + Unused + + + Unused + + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + + + + + Finish our current animation + + + Stand up from the ground or a prim seat + + + Sit on the ground at our current location + + + Whether mouselook is currently enabled + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + + + + + + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag + + + + + + + + + + + + + + + + Class for sending info on the success of the opration + of setting the maturity access level + + + + + New maturity accesss level returned from the sim + + + + + True if setting the new maturity access level has succedded + + + + + Creates new instance of the EventArgs class + + Has setting new maturty access level succeeded + New maturity access level as returned by the simulator + + + + + + + + Get the simulator sending the message + + + Get the message sent + + + Get the audible level of the message + + + Get the type of message sent: whisper, shout, etc + + + Get the source type of the message sender + + + Get the name of the agent or object sending the message + + + Get the ID of the agent or object sending the message + + + Get the ID of the object owner, or the agent ID sending the message + + + Get the position of the agent or object sending the message + + + + Construct a new instance of the ChatEventArgs object + + Sim from which the message originates + The message sent + The audible level of the message + The type of message sent: whisper, shout, etc + The source type of the message sender + The name of the agent or object sending the message + The ID of the agent or object sending the message + The ID of the object owner, or the agent ID sending the message + The position of the agent or object sending the message + + + Contains the data sent when a primitive opens a dialog with this agent + + + Get the dialog message + + + Get the name of the object that sent the dialog request + + + Get the ID of the image to be displayed + + + Get the ID of the primitive sending the dialog + + + Get the first name of the senders owner + + + Get the last name of the senders owner + + + Get the communication channel the dialog was sent on, responses + should also send responses on this same channel + + + Get the string labels containing the options presented in this dialog + + + UUID of the scritped object owner + + + + Construct a new instance of the ScriptDialogEventArgs + + The dialog message + The name of the object that sent the dialog request + The ID of the image to be displayed + The ID of the primitive sending the dialog + The first name of the senders owner + The last name of the senders owner + The communication channel the dialog was sent on + The string labels containing the options presented in this dialog + UUID of the scritped object owner + + + Contains the data sent when a primitive requests debit or other permissions + requesting a YES or NO answer + + + Get the simulator containing the object sending the request + + + Get the ID of the script making the request + + + Get the ID of the primitive containing the script making the request + + + Get the name of the primitive making the request + + + Get the name of the owner of the object making the request + + + Get the permissions being requested + + + + Construct a new instance of the ScriptQuestionEventArgs + + The simulator containing the object sending the request + The ID of the script making the request + The ID of the primitive containing the script making the request + The name of the primitive making the request + The name of the owner of the object making the request + The permissions being requested + + + Contains the data sent when a primitive sends a request + to an agent to open the specified URL + + + Get the name of the object sending the request + + + Get the ID of the object sending the request + + + Get the ID of the owner of the object sending the request + + + True if the object is owned by a group + + + Get the message sent with the request + + + Get the URL the object sent + + + + Construct a new instance of the LoadUrlEventArgs + + The name of the object sending the request + The ID of the object sending the request + The ID of the owner of the object sending the request + True if the object is owned by a group + The message sent with the request + The URL the object sent + + + The date received from an ImprovedInstantMessage + + + Get the InstantMessage object + + + Get the simulator where the InstantMessage origniated + + + + Construct a new instance of the InstantMessageEventArgs object + + the InstantMessage object + the simulator where the InstantMessage origniated + + + Contains the currency balance + + + + Get the currenct balance + + + + + Construct a new BalanceEventArgs object + + The currenct balance + + + Contains the transaction summary when an item is purchased, + money is given, or land is purchased + + + Get the ID of the transaction + + + True of the transaction was successful + + + Get the remaining currency balance + + + Get the meters credited + + + Get the meters comitted + + + Get the description of the transaction + + + Detailed transaction information + + + + Construct a new instance of the MoneyBalanceReplyEventArgs object + + The ID of the transaction + True of the transaction was successful + The current currency balance + The meters credited + The meters comitted + A brief description of the transaction + Transaction info + + + Data sent from the simulator containing information about your agent and active group information + + + Get the agents first name + + + Get the agents last name + + + Get the active group ID of your agent + + + Get the active groups title of your agent + + + Get the combined group powers of your agent + + + Get the active group name of your agent + + + + Construct a new instance of the AgentDataReplyEventArgs object + + The agents first name + The agents last name + The agents active group ID + The group title of the agents active group + The combined group powers the agent has in the active group + The name of the group the agent has currently active + + + Data sent by the simulator to indicate the active/changed animations + applied to your agent + + + Get the dictionary that contains the changed animations + + + + Construct a new instance of the AnimationsChangedEventArgs class + + The dictionary that contains the changed animations + + + + Data sent from a simulator indicating a collision with your agent + + + + Get the Type of collision + + + Get the ID of the agent or object that collided with your agent + + + Get the ID of the agent that was attacked + + + A value indicating the strength of the collision + + + Get the time the collision occurred + + + + Construct a new instance of the MeanCollisionEventArgs class + + The type of collision that occurred + The ID of the agent or object that perpetrated the agression + The ID of the Victim + The strength of the collision + The Time the collision occurred + + + Data sent to your agent when it crosses region boundaries + + + Get the simulator your agent just left + + + Get the simulator your agent is now in + + + + Construct a new instance of the RegionCrossedEventArgs class + + The simulator your agent just left + The simulator your agent is now in + + + Data sent from the simulator when your agent joins a group chat session + + + Get the ID of the group chat session + + + Get the name of the session + + + Get the temporary session ID used for establishing new sessions + + + True if your agent successfully joined the session + + + + Construct a new instance of the GroupChatJoinedEventArgs class + + The ID of the session + The name of the session + A temporary session id used for establishing new sessions + True of your agent successfully joined the session + + + Data sent by the simulator containing urgent messages + + + Get the alert message + + + + Construct a new instance of the AlertMessageEventArgs class + + The alert message + + + Data sent by a script requesting to take or release specified controls to your agent + + + Get the controls the script is attempting to take or release to the agent + + + True if the script is passing controls back to the agent + + + True if the script is requesting controls be released to the script + + + + Construct a new instance of the ScriptControlEventArgs class + + The controls the script is attempting to take or release to the agent + True if the script is passing controls back to the agent + True if the script is requesting controls be released to the script + + + + Data sent from the simulator to an agent to indicate its view limits + + + + Get the collision plane + + + + Construct a new instance of the CameraConstraintEventArgs class + + The collision plane + + + + Data containing script sensor requests which allow an agent to know the specific details + of a primitive sending script sensor requests + + + + Get the ID of the primitive sending the sensor + + + Get the ID of the group associated with the primitive + + + Get the name of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the owner of the primitive sending the sensor + + + Get the position of the primitive sending the sensor + + + Get the range the primitive specified to scan + + + Get the rotation of the primitive sending the sensor + + + Get the type of sensor the primitive sent + + + Get the velocity of the primitive sending the sensor + + + + Construct a new instance of the ScriptSensorReplyEventArgs + + The ID of the primitive sending the sensor + The ID of the group associated with the primitive + The name of the primitive sending the sensor + The ID of the primitive sending the sensor + The ID of the owner of the primitive sending the sensor + The position of the primitive sending the sensor + The range the primitive specified to scan + The rotation of the primitive sending the sensor + The type of sensor the primitive sent + The velocity of the primitive sending the sensor + + + Contains the response data returned from the simulator in response to a + + + Get the ID of the primitive the agent will be sitting on + + + True if the simulator Autopilot functions were involved + + + Get the camera offset of the agent when seated + + + Get the camera eye offset of the agent when seated + + + True of the agent will be in mouselook mode when seated + + + Get the position of the agent when seated + + + Get the rotation of the agent when seated + + + Construct a new instance of the AvatarSitResponseEventArgs object + + + Data sent when an agent joins a chat session your agent is currently participating in + + + Get the ID of the chat session + + + Get the ID of the agent that joined + + + + Construct a new instance of the ChatSessionMemberAddedEventArgs object + + The ID of the chat session + The ID of the agent joining + + + Data sent when an agent exits a chat session your agent is currently participating in + + + Get the ID of the chat session + + + Get the ID of the agent that left + + + + Construct a new instance of the ChatSessionMemberLeftEventArgs object + + The ID of the chat session + The ID of the Agent that left + + + Event arguments with the result of setting display name operation + + + Status code, 200 indicates settign display name was successful + + + Textual description of the status + + + Details of the newly set display name + + + Default constructor + + + + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle + + + + Maximum bits per second for resending unacknowledged packets + + + Maximum bits per second for LayerData terrain + + + Maximum bits per second for LayerData wind data + + + Maximum bits per second for LayerData clouds + + + Unknown, includes object data + + + Maximum bits per second for textures + + + Maximum bits per second for downloaded assets + + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers + + + + Default constructor, uses a default high total of 1500 KBps (1536000) + + + + + Constructor that decodes an existing AgentThrottle packet in to + individual values + + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client + + + + Send an AgentThrottle packet to the current server using the + current values + + + + + Send an AgentThrottle packet to the specified server using the + current values + + + + + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet + + Byte array containing all the throttle values + + + + Static pre-defined animations available to all agents + + + + Agent with afraid expression on face + + + Agent aiming a bazooka (right handed) + + + Agent aiming a bow (left handed) + + + Agent aiming a hand gun (right handed) + + + Agent aiming a rifle (right handed) + + + Agent with angry expression on face + + + Agent hunched over (away) + + + Agent doing a backflip + + + Agent laughing while holding belly + + + Agent blowing a kiss + + + Agent with bored expression on face + + + Agent bowing to audience + + + Agent brushing himself/herself off + + + Agent in busy mode + + + Agent clapping hands + + + Agent doing a curtsey bow + + + Agent crouching + + + Agent crouching while walking + + + Agent crying + + + Agent unanimated with arms out (e.g. setting appearance) + + + Agent re-animated after set appearance finished + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent on ground unanimated + + + Agent boozing it up + + + Agent with embarassed expression on face + + + Agent with afraid expression on face + + + Agent with angry expression on face + + + Agent with bored expression on face + + + Agent crying + + + Agent showing disdain (dislike) for something + + + Agent with embarassed expression on face + + + Agent with frowning expression on face + + + Agent with kissy face + + + Agent expressing laughgter + + + Agent with open mouth + + + Agent with repulsed expression on face + + + Agent expressing sadness + + + Agent shrugging shoulders + + + Agent with a smile + + + Agent expressing surprise + + + Agent sticking tongue out + + + Agent with big toothy smile + + + Agent winking + + + Agent expressing worry + + + Agent falling down + + + Agent walking (feminine version) + + + Agent wagging finger (disapproval) + + + I'm not sure I want to know + + + Agent in superman position + + + Agent in superman position + + + Agent greeting another + + + Agent holding bazooka (right handed) + + + Agent holding a bow (left handed) + + + Agent holding a handgun (right handed) + + + Agent holding a rifle (right handed) + + + Agent throwing an object (right handed) + + + Agent in static hover + + + Agent hovering downward + + + Agent hovering upward + + + Agent being impatient + + + Agent jumping + + + Agent jumping with fervor + + + Agent point to lips then rear end + + + Agent landing from jump, finished flight, etc + + + Agent laughing + + + Agent landing from jump, finished flight, etc + + + Agent sitting on a motorcycle + + + + + + Agent moving head side to side + + + Agent moving head side to side with unhappy expression + + + Agent taunting another + + + + + + Agent giving peace sign + + + Agent pointing at self + + + Agent pointing at another + + + Agent preparing for jump (bending knees) + + + Agent punching with left hand + + + Agent punching with right hand + + + Agent acting repulsed + + + Agent trying to be Chuck Norris + + + Rocks, Paper, Scissors 1, 2, 3 + + + Agent with hand flat over other hand + + + Agent with fist over other hand + + + Agent with two fingers spread over other hand + + + Agent running + + + Agent appearing sad + + + Agent saluting + + + Agent shooting bow (left handed) + + + Agent cupping mouth as if shouting + + + Agent shrugging shoulders + + + Agent in sit position + + + Agent in sit position (feminine) + + + Agent in sit position (generic) + + + Agent sitting on ground + + + Agent sitting on ground + + + + + + Agent sleeping on side + + + Agent smoking + + + Agent inhaling smoke + + + + + + Agent taking a picture + + + Agent standing + + + Agent standing up + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent stretching + + + Agent in stride (fast walk) + + + Agent surfing + + + Agent acting surprised + + + Agent striking with a sword + + + Agent talking (lips moving) + + + Agent throwing a tantrum + + + Agent throwing an object (right handed) + + + Agent trying on a shirt + + + Agent turning to the left + + + Agent turning to the right + + + Agent typing + + + Agent walking + + + Agent whispering + + + Agent whispering with fingers in mouth + + + Agent winking + + + Agent winking + + + Agent worried + + + Agent nodding yes + + + Agent nodding yes with happy face + + + Agent floating with legs and arms crossed + + + + A dictionary containing all pre-defined animations + + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation + + + + Index of TextureEntry slots for avatar appearances + + + + + Bake layers for avatar appearance + + + + + Appearance Flags, introdued with server side baking, currently unused + + + + Mask for multiple attachments + + + Mapping between BakeType and AvatarTextureIndex + + + Maximum number of concurrent downloads for wearable assets and textures + + + Maximum number of concurrent uploads for baked textures + + + Timeout for fetching inventory listings + + + Timeout for fetching a single wearable, or receiving a single packet response + + + Timeout for fetching a single texture + + + Timeout for uploading a single baked texture + + + Number of times to retry bake upload + + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change + + + Total number of wearables allowed for each avatar + + + Total number of wearables for each avatar + + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Map of what wearables are included in each bake + + + Magic values to finalize the cache check hashes for each + bake + + + Default avatar texture, used to detect when a custom + texture is not set for a face + + + + Contains information about a wearable inventory item + + + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + + + Data collected from visual params for each wearable + needed for the calculation of the color + + + + + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data + + + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Where on avatar does this texture belong + + + The event subscribers. null if no subcribers + + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + The event subscribers. null if no subcribers + + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse + + + Thread sync lock object + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + + The event subscribers. null if no subcribers + + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull + + + Thread sync lock object + + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + The event subscribers. null if no subcribers + + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + Triggered when the simulator requests the agent rebake its appearance. + + + + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail + + + + Visual parameters last sent to the sim + + + Textures about this client sent to the sim + + + A cache of wearables currently being worn + + + A cache of attachments currently being worn + + + A cache of textures currently being worn + + + Incrementing serial number for AgentCachedTexture packets + + + Incrementing serial number for AgentSetAppearance packets + + + Indicates if WearablesRequest succeeded + + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously + + + Reference to our agent + + + + Timer used for delaying rebake on changing outfit + + + + + Main appearance thread + + + + + Main appearance cancellation token source + + + + + Is server baking complete. It needs doing only once + + + + + Default constructor + + A reference to our agent + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter + + + + Starts the appearance setting thread + + + + + Starts the appearance setting thread + + True to force rebaking, otherwise false + + + + Check if current region supports server side baking + + True if server side baking support is detected + + + + Ask the server what textures our agent is currently wearing + + + + + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture + + + + + OBSOLETE! Returns the AssetID of the first asset that is currently + being worn in a given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + Should existing item on the same point or of the same type be replaced + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + Should existing item on the same point or of the same type be replaced + + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit + + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + Check if we have all body parts, set this to false only + if you know what you're doing + + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn + + + + Returns a collection of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + first + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + to attach the item to + + + + Detach an item from our agent using an object + + An object + + + + Detach an item from our agent + + The inventory itemID of the item to detach + + + + Retrieves the currently worn attachments. + removed async and Task due to no await. + + + + + + Returns a collection of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Inform the sim which wearables are part of our current outfit + + + + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with + + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable + + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false + + + + Blocking method to populate the Textures array with cached bakes + + True on success, otherwise false + + + + Populates textures and visual params from a decoded asset + + Wearable to decode + Texture data + + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false + + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download + + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded + + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false + + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false + + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero + + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class + + + + Initate server baking process + + True if the server baking was successful + + + + Get the latest version of COF + + Current Outfit Folder (or null if getting the data failed) + + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it + + + + + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType + + + + Gives the layer number that is used for morph mask + + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask + + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Contains the Event data returned from an AppearanceSetRequest + + + Indicates whether appearance setting was successful + + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful + + + Contains the Event data returned from the data server from an RebakeAvatarTextures + + + The ID of the Texture Layer to bake + + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake + + + + Class that handles the local asset cache + + + + + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled + + + + + How long (in ms) between cache checks (default is 5 min.) + + + + + Default constructor + + A reference to the GridClient object + + + + Disposes cleanup timer + + + + + Only create timer when needed + + + + + Return bytes read from the local asset cache, null if it does not exist + + UUID of the asset we want to get + Raw bytes of the asset, or null on failure + + + + Returns ImageDownload object of the + image from the local image cache, null if it does not exist + + UUID of the image we want to get + ImageDownload object containing the image, or null on failure + + + + Constructs a file name of the cached asset + + UUID of the asset + String with the file name of the cahced asset + + + + Constructs a file name of the static cached asset + + UUID of the asset + String with the file name of the static cached asset + + + + Saves an asset to the local cache + + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull + + + + Get the file name of the asset stored with gived UUID + + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder + + + + Checks if the asset exists in the local cache + + UUID of the asset + True is the asset is stored in the cache, otherwise false + + + + Wipes out entire cache + + + + + Brings cache size to the 90% of the max size + + + + + Asynchronously brings cache size to the 90% of the max size + + + + + Adds up file sizes passes in a FileInfo array + + + + + Checks whether caching is enabled + + + + + Periodically prune the cache + + + + + Nicely formats file sizes + + Byte size we want to output + String with humanly readable file size + + + + Helper class for sorting files by their last accessed time + + + + + + + + + OK + + + Transfer completed + + + + + + + + + Unknown error occurred + + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + + + + + + + + + + Unknown + + + Virtually all asset transfers use this channel + + + + + + + + + + + Asset from the asset server + + + Inventory item + + + Estate asset, such as an estate covenant + + + + + + + + + + + + + + + + + + When requesting image download, type of the image requested + + + + Normal in-world object texture + + + Avatar texture + + + Server baked avatar texture + + + + Image file format + + + + + + + + + Number of milliseconds passed since the last transfer + packet was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of milliseconds to wait for a transfer header packet if out of order data was received + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + + A callback that fires upon the completion of the RequestMesh call + + Was the download successful + Resulting mesh or null on problems + + + The event subscribers. null if no subcribers + + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds sends + + + The event subscribers. null if no subcribers + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised during upload completes + + + The event subscribers. null if no subcribers + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised during upload with progres update + + + The event subscribers. null if no subcribers + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + The event subscribers. null if no subcribers + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + Texture download cache + + + + Default constructor + + A reference to the GridClient object + + + + Returns type name as string for a given AssetType + + + Type name + + + + Build uri for requesting an asset from ViewerAsset capability + + + + Request URI for an asset + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + + + + + + + + + + + + + + + + + + + + + + Request an asset download via LLUDP + + Asset UUID + task ID + + The callback to fire when the simulator responds with the asset data + Item ID + + + + Request an asset download through the almost deprecated Xfer system + + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + + + + Request Inventory Asset from UDP + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + + Whether to prioritize this asset download or not + + + + + + Request Inventory Asset from UDP + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + + + + + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + + An AssetUpload object containing the data to upload to the simulator + + + + Request an asset be uploaded to the simulator + + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Initiate an asset upload + + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer + + + + Requests download of a mesh asset + + UUID of the mesh asset + Callback when the request completes + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + + + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Cancel a texture request + + The texture assets + + + + Fetch avatar texture on a grid capable of server side baking + + ID of the avatar + ID of the texture + Name of the part of the avatar texture applies to + Callback invoked on operation completion + + + + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + + + + Constants for the archiving module + + + + + The location of the archive control file + + + + + Path for the assets held in an archive + + + + + Path for the prims file + + + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + + + + + Path for region settings. + + + + + Path for region settings. + + + + + The character the separates the uuid from extension information in an archived asset filename + + + + + Extensions used for asset types in the archive + + + + + Archives assets + + + + + Archive assets + + + + + Archive the assets given to this archiver to the given archive. + + + + + + Write an assets metadata file to the given archive + + + + + + Write asset data files to the given archive + + + + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + + + + + Binary reader for the underlying stream + + + + + Used to trim off null chars + + + + + Used to trim off space chars + + + + + Generate a tar reader which reads from the given stream. + + + + + + Read the next entry in the tar file. + + + + the data for the entry. Returns null if there are no more entries + + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. + + + + Read data following a header + + + + + + + Convert octal bytes to a decimal representation + + + + + + + + + Temporary code to produce a tar archive in tar v7 format + + + + + Binary writer for the underlying stream + + + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + + + + Write a file to the tar archive + + + + + + + Write a file to the tar archive + + + + + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + + + + + Write a particular entry + + + + + + + + Base class for all Asset types + + + + A byte array containing the raw asset data + + + True if the asset it only stored on the server temporarily + + + A unique ID + + + The assets unique ID + + + + The "type" of asset, Notecard, Animation, etc + + + + + Construct a new Asset object + + + + + Construct a new Asset object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Regenerates the AssetData byte array from the properties + of the derived class. + + + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false + + + + Represents an Animation + + + + Override the base classes AssetType + + + Default Constructor + + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data + + + + Represents an that represents an avatars body ie: Hair, Etc. + + + + Override the base classes AssetType + + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + Represents a Callingcard with AvatarID and Position vector + + + + Override the base classes AssetType + + + UUID of the Callingcard target avatar + + + Construct an Asset of type Callingcard + + + + Construct an Asset object of type Callingcard + + A unique specific to this asset + A byte array containing the raw asset data + + + + Constuct an asset of type Callingcard + + UUID of the target avatar + + + + Encode the raw contents of a string with the specific Callingcard format + + + + + Decode the raw asset data, populating the AvatarID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. + + + + Override the base classes AssetType + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + Type of gesture step + + + + + Base class for gesture steps + + + + + Retururns what kind of gesture step this is + + + + + Describes animation step of a gesture + + + + + Returns what kind of gesture step this is + + + + + If true, this step represents start of animation, otherwise animation stop + + + + + Animation asset + + + + + Animation inventory name + + + + + Describes sound step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Sound asset + + + + + Sound inventory name + + + + + Describes sound step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Text to output in chat + + + + + Describes sound step of a gesture + + + + + Returns what kind of gesture step this is + + + + + If true in this step we wait for all animations to finish + + + + + If true gesture player should wait for the specified amount of time + + + + + Time in seconds to wait if WaitForAnimation is false + + + + + Describes the final step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Represents a sequence of animations, sounds, and chat actions + + + + + Returns asset type + + + + + Keyboard key that triggers the gestyre + + + + + Modifier to the trigger key + + + + + String that triggers playing of the gesture sequence + + + + + Text that replaces trigger in chat once gesture is triggered + + + + + Sequence of gesture steps + + + + + Constructs guesture asset + + + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encodes gesture asset suitable for uplaod + + + + + Decodes gesture assset into play sequence + + true if the asset data was decoded successfully + + + + Represents a Landmark with RegionID and Position vector + + + + Override the base classes AssetType + + + UUID of the Landmark target region + + + Local position of the target + + + Construct an Asset of type Landmark + + + + Construct an Asset object of type Landmark + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode the raw contents of a string with the specific Landmark format + + + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + + Represents Mesh asset + + + + Override the base classes AssetType + + + + Decoded mesh data + + + + Initializes a new instance of an AssetMesh object + + + Initializes a new instance of an AssetMesh object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes Collada file into LLMesh format + + + + + Decodes mesh asset. See + to furter decode it for rendering + true + + + + Represents an Animation + + + + Override the base classes AssetType + + + Default Constructor + + + + Construct an Asset object of type Animation + + Asset type + A unique specific to this asset + A byte array containing the raw asset data + + + + Represents a string of characters encoded with specific formatting properties + + + + Override the base classes AssetType + + + A text string containing main text of the notecard + + + List of s embedded on the notecard + + + Construct an Asset of type Notecard + + + + Construct an Asset object of type Notecard + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode the raw contents of a string with the specific Linden Text properties + + + + + Decode the raw asset data including the Linden Text properties + + true if the AssetData was successfully decoded + + + + A linkset asset, containing a parent primitive and zero or more children + + + + + Only used internally for XML serialization/deserialization + + + + Override the base classes AssetType + + + Initializes a new instance of an AssetPrim object + + + + Initializes a new instance of an AssetPrim object + + A unique specific to this asset + A byte array containing the raw asset data + + + + + + + + + + + + + + + The deserialized form of a single primitive in a linkset asset + + + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + + + + Override the base classes AssetType + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a scripts contents into a LSO Bytecode file + + + + + TODO: Decode LSO Bytecode into a string + + true + + + + Represents an LSL Text object containing a string of UTF encoded characters + + + + Override the base classes AssetType + + + A string of characters represting the script contents + + + Initializes a new AssetScriptText object + + + + Initializes a new AssetScriptText object with parameters + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode a string containing the scripts contents into byte encoded AssetData + + + + + Decode a byte array containing the scripts contents into a string + + true if decoding is successful + + + + Represents a Sound Asset + + + + Override the base classes AssetType + + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a sound file + + + + + TODO: Decode a sound file + + true + + + + Represents a texture + + + + Override the base classes AssetType + + + A object containing image data + + + + + + + + + Initializes a new instance of an AssetTexture object + + + + Initializes a new instance of an AssetTexture object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new instance of an AssetTexture object + + A object containing texture data + + + + Populates the byte array with a JPEG2000 + encoded image created from the data in + + + + + Decodes the JPEG2000 data in AssetData to the + object + + True if the decoding was successful, otherwise false + + + + Decodes the begin and end byte positions for each quality layer in + the image + + + + + + Represents a Wearable Asset, Clothing, Hair, Skin, Etc + + + + A string containing the name of the asset + + + A string containing a short description of the asset + + + The Assets WearableType + + + The For-Sale status of the object + + + An Integer representing the purchase price of the asset + + + The of the assets creator + + + The of the assets current owner + + + The of the assets prior owner + + + The of the Group this asset is set to + + + True if the asset is owned by a + + + The Permissions mask of the asset + + + A Dictionary containing Key/Value pairs of the objects parameters + + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + + Initializes a new instance of an AssetWearable object + + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + Decode an assets byte encoded data to a string + + true if the asset data was decoded successfully + + + + Encode the assets string represantion into a format consumable by the asset server + + + + + Avatar profile flags + + + + + Represents an avatar (other than your own) + + + + + Positive and negative ratings + + + + Positive ratings for Behavior + + + Negative ratings for Behavior + + + Positive ratings for Appearance + + + Negative ratings for Appearance + + + Positive ratings for Building + + + Negative ratings for Building + + + Positive ratings given by this avatar + + + Negative ratings given by this avatar + + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + + First Life about text + + + First Life image ID + + + + + + + + + + + + + + + Profile image ID + + + Flags of the profile + + + Web URL for this profile + + + Should this profile be published on the web + + + Avatar Online Status + + + Is this a mature profile + + + + + + + + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + + Languages profile field + + + + + + + + + + + + + + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + + + Contains the visual parameters describing the deformation of the avatar + + + + + Appearance version. Value greater than 0 indicates using server side baking + + + + + Version of the Current Outfit Folder that the appearance is based on + + + + + Appearance flags. Introduced with server side baking, currently unused. + + + + + List of current avatar animations + + + + First name + + + Last name + + + Full name + + + Active group + + + Information about agents display name + + + Agent UUID + + + Username + + + Display name + + + First name (legacy) + + + Last name (legacy) + + + Full name (legacy) + + + Is display name default display name + + + Cache display name until + + + Last updated timestamp + + + + Creates AgentDisplayName object from OSD + + Incoming OSD data + AgentDisplayName object + + + + Return object as OSD map + + OSD containing agent's display name data + + + + Holds group information for Avatars such as those you might find in a profile + + + + true of Avatar accepts group notices + + + Groups Key + + + Texture Key for groups insignia + + + Name of the group + + + Powers avatar has in the group + + + Avatars Currently selected title + + + true of Avatar has chosen to list this in their profile + + + + Contains an animation currently being played by an agent + + + + The ID of the animation asset + + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client + + + + + + + Holds group information on an individual profile pick + + + + + Retrieve friend status notifications, and retrieve avatar names and + profiles + + + + The event subscribers, null of no subscribers + + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + an agents animation playlist + + + The event subscribers, null of no subscribers + + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the appearance information for an agent + + + The event subscribers, null of no subscribers + + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + agent names/id values + + + The event subscribers, null of no subscribers + + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the interests listed in an agents profile + + + The event subscribers, null of no subscribers + + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + profile property information for an agent + + + The event subscribers, null of no subscribers + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the group membership an agent is a member of + + + The event subscribers, null of no subscribers + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + name/id pair + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + an agents viewer effect information + + + The event subscribers, null of no subscribers + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the top picks from an agents profile + + + The event subscribers, null of no subscribers + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the Pick details + + + The event subscribers, null of no subscribers + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + The event subscribers, null of no subscribers + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the details of a classified ad + + + The event subscribers, null of no subscribers + + + Raises the DisplayNameUpdate Event + A DisplayNameUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + the details of display name change + + + + Callback giving results when fetching display names + + If the request was successful + Array of display names + Array of UUIDs that could not be fetched + + + + Represents other avatars + + + + + Tracks the specified avatar on your map + Avatar ID to track + + + + Request a single avatar name + + The avatar key to retrieve a name for + + + + Request a list of avatar names + + The avatar keys to retrieve names for + + + + Check if Display Names functionality is available + + True if Display name functionality is available + + + + Request retrieval of display names (max 90 names per request) + + List of UUIDs to lookup + Callback to report result of the operation + + + + Start a request for Avatar Properties + + + + + + Search for an avatar (first name, last name) + + The name to search for + An ID to associate with this query + + + + Start a request for Avatar Picks + + UUID of the avatar + + + + Start a request for Avatar Classifieds + + UUID of the avatar + + + + Start a request for details of a specific profile pick + + UUID of the avatar + UUID of the profile pick + + + + Start a request for details of a specific profile classified + + UUID of the avatar + UUID of the profile classified + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + EQ Message fired when someone nearby changes their display name + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + + Get the ID of the agent + + + Get the list of animations to start + + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + Get the Simulator this request is from of the agent + + + Get the ID of the agent + + + true if the agent is a trial account + + + Get the default agent texture + + + Get the agents appearance layer textures + + + Get the for the agent + + + Version of the appearance system used. + Value greater than 0 indicates that server side baking is used + + + Version of the Current Outfit Folder the appearance is based on + + + Appearance flags, introduced with server side baking, currently unused + + + + Construct a new instance of the AvatarAppearanceEventArgs class + + The simulator request was from + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent + Appearance Version + Current outfit folder version + Appearance Flags + + + Represents the interests from the profile of an agent + + + Get the ID of the agent + + + Get the interests of the agent + + + The properties of an agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar + + + + Event args class for display name notification messages + + + + + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets + + + + + + + + + + + + + + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + + Byte array to pack bits in to or unpack from + Starting position in the byte array + + + + Pack a floating point value in to the data + + Floating point value to pack + + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack + + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack + + + + Pack a single bit in to the data + + Bit to pack + + + + + + + + + + + + + + + + + + + + + + + + + Unpacking a floating point value from the data + + Unpacked floating point value + + + + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a 16-bit signed integer + + 16-bit signed integer + + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer + + + + Unpack a 32-bit signed integer + + 32-bit signed integer + + + + Unpack a 32-bit unsigned integer + + 32-bit unsigned integer + + + + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. + + + + + Rotation Keyframe count (used internally) + + + + + Position Keyframe count (used internally) + + + + + Animation Priority + + + + + The animation length in seconds. + + + + + Expression set in the client. Null if [None] is selected + + + + + The time in seconds to start the animation + + + + + The time in seconds to end the animation + + + + + Loop the animation + + + + + Meta data. Ease in Seconds. + + + + + Meta data. Ease out seconds. + + + + + Meta Data for the Hand Pose + + + + + Number of joints defined in the animation + + + + + Contains an array of joints + + + + + Searialize an animation asset into it's joints/keyframes/meta data + + + + + + Variable length strings seem to be null terminated in the animation asset.. but.. + use with caution, home grown. + advances the index. + + The animation asset byte array + The offset to start reading + a string + + + + Read in a Joint from an animation asset byte array + Variable length Joint fields, yay! + Advances the index + + animation asset byte array + Byte Offset of the start of the joint + The Joint data serialized into the binBVHJoint structure + + + + Read Keyframes of a certain type + advance i + + Animation Byte array + Offset in the Byte Array. Will be advanced + Number of Keyframes + Scaling Min to pass to the Uint16ToFloat method + Scaling Max to pass to the Uint16ToFloat method + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + The parameter is null. + 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + A Joint and it's associated meta data and keyframes + + + + + Indicates whether this instance and a specified object are equal. + + + true if and this instance are the same type and represent the same value; otherwise, false. + + Another object to compare to. + 2 + + + + Returns the hash code for this instance. + + + A 32-bit signed integer that is the hash code for this instance. + + 2 + + + + Name of the Joint. Matches the avatar_skeleton.xml in client distros + + + + + Joint Animation Override? Was the same as the Priority in testing.. + + + + + Array of Rotation Keyframes in order from earliest to latest + + + + + Array of Position Keyframes in order from earliest to latest + This seems to only be for the Pelvis? + + + + + Custom application data that can be attached to a joint + + + + + A Joint Keyframe. This is either a position or a rotation. + + + + + Either a Vector3 position or a Vector3 Euler rotation + + + + + Poses set in the animation metadata for the hands. + + + + Viewer defauls to 30 for main grid, 60 for others + + + For exponential backoff on error. + + + Number of times we've received an unknown CAPS exception in series. + + + + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging + + + + + Triggered when an event is received via the EventQueueGet + capability + + Event name + Decoded event data + The simulator that generated the event + + + Reference to the simulator this system is connected to + + + Capabilities URI this system was initialized with + + + Whether the capabilities event queue is connected and + listening for incoming events + + + + Default constructor + + + + + + + Request the URI of a named capability + + Name of the capability to request + The URI of the requested capability, or null if not found + + + + Create a new CapsClient for specified capability + + Capability name + Newly created CapsClient or null of capability does not exist + + + + Useful for debugging, but not particularly a good idea + + Capability address + Name of capability if it exists + + + + Request preferred URI for texture fetch capability + + URI of preferred capability or null, or null if not found + + + + Request preferred URI for object mesh fetch capability + + URI of preferred capability or null, or null if not found + + + + Process any incoming events, check to see if we have a message created for the event, + + + + + + Raised whenever the capabilities have been received from a simulator + + + + Raises the CapabilitiesReceived event + + Simulator we received the capabilities from + + + The simulator that received a capabilities + + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null + + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object + + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object + + + + Thrown when a packet could not be successfully deserialized + + + + + Default constructor + + + + + Constructor that takes an additional error message + + An error message to attach to this exception + + + + The header of a message template packet. Holds packet flags, sequence + number, packet ID, and any ACKs that will be appended at the end of + the packet + + + + + Convert the AckList to a byte array, used for packet serializing + + Reference to the target byte array + Beginning position to start writing to in the byte + array, will be updated with the ending position of the ACK list + + + + + + + + + + + + + + + + + + + + + A block of data in a packet. Packets are composed of one or more blocks, + each block containing one or more fields + + + + Current length of the data in this packet + + + + Create a block from a byte array + + Byte array containing the serialized block + Starting position of the block in the byte array. + This will point to the data after the end of the block when the + call returns + + + + Serialize this block into a byte array + + Byte array to serialize this block into + Starting position in the byte array to serialize to. + This will point to the position directly after the end of the + serialized block when the call returns + + + A generic value, not an actual packet type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Origin position of this coordinate frame + + + X axis of this coordinate frame, or Forward/At in grid terms + + + Y axis of this coordinate frame, or Left in grid terms + + + Z axis of this coordinate frame, or Up in grid terms + + + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector + + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians + + + + Access to the data server which allows searching for land, events, people, etc + + + + Classified Ad categories + + + Classified is listed in the Any category + + + Classified is shopping related + + + Classified is + + + + + + + + + + + + + + + + + + + + + + + + Event Categories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + + Flags can be combined using the | (pipe) character, not all flags are available in all queries + + + + Query the People database + + + + + + + + + Query the Groups database + + + Query the Events database + + + Query the land holdings database for land owned by the currently connected agent + + + + + + Query the land holdings database for land which is owned by a Group + + + Specifies the query should pre sort the results based upon traffic + when searching the Places database + + + + + + + + + + + + + + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + + + + + + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + + + + + Land types to search dataserver for + + + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + + + The content rating of the event + + + + Event is PG + + + Event is Mature + + + Event is Adult + + + + Classified Ad Options + + There appear to be two formats the flags are packed in. + This set of flags is for the newer style + + + + + + + + + + + + + + + + + + + Classified ad query options + + + + Include all ads in results + + + Include PG ads in results + + + Include Mature ads in results + + + Include Adult ads in results + + + + The For Sale flag in PlacesReplyData + + + + Parcel is not listed for sale + + + Parcel is For Sale + + + + A classified ad on the grid + + + + UUID for this ad, useful for looking up detailed + information about it + + + The title of this classified ad + + + Flags that show certain options applied to the classified + + + Creation date of the ad + + + Expiration date of the ad + + + Price that was paid for this ad + + + Print the struct data as a string + A string containing the field name, and field value + + + + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search + + + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method + + + A string containing the name of the parcel + + + The size of the parcel + This field is not returned for Places searches + + + The price of the parcel + This field is not returned for Places searches + + + If True, this parcel is flagged to be auctioned + + + If true, this parcel is currently set for sale + + + Parcel traffic + + + Print the struct data as a string + A string containing the field name, and field value + + + + An Avatar returned from the dataserver + + + + Online status of agent + This field appears to be obsolete and always returns false + + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + + + Response to a "Groups" Search + + + + The Group ID + + + The name of the group + + + The current number of members + + + Print the struct data as a string + A string containing the field name, and field value + + + + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source + + + + The ID of the Agent of Group that owns the parcel + + + The name + + + The description + + + The Size of the parcel + + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 + + + Indicates the ForSale status of the parcel + + + The Gridwide X position + + + The Gridwide Y position + + + The Z position of the parcel, or 0 if no landing point set + + + The name of the Region the parcel is located in + + + The Asset ID of the parcels Snapshot texture + + + The calculated visitor traffic + + + The billing product SKU + Known values are: + + 023Mainland / Full Region + 024Estate / Full Region + 027Estate / Openspace + 029Estate / Homestead + 129Mainland / Homestead (Linden Owned) + + + + + No longer used, will always be 0 + + + Get a SL URL for the parcel + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + + An "Event" Listing summary + + + + The ID of the event creator + + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + + + The details of an "Event" + + + + The events ID + + + The ID of the event creator + + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) UTC adjusted + + + The length of the event in minutes + + + 0 if no cover charge applies + + + The cover charge amount in L$ if applicable + + + The name of the region where the event is being held + + + The gridwide location of the event + + + The maturity rating + + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + The event subscribers. null if no subcribers + + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + + Constructs a new instance of the DirectoryManager class + + An instance of GridClient + + + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised + + + + Query the data server for a list of classified ads which contain specified keywords (Overload) + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + + + + Starts search for places (Overloaded) + + The event is raised when a response is received from the simulator + + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + + + Queries the dataserver for parcels of land which are flagged to be shown in search + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Send a request to the data server for land sales listings + + + Flags sent to specify query options + + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + + Flags can be combined by separating them with the | (pipe) character + + Additional details can be found in + + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + The event will be raised with the response from the simulator + + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + + + + + Search the People directory for other avatars + + The name or portion of the name of the avatar you wish to search for + + + + + + Search Places for parcels of land you personally own + + + + + Searches Places for land owned by the specified group + + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + + + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Contains the Event data returned from the data server from an EventInfoRequest + + + + A single EventInfo object containing the details of an event + + + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event + + + Contains the "Event" detail data returned from the data server + + + The ID returned by + + + A list of "Events" returned by the data server + + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query + + + Contains the "Event" list data returned from the data server + + + The ID returned by + + + A list of "Places" returned by the data server + + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query + + + Contains the places data returned from the data server + + + The ID returned by + + + A list containing Places data returned by the data server + + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server + + + Contains the classified data returned from the data server + + + A list containing Classified Ads returned by the data server + + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server + + + Contains the group data returned from the data server + + + The ID returned by + + + A list containing Groups data returned by the data server + + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server + + + Contains the people data returned from the data server + + + The ID returned by + + + A list containing People data returned by the data server + + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server + + + Contains the land sales data returned from the data server + + + A list containing land forsale data returned by the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + + Represents individual HTTP Download request + + + + URI of the item to fetch + + + Timout specified in milliseconds + + + Download progress callback + + + Download completed callback + + + Accept the following content type + + + How many times will this request be retried + + + Current fetch attempt + + + Default constructor + + + Constructor + + + + Manages async HTTP downloads with a limit on maximum + concurrent downloads + + + + Maximum number of parallel downloads from a single endpoint + + + Client certificate + + + Default constructor + + + Cleanup method + + + Setup http download request + + + Check the queue for pending work + + + Enqueue a new HTTP download + + + Describes tasks returned in LandStatReply + + + + Estate level administration and utilities + + + + Textures for each of the four terrain height levels + + + Upper/lower texture boundaries for each corner of the sim + + + + Constructor for EstateTools class + + + + + Used in the ReportType field of a LandStatRequest + + + Used by EstateOwnerMessage packets + + + Used by EstateOwnerMessage packets + + + + + + + + No flags set + + + Only return targets scripted objects + + + Only return targets objects if on others land + + + Returns target's scripted objects and objects on other parcels + + + Ground texture settings for each corner of the region + + + Used by GroundTextureHeightSettings + + + The high and low texture thresholds for each corner of the sim + + + The event subscribers. null if no subcribers + + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + The event subscribers. null if no subcribers + + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the data server responds to a request. + + + + Requests estate information such as top scripts and colliders + + + + + + + + Requests estate settings, including estate manager and access/ban lists + + + Requests the "Top Scripts" list for the current region + + + Requests the "Top Colliders" list for the current region + + + + Set several estate specific configuration variables + + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset + + + + Request return of objects owned by specified avatar + + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate + + + + + + + + + Used for setting and retrieving various estate panel settings + + EstateOwnerMessage Method field + List of parameters to include + + + + Kick an avatar from an estate + + Key of Agent to remove + + + + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner + + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner + + + + Send a message dialog to everyone in an entire estate + + Message to send all users in the estate + + + + Send a message dialog to everyone in a simulator + + Message to send all users in the simulator + + + + Send an avatar back to their home location + + Key of avatar to send home + + + + Begin the region restart process + + + + + Cancels a region restart + + + + Estate panel "Region" tab settings + + + Estate panel "Debug" tab settings + + + Used for setting the region's terrain textures for its four height levels + + + + + + + Used for setting sim terrain texture heights + + + Requests the estate covenant + + + + Upload a terrain RAW file + + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request + + + + Teleports all users home in current Estate + + + + + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner + + + + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner + + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true + + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true + + + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true + + + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised on LandStatReply when the report type is for "top colliders" + + + + The number of returned items in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + Raised on LandStatReply when the report type is for "top Scripts" + + + + The number of scripts returned in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The identifier of the estate + + + + + The number of returned itmes + + + + + List of UUIDs of Banned Users + + + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Users + + + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Groups + + + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of the Estate's Managers + + + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The Covenant + + + + + The timestamp + + + + + The Estate name + + + + + The Estate Owner's ID (can be a GroupID) + + + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) + + + Returned, along with other info, upon a successful .RequestInfo() + + + + The estate's name + + + + + The Estate Owner's ID (can be a GroupID) + + + + + The identifier of the estate on the grid + + + + + + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + + + + Registers, unregisters, and fires events generated by incoming packets + + + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks + + + + Callback to fire for this packet + + + Reference to the simulator that this packet came from + + + The packet that needs to be processed + + + Reference to the GridClient object + + + + Default constructor + + + + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + True if this callback should be ran + asynchronously, false to run it synchronous + + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered + + + + Fire the events registered for this packet type + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Registers, unregisters, and fires events generated by the Capabilities + event queue + + + + Reference to the GridClient object + + + + Default constructor + + Reference to the GridClient object + + + + Register an new event handler for a capabilities event sent via the EventQueue + + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire + + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister + + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + + + + + The avatar has no rights + + + The avatar can see the online status of the target avatar + + + The avatar can see the location of the target avatar on the map + + + The avatar can modify the ojects of the target avatar + + + + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights + + + + + System ID of the avatar + + + + + full name of the avatar + + + + + True if the avatar is online + + + + + True if the friend can see if I am online + + + + + True if the friend can see me on the map + + + + + True if the freind can modify my objects + + + + + True if I can see if my friend is online + + + + + True if I can see if my friend is on the map + + + + + True if I can modify my friend's objects + + + + + My friend's rights represented as bitmapped flags + + + + + My rights represented as bitmapped flags + + + + + Used internally when building the initial list of friends at login time + + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects + + + + FriendInfo represented as a string + + A string reprentation of both my rights and my friends rights + + + + This class is used to add and remove avatars from your friends list and to manage their permission. + + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends notification one of the members in our friends list comes online + + + The event subscribers. null if no subcribers + + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends notification one of the members in our friends list goes offline + + + The event subscribers. null if no subcribers + + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + + The event subscribers. null if no subcribers + + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends us the names on our friends list + + + The event subscribers. null if no subcribers + + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends notification another agent is offering us friendship + + + The event subscribers. null if no subcribers + + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when a request we sent to friend another agent is accepted or declined + + + The event subscribers. null if no subcribers + + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship + + + The event subscribers. null if no subcribers + + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Raised when the simulator sends the location of a friend we have + requested map location info for + + + + A dictionary of key/value pairs containing known friends of this avatar. + + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend + + + + + A Dictionary of key/value pairs containing current pending frienship offers. + + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer + + + + + Internal constructor + + A reference to the GridClient Object + + + + Accept a friendship request + + agentID of avatatar to form friendship with + imSessionID of the friendship request message + + + + Decline a friendship request + + of friend + imSessionID of the friendship request message + + + + Overload: Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + + + + Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + A message to send with the request + + + + Terminate a friendship with an avatar + + System ID of the avatar you are terminating the friendship with + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Change the rights of a friend avatar. + + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. + + + + Use to map a friends location on the grid. + + Friends UUID to find + + + + + Use to track a friends movement on the grid + + Friends Key + + + + Ask for a notification of friend's online status + + Friend's UUID + + + + This handles the asynchronous response of a RequestAvatarNames call. + + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Populate FriendList with data from the login reply + + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server + + + Number of friends we have + + + Get the name of the agent we requested a friendship with + + Construct a new instance of the FriendsReadyEventArgs class + + The total number of people loaded into the friend list. + + + Contains information on a member of our friends list + + + Get the FriendInfo + + + + Construct a new instance of the FriendInfoEventArgs class + + The FriendInfo + + + Contains Friend Names + + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + + Construct a new instance of the FriendNamesEventArgs class + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + Sent when another agent requests a friendship with our agent + + + Get the ID of the agent requesting friendship + + + Get the name of the agent requesting friendship + + + Get the ID of the session, used in accepting or declining the + friendship offer + + + + Construct a new instance of the FriendshipOfferedEventArgs class + + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer + + + A response containing the results of our request to form a friendship with another agent + + + Get the ID of the agent we requested a friendship with + + + Get the name of the agent we requested a friendship with + + + true if the agent accepted our friendship offer + + + + Construct a new instance of the FriendShipResponseEventArgs class + + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer + + + Contains data sent when a friend terminates a friendship with us + + + Get the ID of the agent that terminated the friendship with us + + + Get the name of the agent that terminated the friendship with us + + + + Construct a new instance of the FrindshipTerminatedEventArgs class + + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us + + + + Data sent in response to a request which contains the information to allow us to map the friends location + + + + Get the ID of the agent we have received location information for + + + Get the region handle where our mapped friend is located + + + Get the simulator local position where our friend is located + + + + Construct a new instance of the FriendFoundReplyEventArgs class + + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located + + + + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. + + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + + + + Networking subsystem + + + Settings class including constant values and changeable + parameters for everything + + + Parcel (subdivided simulator lots) subsystem + + + Our own avatars subsystem + + + Other avatars subsystem + + + Estate subsystem + + + Friends list subsystem + + + Grid (aka simulator group) subsystem + + + Object subsystem + + + Group subsystem + + + Asset subsystem + + + Inventory AIS client + + + Appearance subsystem + + + Inventory subsystem + + + Directory searches including classifieds, people, land sales, etc + + + Handles land, wind, and cloud heightmaps + + + Handles sound-related networking + + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types + + + + Default constructor + + + + + Return the full name of this instance + + Client avatars full name + + + + Map layer request type + + + + Objects and terrain are shown + + + Only the terrain is shown, no objects + + + Overlay showing land for sale and for auction + + + + Type of grid item, such as telehub, event, populator location, etc. + + + + Telehub + + + PG rated event + + + Mature rated event + + + Popular location + + + Locations of avatar groups in a region + + + Land for sale + + + Classified ad + + + Adult rated event + + + Adult land for sale + + + + Information about a region on the grid map + + + + Sim X position on World Map + + + Sim Y position on World Map + + + Sim Name (NOTE: In lowercase!) + + + + + + Appears to always be zero (None) + + + Sim's defined Water Height + + + + + + UUID of the World Map image + + + Unique identifier for this region, a combination of the X + and Y position + + + + + + + + + + + + + + + + + + + + + + + Visual chunk of the grid map + + + + + Base class for Map Items + + + + The Global X position of the item + + + The Global Y position of the item + + + Get the Local X position of the item + + + Get the Local Y position of the item + + + Get the Handle of the region + + + + Represents an agent or group of agents location + + + + + Represents a Telehub location + + + + + Represents a non-adult parcel of land for sale + + + + + Represents an Adult parcel of land for sale + + + + + Represents a PG Event + + + + + Represents a Mature event + + + + + Represents an Adult event + + + + + Manages grid-wide tasks such as the world map + + + + The event subscribers. null if no subcribers + + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + Raised when the simulator sends a + containing the location of agents in the simulator + + + The event subscribers. null if no subcribers + + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + Raised when the simulator sends a Region Data in response to + a Map request + + + The event subscribers. null if no subcribers + + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information + + + The event subscribers. null if no subcribers + + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location + + + The event subscribers. null if no subcribers + + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + Raised in response to a Region lookup + + + Unknown + + + Current direction of the sun + + + Current angular velocity of the sun + + + Microseconds since the start of SL 4-hour day + + + A dictionary of all the regions, indexed by region name + + + A dictionary of all the regions, indexed by region handle + + + + Constructor + + Instance of GridClient object to associate with this GridManager instance + + + + + + + + + + Request a map layer + + The name of the region + The type of layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request data for all mainland (Linden managed) simulators + + + + + Request the region handle for the specified region UUID + + UUID of the region to look up + + + + Get grid region information using the region name, this function + will block until it can find the region or gives up + + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Avatar group management + + + + Key of Group Member + + + Total land contribution + + + Online status information + + + Abilities that the Group Member has + + + Current group title + + + Is a group owner + + + + Role manager for a group + + + + Key of the group + + + Key of Role + + + Name of Role + + + Group Title associated with Role + + + Description of Role + + + Abilities Associated with Role + + + Returns the role's title + The role's title + + + + Class to represent Group Title + + + + Key of the group + + + ID of the role title belongs to + + + Group Title + + + Whether title is Active + + + Returns group title + + + + Represents a group on the grid + + + + Key of Group + + + Key of Group Insignia + + + Key of Group Founder + + + Key of Group Role for Owners + + + Name of Group + + + Text of Group Charter + + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search + + + Group powers + + + Accepts notices + + + Allow publish + + + Is the group Mature + + + Cost of group membership + + + Group money + + + Group contribution + + + The total number of current members this group has + + + The number of roles this group has configured + + + Show this group in agent's profile + + + Returns the name of the group + A string containing the name of the group + + + + A group Vote + + + + Key of Avatar who created Vote + + + Text of the Vote proposal + + + Total number of votes + + + + A group proposal + + + + The Text of the proposal + + + The minimum number of members that must vote before proposal passes or failes + + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum + + + The duration in days votes are accepted + + + + Account summary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice + + + + Subject of notice + + + Notice message + + + Object ID of attachment + + + Notice owner + + + + OSD Serialize object for attaching + + + + + + Struct representing a group notice list entry + + + + Notice ID + + + Creation timestamp of notice + + + Agent name who created notice + + + Notice subject + + + Is there an attachment? + + + Attachment Type + + + + Struct representing a member of a group chat session and their settings + + + + The of the Avatar + + + True if user has voice chat enabled + + + True of Avatar has moderator abilities + + + True if a moderator has muted this avatars chat + + + True if a moderator has muted this avatars voice + + + + Role update flags + + + + + + + + + + + + + + + + + + + + + + Can send invitations to groups default role + + + Can eject members from group + + + Can toggle 'Open Enrollment' and change 'Signup fee' + + + Member is visible in the public member list + + + Can create new roles + + + Can delete existing roles + + + Can change Role names, titles and descriptions + + + Can assign other members to assigners role + + + Can assign other members to any role + + + Can remove members from roles + + + Can assign and remove abilities in roles + + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings + + + Can buy land or deed land to group + + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates + + + Can set land for-sale information on group owned parcels + + + Can subdivide and join parcels + + + Can toggle "Show in Find Places" and set search category + + + Can change parcel name, description, and 'Publish on web' settings + + + Can set the landing point and teleport routing on group land + + + Can change music and media settings + + + Can toggle 'Edit Terrain' option in Land settings + + + Can toggle various About Land > Options settings + + + Can always terraform land, even if parcel settings have it turned off + + + Can always fly while over group owned land + + + Can always rez objects on group owned land + + + Can always create landmarks for group owned parcels + + + Can set home location on any group owned parcel + + + Can modify public access settings for group owned parcels + + + Can manager parcel ban lists on group owned land + + + Can manage pass list sales information + + + Can eject and freeze other avatars on group owned land + + + Can return objects set to group + + + Can return non-group owned/set objects + + + Can return group owned objects + + + Can landscape using Linden plants + + + Can deed objects to group + + + Can move group owned objects + + + Can set group owned objects for-sale + + + Pay group liabilities and receive group dividends + + + List and Host group events + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals + + + Can join group chat sessions + + + Can use voice chat in Group Chat sessions + + + Can moderate group chat sessions + + + Has admin rights to any experiences owned by this group + + + Can sign scripts for experiences owned by this group + + + Allows access to ban / un-ban agents from a group + + + + Ban actions available for group members + + + + Ban agent from joining a group + + + Remove restriction on agent jointing a group + + + + Handles all network traffic related to reading and writing group + information + + + + The event subscribers. null if no subcribers + + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + our current group membership + + + The event subscribers. null if no subcribers + + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request + + + The event subscribers. null if no subcribers + + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator + + + The event subscribers. null if no subcribers + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when a request to create a group is successful + + + The event subscribers. null if no subcribers + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + Raised when a request to join a group either + fails or succeeds + + + The event subscribers. null if no subcribers + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + Raised when a request to leave a group either + fails or succeeds + + + The event subscribers. null if no subcribers + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Thread sync lock object + + + Raised when A group is removed from the group server + + + The event subscribers. null if no subcribers + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when a request to eject a member from a group either + fails or succeeds + + + The event subscribers. null if no subcribers + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us group notices + + + + The event subscribers. null if no subcribers + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when another agent invites our avatar to join a group + + + The event subscribers. null if no subcribers + + + Raises the BannedAgents event + An BannedAgentsEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when another agent invites our avatar to join a group + + + A reference to the current instance + + + Currently-active group members requests + + + Currently-active group roles requests + + + Currently-active group role-member requests + + + Dictionary keeping group members while request is in progress + + + Dictionary keeping mebmer/role mapping while request is in progress + + + Dictionary keeping GroupRole information while request is in progress + + + Caches group name lookups + + + + Construct a new instance of the GroupManager class + + A reference to the current instance + + + + Request a current list of groups the avatar is a member of. + + CAPS Event Queue must be running for this to work since the results + come across CAPS. + + + + Lookup name of group based on groupID + + groupID of group to lookup name for. + + + + Request lookup of multiple group names + + List of group IDs to request. + + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + + Gets the URI of the cpability for handling group bans + + Group ID + null, if the feature is not supported, or URI of the capability + + + + Request a list of residents banned from joining a group + + UUID of the group + + + + Request a list of residents banned from joining a group + + UUID of the group + Callback on request completition + + + + Request that group of agents be banned or unbanned from the group + + Group ID + Ban/Unban action + Array of agents UUIDs to ban + + + + Request that group of agents be banned or unbanned from the group + + Group ID + Ban/Unban action + Array of agents UUIDs to ban + Callback + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Contains the current groups your agent is a member of + + + Get the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Get the Group Names dictionary + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Represents the members of a group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Represents the roles associated with a group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Represents the titles for a group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Represents the summary data for a group + + + Get the ID of the group + + + Get the summary data + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + A response to a group create request + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Represents a response to a request + + + Get the ID of the group + + + true of the request was successful + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Represents your agent leaving a group + + + Get the ID of the group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Represents a list of active group notices + + + Get the ID of the group + + + Get the notices list + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Represents the profile of a group + + + Get the group profile + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + Result of the request for list of agents banned from a group + + + + Indicates if list of banned agents for a group was successfully retrieved + + + Indicates if list of banned agents for a group was successfully retrieved + + + Array containing a list of UUIDs of the agents banned from a group + + + + Static helper functions and global variables + + + + This header flag signals that ACKs are appended to the packet + + + This header flag signals that this packet has been sent before + + + This header flags signals that an ACK is expected for this packet + + + This header flag signals that the message is compressed using zerocoding + + + + Passed to Logger.Log() to identify the severity of a log entry + + + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + decompresses a gzipped OSD object + + + the OSD object + + + + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances + + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + + Default constructor + + Bake type + + + + Adds layer for baking + + TexturaData struct that contains texture and its params + + + + Converts avatar texture index (face) to Bake type + + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to + + + + Make sure images exist, resize source if needed to match the destination + + Destination image + Source image + Sanitization was succefull + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Color of the base of this layer + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Red value + Green value + Blue value + + + + Image width + + + + + Image height + + + + + Image channel flags + + + + + Red channel data + + + + + Green channel data + + + + + Blue channel data + + + + + Alpha channel data + + + + + Bump channel data + + + + + Create a new blank image + + width + height + channel flags + + + + + + + + + + Convert the channels in the image. Channels are created or destroyed as required. + + new channel flags + + + + Resize or stretch the image using nearest neighbor (ugly) resampling + + new width + new height + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + + + + TGA Header size + + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + + + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + + + + + Information about a single packet in a JPEG2000 stream + + + + Packet start position + + + Packet header end position + + + Packet end position + + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code + + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object + + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image + + + + Decode JPEG2000 data to an and + + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false + + + + + + + + + + + + + + + + + + + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object + + + + Capability to load TGAs to Bitmap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parsing Collada model files into data structures + + + + + Parses Collada document + + Load .dae model from this file + Load and decode images for uploading with model + A list of mesh prims that were parsed from the collada file + + + + Implements mesh upload communications with the simulator + + + + + Inlcude stub convex hull physics, required for uploading to Second Life + + + + + Use the same mesh used for geometry as the physical mesh upload + + + + + Callback for mesh upload operations + + null on failure, result from server on success + + + + Creates instance of the mesh uploader + + GridClient instance to communicate with the simulator + List of ModelPrimitive objects to upload as a linkset + Inventory name for newly uploaded object + Inventory description for newly upload object + + + + Performs model upload in one go, without first checking for the price + + + + + Performs model upload in one go, without first checking for the price + + Callback that will be invoke upon completion of the upload. Null is sent on request failure + + + + Ask server for details of cost and impact of the mesh upload + + Callback that will be invoke upon completion of the upload. Null is sent on request failure + + + + Performas actual mesh and image upload + + Uri recieved in the upload prepare stage + Callback that will be invoke upon completion of the upload. Null is sent on request failure + + + + Interface to a class that can supply cached byte arrays + + + + + Leases a byte array from the pool + + Minimum size the array must be to satisfy this request + A poooled array that is at least minSize + + + + Returns a byte array to the pool + + The bytes being returned + + + + Interface requirements for Messaging system + + + + + Abstract base for rendering plugins + + + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a basic mesh structure from a sculpted primitive and + texture + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces for a sculpted prim, each face + containing a mesh and metadata + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters + Scale of the prim + + + + Binary reader, which is endian aware + + + + What is the format of the source file + + + + Construct a reader from a stream + + The stream to read from + + + + Construct a reader from a stream + + The stream to read from + What is the format of the file, assumes PC and similar architecture + + + + Read a 32 bit integer + + A 32 bit integer in the system's endianness + + + + Read a 16 bit integer + + A 16 bit integer in the system's endianness + + + + Read a 64 bit integer + + A 64 bit integer in the system's endianness + + + + Read an unsigned 32 bit integer + + A 32 bit unsigned integer in the system's endianness + + + + Read a single precision floating point value + + A single precision floating point value in the system's endianness + + + + Read a double precision floating point value + + A double precision floating point value in the system's endianness + + + + Read a UTF-8 string + + A standard system string + + + + Read a UTF-8 string + + length of string to read + A standard system string + + + + Load and handle Linden Lab binary meshes. + + + The exact definition of this file is a bit sketchy, especially concerning skin weights. + A good starting point is on the + second life wiki + + + + + Defines a polygon + + + + + Structure of a vertex, No surprises there, except for the Detail tex coord + + + The skinweights are a tad unconventional. The best explanation found is: + >Each weight actually contains two pieces of information. The number to the + >left of the decimal point is the index of the joint and also implicitly + >indexes to the following joint. The actual weight is to the right of the + >decimal point and interpolates between these two joints. The index is into + >an "expanded" list of joints, not just a linear array of the joints as + >defined in the skeleton file. In particular, any joint that has more than + >one child will be repeated in the list for each of its children. + + Maybe I'm dense, but that description seems to be a bit hard to build an + algorithm on. + + Esentially the weights are compressed into one floating point value. + 1. The whole number part is an index into an array of joints + 2. The fractional part is the weight that joint has + 3. If the fractional part is 0 (x.0000) then the vertex is 100% influenced by the specified joint + + + + + Provide a nice format for debugging + + Vertex definition as a string + + + + Describes deltas to apply to a vertex in order to morph a vertex + + + + + Provide a nice format for debugging + + MorphVertex definition as a string + + + + Describes a named mesh morph, essentially a named list of MorphVertices + + + + + Provide a nice format for debugging + + The name of the morph + + + + Don't really know what this does + + + + + Provide a nice format for debugging + + Human friendly format + + + + A reference mesh is one way to implement level of detail + + + Reference meshes are supplemental meshes to full meshes. For all practical + purposes almost all lod meshes are implemented as reference meshes, except for + 'avatar_eye_1.llm' which for some reason is implemented as a full mesh. + + + + + Load a mesh from a stream + + Filename and path of the file containing the reference mesh + + + + Level of Detail mesh + + + + + Construct a linden mesh with the given name + + the name of the mesh + + + + Construct a linden mesh with the given name + + the name of the mesh + The skeleton governing mesh deformation + + + + Load the mesh from a stream + + The filename and path of the file containing the mesh data + + + + Layout of one skinweight element + + + + List of skinweights, in the same order as the mesh vertices + + + + Decompress the skinweights + + the expanded joint list, used to index which bones should influece the vertex + + + + Load a reference mesh from a given stream + + The lod level of this reference mesh + the name and path of the file containing the mesh data + the loaded reference mesh + + + + Trim a string at the first occurence of NUL + + + The llm file uses null terminated strings (C/C++ style), this is where + the conversion is made. + + The string to trim + A standard .Net string + + + + load the 'avatar_skeleton.xml' + + + Partial class which extends the auto-generated 'LindenSkeleton.Xsd.cs'.eton.xsd + + + + + + Load a skeleton from a given file. + + + We use xml scema validation on top of the xml de-serializer, since the schema has + some stricter checks than the de-serializer provides. E.g. the vector attributes + are guaranteed to hold only 3 float values. This reduces the need for error checking + while working with the loaded skeleton. + + A valid recursive skeleton + + + + Load a skeleton from a given file. + + + We use xml scema validation on top of the xml de-serializer, since the schema has + some stricter checks than the de-serializer provides. E.g. the vector attributes + are guaranteed to hold only 3 float values. This reduces the need for error checking + while working with the loaded skeleton. + + The path to the skeleton definition file + A valid recursive skeleton + + + + Build and "expanded" list of joints + + + The algorithm is based on this description: + + >An "expanded" list of joints, not just a + >linear array of the joints as defined in the skeleton file. + >In particular, any joint that has more than one child will + >be repeated in the list for each of its children. + + The list should only take these joint names in consideration + An "expanded" joints list as a flat list of bone names + + + + Expand one joint + + The parent of the joint we are operating on + The joint we are supposed to expand + Joint list that we will extend upon + The expanded list should only contain these joints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains all mesh faces that belong to a prim + + + + List of primitive faces + + + + Decodes mesh asset into FacetedMesh + + Mesh primitive + Asset retrieved from the asset server + Level of detail + Resulting decoded FacetedMesh + True if mesh asset decoding was successful + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + + Key + Value + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Gets the number of Key/Value pairs contained in the + + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + + + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Perform an on each entry in an + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + to perform + + + + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Indexer for the dictionary + + The key + The value + + + + + Exception class to identify inventory exceptions + + + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + + The root folder of this avatars inventory + + + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. + + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. + + + + Base Class for Inventory Items + + + + of item/folder + + + of parent folder + + + Name of item/folder + + + Item/Folder Owners + + + + Constructor, takes an itemID as a parameter + + The of the item + + + + Get object data + + + + + + + Inventory base ctor + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryBase fields + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Convert inventory to OSD + + OSD representation + + + + An Item in Inventory + + + + The of this item + + + The combined of this item + + + The type of item from + + + The type of item from the enum + + + The of the creator of this item + + + A Description of this item + + + The s this item is set to or owned by + + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item + + + + Construct a new InventoryItem object + + The of the item + + + + Construct a new InventoryItem object of a specific Type + + The type of item from + of the item + + + + Indicates inventory item is a link + + True if inventory item is a link to another inventory item + + + + + Get object data + + + + + + + Inventory item ctor + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryItem fields + + + + + Compares an object + + The object to compare + true if comparison object matches + + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Create InventoryItem from OSD + + OSD Data that makes up InventoryItem + Inventory item created + + + + Convert InventoryItem to OSD + + OSD representation of InventoryItem + + + + + InventoryTexture Class representing a graphical image + + + + + + Construct an InventoryTexture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryTexture object from a serialization stream + + + + + + InventorySound Class representing a playable sound + + + + + Construct an InventorySound object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySound object from a serialization stream + + + + + + InventoryCallingCard Class, contains information on another avatar + + + + + Construct an InventoryCallingCard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCallingCard object from a serialization stream + + + + + + InventoryLandmark Class, contains details on a specific location + + + + + Construct an InventoryLandmark object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLandmark object from a serialization stream + + + + + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited + + + + + + InventoryObject Class contains details on a primitive or coalesced set of primitives + + + + + Construct an InventoryObject object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryObject object from a serialization stream + + + + + Gets or sets the upper byte of the Flags value + + + + + Gets or sets the object attachment point, the lower byte of the Flags value + + + + + + InventoryNotecard Class, contains details on an encoded text document + + + + + Construct an InventoryNotecard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryNotecard object from a serialization stream + + + + + + InventoryCategory Class + + TODO: Is this even used for anything? + + + + Construct an InventoryCategory object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCategory object from a serialization stream + + + + + + InventoryLSL Class, represents a Linden Scripting Language object + + + + + Construct an InventoryLSL object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLSL object from a serialization stream + + + + + + InventorySnapshot Class, an image taken with the viewer + + + + + + Construct an InventorySnapshot object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySnapshot object from a serialization stream + + + + + InventoryAttachment Class, contains details on an attachable object + + + + + Construct an InventoryAttachment object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAttachment object from a serialization stream + + + + + Get the last AttachmentPoint this object was attached to + + + + + + InventoryWearable Class, details on a clothing item or body part + + + + + Construct an InventoryWearable object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryWearable object from a serialization stream + + + + + The , Skin, Shape, Skirt, Etc + + + + + + InventoryAnimation Class, A bvh encoded object which animates an avatar + + + + + Construct an InventoryAnimation object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAnimation object from a serialization stream + + + + + + InventoryGesture Class, details on a series of animations, sounds, and actions + + + + + Construct an InventoryGesture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryGesture object from a serialization stream + + + + + + A folder contains s and has certain attributes specific + to itself + + + + The Preferred for a folder. + + + The Version of this folder + + + Number of child items this folder contains. + + + + Constructor + + UUID of the folder + + + + Returns folder name + + Return folder name as string + + + + Get Serilization data for this InventoryFolder object + + + + + + + Construct an InventoryFolder object from a serialization stream + + + + + Return int hash code + + Hash code as integer + + + + Create InventoryFolder from OSD + + OSD Data that makes up InventoryFolder + Inventory folder created + + + + Convert InventoryFolder to OSD + + OSD representation of InventoryFolder + + + Sort by name + + + Sort by date + + + Sort folders by name, regardless of whether items are + sorted by name or date + + + Place system folders at the top + + + + Possible destinations for DeRezObject request + + + + + + + Copy from in-world to agent inventory + + + Derez to TaskInventory + + + + + + Take Object + + + God force to inventory + + + Delete Object + + + Put an avatar attachment into agent inventory + + + + + + Return an object back to the owner's inventory + + + Return a deeded object back to the last owner's inventory + + + + Upper half of the Flags field for inventory items + + + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez + + + Indicates that the object sale information has been + changed + + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + + Indicates whether this object is composed of multiple + items or not + + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted + + + + Tools for dealing with agents inventory + + + + Used for converting shadow_id to asset_id + + + Maximum items allowed to give + + + + Callback for inventory item creation finishing + + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null + + + + Callback for an inventory item being create from an uploaded asset + + true if inventory item creation was successful + + + + + + + + + + + + The event subscribers, null of no subscribers + + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive + + + The event subscribers, null of no subscribers + + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + + Reply received when uploading an inventory asset + + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID + + + The event subscribers, null of no subscribers + + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + + Delegate that is invoked when script upload is completed + + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID + + + The event subscribers, null of no subscribers + + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + Partial mapping of FolderTypes to folder names + + + + Get this agents Inventory data + + + + + Default constructor + + Reference to the GridClient object + + + + Fetch an inventory item from the dataserver + + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event + + + + Request A single inventory item + + The items + The item Owners + + + + + Request inventory items + + Inventory items to request + Owners of the inventory items + + + + + Request inventory items via Capabilities + + Inventory items to request + Owners of the inventory items + + + + + + Get contents of a folder + + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + when false uses links and does not attempt to get the real object + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested + + + + Request the contents of an inventory folder + + The folder to search + The folder owners + true to return s contained in folder + true to return s contained in folder + the sort order to return items in + + + + + Request the contents of an inventory folder using HTTP capabilities + + The folder to search + The folder owners + true to return s contained in folder + true to return s contained in folder + the sort order to return items in + + + + + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type + + This will return the root folder if one does not exist + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure + + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found + + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event + + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found + + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to + + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to + + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to + + + + Update folder properties + + of the folder to update + Sets folder's parent to + Folder name + Folder type + + + + Move a folder + + The source folders + The destination folders + + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value + + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder + + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to + + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value + + + + Remove descendants of a folder + + The of the folder + + + + Remove a single item from inventory + + The of the inventory item to remove + + + + Remove a folder from inventory + + The of the folder to remove + + + + Remove multiple items or folders from inventory + + A List containing the s of items to remove + A List containing the s of the folders to remove + + + + Empty the Lost and Found folder + + + + + Empty the Trash folder + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use FolderType.None + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item + + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link + + + + Creates inventory link to another inventory folder + + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request a copy of an asset embedded within a notecard + + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Save changes to notecard embedded in object contents + + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information + + + + Upload new gesture asset for an inventory gesture item + + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete + + + + Update an existing script in an agents Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + + + + + Update an existing script in an task Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + Rez an object from inventory + + Simulator to place object in + TaskID object when rezzed + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + DeRez an object from the simulator to the agents Objects folder in the agents Inventory + + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + DeRez an object from the simulator and return to inventory + + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + Rez an item from inventory to its previous simulator location + + + + + + + + + Give an inventory item to another avatar + + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Recurse inventory category and return folders and items. Does NOT contain parent folder being searched + + Inventory category to recursively search + Owner of folder + reference to list of categories + reference to list of items + + + + Give an inventory Folder with contents to another avatar + + The of the Folder to give + The name of the folder + The of the recipient + true to generate a beameffect during transfer + + + + Copy or move an from agent inventory to a task (primitive) inventory + + The target object + The item to copy or move from inventory + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory + + + + Retrieve a listing of the items contained in a task (Primitive) + + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded + + + + Request the contents of a tasks (primitives) inventory from the + current simulator + + The LocalID of the object + + + + + Request the contents of a tasks (primitives) inventory + + The simulator Local ID of the object + A reference to the simulator object that contains the object + + + + + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event + + + + Remove an item from an objects (Prim) Inventory + + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event + + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + + + + + + Request the running status of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + + + + + Send a request to set the running state of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event + + + + Create a CRC from an InventoryItem + + The source InventoryItem + A uint representing the source InventoryItem as a CRC + + + + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + + Obfuscated shadow_id value + Deobfuscated asset_id value + + + + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + + asset_id value to obfuscate + Obfuscated shadow_id value + + + + Wrapper for creating a new object + + The type of item from the enum + The of the newly created object + An object with the type and id passed + + + + Parse the results of a RequestTaskInventory() response + + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Set to true to accept offer, false to decline it + + + The folder to accept the inventory into, if null default folder for will be used + + + + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. + + + + + + + User data + + + + + + + + + + + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + + + + + + + + De-serialization constructor for the InventoryNode Class + + + + + Serialization handler for the InventoryNode Class + + + + + De-serialization handler for the InventoryNode Class + + + + + Singleton logging class for the entire library + + + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from + + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console + + + log4net logging engine + + + + Default constructor + + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised + + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of the last application run. + Used for error reporting to the grid login service for statistical purposes. + + + + Application exited normally + + + Application froze + + + Application detected error and exited abnormally + + + Other crash + + + Application froze during logout + + + Application crashed during logout + + + + Login Request Parameters + + + + The URL of the Login Server + + + The number of milliseconds to wait before a login is considered + failed due to timeout + + + The request method + login_to_simulator is currently the only supported method + + + The Agents First name + + + The Agents Last name + + + A md5 hashed password + plaintext password will be automatically hashed + + + The agents starting location home or last + Please use LoginLocation for custom region and Location + + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string containing version number for OS the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness + + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string + + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information + + + If true, this agent agrees to the Terms of Service of the grid its connecting to + + + Unknown + + + Status of the last application run sent to the grid login server for statistical purposes + + + An array of string sent to the login server to enable various options + + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire + + + LoginLocation used to set the starting region and location (overrides Start) example: "Tentacles/128/64/109" + Leave empty to use the starting location + + + + Default constructor, initializes sane default values + + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channel (application name) + Client version, should be application name + version number + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + URI of the login server + + + + The decoded data returned from the login server after a successful login + + + + true, false, indeterminate + + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + + + Parse LLSD Login Reply Data + + An + containing the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes + + + + Login Routines + + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. + + + + The event subscribers, null of no subscribers + + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + + + + + + + + + + + Called when a reply is received from the login server, the + login sequence will block until this event returns + + + Seed CAPS URL returned from the login server + + + Current state of logging in + + + Upon login failure, contains a short string key for the + type of login error that occurred + + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) + + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned + + + Maximum number of groups an agent can belong to, -1 for unlimited + + + Server side baking service URL + + + Parsed login response data + + + A list of packets obtained during the login process which + networkmanager will log but not process + + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name (channel) + Client application name + version + A populated struct containing + sane defaults + + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name (channel) + Client application name + version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name (channel) + Starting location URI that can be built with + StartLocation() + Client application name + version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location + + + + LoginParams and the initial login XmlRpcRequest were made on a remote machine. + This method now initializes libomv with the results. + + + + + Handles response from XML-RPC login replies + + + + + Handles response from XML-RPC login replies with already parsed LoginResponseData + + + + + Handle response from LLSD login replies + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Gets the current OS version number + + The platform version. + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + + + MD5 hash of string + + String to hash + Hashed string + + + + Explains why a simulator or the grid disconnected from us + + + + The client requested the logout or simulator disconnect + + + The server notified us that it is disconnecting + + + Either a socket was closed or network traffic timed out + + + The last active simulator shut down + + + + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling + + + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + + + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending + + + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + + Type of the packet + + + The event subscribers, null of no subscribers + + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + Unique identifier associated with our connections to + simulators + + + The simulator that the logged in avatar is currently + occupying + + + Shows whether the network layer is logged in to the + grid or not + + + Number of packets in the incoming queue + + + Number of packets in the outgoing queue + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + + Default constructor + + Reference to the GridClient object + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + True if the callback should be ran + asynchronously. Only set this to false (synchronous for callbacks + that will always complete quickly) + If any callback for a packet type is marked as + asynchronous, all callbacks for that packet type will be fired + asynchronously + + + + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type this callback is registered with + Callback to stop firing events for + + + + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received + + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for + + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send + + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to + + + + Add a packet to the Inbox queue to process + + Incoming packet to process + + + + adds a debug message when you try to access a network item + while they are still null + + what + where + + + + Add a packet to the Inbox queue to process + + Incoming packet to process + + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Begins the non-blocking logout. Makes sure that the LoggedOut event is + called even if the server does not send a logout reply, and Shutdown() + is properly called. + + + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + + + + + Initiate the logout process. The Shutdown() function + needs to be manually called. + + + + + Close a connection to the given simulator + + + + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + Shutdown message + + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null + + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Sent to the client to indicate a teleport request has completed + + + + The of the agent + + + + + + The simulators handle the agent teleported to + + + A Uri which contains a list of Capabilities the simulator supports + + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status + + + The IP Address of the simulator + + + The UDP Port the simulator will listen for UDP traffic on + + + Status flags indicating the state of the Agent upon arrival, Flying, etc. + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed + + + + + + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum + + + The of the Agent + + + A string human readable message containing the reason + An example: Could not teleport closer to destination + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Contains a list of prim owner information for a specific parcel in a simulator + + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + + + + + Prim ownership information for a specified owner on a single parcel + + + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information + + + The total number of prims + + + True if the OwnerID is a + + + True if the owner is online + This is no longer used by the LL Simulators + + + The date the most recent prim was rezzed + + + An Array of objects + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + The details of a single parcel in a region, also contains some regionwide globals + + + + Simulator-local ID of this parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Total parcel land area + + + + + + Key of authorized buyer + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + + + + Date land was claimed + + + Appears to always be zero + + + Parcel Description + + + + + + + + + Total number of primitives owned by the parcel group on + this parcel + + + Whether the land is deeded to a group or not + + + + + + Maximum number of primitives this parcel supports + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A byte, if 0x1 viewer should auto scale media to fit object + + + URL For Music Stream + + + Parcel Name + + + Autoreturn value in minutes for others' objects + + + + + + Total number of other primitives on this parcel + + + UUID of the owner of this parcel + + + Total number of primitives owned by the parcel owner on + this parcel + + + + + + How long is pass valid for + + + Price for a temporary pass + + + + + + Disallows people outside the parcel from being able to see in + + + + + + + + + + + + True if the region denies access to age unverified users + + + + + + This field is no longer used + + + The result of a request for parcel properties + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + + Number of primitives your avatar is currently + selecting and sitting on in this parcel + + + + + + + + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. + + + + Maximum primitives across the entire simulator + + + Total primitives across the entire simulator + + + + + + Key of parcel snapshot + + + Parcel ownership status + + + Total number of primitives on this parcel + + + + + + + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A boolean, if true the viewer should loop the media + + + A string which contains the mime type of the media + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + true if avatars in this parcel should be invisible to people outside + + + true if avatars outside can hear any sounds avatars inside play + + + true if group members outside can hear any sounds avatars inside play + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A message sent from the viewer to the simulator to updated a specific parcels settings + + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone + + + true to enable auto scaling of the parcel media + + + The category of this parcel used when search is enabled to restrict + search results + + + A string containing the description to set + + + The of the which allows for additional + powers and restrictions. + + + The which specifies how avatars which teleport + to this parcel are handled + + + The LocalID of the parcel to update settings on + + + A string containing the description of the media which can be played + to visitors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if avatars in this parcel should be invisible to people outside + + + true if avatars outside can hear any sounds avatars inside play + + + true if group members outside can hear any sounds avatars inside play + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + Base class used for the RemoteParcelRequest message + + + + A message sent from the viewer to the simulator to request information + on a remote parcel + + + + Local sim position of the parcel we are looking up + + + Region handle of the parcel we are looking up + + + Region of the parcel we are looking up + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information + + + + The grid-wide unique parcel ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to an agent which contains + the groups the agent is in + + + + The Agent receiving the message + + + Group Details specific to the agent + + + true of the agent accepts group notices + + + The agents tier contribution to the group + + + The Groups + + + The of the groups insignia + + + The name of the group + + + The aggregate permissions the agent has in the group for all roles the agent + is assigned + + + An optional block containing additional agent specific information + + + true of the agent allows this group to be + listed in their profile + + + An array containing information + for each the agent is a member of + + + An array containing information + for each the agent is a member of + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified + + + + A string containng the default language + to use for the agent + + + true of others are allowed to + know the language setting + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group + + + + An object containing the Agents UUID, and the Groups UUID + + + The ID of the Agent leaving the group + + + The GroupID the Agent is leaving + + + + An Array containing the AgentID and GroupID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Asset uploads/results via Capabilities + + + + The request state + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded + + + + The Capability URL sent by the simulator to upload the baked texture to + + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + + + + The uploaded texture asset ID + + + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + + + + Major Version Required + + + Minor version required + + + The name of the region sending the version requrements + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer containing the + voice server URI + + + + The Parcel ID which the voice server URI applies + + + The name of the region + + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. + + + + The Asset ID of the script + + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter + + + The Task containing the scripts + + + true of the script is in a running state + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a gesture + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message request/response which is used to update a notecard contained within + a tasks inventory + + + + The of the Task containing the notecard asset to update + + + The notecard assets contained in the tasks inventory + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory + + + + + The Notecard AssetID to replace + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a notecard + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory + + + + true of the script was successfully compiled by the simulator + + + A string containing the error which occured while trying + to update the script + + + A new AssetID assigned to the script + + + + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory + + + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime + + + The tasks which contains the script to update + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + a tasks inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status + + + + The uploaded texture asset ID + + + true of the script was compiled successfully + + + + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory + + + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Map Layers via Capabilities + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent by an agent to the capabilities server to request map layers + + + + + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + + + + + An object containing map location details + + + + The Asset ID of the regions tile overlay + + + The grid location of the southern border of the map tile + + + The grid location of the western border of the map tile + + + The grid location of the eastern border of the map tile + + + The grid location of the northern border of the map tile + + + An array containing LayerData items + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + New as of 1.23 RC1, no details yet. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A string containing the method used + + + + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + + + + An array containing the of the agents invited to this conference + + + The conferences Session ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + + + + The Session ID + + + + + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + + + + The conference SessionID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Is this invitation for voice group/conference chat + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent from the simulator to the viewer. + + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent when the agent is forcibly removed from a chatterbox session + + + + + A string containing the reason the agent was removed + + + + + The ChatterBoxSession's SessionID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Event Queue message describing physics engine attributes of a list of objects + Sim sends these when object is selected + + + + Array with the list of physics properties + + + + Serializes the message + + Serialized OSD + + + + Deserializes the message + + Incoming data to deserialize + + + + Deserializes the message + + Incoming data to deserialize + + + + Serializes the message + + Serialized OSD + + + Object IDs for which to request cost information + + + + Deserializes the message + + Incoming data to deserialize + + + + Serializes the message + + Serialized OSD + + + + Deserializes the message + + Incoming data to deserialize + + + + Serializes the message + + Serialized OSD + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face + + + + + New URL + + + + + Prim UUID where navigation occured + + + + + Face index + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class used for the ObjectMedia message + + + + Message used to retrive prim media data + + + + + Prim UUID + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Media version string + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message for setting or getting per face MediaEntry + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Details about object resource usage + + + Object UUID + + + Object name + + + Indicates if object is group owned + + + Locatio of the object + + + Object owner + + + Resource usage, keys are resource names, values are resource usage for that specific resource + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Details about parcel resource usage + + + Parcel UUID + + + Parcel local ID + + + Parcel name + + + Indicates if parcel is group owned + + + Parcel owner + + + Array of containing per object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Resource usage base class, both agent and parcel resource + usage contains summary information + + + Summary of available resources, keys are resource names, + values are resource usage for that specific resource + + + Summary resource usage, keys are resource names, + values are resource usage for that specific resource + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Agent resource usage + + + Per attachment point object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Request message for parcel resource usage + + + UUID of the parel to request resource usage info + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Response message for parcel resource usage + + + URL where parcel resource usage details can be retrieved + + + URL where parcel resource usage summary can be retrieved + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Parcel resource usage + + + Array of containing per percal resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Reply to request for bunch if display names + + + + Current display name + + + Following UUIDs failed to return a valid display name + + + + Serializes the message + + OSD containting the messaage + + + + Message sent when requesting change of the display name + + + + Current display name + + + Desired new display name + + + + Serializes the message + + OSD containting the messaage + + + + Message recieved in response to request to change display name + + + + New display name + + + String message indicating the result of the operation + + + Numerical code of the result, 200 indicates success + + + + Serializes the message + + OSD containting the messaage + + + + Message recieved when someone nearby changes their display name + + + + Previous display name, empty string if default + + + New display name + + + + Serializes the message + + OSD containting the messaage + + + + Return a decoded capabilities message as a strongly typed object + + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event + + + + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets + + + + Type of the value + + + Unknown + + + String value + + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor that takes all the fields as parameters + + + + + + + + + + Constructor that takes a single line from a NameValue field + + + + + + + + + + No report + + + Unknown report type + + + Bug report + + + Complaint report + + + Customer service report + + + + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object + + + + Unknown + + + Whether the object has a TreeSpecies + + + Whether the object has floating text ala llSetText + + + Whether the object has an active particle system + + + Whether the object has sound attached to it + + + Whether the object is attached to a root object or not + + + Whether the object has texture animation settings + + + Whether the object has an angular velocity + + + Whether the object has a name value pairs string + + + Whether the object has a Media URL set + + + Whether the object has, you guessed it, new particles + + + + Specific Flags for MultipleObjectUpdate requests + + + + None + + + Change position of prims + + + Change rotation of prims + + + Change size of prims + + + Perform operation on link set + + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale + + + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use + + + + + Indicates that this pay option should be hidden + + + + + Indicates that this pay option should have the default value + + + + + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles all network traffic related to prims and avatar positions and + movement. + + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + + + + The event subscribers, null of no subscribers + + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + additional information + + + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + additional and details + + + + The event subscribers, null of no subscribers + + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator + + + + Raises the ParticleUpdate Event + + A ParticleUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + updated information for an + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Raised when the simulator sends us data containing + and movement changes + + + The event subscribers, null of no subscribers + + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + updates to an Objects DataBlock + + + The event subscribers, null of no subscribers + + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator informs us an + or is no longer within view + + + The event subscribers, null of no subscribers + + + Raises the KillObjects Event + A KillObjectsEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator informs us when a group of + or is no longer within view + + + The event subscribers, null of no subscribers + + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + updated sit information for our + + + The event subscribers, null of no subscribers + + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + purchase price information for a + + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data + + + The event subscribers, null of no subscribers + + + Raises the PhysicsProperties Event + A PhysicsPropertiesEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + additional information + + + + + Reference to the GridClient object + + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects + + + + Construct a new instance of the ObjectManager class + + A reference to the instance + + + + Request information for a single object from a + you are currently connected to + + The the object is located + The Local ID of the object + + + + Request information for multiple objects contained in + the same simulator + + The the objects are located + An array containing the Local IDs of the objects + + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + + + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + + The the object is located + The ID of the object + The result is raised in the event + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + Type of the represetnation prim will have in the physics engine + Density - normal value 1000 + Friction - normal value 0.6 + Restitution - standard value 0.5 + Gravity multiplier - standar value 1.0 + + + + Sets the sale properties of a single object + + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object + + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object + + + + Deselect a single object + + The the object is located + The Local ID of the object + + + + Deselect multiple objects. + + The the objects are located + An array containing the Local IDs of the objects + + + + Perform a click action on an object + + The the object is located + The Local ID of the object + + + + Perform a click action (Grab) on a single object + + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Rez a Linden tree + + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old + + + + Rez grass and ground cover + + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) + + + + Set the Light data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the flexible data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the sculptie texture and data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Unset additional primitive parameters on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set + + + + Link multiple prims into a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? + + + + Delink/Unlink multiple prims from a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to delink + + + + Change the rotation of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object + + + + Set the name of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object + + + + Set the name of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects + + + + Set the description of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object + + + + Set the descriptions of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects + + + + Attach an object to this avatar + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object + + + + Drop an attached object from this avatar + + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in + + + + Detach an object from yourself + + A reference to the + object where the objects reside + + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach + + + + Change the position of an object, Will change position of entire linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset + + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly + + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset + + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum + + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to + + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to + + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + Which permission to modify + The new state of permission + + + + Request additional properties for an object + + A reference to the object where the object resides + + + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request + + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID + + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located + + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located + + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + + + + + + + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a + + + + + + + + + + + + + + + + + + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape + + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides data for the event + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or + if an Avatar crosses the border into a new simulator and returns to the current simulator + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + + + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + + + + Get the simulator the originated from + + + Get the details + + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + + true if the is attached to an + + + Get the simulator Time Dilation + + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent + + + Provides data for the event + The event occurs when the simulator sends + an containing Avatar data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + + + The following code example uses the property to make a request for the top picks + using the method in the class to display the names + of our own agents picks listings on the window. + + // subscribe to the AvatarUpdate event to get our information + Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + + private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + // we only want our own data + if (e.Avatar.LocalID == Client.Self.LocalID) + { + // Unsubscribe from the avatar update event to prevent a loop + // where we continually request the picks every time we get an update for ourselves + Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + // make the top picks request through AvatarManager + Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + } + } + + private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + { + // we'll unsubscribe from the AvatarPicksReply event since we now have the data + // we were looking for + Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + // loop through the dictionary and extract the names of the top picks from our profile + foreach (var pickName in e.Picks.Values) + { + Console.WriteLine(pickName); + } + } + + + + + + + Get the simulator the object originated from + + + Get the data + + + Get the simulator time dilation + + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update + + + Get the simulator the object originated from + + + Get the data + + + Get source + + + + Construct a new instance of the ParticleUpdateEventArgs class + + The simulator the packet originated from + The ParticleSystem data + The Primitive source + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + + + + + Get the simulator the object is located + + + Get the primitive properties + + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + + + + Get the primitive details + + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties + + + Provides additional primitive data, permissions and sale info for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment. This includes + Permissions, Sale info, and other basic details on an object + The event is also raised when a request is + made, the viewer equivalent is hovering the mouse cursor over an object + + + + Get the simulator the object is located + + + + + + + + + Provides primitive data containing updated location, velocity, rotation, textures for the event + The event occurs when the simulator sends updated location, velocity, rotation, etc + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + + Provides updates sit position data + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + + Get the simulator the object is located + + + + + + + + + + + + + Indicates if the operation was successful + + + + + Media version string + + + + + Array of media entries indexed by face number + + + + + Set when simulator sends us infomation on primitive's physical properties + + + + Simulator where the message originated + + + Updated physical properties + + + + Constructor + + Simulator where the message originated + Updated physical properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value + + + + A dictionary of callbacks to fire when specified action occurs + + + + + Register a callback to be fired when an action occurs + + The action + The callback to fire + + + + Unregister a callback + + The action + The callback to fire + + + + + + + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + + + + Gets the number of Key/Value pairs contained in the + + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + + + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Indexer for the dictionary + + The key + The value + + + + Clear the contents of the dictionary + + + + + Enumerator for iterating dictionary entries + + + + + + Type of return to use when returning objects from a parcel + + + + + + + Return objects owned by parcel owner + + + Return objects set to group + + + Return objects not owned by parcel owner or set to group + + + Return a specific list of objects on parcel + + + Return objects that are marked for-sale + + + + Blacklist/Whitelist flags used in parcels Access List + + + + Agent is denied access + + + Agent is granted access + + + + The result of a request for parcel properties + + + + No matches were found for the request + + + Request matched a single parcel + + + Request matched multiple parcels + + + + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both + + + + Request the access list + + + Request the ban list + + + Request both White and Black lists + + + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) + + + + Parcel is currently selected + + + Parcel restricted to a group the avatar is not a + member of + + + Avatar is banned from the parcel + + + Parcel is restricted to an access list that the + avatar is not on + + + Response to hovering over a parcel + + + + The tool to use when modifying terrain levels + + + + Level the terrain + + + Raise the terrain + + + Lower the terrain + + + Smooth the terrain + + + Add random noise to the terrain + + + Revert terrain to simulator default + + + + The tool size to use when changing terrain levels + + + + Small + + + Medium + + + Large + + + + Reasons agent is denied access to a parcel on the simulator + + + + Agent is not denied, access is granted + + + Agent is not a member of the group set for the parcel, or which owns the parcel + + + Agent is not on the parcels specific allow list + + + Agent is on the parcels ban list + + + Unknown + + + Agent is not age verified and parcel settings deny access to non age verified avatars + + + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused + + + Public land + + + Land is owned by another avatar + + + Land is owned by a group + + + Land is owned by the current avatar + + + Land is for sale + + + Land is being auctioned + + + Land is private + + + To the west of this area is a parcel border + + + To the south of this area is a parcel border + + + + Various parcel properties + + + + No flags set + + + Allow avatars to fly (a client-side only restriction) + + + Allow foreign scripts to run + + + This parcel is for sale + + + Allow avatars to create a landmark on this parcel + + + Allows all avatars to edit the terrain on this parcel + + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here + + + Foreign avatars can create objects here + + + All objects on this parcel can be purchased + + + Access is restricted to a group + + + Access is restricted to a whitelist + + + Ban blacklist is enabled + + + Unknown + + + List this parcel in the search directory + + + Allow personally owned parcels to be deeded to group + + + If Deeded, owner contributes required tier to group parcel is deeded to + + + Restrict sounds originating on this parcel to the + parcel boundaries + + + Objects on this parcel are sold when the land is + purchsaed + + + Allow this parcel to be published on the web + + + The information for this parcel is mature content + + + The media URL is an HTML page + + + The media URL is a raw HTML string + + + Restrict foreign object pushes + + + Ban all non identified/transacted avatars + + + Allow group-owned scripts to run + + + Allow object creation by group members or group + objects + + + Allow all objects to enter this parcel + + + Only allow group and owner objects to enter this parcel + + + Voice Enabled on this parcel + + + Use Estate Voice channel for Voice on this parcel + + + Deny Age Unverified Users + + + + Parcel ownership status + + + + Placeholder + + + Parcel is leased (owned) by an avatar or group + + + Parcel is in process of being leased (purchased) by an avatar or group + + + Parcel has been abandoned back to Governor Linden + + + + Category parcel is listed in under search + + + + No assigned category + + + Linden Infohub or public area + + + Adult themed area + + + Arts and Culture + + + Business + + + Educational + + + Gaming + + + Hangout or Club + + + Newcomer friendly + + + Parks and Nature + + + Residential + + + Shopping + + + Not Used? + + + Other + + + Not an actual category, only used for queries + + + + Type of teleport landing for a parcel + + + + Unset, simulator default + + + Specific landing point set for this parcel + + + No landing point set, direct teleports enabled for + this parcel + + + + Parcel Media Command used in ParcelMediaCommandMessage + + + + Stop the media stream and go back to the first frame + + + Pause the media stream (stop playing but stay on current frame) + + + Start the current media stream playing and stop when the end is reached + + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play + + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. + + + Specifies the movie URL (254 characters max) + + + Specifies the time index at which to begin playing + + + Specifies a single agent to apply the media command to + + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. + + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. + + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working + + + Sets a description for the media being displayed (1.19.1 RC0 and later only). + + + + Some information about a parcel of land returned from a DirectoryManager search + + + + Global Key of record + + + Parcel Owners + + + Name field of parcel, limited to 128 characters + + + Description field of parcel, limited to 256 characters + + + Total Square meters of parcel + + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + + True of parcel is in Mature simulator + + + Grid global X position of parcel + + + Grid global Y position of parcel + + + Grid global Z position of parcel (not used) + + + Name of simulator parcel is located in + + + Texture of parcels display picture + + + Float representing calculated traffic based on time spent on parcel by avatars + + + Sale price of parcel (not used) + + + Auction ID of parcel + + + + Parcel Media Information + + + + A byte, if 0x1 viewer should auto scale media to fit object + + + A boolean, if true the viewer should loop the media + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A string which contains the mime type of the media + + + + Parcel of land, a portion of virtual real estate in a simulator + + + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + + Deprecated, Value appears to always be 0 + + + Simulator-local ID of this parcel + + + UUID of the owner of this parcel + + + Whether the land is deeded to a group or not + + + + + + Date land was claimed + + + Appears to always be zero + + + This field is no longer used + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + Total parcel land area + + + + + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel + + + Maximum number of primitives this parcel supports + + + Total number of primitives on this parcel + + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual + + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. + + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + + Autoreturn value in minutes for others' objects + + + + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + Parcel Name + + + Parcel Description + + + URL For Music Stream + + + + + + Price for a temporary pass + + + How long is pass valid for + + + + + + Key of authorized buyer + + + Key of parcel snapshot + + + The landing point location + + + The landing point LookAt + + + The type of landing enforced from the enum + + + + + + + + + + + + Access list of who is whitelisted on this + parcel + + + Access list of who is blacklisted on this + parcel + + + TRUE of region denies access to age unverified users + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + A struct containing media details + + + + Displays a parcel object in string format + + string containing key=value pairs of a parcel object + + + + Defalt constructor + + Local ID of this parcel + + + + Update the simulator with any local changes to this Parcel object + + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not + + + + Set Autoreturn time + + Simulator to send the update to + + + + Parcel (subdivided simulator lots) subsystem + + + + + Parcel Accesslist + + + + Agents + + + + + + Flags for specific entry in white/black lists + + + + Owners of primitives on parcel + + + + Prim Owners + + + True of owner is group + + + Total count of prims owned by OwnerID + + + true of OwnerID is currently online and is not a group + + + The date of the most recent prim left by OwnerID + + + + Called once parcel resource usage information has been collected + + Indicates if operation was successfull + Parcel resource usage information + + + The event subscribers. null if no subcribers + + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a request + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds to a Parcel Update request + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + + Default constructor + + A reference to the GridClient object + + + + Request basic information for a single parcel + + Simulator-local ID of the parcel + + + + Request properties of a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests + + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + + + + + Request properties of parcels using a bounding box selection + + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request + + + + Request the dwell value for a parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + + + + Send a request to Purchase a parcel of land + + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + + + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID + + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups + + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID + + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return + + + + Subdivide (split) a parcel + + + + + + + + + + Join two parcels of land creating a single parcel + + + + + + + + + + Get a parcels LocalID + + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at + + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event + + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target + + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze + + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel + + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise + + + + Retrieves information on resources used by the parcel + + UUID of the parcel + Should per object resource usage be requested + Callback invoked when the request is complete + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Contains a parcels dwell data returned from the simulator in response to an + + + Get the global ID of the parcel + + + Get the simulator specific ID of the parcel + + + Get the calculated dwell + + + + Construct a new instance of the ParcelDwellReplyEventArgs class + + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel + + + Contains basic parcel information data returned from the + simulator in response to an request + + + Get the object containing basic parcel info + + + + Construct a new instance of the ParcelInfoReplyEventArgs class + + The object containing basic parcel info + + + Contains basic parcel information data returned from the simulator in response to an request + + + Get the simulator the parcel is located in + + + Get the object containing the details + If Result is NoData, this object will not contain valid data + + + Get the result of the request + + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel + + + Get the user assigned ID used to correlate a request with + these results + + + TODO: + + + + Construct a new instance of the ParcelPropertiesEventArgs class + + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: + + + Contains blacklist and whitelist data returned from the simulator in response to an request + + + Get the simulator the parcel is located in + + + Get the user assigned ID used to correlate a request with + these results + + + Get the simulator specific ID of the parcel + + + TODO + + + Get the list containing the white/blacklisted agents for the parcel + + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel + + + Contains blacklist and whitelist data returned from the + simulator in response to an request + + + Get the simulator the parcel is located in + + + Get the list containing prim ownership counts + + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts + + + Contains the data returned when all parcel data has been retrieved from a simulator + + + Get the simulator the parcel data was retrieved from + + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Contains the data returned when a request + + + Get the simulator the parcel data was retrieved from + + + Get the list of primitive IDs + + + true if the list is clean and contains the information + only for a given request + + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request + + + Contains data when the media data for a parcel the avatar is on changes + + + Get the simulator the parcel media data was updated in + + + Get the updated media information + + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information + + + Contains the media command for a parcel the agent is currently on + + + Get the simulator the parcel media command was issued in + + + + + + + + + Get the media command that was sent + + + + + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + The media command that was sent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Permissions for control of object media + + + + + Style of cotrols that shold be displayed to the user + + + + + Class representing media data for a single face + + + + Is display of the alternative image enabled + + + Should media auto loop + + + Shoule media be auto played + + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + + + Serialize to OSD + + OSDMap with the serialized data + + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object + + + + Particle system specific enumerators, flags and methods. + + + + + Current version of the media data for the prim + + + + + Array of media entries indexed by face number + + + + + Complete structure for the particle system + + + + + Particle source pattern + + + + None + + + Drop particles from source position with no force + + + "Explode" particles in all directions + + + Particles shoot across a 2D area + + + Particles shoot across a 3D Cone + + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + + + Particle Data Flags + + + + None + + + Interpolate color and alpha from start to end + + + Interpolate scale from start to end + + + Bounce particles off particle sources Z height + + + velocity of particles is dampened toward the simulators wind + + + Particles follow the source + + + Particles point towards the direction of source's velocity + + + Target of the particles + + + Particles are sent in a straight line + + + Particles emit a glow + + + used for point/grab/touch + + + continuous ribbon particle + + + particle data contains glow + + + particle data contains blend functions + + + + Particle Flags Enum + + + + None + + + Acceleration and velocity for particles are + relative to the object rotation + + + Particles use new 'correct' angle parameters + + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer + + + pattern of particles + + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds + + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted + + + A in radians that specifies where particles will not be created + + + A in radians that specifies where particles will be created + + + A representing the number of seconds between burts. + + + A representing the number of meters + around the center of the source where particles will be created. + + + A representing in seconds, the minimum speed between bursts of new particles + being emitted + + + A representing in seconds the maximum speed of new particles being emitted. + + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted + + + The Key of the texture displayed on the particle + + + The Key of the specified target object or avatar particles will follow + + + Flags of particle from + + + Max Age particle system will emit particles for + + + The the particle has at the beginning of its lifecycle + + + The the particle has at the ending of its lifecycle + + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the start glow value + Minimum value is 0, maximum value is 1 + + + A that represents the end glow value + Minimum value is 0, maximum value is 1 + + + OpenGL blend function to use at particle source + + + OpenGL blend function to use at particle destination + + + + Can this particle system be packed in a legacy compatible way + + True if the particle system doesn't use new particle system features + + + + Decodes a byte[] array into a ParticleSystem Object + + ParticleSystem object + Start position for BitPacker + + + + Generate byte[] array from particle data + + Byte array + + + + + + + Parameters used to construct a visual representation of a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment point to an avatar + + + + + + + + + + + + + + + + Calculdates hash code for prim construction data + + The has + + + + Information on the flexible properties of a primitive + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the light properties of a primitive + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the light properties of a primitive as texture map + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the sculpt properties of a sculpted primitive + + + + + Render inside out (inverts the normals). + + + + + Render an X axis mirror of the sculpty. + + + + + Default constructor + + + + + + + + + + + + Extended properties to describe an object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + Set the properties that are set in an ObjectPropertiesFamily packet + + that has + been partially filled by an ObjectPropertiesFamily packet + + + + Describes physics attributes of the prim + + + + Primitive's local ID + + + Density (1000 for normal density) + + + Friction + + + Gravity multiplier (1 for normal gravity) + + + Type of physics representation of this primitive in the simulator + + + Restitution + + + + Creates PhysicsProperties from OSD + + OSDMap with incoming data + Deserialized PhysicsProperties object + + + + Serializes PhysicsProperties to OSD + + OSDMap with serialized PhysicsProperties data + + + + + + + + + + + + + + + + + + + + + Foliage type for this primitive. Only applicable if this + primitive is foliage + + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the owner if audio or a particle system is + active + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Objects physics engine propertis + + + Extra data about primitive + + + Indicates if prim is attached to an avatar + + + Number of clients referencing this prim + + + Uses basic heuristics to estimate the primitive shape + + + + Default constructor + + + + + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values + + Floating point parameter to pack + Signed eight bit value containing the packed parameter + + + + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values + + Signed eight bit value to unpack + Unpacked floating point value + + + + Texture animation mode + + + + Disable texture animation + + + Enable texture animation + + + Loop when animating textures + + + Animate in reverse direction + + + Animate forward then reverse + + + Slide texture smoothly instead of frame-stepping + + + Rotate texture instead of using frames + + + Scale texture instead of using frames + + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the future this will specify whether a webpage is + attached to this face + + + + + + + + + + Contains the definition for individual faces + + + + + + + + + + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces + + + + + + + + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture + + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face + + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes + + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Controls the texture animation of a particular prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of bump-mapping applied to a face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The level of shininess applied to a face + + + + + + + + + + + + + + + + + The texture mapping style used for a face + + + + + + + + + + + + + + + + + Flags in the TextureEntry block that describe which properties are + set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically + + + Main grid login server + + + Beta grid login server + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + + Maximum number of HTTP connections to open to a particular endpoint. + + + An endpoint is defined as a commbination of network address and port. This is used for Caps. + This is a static variable which applies to all instances. + + + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. + + + + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. + + + + + Use Caps for fetching inventory where available + + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + + Primitives will be reused when falling in/out of interest list (and shared between clients) + prims returning to interest list do not need re-requested + Helps also in not re-requesting prim.Properties for code that checks for a Properties == null per client + + + + + Pool parcel data between clients (saves on requesting multiple times when all clients may need it) + + + + + How long to preserve cached data when no client is connected to a simulator + The reason for setting it to something like 2 minutes is in case a client + is running back and forth between region edges or a sim is comming and going + + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. + + + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list + + + + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. + + + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + + + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + + Download textures using GetTexture capability when available + + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances + + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline + + + + + Get or set the minimum log level to output to the console by default + + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net + + + + Attach avatar names to log messages + + + Log packet retransmission info + + + Log disk cache misses and other info + + + Constructor + Reference to a GridClient object + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Simulator (region) properties + + + + No flags set + + + Agents can take damage and be killed + + + Landmarks can be created here + + + Home position can be set in this sim + + + Home position is reset when an agent teleports away + + + Sun does not move + + + Allows private parcels (ie. banlines) + + + Disable heightmap alterations (agents can still plant foliage) + + + Land cannot be released, sold, or purchased + + + All content is wiped nightly + + + Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) + + + Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. + + + Region does not update agent prim interest lists. Internal debugging option. + + + No collision detection for non-agent objects + + + No scripts are ran + + + All physics processing is turned off + + + Region can be seen from other regions on world map. (Legacy world map option?) + + + Region can be seen from mainland on world map. (Legacy world map option?) + + + Agents not explicitly on the access list can visit the region. + + + Traffic calculations are not run across entire region, overrides parcel settings. + + + Flight is disabled (not currently enforced by the sim) + + + Allow direct (p2p) teleporting + + + Estate owner has temporarily disabled scripting + + + Restricts the usage of the LSL llPushObject function, applies to whole region. + + + Deny agents with no payment info on file + + + Deny agents with payment info on file + + + Deny agents who have made a monetary transaction + + + Parcels within the region may be joined or divided by anyone, not just estate owners/managers. + + + Abuse reports sent from within this region are sent to the estate owner defined email. + + + Region is Voice Enabled + + + Removes the ability from parcel owners to set their parcels to show in search. + + + Deny agents who have not been age verified from entering the region. + + + + Region protocol flags + + + + Nothing special + + + Region supports Server side Appearance + + + Viewer supports Server side Appearance + + + + Access level for a simulator + + + + Unknown or invalid access level + + + Trial accounts allowed + + + PG rating + + + Mature rating + + + Adult rating + + + Simulator is offline + + + Simulator does not exist + + + + + + + + + Simulator Statistics + + + + Total number of packets sent by this simulator to this agent + + + Total number of packets received by this simulator to this agent + + + Total number of bytes sent by this simulator to this agent + + + Total number of bytes received by this simulator to this agent + + + Time in seconds agent has been connected to simulator + + + Total number of packets that have been resent + + + Total number of resent packets recieved + + + Total number of pings sent to this simulator by this agent + + + Total number of ping replies sent to this agent by this simulator + + + + Incoming bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + + Outgoing bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + Time last ping was sent + + + ID of last Ping sent + + + + + + + + + Current time dilation of this simulator + + + Current Frames per second of simulator + + + Current Physics frames per second of simulator + + + + + + + + + + + + + + + + + + + + + + + + + + + Total number of objects Simulator is simulating + + + Total number of Active (Scripted) objects running + + + Number of agents currently in this simulator + + + Number of agents in neighbor simulators + + + Number of Active scripts running in this simulator + + + + + + + + + + + + Number of downloads pending + + + Number of uploads pending + + + + + + + + + Number of local uploads pending + + + Unacknowledged bytes in queue + + + A public reference to the client that this Simulator object + is attached to + + + A Unique Cache identifier for this simulator + + + The capabilities for this simulator + + + + + + The current version of software this simulator is running + + + + + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if your agent has Estate Manager rights on this region + + + + + + + + + + + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + + Dallas + Chandler + SF + + + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + + Mainland / Full Region (Sku: 023) + Estate / Full Region (Sku: 024) + Estate / Openspace (Sku: 027) + Estate / Homestead (Sku: 029) + Mainland / Homestead (Sku: 129) (Linden Owned) + Mainland / Linden Homes (Sku: 131) + + + + + The billing product SKU + Known values are: + + 023 Mainland / Full Region + 024 Estate / Full Region + 027 Estate / Openspace + 029 Estate / Homestead + 129 Mainland / Homestead (Linden Owned) + 131 Linden Homes / Full Region + + + + + + Flags indicating which protocols this region supports + + + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers + + + + A thread-safe dictionary containing avatars in a simulator + + + + + A thread-safe dictionary containing primitives in a simulator + + + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + + + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) + + + + Is it safe to send agent updates to this sim + AgentMovementComplete message received + + + + The IP address and port of the server + + + Whether there is a working connection to the simulator or + not + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Indicates if UDP connection to the sim is fully established + + + Used internally to track sim disconnections + + + Event that is triggered when the simulator successfully + establishes a connection + + + Whether this sim is currently connected or not. Hooked up + to the property Connected + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Sequence numbers of packets we've received + (for duplicate checking) + + + Packets we sent out that need ACKs from the simulator + + + Sequence number for pause/resume + + + Indicates if UDP connection to the sim is fully established + + + + + + Reference to the GridClient object + IPEndPoint of the simulator + handle of the simulator + + + + Called when this Simulator object is being destroyed + + + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure + + + + Initiates connection to the simulator + + Should we block until ack for this packet is recieved + + + + Disconnect from this simulator + + + + + Instructs the simulator to stop sending update (and possibly other) packets + + + + + Instructs the simulator to resume sending update packets (unpause) + + + + + Retrieve the terrain height at a given coordinate + + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false + + + + Sends a packet + + Packet to be sent + + + + + + + + + Returns Simulator Name as a String + + + + + + + + + + + + + + + + + + + Sends out pending acknowledgements + + Number of ACKs sent + + + + Resend unacknowledged packets + + + + + Simulator handle + + + + + Number of GridClients using this datapool + + + + + Time that the last client disconnected from the simulator + + + + + The cache of prims used and unused in this simulator + + + + + Shared parcel info only when POOL_PARCEL_DATA == true + + + + + + + + + The event subscribers, null of no subscribers + + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + sound + + + The event subscribers, null of no subscribers + + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + The event subscribers, null of no subscribers + + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance + + + + Plays a sound in the current region at full volume from avatar position + + UUID of the sound to be played + + + + Plays a sound in the current region at full volume + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + + + + Plays a sound in the current region + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Plays a sound in the specified sim + + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Play a sound asset + + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment + + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + + + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the volume level + + + Get the + + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The volume level + The + + + Provides data for the event + The event occurs when an attached sound + changes its volume level + + + Simulator where the event originated + + + Get the ID of the Object + + + Get the volume level + + + + Construct a new instance of the AttachedSoundGainChangedEventArgs class + + Simulator where the event originated + The ID of the Object + The new volume level + + + Provides data for the event + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the ID of the objects parent + + + Get the volume level + + + Get the regionhandle + + + Get the source position + + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + + Construct a new instance of the PreloadSoundEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + + + + pre-defined built in sounds + + + + + + + + + + + + + + + + + + + + + + + + + + + + coins + + + cash register bell + + + + + + + + + rubber + + + plastic + + + flesh + + + wood splintering? + + + glass break + + + metal clunk + + + whoosh + + + shake + + + summon + + + ding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A dictionary containing all pre-defined sounds + + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound + + + X position of this patch + + + Y position of this patch + + + A 16x16 array of floats holding decompressed layer data + + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 + + + The event subscribers. null if no subcribers + + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Raised when the simulator responds sends + + + + Default constructor + + + + + Simulator from that sent tha data + + + Sim coordinate of the patch + + + Sim coordinate of the patch + + + Size of tha patch + + + Heightmap for the patch + + + + The current status of a texture request as it moves through the pipeline or final result of a texture request. + + + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline + + + A request that has been added to the pipeline and the request packet + has been sent to the simulator + + + A request that has received one or more packets back from the simulator + + + A request that has received all packets back from the simulator + + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received + + + The texture request was aborted by request of the agent + + + The simulator replied to the request that it was not able to find the requested texture + + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. + + + + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + + This class makes full use of the internal + system for full texture downloads. + + + + A request task containing information and status of a request as it is processed through the + + + + The current which identifies the current status of the request + + + The Unique Request ID, This is also the Asset ID of the texture being requested + + + The cancellation token for the request. + + + The ImageType of the request. + + + The callback to fire when the request is complete, will include + the and the + object containing the result data + + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. + + + An object that maintains the data of an request thats in-process. + + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled + + + Holds the reference to the client object + + + Maximum concurrent texture requests allowed at a time + + + The primary thread which manages the requests. + + + The cancellation token for the TexturePipeline and all child tasks. + + + true if the TexturePipeline is currently running + + + A refresh timer used to increase the priority of stalled requests + + + Current number of pending and in-process transfers + + + + Default constructor, Instantiates a new copy of the TexturePipeline class + + Reference to the instantiated object + + + + Initialize callbacks required for the TexturePipeline to operate + + + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download + + + + Cancel a pending or in process texture request + + The texture assets unique ID + + + + Master Download Thread, Queues up downloads in the threadpool + + + + + The worker thread that sends the request and handles timeouts + + A object containing the request details + + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data + + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data + + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data + + + + + + + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on + + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to + + + + + + + + + + + + + + + + + + Size of the byte array used to store raw packet data + + + Raw packet data buffer + + + Length of the data to transmit + + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for receiving a packet + + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data + + + + Create an allocated UDP packet buffer for sending a packet + + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + The actual buffer to use for packet data (no allocation). + + + + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + + Handle returned from successful Connector ‘create’ request + User's account name + User's account password + Values may be “AutoAnswer” or “VerifyAnswer” + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be “on state change”, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 – Never + 5 – 10 times per second + 10 – 5 times per second + 50 – 1 time per second + 100 – on participant state change (this is the default) + false + + + + + This is used to logout a user session. It should only be called with a valid AccountHandle. + + Handle returned from successful Connector ‘login’ request + + + + + This is used to get a list of audio devices that can be used for capture (input) of voice. + + + + + + This is used to get a list of audio devices that can be used for render (playback) of voice. + + + + + This command is used to select the render device. + + The name of the device as returned by the Aux.GetRenderDevices command. + + + + This command is used to select the capture device. + + The name of the device as returned by the Aux.GetCaptureDevices command. + + + + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. + + (unused but required) + + + + + This command is used to stop the audio capture process. + + + + + + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. + + the microphone volume (-100 to 100 inclusive) + + + + + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. + + the speaker volume (-100 to 100 inclusive) + + + + + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources + + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + + + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources + + Handle returned from successful Connector ‘create’ request + + + + Mute or unmute the microphone + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Mute or unmute the speaker + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Set microphone volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Set local speaker volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + List of audio input devices + + + + + List of audio output devices + + + + + Start up the Voice service. + + + + + Handle miscellaneous request status + + + + ///If something goes wrong, we log it. + + + + Cleanup oject resources + + + + + Request voice cap when changing regions + + + + + Handle a change in session state + + + + + Close a voice session + + + + + + Locate a Session context from its handle + + Creates the session context if it does not exist. + + + + Handle completion of main voice cap request. + + + + + + + + Daemon has started so connect to it. + + + + + The daemon TCP connection is open. + + + + + Handle creation of the Connector. + + + + + Handle response to audio output device query + + + + + Handle response to audio input device query + + + + + Set audio test mode + + + + + Set voice channel for new parcel + + + + + + Request info from a parcel capability Uri. + + + + + + Receive parcel voice cap + + + + + + + + Tell Vivox where we are standing + + This has to be called when we move or turn. + + + + Start and stop updating out position. + + + + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + + + + + Constructor for default logging settings + + + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + + Event for most mundane request reposnses. + + + + Response to Connector.Create request + + + Response to Aux.GetCaptureDevices request + + + Response to Aux.GetRenderDevices request + + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter + + + Response to Account.Login request + + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another + + + + Starts a thread that keeps the daemon running + + + + + + + Stops the daemon and the thread keeping it running + + + + + + + + + + + + + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an ‘outbound’ call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. + + Handle returned from successful Connector ‘create’ request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is + “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final “=” character stripped off. + + + + + + + Used to accept a call + + SessionHandle such as received from SessionNewEvent + "default" + + + + + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. + + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + + + + This command is used to stop the audio render process. + + The fully qualified path to the sound file issued in the start render command. + + + + + This is used to ‘end’ an established session (i.e. hang-up or disconnect). + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + + + + Set the combined speaking and listening position in 3D space. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + Speaking position + Listening position + + + + + Set User Volume for a particular user. Does not affect how other users hear that user. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume + + + + Positional vector of the users position + + + Velocity vector of the position + + + At Orientation (X axis) of the position + + + Up Orientation (Y axis) of the position + + + Left Orientation (Z axis) of the position + + + + Extract the avatar UUID encoded in a SIP URI + + + + + + + Represents a single Voice Session to the Vivox service. + + + + + Close this session. + + + + + Look up an existing Participants in this session + + + + + + + + + + + + + + + + + + + + + Operation to apply when applying color to texture + + + + + Information needed to translate visual param value to RGBA color + + + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors + + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + + + + Stregth of the alpha to apply + + + File containing the alpha channel + + + Skip blending if parameter value is 0 + + + Use miltiply insted of alpha blending + + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending + + + + A single visual characteristic of an avatar mesh, such as eyebrow height + + + + Index of this visual param + + + Internal name + + + Group ID this parameter belongs to + + + Name of the wearable this parameter belongs to + + + Displayable label of this characteristic + + + Displayable label for the minimum value of this characteristic + + + Displayable label for the maximum value of this characteristic + + + Default value + + + Minimum value + + + Maximum value + + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information + + + + Holds the Params array of all the avatar appearance parameters + + + + + + + + + + Delegate to wrap another delegate and its arguments + + + + + + + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate + + + + + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper + + + + + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + + + + + + Invokes the wrapped delegate synchronously + + + + + + + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + + + + + diff --git a/libremetaverse-core/LibreMetaverse/LibreMetaverse.csproj b/libremetaverse-core/LibreMetaverse/LibreMetaverse.csproj new file mode 100644 index 0000000..c527460 --- /dev/null +++ b/libremetaverse-core/LibreMetaverse/LibreMetaverse.csproj @@ -0,0 +1,98 @@ + + + Local + 14.0.25123 + 2.0 + {27C70F3A-0000-0000-0000-000000000000} + Debug + LibreMetaverse + JScript + Grid + IE50 + false + Library + LibreMetaverse + true + netcoreapp3.1 + Debug;Release;DockerBuild + + + True + 285212672 + False + TRACE;DEBUG + True + 4096 + False + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + True + 285212672 + False + TRACE + LibreMetaverse.XML + False + 4096 + True + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + none + Linux + false + false + false + linux-x64 + + + + + + + + + + + + + + + + + + + True + + + + + + + + + 1.2.0 + Sjofn LLC, OpenMetaverse Developers + LibreMetaverse + Copyright © OpenMetaverse Developers 2008, 2017. Copyright © Sjofn LLC 2018-2019. All rights reserved. + LICENSE.txt + https://github.com/cinderblocks/libremetaverse + + + true + + \ No newline at end of file diff --git a/libremetaverse-core/LibreMetaverse/LibreMetaverse.nuspec b/libremetaverse-core/LibreMetaverse/LibreMetaverse.nuspec new file mode 100644 index 0000000..d4a4903 --- /dev/null +++ b/libremetaverse-core/LibreMetaverse/LibreMetaverse.nuspec @@ -0,0 +1,15 @@ + + + + LibreMetaverse + $version$ + Cinder Biscuits + Cinder Biscuits + https://github.com/cinderblocks/libremetaverse/blob/master/LICENSE.txt + https://github.com/cinderblocks/libremetaverse + false + LibreMetaverse allows your code to read and work with data send across a SecondLife, Halcyon, OpenSimulator, or related connection. + Copyright 2017 + LMV OMV OpenMetaverse OpenSim OpenSimulator Halcyon OpenMetaverseFoundation VirtualWorld Radegast SecondLife + + \ No newline at end of file diff --git a/libremetaverse-core/Libremetaverse.types/CRC32.cs b/libremetaverse-core/LibreMetaverseTypes/CRC32.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/CRC32.cs rename to libremetaverse-core/LibreMetaverseTypes/CRC32.cs diff --git a/libremetaverse-core/Libremetaverse.types/Color4.cs b/libremetaverse-core/LibreMetaverseTypes/Color4.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Color4.cs rename to libremetaverse-core/LibreMetaverseTypes/Color4.cs diff --git a/libremetaverse-core/Libremetaverse.types/DoubleDictionary.cs b/libremetaverse-core/LibreMetaverseTypes/DoubleDictionary.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/DoubleDictionary.cs rename to libremetaverse-core/LibreMetaverseTypes/DoubleDictionary.cs diff --git a/libremetaverse-core/Libremetaverse.types/Enums.cs b/libremetaverse-core/LibreMetaverseTypes/Enums.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Enums.cs rename to libremetaverse-core/LibreMetaverseTypes/Enums.cs diff --git a/libremetaverse-core/Libremetaverse.types/EnumsPrimitive.cs b/libremetaverse-core/LibreMetaverseTypes/EnumsPrimitive.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/EnumsPrimitive.cs rename to libremetaverse-core/LibreMetaverseTypes/EnumsPrimitive.cs diff --git a/libremetaverse-core/Libremetaverse.types/ExpiringCache.cs b/libremetaverse-core/LibreMetaverseTypes/ExpiringCache.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/ExpiringCache.cs rename to libremetaverse-core/LibreMetaverseTypes/ExpiringCache.cs diff --git a/libremetaverse-core/LibreMetaverseTypes/LibreMetaverse.Types.csproj b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverse.Types.csproj new file mode 100644 index 0000000..cf81120 --- /dev/null +++ b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverse.Types.csproj @@ -0,0 +1,85 @@ + + + Local + 14.0.25123 + 2.0 + {B37B02AD-0000-0000-0000-000000000000} + Debug + LibreMetaverse.Types + JScript + Grid + IE50 + false + netcoreapp3.1 + Debug;Release;DockerBuild + Library + LibreMetaverse + true + + + True + 285212672 + False + TRACE;DEBUG + True + 4096 + False + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + none + Linux + false + false + false + linux-x64 + + + True + 285212672 + False + TRACE + LibreMetaverseTypes.XML + False + 4096 + True + ..\bin\ + False + False + False + 4 + False + 1591,1574,0419 + AnyCPU + + + + + + + True + + + + + + + + + 1.2.0 + Sjofn LLC, Openmetaverse Developers + Copyright © OpenMetaverse Developers 2008, 2017. Copyright © Sjofn LLC. All rights reserved. + LICENSE.txt + https://github.com/cinderblocks/libremetaverse + + + true + + \ No newline at end of file diff --git a/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.XML b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.XML new file mode 100644 index 0000000..4a56938 --- /dev/null +++ b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.XML @@ -0,0 +1,2583 @@ + + + + LibreMetaverse.Types + + + + + An 8-bit color structure including an alpha channel + + + + Red + + + Green + + + Blue + + + Alpha + + + + + + + + + + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + + + + Returns the raw bytes for this vector + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A + + + + Copy constructor + + Color to copy + + + + IComparable.CompareTo implementation + + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Serializes this color into four bytes in a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Ensures that values are in range 0-1 + + + + + Create an RGB color from a hue, saturation, value combination + + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) + + + + Performs linear interpolation between two colors + + Color to start at + Color to end at + Amount to interpolate + The interpolated color + + + A Color4 with zero RGB values and fully opaque (alpha 1.0) + + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + + + Attribute class that allows extra attributes to be attached to ENUMs + + + + Text used when presenting ENUM to user + + + Default initializer + + + Text used when presenting ENUM to user + + + + The different types of grid assets + + + + Unknown asset type + + + Texture asset, stores in JPEG2000 J2C stream format + + + Sound asset + + + Calling card for another avatar + + + Link to a location in world + + + Collection of textures and parameters that can be worn by an avatar + + + Primitive that can contain textures, sounds, scripts and more + + + Notecard asset + + + Holds a collection of inventory items. "Category" in the Linden viewer + + + Linden scripting language script + + + LSO bytecode for a script + + + Uncompressed TGA texture + + + Collection of textures and shape parameters that can be worn + + + Uncompressed sound + + + Uncompressed TGA non-square image, not to be used as a texture + + + Compressed JPEG non-square image, not to be used as a texture + + + Animation + + + Sequence of animations, sounds, chat, and pauses + + + Simstate file + + + Asset is a link to another inventory item + + + Asset is a link to another inventory folder + + + Linden mesh format + + + widget? + + + Person? + + + + The different types of folder. + + + + None folder type + + + Texture folder type + + + Sound folder type + + + Calling card folder type + + + Landmark folder type + + + Clothing folder type + + + Object folder type + + + Notecard folder type + + + The root folder type + + + Non-conformant OpenSim root folder type + + + LSLText folder + + + Bodyparts folder + + + Trash folder + + + Snapshot folder + + + Lost And Found folder + + + Animation folder + + + Gesture folder + + + Favorites folder + + + Ensemble beginning range + + + Ensemble ending range + + + Current outfit folder + + + Outfit folder + + + My outfits folder + + + Mesh folder + + + Marketplace direct delivery inbox ("Received Items") + + + Marketplace direct delivery outbox + + + Basic root folder + + + Marketplace listings folder + + + Marketplace stock folder + + + Marketplace version. We *never* actually create folder of this type + + + Hypergrid Suitcase folder + + + + Inventory Item Types, eg Script, Notecard, Folder, etc + + + + Unknown + + + Texture + + + Sound + + + Calling Card + + + Landmark + + + Notecard + + + + + + Folder + + + + + + an LSL Script + + + + + + + + + + + + + + + + + + + + + + Item Sale Status + + + + Not for sale + + + The original is for sale + + + Copies are for sale + + + The contents of the object are for sale + + + + Types of wearable assets + + + + Body shape + + + Skin textures and attributes + + + Hair + + + Eyes + + + Shirt + + + Pants + + + Shoes + + + Socks + + + Jacket + + + Gloves + + + Undershirt + + + Underpants + + + Skirt + + + Alpha mask to hide parts of the avatar + + + Tattoo + + + Physics + + + Universal + + + Invalid wearable asset + + + + Identifier code for primitive types + + + + None + + + A Primitive + + + A Avatar + + + Linden grass + + + Linden tree + + + A primitive that acts as the source for a particle stream + + + A Linden tree + + + + Primary parameters for primitives such as Physics Enabled or Phantom + + + + Deprecated + + + Whether physics are enabled for this object + + + + + + + + + + + + + + + + + + + + + Whether this object contains an active touch script + + + + + + Whether this object can receive payments + + + Whether this object is phantom (no collisions) + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + Server flag, will not be sent to clients. Specifies that + the object is destroyed when it touches a simulator edge + + + Server flag, will not be sent to clients. Specifies that + the object will be returned to the owner's inventory when it + touches a simulator edge + + + Server flag, will not be sent to clients. + + + Server flag, will not be sent to client. Specifies that + the object is hovering/flying + + + + + + + + + + + + + + + + Sound flags for sounds attached to primitives + + + + + + + + + + + + + + + + + + + + + + + + + + Material type for a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used in a helper function to roughly determine prim shape + + + + + Extra parameters for primitives, these flags are for features that have + been added after the original ObjectFlags that has all eight bits + reserved already + + + + Whether this object has flexible parameters + + + Whether this object has light parameters + + + Whether this object is a sculpted prim + + + Whether this object is a light image map + + + Whether this object is a mesh + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attachment points for objects on avatar bodies + + + Both InventoryObject and InventoryAttachment types can be attached + + + + Right hand if object was not previously attached + + + Chest + + + Skull + + + Left shoulder + + + Right shoulder + + + Left hand + + + Right hand + + + Left foot + + + Right foot + + + Spine + + + Pelvis + + + Mouth + + + Chin + + + Left ear + + + Right ear + + + Left eyeball + + + Right eyeball + + + Nose + + + Right upper arm + + + Right forearm + + + Left upper arm + + + Left forearm + + + Right hip + + + Right upper leg + + + Right lower leg + + + Left hip + + + Left upper leg + + + Left lower leg + + + Stomach + + + Left pectoral + + + Right pectoral + + + HUD Center position 2 + + + HUD Top-right + + + HUD Top + + + HUD Top-left + + + HUD Center + + + HUD Bottom-left + + + HUD Bottom + + + HUD Bottom-right + + + Neck + + + Avatar Center + + + Left Ring Finger + + + Right Ring Finger + + + Tail Base + + + Tail Tip + + + Left Wing + + + Right Wing + + + Jaw + + + Alt Left Ear + + + Alt Right Ear + + + Alt Left Eye + + + Alt Right Eye + + + Tongue + + + Groin + + + Left Hind Foot + + + Right Hind Foot + + + + Tree foliage types + + + + Pine1 tree + + + Oak tree + + + Tropical Bush1 + + + Palm1 tree + + + Dogwood tree + + + Tropical Bush2 + + + Palm2 tree + + + Cypress1 tree + + + Cypress2 tree + + + Pine2 tree + + + Plumeria + + + Winter pinetree1 + + + Winter Aspen tree + + + Winter pinetree2 + + + Eucalyptus tree + + + Fern + + + Eelgrass + + + Sea Sword + + + Kelp1 plant + + + Beach grass + + + Kelp2 plant + + + + Grass foliage types + + + + + + + + + + + + + + + + + + + + + + + Action associated with clicking on an object + + + + Touch object + + + Sit on object + + + Purchase object or contents + + + Pay the object + + + Open task inventory + + + Play parcel media + + + Open parcel media + + + + Type of physics representation used for this prim in the simulator + + + + Use prim physics form this object + + + No physics, prim doesn't collide + + + Use convex hull represantion of this prim + + + For thread safety + + + For thread safety + + + + Purges expired objects from the cache. Called automatically by the purge timer. + + + + + Convert this matrix to euler rotations + + X euler angle + Y euler angle + Z euler angle + + + + Convert this matrix to a quaternion rotation + + A quaternion representation of this rotation matrix + + + + Construct a matrix from euler rotation values in radians + + X euler angle in radians + Y euler angle in radians + Z euler angle in radians + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix + + + X value + + + Y value + + + Z value + + + W value + + + + Build a quaternion from normalized float values + + X value from -1.0 to 1.0 + Y value from -1.0 to 1.0 + Z value from -1.0 to 1.0 + + + + Constructor, builds a quaternion object from a byte array + + Byte array containing four four-byte floats + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. + + + + Normalizes the quaternion + + + + + Builds a quaternion object from a byte array + + The source byte array + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. + + + + Normalize this quaternion and serialize it to a byte array + + A 12 byte array containing normalized X, Y, and Z floating + point values in order using little endian byte ordering + + + + Writes the raw bytes for this quaternion to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Convert this quaternion to euler angles + + X euler angle + Y euler angle + Z euler angle + + + + Convert this quaternion to an angle around an axis + + Unit vector describing the axis + Angle around the axis, in radians + + + + Returns the conjugate (spatial inverse) of a quaternion + + + + + Build a quaternion from an axis and an angle of rotation around + that axis + + + + + Build a quaternion from an axis and an angle of rotation around + that axis + + Axis of rotation + Angle of rotation + + + + Creates a quaternion from a vector containing roll, pitch, and yaw + in radians + + Vector representation of the euler angles in + radians + Quaternion representation of the euler angles + + + + Creates a quaternion from roll, pitch, and yaw euler angles in + radians + + X angle in radians + Y angle in radians + Z angle in radians + Quaternion representation of the euler angles + + + + Conjugates and renormalizes a vector + + + + + Spherical linear interpolation between two quaternions + + + + + Get a string representation of the quaternion elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the quaternion + + + A quaternion with a value of 0,0,0,1 + + + + A hierarchical token bucket for bandwidth throttling. See + http://en.wikipedia.org/wiki/Token_bucket for more information + + + + Parent bucket to this bucket, or null if this is a root + bucket + + + Size of the bucket in bytes. If zero, the bucket has + infinite capacity + + + Rate that the bucket fills, in bytes per millisecond. If + zero, the bucket always remains full + + + Number of tokens currently in the bucket + + + Time of the last drip, in system ticks + + + + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets + + + + + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time + + + + + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second + + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) + + + + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket + + + + + Default constructor + + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full + + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if the requested number of tokens were removed from + the bucket, otherwise false + + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if tokens were added to the bucket + during this call, otherwise false + True if the requested number of tokens were removed from + the bucket, otherwise false + + + + Add tokens to the bucket over time. The number of tokens added each + call depends on the length of time that has passed since the last + call to Drip + + True if tokens were added to the bucket, otherwise false + + + + Operating system + + + + Unknown + + + Microsoft Windows + + + Microsoft Windows CE + + + Linux + + + Apple OSX + + + + Runtime platform + + + + .NET runtime + + + Mono runtime: http://www.mono-project.com/ + + + Used for converting degrees to radians + + + Used for converting radians to degrees + + + + Provide a single instance of the CultureInfo class to help + parsing in situations where the grid assumes an en-us culture + + + + UNIX epoch in DateTime format + + + + Provide a single instance of the MD5 class to avoid making + duplicate copies and handle thread safety + + + + + Provide a single instance of the SHA-1 class to avoid + making duplicate copies and handle thread safety + + + + + Provide a single instance of a random number generator + to avoid making duplicate copies and handle thread safety + + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Round a floating-point value to the nearest integer + + Floating point number to round + Integer + + + + Test if a single precision float is a finite number + + + + + Test if a double precision float is a finite number + + + + + Get the distance between two floating-point values + + First value + Second value + The distance between the two values + + + + Compute the MD5 hash for a byte array + + Byte array to compute the hash for + MD5 hash of the input data + + + + Compute the SHA1 hash for a byte array + + Byte array to compute the hash for + SHA1 hash of the input data + + + + Calculate the SHA1 hash of a given string + + The string to hash + The SHA1 hash as a string + + + + Compute the SHA256 hash for a byte array + + Byte array to compute the hash for + SHA256 hash of the input data + + + + Calculate the SHA256 hash of a given string + + The string to hash + The SHA256 hash as a string + + + + Calculate the MD5 hash of a given string + + The string to hash + An MD5 hash in string format, with $1$ prepended + + + + Calculate the MD5 hash of a given string + + The string to hash + The MD5 hash as a string + + + + Calculates a PBKDF2 hash of a given string + + The string to hash + The PBKDF2 hash of the supplied string + + + + Generate a random double precision floating point value + + Random value of type double + + + + Get the current running platform + + Enumeration of the current platform we are running on + + + + Get the current running runtime + + Enumeration of the current runtime we are running on + + + + Convert the first two bytes starting in the byte array in + little endian ordering to a signed short integer + + An array two bytes or longer + A signed short integer, will be zero if a short can't be + read at the given position + + + + Convert the first two bytes starting at the given position in + little endian ordering to a signed short integer + + An array two bytes or longer + Position in the array to start reading + A signed short integer, will be zero if a short can't be + read at the given position + + + + Convert the first four bytes starting at the given position in + little endian ordering to a signed integer + + An array four bytes or longer + Position to start reading the int from + A signed integer, will be zero if an int can't be read + at the given position + + + + Convert the first four bytes of the given array in little endian + ordering to a signed integer + + An array four bytes or longer + A signed integer, will be zero if the array contains + less than four bytes + + + + Convert the first eight bytes of the given array in little endian + ordering to a signed long integer + + An array eight bytes or longer + A signed long integer, will be zero if the array contains + less than eight bytes + + + + Convert the first eight bytes starting at the given position in + little endian ordering to a signed long integer + + An array eight bytes or longer + Position to start reading the long from + A signed long integer, will be zero if a long can't be read + at the given position + + + + Convert the first two bytes starting at the given position in + little endian ordering to an unsigned short + + Byte array containing the ushort + Position to start reading the ushort from + An unsigned short, will be zero if a ushort can't be read + at the given position + + + + Convert two bytes in little endian ordering to an unsigned short + + Byte array containing the ushort + An unsigned short, will be zero if a ushort can't be + read + + + + Convert the first four bytes starting at the given position in + little endian ordering to an unsigned integer + + Byte array containing the uint + Position to start reading the uint from + An unsigned integer, will be zero if a uint can't be read + at the given position + + + + Convert the first four bytes of the given array in little endian + ordering to an unsigned integer + + An array four bytes or longer + An unsigned integer, will be zero if the array contains + less than four bytes + + + + Convert the first eight bytes of the given array in little endian + ordering to an unsigned 64-bit integer + + An array eight bytes or longer + An unsigned 64-bit integer, will be zero if the array + contains less than eight bytes + + + + Convert four bytes in little endian ordering to a floating point + value + + Byte array containing a little ending floating + point value + Starting position of the floating point value in + the byte array + Single precision value + + + + Convert an integer to a byte array in little endian format + + The integer to convert + A four byte little endian array + + + + Convert an integer to a byte array in big endian format + + The integer to convert + A four byte big endian array + + + + Convert a 64-bit integer to a byte array in little endian format + + The value to convert + An 8 byte little endian array + + + + Convert a 64-bit unsigned integer to a byte array in little endian + format + + The value to convert + An 8 byte little endian array + + + + Convert a floating point value to four bytes in little endian + ordering + + A floating point value + A four byte array containing the value in little endian + ordering + + + + Converts an unsigned integer to a hexadecimal string + + An unsigned integer to convert to a string + A hexadecimal string 10 characters long + 0x7fffffff + + + + Convert a variable length UTF8 byte array to a string + + The UTF8 encoded byte array to convert + The decoded string + + + + Converts a byte array to a string containing hexadecimal characters + + The byte array to convert to a string + The name of the field to prepend to each + line of the string + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name + + + + Converts a byte array to a string containing hexadecimal characters + + The byte array to convert to a string + Number of bytes in the array to parse + A string to prepend to each line of the hex + dump + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name + + + + Convert a string to a UTF8 encoded byte array + + The string to convert + A null-terminated UTF8 byte array + + + + Converts a string containing hexadecimal characters to a byte array + + String containing hexadecimal characters + If true, gracefully handles null, empty and + uneven strings as well as stripping unconvertable characters + The converted byte array + + + + Returns true is c is a hexadecimal digit (A-F, a-f, 0-9) + + Character to test + true if hex digit, false if not + + + + Converts 1 or 2 character string into equivalant byte value + + 1 or 2 character string + byte + + + + Convert a float value to a byte given a minimum and maximum range + + Value to convert to a byte + Minimum value range + Maximum value range + A single byte representing the original float value + + + + Convert a byte to a float value given a minimum and maximum range + + Byte array to get the byte from + Position in the byte array the desired byte is at + Minimum value range + Maximum value range + A float value inclusively between lower and upper + + + + Convert a byte to a float value given a minimum and maximum range + + Byte to convert to a float value + Minimum value range + Maximum value range + A float value inclusively between lower and upper + + + + Attempts to parse a floating point value from a string, using an + EN-US number format + + String to parse + Resulting floating point number + True if the parse was successful, otherwise false + + + + Attempts to parse a floating point value from a string, using an + EN-US number format + + String to parse + Resulting floating point number + True if the parse was successful, otherwise false + + + + Tries to parse an unsigned 32-bit integer from a hexadecimal string + + String to parse + Resulting integer + True if the parse was successful, otherwise false + + + + Returns text specified in EnumInfo attribute of the enumerator + To add the text use [EnumInfo(Text = "Some nice text here")] before declaration + of enum values + + Enum value + Text representation of the enum + + + + Takes an AssetType and returns the string representation + + The source + The string version of the AssetType + + + + Translate a string name of an AssetType into the proper Type + + A string containing the AssetType name + The AssetType which matches the string name, or AssetType.Unknown if no match was found + + + + Takes a FolderType and returns the string representation + + The source + The string version of the FolderType + + + + Translate a string name of an FolderType into the proper Type + + A string containing the FolderType name + The FolderType which matches the string name, or FolderType. None if no match was found + + + + Convert an InventoryType to a string + + The to convert + A string representation of the source + + + + Convert a string into a valid InventoryType + + A string representation of the InventoryType to convert + A InventoryType object which matched the type + + + + Convert a SaleType to a string + + The to convert + A string representation of the source + + + + Convert a string into a valid SaleType + + A string representation of the SaleType to convert + A SaleType object which matched the type + + + + Converts a string used in LLSD to AttachmentPoint type + + String representation of AttachmentPoint to convert + AttachmentPoint enum + + + + Copy a byte array + + Byte array to copy + A copy of the given byte array + + + + Packs to 32-bit unsigned integers in to a 64-bit unsigned integer + + The left-hand (or X) value + The right-hand (or Y) value + A 64-bit integer containing the two 32-bit input values + + + + Unpacks two 32-bit unsigned integers from a 64-bit unsigned integer + + The 64-bit input integer + The left-hand (or X) output value + The right-hand (or Y) output value + + + + Convert an IP address object to an unsigned 32-bit integer + + IP address to convert + 32-bit unsigned integer holding the IP address bits + + + + Gets a unix timestamp for the current time + + An unsigned integer representing a unix timestamp for now + + + + Convert a UNIX timestamp to a native DateTime object + + An unsigned integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp + + + + Convert a UNIX timestamp to a native DateTime object + + A signed integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp + + + + Convert a native DateTime object to a UNIX timestamp + + A DateTime object you want to convert to a + timestamp + An unsigned integer representing a UNIX timestamp + + + + Swap two values + + Type of the values to swap + First value + Second value + + + + Try to parse an enumeration value from a string + + Enumeration type + String value to parse + Enumeration value on success + True if the parsing succeeded, otherwise false + + + + Swaps the high and low words in a byte. Converts aaaabbbb to bbbbaaaa + + Byte to swap the words in + Byte value with the words swapped + + + + Attempts to convert a string representation of a hostname or IP + address to a + + Hostname to convert to an IPAddress + Converted IP address object, or null if the conversion + failed + + + + A 128-bit Universally Unique Identifier, used throughout the Second + Life networking protocol + + + + The System.Guid object this struct wraps around + + + + Constructor that takes a string UUID representation + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Constructor that takes a System.Guid object + + A Guid object that contains the unique identifier + to be represented by this UUID + + + + Constructor that takes a byte array containing a UUID + + Byte array containing a 16 byte UUID + Beginning offset in the array + + + + Constructor that takes an unsigned 64-bit unsigned integer to + convert to a UUID + + 64-bit unsigned integer to convert to a UUID + + + + Copy constructor + + UUID to copy + + + + IComparable.CompareTo implementation + + + + + Assigns this UUID from 16 bytes out of a byte array + + Byte array containing the UUID to assign this UUID to + Starting position of the UUID in the byte array + + + + Returns a copy of the raw bytes for this UUID + + A 16 byte array containing this UUID + + + + Writes the raw bytes for this UUID to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Calculate an LLCRC (cyclic redundancy check) for this UUID + + The CRC checksum for this UUID + + + + Create a 64-bit integer representation from the second half of this UUID + + An integer created from the last eight bytes of this UUID + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") + + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + Will contain the parsed UUID if successful, + otherwise null + True if the string was successfully parse, otherwise false + UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) + + + + Combine two UUIDs together by taking the MD5 hash of a byte array + containing both UUIDs + + First UUID to combine + Second UUID to combine + The UUID product of the combination + + + + + + UUID + + + + Slower than Random(), but generates a cryptographically secure UUID + + UUID + + + + Return a hash code for this UUID, used by .NET for hash tables + + An integer composed of all the UUID bytes XORed together + + + + Comparison function + + An object to compare to this UUID + True if the object is a UUID and both UUIDs are equal + + + + Comparison function + + UUID to compare to + True if the UUIDs are equal, otherwise false + + + + Get a hyphenated string representation of this UUID + + A string representation of this UUID, lowercase and + with hyphens + 11f8aa9c-b071-4242-836b-13b7abe0d489 + + + + Equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are byte for byte equal, otherwise false + + + + Not equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are not equal, otherwise true + + + + XOR operator + + First UUID + Second UUID + A UUID that is a XOR combination of the two input UUIDs + + + + String typecasting operator + + A UUID in string form. Case insensitive, + hyphenated or non-hyphenated + A UUID built from the string representation + + + An UUID with a value of all zeroes + + + A cache of UUID.Zero as a string to optimize a common path + + + + A two-dimensional vector with floating-point values + + + + X value + + + Y value + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + Test if this vector is composed of all finite numbers + + + + + IComparable.CompareTo implementation + + + + + Builds a vector from a byte array + + Byte array containing two four-byte floats + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + An eight-byte array containing X and Y + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 8 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 2D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + A vector with a value of 0,0 + + + A vector with a value of 1,1 + + + A vector with a value of 1,0 + + + A vector with a value of 0,1 + + + + A three-dimensional vector with floating-point values + + + + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three four-byte floats + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 12 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 12 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Calculate the rotation between two vectors + + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + + Explicit casting for Vector3d > Vector3 + + + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value 1,0,0 + + + A unit vector facing left (Y axis), value 0,1,0 + + + A unit vector facing up (Z axis), value 0,0,1 + + + + A three-dimensional vector with doubleing-point values + + + + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 24 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 24 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 24 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + + Implicit casting for Vector3 > Vector3d + + + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value of 1,0,0 + + + A unit vector facing left (Y axis), value of 0,1,0 + + + A unit vector facing up (Z axis), value of 0,0,1 + + + X value + + + Y value + + + Z value + + + W value + + + + Constructor, builds a vector from a byte array + + Byte array containing four four-byte floats + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 16 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 16 byte array containing X, Y, Z, and W + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + A vector with a value of 0,0,0,0 + + + A vector with a value of 1,1,1,1 + + + A vector with a value of 1,0,0,0 + + + A vector with a value of 0,1,0,0 + + + A vector with a value of 0,0,1,0 + + + A vector with a value of 0,0,0,1 + + + diff --git a/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.nuspec b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.nuspec new file mode 100644 index 0000000..2d87b09 --- /dev/null +++ b/libremetaverse-core/LibreMetaverseTypes/LibreMetaverseTypes.nuspec @@ -0,0 +1,15 @@ + + + + LibreMetaverse.Types + $version$ + Cinder Biscuits + Cinder Biscuits + https://github.com/cinderblocks/libremetaverse/blob/master/LICENSE.txt + https://github.com/cinderblocks/libremetaverse + false + LibreMetaverse type library + Copyright 2017 + LMV OMV OpenMetaverse OpenSim Halcyon OpenMetaverseFoundation VirtualWorld Radegast SecondLife + + \ No newline at end of file diff --git a/libremetaverse-core/Libremetaverse.types/Matrix4.cs b/libremetaverse-core/LibreMetaverseTypes/Matrix4.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Matrix4.cs rename to libremetaverse-core/LibreMetaverseTypes/Matrix4.cs diff --git a/libremetaverse-core/Libremetaverse.types/Quaternion.cs b/libremetaverse-core/LibreMetaverseTypes/Quaternion.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Quaternion.cs rename to libremetaverse-core/LibreMetaverseTypes/Quaternion.cs diff --git a/libremetaverse-core/Libremetaverse.types/ThreadSafeDictionary.cs b/libremetaverse-core/LibreMetaverseTypes/ThreadSafeDictionary.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/ThreadSafeDictionary.cs rename to libremetaverse-core/LibreMetaverseTypes/ThreadSafeDictionary.cs diff --git a/libremetaverse-core/Libremetaverse.types/TokenBucket.cs b/libremetaverse-core/LibreMetaverseTypes/TokenBucket.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/TokenBucket.cs rename to libremetaverse-core/LibreMetaverseTypes/TokenBucket.cs diff --git a/libremetaverse-core/Libremetaverse.types/UUID.cs b/libremetaverse-core/LibreMetaverseTypes/UUID.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/UUID.cs rename to libremetaverse-core/LibreMetaverseTypes/UUID.cs diff --git a/libremetaverse-core/Libremetaverse.types/Utils.cs b/libremetaverse-core/LibreMetaverseTypes/Utils.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Utils.cs rename to libremetaverse-core/LibreMetaverseTypes/Utils.cs diff --git a/libremetaverse-core/Libremetaverse.types/UtilsConversions.cs b/libremetaverse-core/LibreMetaverseTypes/UtilsConversions.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/UtilsConversions.cs rename to libremetaverse-core/LibreMetaverseTypes/UtilsConversions.cs diff --git a/libremetaverse-core/Libremetaverse.types/Vector2.cs b/libremetaverse-core/LibreMetaverseTypes/Vector2.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Vector2.cs rename to libremetaverse-core/LibreMetaverseTypes/Vector2.cs diff --git a/libremetaverse-core/Libremetaverse.types/Vector3.cs b/libremetaverse-core/LibreMetaverseTypes/Vector3.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Vector3.cs rename to libremetaverse-core/LibreMetaverseTypes/Vector3.cs diff --git a/libremetaverse-core/Libremetaverse.types/Vector3d.cs b/libremetaverse-core/LibreMetaverseTypes/Vector3d.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Vector3d.cs rename to libremetaverse-core/LibreMetaverseTypes/Vector3d.cs diff --git a/libremetaverse-core/Libremetaverse.types/Vector4.cs b/libremetaverse-core/LibreMetaverseTypes/Vector4.cs similarity index 100% rename from libremetaverse-core/Libremetaverse.types/Vector4.cs rename to libremetaverse-core/LibreMetaverseTypes/Vector4.cs diff --git a/libremetaverse-core/Libremetaverse.structureddata/LibreMetaverse-core.StructuredData.csproj b/libremetaverse-core/Libremetaverse.structureddata/LibreMetaverse-core.StructuredData.csproj deleted file mode 100644 index ceca150..0000000 --- a/libremetaverse-core/Libremetaverse.structureddata/LibreMetaverse-core.StructuredData.csproj +++ /dev/null @@ -1,33 +0,0 @@ - - - True - netcoreapp3.1 - Debug;Release;DockerBuild - x64 - LICENSE.txt - see LibreMetaverse-core - false - 1.0.3 - https://github.com/Madpeterz/libremetaverse-core - https://github.com/Madpeterz/libremetaverse-core - git - 1.0.3.0 - - - none - Linux - false - false - false - linux-x64 - - - - - - - True - - - - \ No newline at end of file diff --git a/libremetaverse-core/Libremetaverse.types/LibreMetaverse-core.Types.csproj b/libremetaverse-core/Libremetaverse.types/LibreMetaverse-core.Types.csproj deleted file mode 100644 index 691a94c..0000000 --- a/libremetaverse-core/Libremetaverse.types/LibreMetaverse-core.Types.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - True - netcoreapp3.1 - Debug;Release;DockerBuild - x64 - false - see LibreMetaverse-core - LICENSE.txt - https://github.com/Madpeterz/libremetaverse-core - https://github.com/Madpeterz/libremetaverse-core - git - 1.0.3.0 - 1.0.3.0 - 1.0.3 - - - none - Linux - false - false - false - linux-x64 - - - - True - - - - \ No newline at end of file diff --git a/libremetaverse-core/Libremetaverse/Imaging/BakeLayer.cs b/libremetaverse-core/Libremetaverse/Imaging/BakeLayer.cs index 654a700..24677f6 100644 --- a/libremetaverse-core/Libremetaverse/Imaging/BakeLayer.cs +++ b/libremetaverse-core/Libremetaverse/Imaging/BakeLayer.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.IO; using System.Drawing; using OpenMetaverse.Assets; +using log4net; namespace OpenMetaverse.Imaging { @@ -39,6 +40,7 @@ namespace OpenMetaverse.Imaging /// public class Baker { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); #region Properties /// Final baked texture public AssetTexture BakedTexture => bakedTexture; @@ -331,6 +333,7 @@ namespace OpenMetaverse.Imaging } // Apply any alpha wearable textures to make parts of the avatar disappear + m_log.DebugFormat("[XBakes]: Number of alpha wearable textures: {0}", alphaWearableTextures.Count); foreach (ManagedImage img in alphaWearableTextures) AddAlpha(bakedTexture.Image, img); diff --git a/libremetaverse-core/Libremetaverse/Imaging/TGALoader.cs b/libremetaverse-core/Libremetaverse/Imaging/TGALoader.cs index c9ead91..dd309bb 100644 --- a/libremetaverse-core/Libremetaverse/Imaging/TGALoader.cs +++ b/libremetaverse-core/Libremetaverse/Imaging/TGALoader.cs @@ -628,9 +628,8 @@ namespace OpenMetaverse.Imaging { return LoadTGA(f); } - } - return null; + return null; // file stream error } catch (System.IO.DirectoryNotFoundException) { diff --git a/libremetaverse-core/Libremetaverse/InventoryAISClient.cs b/libremetaverse-core/Libremetaverse/InventoryAISClient.cs index e255364..96dedc2 100644 --- a/libremetaverse-core/Libremetaverse/InventoryAISClient.cs +++ b/libremetaverse-core/Libremetaverse/InventoryAISClient.cs @@ -20,16 +20,11 @@ namespace LibreMetaverse [NonSerialized] private readonly GridClient Client; - private static HttpClient httpClient; + private static readonly HttpClient httpClient = new HttpClient(); public InventoryAISClient(GridClient client) { Client = client; - - HttpClientHandler clientHandler = new HttpClientHandler(); - clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }; - httpClient = new HttpClient(clientHandler); - httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Add("User-Agent", "LibreMetaverse AIS Client"); } diff --git a/libremetaverse-core/Libremetaverse/InventoryManager.cs b/libremetaverse-core/Libremetaverse/InventoryManager.cs index f25ddc7..90521ec 100644 --- a/libremetaverse-core/Libremetaverse/InventoryManager.cs +++ b/libremetaverse-core/Libremetaverse/InventoryManager.cs @@ -685,7 +685,6 @@ namespace OpenMetaverse List load_items = new List(); List owner_ids = new List(); - if (objects != null) { foreach (InventoryBase o in objects) diff --git a/libremetaverse-core/Libremetaverse/LibreMetaverse-core.csproj b/libremetaverse-core/Libremetaverse/LibreMetaverse-core.csproj deleted file mode 100644 index 0603d15..0000000 --- a/libremetaverse-core/Libremetaverse/LibreMetaverse-core.csproj +++ /dev/null @@ -1,62 +0,0 @@ - - - True - netcoreapp3.1 - Debug;Release;DockerBuild - x64 - false - LICENSE.txt - .net core targeted version of the LibreMetaverse project - https://github.com/Madpeterz/libremetaverse-core - https://github.com/Madpeterz/libremetaverse-core - git - 1.0.3 - 1.0.3.0 - - - none - Linux - false - false - false - linux-x64 - - - - - - - Always - - - - - - - - - - - - - - - True - - - - - - Always - - - Always - - - Always - - - Always - - - \ No newline at end of file diff --git a/libremetaverse-core/Libremetaverse/LibreMetaverse-core.nuspec b/libremetaverse-core/Libremetaverse/LibreMetaverse-core.nuspec deleted file mode 100644 index be54ca9..0000000 --- a/libremetaverse-core/Libremetaverse/LibreMetaverse-core.nuspec +++ /dev/null @@ -1,15 +0,0 @@ - - - - LibreMetaverse-core - $version$ - Madpeterz - Madpeterz - https://github.com/Madpeterz/libremetaverse-core/blob/master/LICENSE.txt - https://github.com/Madpeterz/libremetaverse-core - false - A port of LibreMetaverse to .net core cleaned up - Copyright 2020 - SecondLife Docker Linux Windows Secondbot CLI - - diff --git a/libremetaverse-core/Libremetaverse/Logger.cs b/libremetaverse-core/Libremetaverse/Logger.cs index c58f490..eb1cb46 100644 --- a/libremetaverse-core/Libremetaverse/Logger.cs +++ b/libremetaverse-core/Libremetaverse/Logger.cs @@ -1,209 +1,188 @@ +/* + * Copyright (c) 2006-2016, openmetaverse.co + * 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.Text; +using System.Reflection; +using log4net; +using log4net.Appender; +using log4net.Config; + +[assembly: XmlConfigurator(Watch = true)] namespace OpenMetaverse { - public abstract class LogWriter - { - public static void LogMessage(StringBuilder messageBuilder, Helpers.LogLevel Level) - { - var date = DateTime.Now; - string Message = messageBuilder.ToString(); - messageBuilder.Clear(); - messageBuilder.Append("["); - if (date.Hour < 10) messageBuilder.Append("0"); - messageBuilder.Append(date.Hour.ToString()); - messageBuilder.Append(":"); - if (date.Minute < 10) messageBuilder.Append("0"); - messageBuilder.Append(date.Minute.ToString()); - messageBuilder.Append("] "); - switch (Level) - { - case Helpers.LogLevel.Debug: - { - messageBuilder.Append("Debug - "); - break; - } - case Helpers.LogLevel.Info: - { - messageBuilder.Append("Status - "); - break; - } - case Helpers.LogLevel.Warning: - { - messageBuilder.Append("Warn - "); - break; - } - case Helpers.LogLevel.Error: - { - messageBuilder.Append("Error - "); - break; - } - default: - break; - } - messageBuilder.Append(Message); - WriteMessage(Message); - } - protected static void WriteMessage(string message) - { - - } - } - public class NoLogWriter : LogWriter - { - } - public class ConsoleWriter : LogWriter - { - public new static void WriteMessage(string message) - { - Console.WriteLine(message); - } - } - + /// + /// Singleton logging class for the entire library + /// public static class Logger { - // Warn,Error,Log,Debug functions - #region Message only methods without Levels - public static void Warn(string message) - { - Log(message, Helpers.LogLevel.Warning); - } - public static void Error(string message) - { - Log(message, Helpers.LogLevel.Error); - } - public static void Info(string message) - { - Log(message, Helpers.LogLevel.Info); - } - public static void DebugLog(string message) - { - Log(message, Helpers.LogLevel.Debug); - } - #endregion - #region Message+Exception without levels - public static void Warn(string message, Exception e) - { - Log(message, Helpers.LogLevel.Warning, null, e); - } - public static void Error(string message, Exception e) - { - Log(message, Helpers.LogLevel.Error, null, e); - } - public static void Info(string message, Exception e) - { - Log(message, Helpers.LogLevel.Info, null, e); - } - public static void DebugLog(string message, Exception e) - { - Log(message, Helpers.LogLevel.Debug, null, e); - } - #endregion - #region Message+Client without levels - public static void Warn(string message, GridClient client) - { - Log(message, Helpers.LogLevel.Warning, client); - } - public static void Error(string message, GridClient client) - { - Log(message, Helpers.LogLevel.Error, client); - } - public static void Info(string message, GridClient client) - { - Log(message, Helpers.LogLevel.Info, client); - } - public static void DebugLog(string message, GridClient client) - { - Log(message, Helpers.LogLevel.Debug, client); - } - #endregion - #region Message+Client+Exeption without levels [Anything else call Log Directly] - public static void Warn(string message, GridClient client, Exception exception) - { - Log(message, Helpers.LogLevel.Warning, client, exception); - } - public static void Error(string message, GridClient client, Exception exception) - { - Log(message, Helpers.LogLevel.Error, client, exception); - } - public static void Info(string message, GridClient client, Exception exception) - { - Log(message, Helpers.LogLevel.Info, client, exception); - } - public static void DebugLog(string message, GridClient client, Exception exception) - { - Log(message, Helpers.LogLevel.Debug, client, exception); - } - #endregion + /// + /// Callback used for client apps to receive log messages from + /// the library + /// + /// Data being logged + /// The severity of the log entry from + public delegate void LogCallback(object message, Helpers.LogLevel level); - public static void Log(string message, Helpers.LogLevel Level, GridClient client, Exception exception) + /// Triggered whenever a message is logged. If this is left + /// null, log messages will go to the console + public static event LogCallback OnLogMessage; + + /// log4net logging engine + public static ILog LogInstance; + + /// + /// Default constructor + /// + static Logger() { - Helpers.LogLevel UseLevel = Helpers.LogLevel.Info; - string useWriter = "Console"; - - if (client != null) + LogInstance = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + // If error level reporting isn't enabled we assume no logger is configured and initialize a default + // ConsoleAppender + if (!LogInstance.Logger.IsEnabledFor(log4net.Core.Level.Error)) { - UseLevel = client.Settings.LOG_LEVEL; - useWriter = client.Settings.LOG_WRITER; - } - if (UseLevel >= Level) - { - StringBuilder NewMessage = new StringBuilder(); - if (client != null) + IAppender appender = new ConsoleAppender { - if (client.Settings.LOG_NAMES) - { - NewMessage.Append("{"); - NewMessage.Append(client.Self.Name); - NewMessage.Append("} "); - } - } - NewMessage.Append(message); - switch (useWriter) - { - case "NoLogWriter": - { - break; - } - default: - { - ConsoleWriter.LogMessage(NewMessage, Level); - break; - } - } + Layout = new log4net.Layout.PatternLayout("%timestamp [%thread] %-5level - %message%newline") + }; + BasicConfigurator.Configure(LogManager.GetRepository(Assembly.GetCallingAssembly()), appender); + + if(Settings.LOG_LEVEL != Helpers.LogLevel.None) + LogInstance.Info("No log configuration found, defaulting to console logging"); } } - public static void LogFormat(string Message, Helpers.LogLevel Level, int Value) + + /// + /// Send a log message to the logging engine + /// + /// The log message + /// The severity of the log entry + public static void Log(object message, Helpers.LogLevel level) { - LogFormat(Message, new[] { Value.ToString() }); - } - public static void LogFormat(string Message, string[] Values) - { - LogFormat(Message, Helpers.LogLevel.Debug, Values); - } - public static void LogFormat(string Message, Helpers.LogLevel Level, string[] Values) - { - Log(String.Format(Message, Values), Level); + Log(message, level, null, null); } - #region Log overloads - public static void Log(string message) + /// + /// Send a log message to the logging engine + /// + /// The log message + /// The severity of the log entry + /// Instance of the client + public static void Log(object message, Helpers.LogLevel level, GridClient client) { - Log(message, Helpers.LogLevel.Debug); + Log(message, level, client, null); } - public static void Log(string message, Helpers.LogLevel Level) + + /// + /// Send a log message to the logging engine + /// + /// The log message + /// The severity of the log entry + /// Exception that was raised + public static void Log(object message, Helpers.LogLevel level, Exception exception) { - Log(message, Level, null, null); + Log(message, level, null, exception); } - public static void Log(string message, Helpers.LogLevel Level, GridClient client) + + /// + /// Send a log message to the logging engine + /// + /// The log message + /// The severity of the log entry + /// Instance of the client + /// Exception that was raised + public static void Log(object message, Helpers.LogLevel level, GridClient client, Exception exception) { - Log(message, Level, null, null); + if (client != null && client.Settings.LOG_NAMES) + message = $"<{client.Self.Name}>: {message}"; + + OnLogMessage?.Invoke(message, level); + + switch (level) + { + case Helpers.LogLevel.Debug: + if (Settings.LOG_LEVEL == Helpers.LogLevel.Debug) + LogInstance.Debug(message, exception); + break; + case Helpers.LogLevel.Info: + if (Settings.LOG_LEVEL == Helpers.LogLevel.Debug + || Settings.LOG_LEVEL == Helpers.LogLevel.Info) + LogInstance.Info(message, exception); + break; + case Helpers.LogLevel.Warning: + if (Settings.LOG_LEVEL == Helpers.LogLevel.Debug + || Settings.LOG_LEVEL == Helpers.LogLevel.Info + || Settings.LOG_LEVEL == Helpers.LogLevel.Warning) + LogInstance.Warn(message, exception); + break; + case Helpers.LogLevel.Error: + if (Settings.LOG_LEVEL == Helpers.LogLevel.Debug + || Settings.LOG_LEVEL == Helpers.LogLevel.Info + || Settings.LOG_LEVEL == Helpers.LogLevel.Warning + || Settings.LOG_LEVEL == Helpers.LogLevel.Error) + LogInstance.Error(message, exception); + break; + default: + break; + } } - public static void Log(string message, Helpers.LogLevel Level, Exception exception) + + /// + /// If the library is compiled with DEBUG defined, an event will be + /// fired if an OnLogMessage handler is registered and the + /// message will be sent to the logging engine + /// + /// The message to log at the DEBUG level to the + /// current logging engine + public static void DebugLog(object message) { - Log(message, Level, null, exception); + DebugLog(message, null); + } + + /// + /// If the library is compiled with DEBUG defined and + /// GridClient.Settings.DEBUG is true, an event will be + /// fired if an OnLogMessage handler is registered and the + /// message will be sent to the logging engine + /// + /// The message to log at the DEBUG level to the + /// current logging engine + /// Instance of the client + [System.Diagnostics.Conditional("DEBUG")] + public static void DebugLog(object message, GridClient client) + { + if (Settings.LOG_LEVEL != Helpers.LogLevel.Debug) return; + + if (client != null && client.Settings.LOG_NAMES) + message = $"<{client.Self.Name}>: {message}"; + + OnLogMessage?.Invoke(message, Helpers.LogLevel.Debug); + + LogInstance.Debug(message); } - #endregion } -} \ No newline at end of file +} diff --git a/libremetaverse-core/Libremetaverse/ObjectManager.cs b/libremetaverse-core/Libremetaverse/ObjectManager.cs index 572fc64..f6829f4 100644 --- a/libremetaverse-core/Libremetaverse/ObjectManager.cs +++ b/libremetaverse-core/Libremetaverse/ObjectManager.cs @@ -2624,7 +2624,7 @@ namespace OpenMetaverse catch (IndexOutOfRangeException ex) { Logger.Log("Error decoding an ObjectUpdateCompressed packet", Helpers.LogLevel.Warning, Client, ex); - Logger.Log(block.ToString(), Helpers.LogLevel.Warning); + Logger.Log(block, Helpers.LogLevel.Warning); } } } diff --git a/libremetaverse-core/Libremetaverse/Settings.cs b/libremetaverse-core/Libremetaverse/Settings.cs index 55843cf..d1a2613 100644 --- a/libremetaverse-core/Libremetaverse/Settings.cs +++ b/libremetaverse-core/Libremetaverse/Settings.cs @@ -340,15 +340,27 @@ namespace OpenMetaverse #region Logging Configuration - public string LOG_WRITER = "Console"; + /// + /// Get or set the minimum log level to output to the console by default + /// + /// If the library is not compiled with DEBUG defined and this level is set to DEBUG + /// You will get no output on the console. This behavior can be overriden by creating + /// a logger configuration file for log4net + /// + public static Helpers.LogLevel LOG_LEVEL = Helpers.LogLevel.None; + + /// Attach avatar names to log messages public bool LOG_NAMES = true; - public bool LOG_DISKCACHE = false; - public bool LOG_RESENDS = false; - public Helpers.LogLevel LOG_LEVEL = Helpers.LogLevel.Info; - + + /// Log packet retransmission info + public bool LOG_RESENDS = true; + + /// Log disk cache misses and other info + public bool LOG_DISKCACHE = true; + #endregion #region Private Fields - + private GridClient Client; private int priceUpload = 0; public static bool SORT_INVENTORY = false; @@ -375,6 +387,5 @@ namespace OpenMetaverse } #endregion - } } diff --git a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-i686.so b/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-i686.so deleted file mode 100644 index 193eca4..0000000 Binary files a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-i686.so and /dev/null differ diff --git a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-x86_64.so b/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-x86_64.so deleted file mode 100644 index 7a9bdfc..0000000 Binary files a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1-x86_64.so and /dev/null differ diff --git a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1.dylib b/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1.dylib deleted file mode 100644 index 91f7264..0000000 Binary files a/libremetaverse-core/Libremetaverse/libopenjpeg-dotnet-2-1.5.0-dotnet-1.dylib and /dev/null differ diff --git a/libremetaverse-core/Libremetaverse/openjpeg-dotnet-x86_64.dll b/libremetaverse-core/Libremetaverse/openjpeg-dotnet-x86_64.dll deleted file mode 100644 index 9e8cd21..0000000 Binary files a/libremetaverse-core/Libremetaverse/openjpeg-dotnet-x86_64.dll and /dev/null differ diff --git a/libremetaverse-core/Libremetaverse/openjpeg-dotnet.dll b/libremetaverse-core/Libremetaverse/openjpeg-dotnet.dll deleted file mode 100644 index 6377b8d..0000000 Binary files a/libremetaverse-core/Libremetaverse/openjpeg-dotnet.dll and /dev/null differ diff --git a/libremetaverse-core/libremetaverse-core.sln b/libremetaverse-core/libremetaverse-core.sln deleted file mode 100644 index d660f89..0000000 --- a/libremetaverse-core/libremetaverse-core.sln +++ /dev/null @@ -1,44 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core", "Libremetaverse\LibreMetaverse-core.csproj", "{21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core.StructuredData", "Libremetaverse.structureddata\LibreMetaverse-core.StructuredData.csproj", "{2AB39AF8-5296-44D9-8E25-595950D112E4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse-core.Types", "Libremetaverse.types\LibreMetaverse-core.Types.csproj", "{65583D32-5492-494E-9137-E288CB713167}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - DockerBuild|x64 = DockerBuild|x64 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.Debug|x64.ActiveCfg = Debug|x64 - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.Debug|x64.Build.0 = Debug|x64 - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.Release|x64.ActiveCfg = Release|x64 - {21DA0F7B-FF4F-41AC-90EF-4A49A26AAC14}.Release|x64.Build.0 = Release|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.Debug|x64.ActiveCfg = Debug|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.Debug|x64.Build.0 = Debug|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.Release|x64.ActiveCfg = Release|x64 - {2AB39AF8-5296-44D9-8E25-595950D112E4}.Release|x64.Build.0 = Release|x64 - {65583D32-5492-494E-9137-E288CB713167}.Debug|x64.ActiveCfg = Debug|x64 - {65583D32-5492-494E-9137-E288CB713167}.Debug|x64.Build.0 = Debug|x64 - {65583D32-5492-494E-9137-E288CB713167}.DockerBuild|x64.ActiveCfg = DockerBuild|x64 - {65583D32-5492-494E-9137-E288CB713167}.DockerBuild|x64.Build.0 = DockerBuild|x64 - {65583D32-5492-494E-9137-E288CB713167}.Release|x64.ActiveCfg = Release|x64 - {65583D32-5492-494E-9137-E288CB713167}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0939E3DD-583A-454E-BF78-F9D77F907B6E} - EndGlobalSection -EndGlobal