diff --git a/.gitattributes b/.gitattributes
index eb8bc97a8..2cb6164af 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,114 +1,117 @@
-# Unity
-*.shader text
-*.cginc text
-*.cs diff=csharp text
-
-# Unity YAML
-*.mat merge=unityyamlmerge eol=lf
-*.anim merge=unityyamlmerge eol=lf
-*.unity merge=unityyamlmerge eol=lf
-*.prefab merge=unityyamlmerge eol=lf
-*.physicMaterial2D merge=unityyamlmerge eol=lf
-*.physicMaterial merge=unityyamlmerge eol=lf
-*.asset merge=unityyamlmerge eol=lf
-*.meta merge=unityyamlmerge eol=lf
-*.controller merge=unityyamlmerge eol=lf
-
-# Collapse Unity-generated files on GitHub
-*.asset linguist-generated
-*.mat linguist-generated
-*.meta linguist-generated
-*.prefab linguist-generated
-*.unity linguist-generated
-
-# LFS
-
-## Assets
-*.cubemap filter=lfs diff=lfs merge=lfs -text
-*.unitypackage filter=lfs diff=lfs merge=lfs -text
-*.unity3d filter=lfs diff=lfs merge=lfs -text
-
-## 3D models
-*.3dm filter=lfs diff=lfs merge=lfs -text
-*.3ds filter=lfs diff=lfs merge=lfs -text
-*.blend filter=lfs diff=lfs merge=lfs -text
-*.c4d filter=lfs diff=lfs merge=lfs -text
-*.collada filter=lfs diff=lfs merge=lfs -text
-*.dae filter=lfs diff=lfs merge=lfs -text
-*.dxf filter=lfs diff=lfs merge=lfs -text
-*.fbx filter=lfs diff=lfs merge=lfs -text
-*.FBX filter=lfs diff=lfs merge=lfs -text
-*.jas filter=lfs diff=lfs merge=lfs -text
-*.lws filter=lfs diff=lfs merge=lfs -text
-*.lxo filter=lfs diff=lfs merge=lfs -text
-*.ma filter=lfs diff=lfs merge=lfs -text
-*.max filter=lfs diff=lfs merge=lfs -text
-*.mb filter=lfs diff=lfs merge=lfs -text
-*.obj filter=lfs diff=lfs merge=lfs -text
-*.ply filter=lfs diff=lfs merge=lfs -text
-*.skp filter=lfs diff=lfs merge=lfs -text
-*.stl filter=lfs diff=lfs merge=lfs -text
-*.ztl filter=lfs diff=lfs merge=lfs -text
-
-## Audio
-*.aif filter=lfs diff=lfs merge=lfs -text
-*.aiff filter=lfs diff=lfs merge=lfs -text
-*.it filter=lfs diff=lfs merge=lfs -text
-*.mod filter=lfs diff=lfs merge=lfs -text
-*.mp3 filter=lfs diff=lfs merge=lfs -text
-*.ogg filter=lfs diff=lfs merge=lfs -text
-*.s3m filter=lfs diff=lfs merge=lfs -text
-*.wav filter=lfs diff=lfs merge=lfs -text
-*.xm filter=lfs diff=lfs merge=lfs -text
-
-# Video
-*.asf filter=lfs diff=lfs merge=lfs -text
-*.avi filter=lfs diff=lfs merge=lfs -text
-*.flv filter=lfs diff=lfs merge=lfs -text
-*.mov filter=lfs diff=lfs merge=lfs -text
-*.mp4 filter=lfs diff=lfs merge=lfs -text
-*.mpeg filter=lfs diff=lfs merge=lfs -text
-*.mpg filter=lfs diff=lfs merge=lfs -text
-*.ogv filter=lfs diff=lfs merge=lfs -text
-*.wmv filter=lfs diff=lfs merge=lfs -text
-
-## Images
-*.bmp filter=lfs diff=lfs merge=lfs -text
-*.exr filter=lfs diff=lfs merge=lfs -text
-*.gif filter=lfs diff=lfs merge=lfs -text
-*.hdr filter=lfs diff=lfs merge=lfs -text
-*.iff filter=lfs diff=lfs merge=lfs -text
-*.jpeg filter=lfs diff=lfs merge=lfs -text
-*.jpg filter=lfs diff=lfs merge=lfs -text
-*.pict filter=lfs diff=lfs merge=lfs -text
-*.png filter=lfs diff=lfs merge=lfs -text
-*.psd filter=lfs diff=lfs merge=lfs -text
-*.tga filter=lfs diff=lfs merge=lfs -text
-*.tif filter=lfs diff=lfs merge=lfs -text
-*.tiff filter=lfs diff=lfs merge=lfs -text
-
-# Compressed Archive
-*.7z filter=lfs diff=lfs merge=lfs -text
-*.bz2 filter=lfs diff=lfs merge=lfs -text
-*.gz filter=lfs diff=lfs merge=lfs -text
-*.rar filter=lfs diff=lfs merge=lfs -text
-*.tar filter=lfs diff=lfs merge=lfs -text
-*.zip filter=lfs diff=lfs merge=lfs -text
-
-# Compiled Dynamic Library
-*.dll filter=lfs diff=lfs merge=lfs -text
-*.pdb filter=lfs diff=lfs merge=lfs -text
-*.so filter=lfs diff=lfs merge=lfs -text
-
-## Fonts
-*.otf filter=lfs diff=lfs merge=lfs -text
-*.ttf filter=lfs diff=lfs merge=lfs -text
-
-## Executable/Installer
-*.apk filter=lfs diff=lfs merge=lfs -text
-*.exe filter=lfs diff=lfs merge=lfs -text
-*.x86 filter=lfs diff=lfs merge=lfs -text
-*.x64 filter=lfs diff=lfs merge=lfs -text
-
-## Documents
-*.pdf filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
+# Unity
+*.shader text
+*.cginc text
+*.cs diff=csharp text
+
+# Unity YAML
+*.mat merge=unityyamlmerge eol=lf
+*.anim merge=unityyamlmerge eol=lf
+*.unity merge=unityyamlmerge eol=lf
+*.prefab merge=unityyamlmerge eol=lf
+*.physicMaterial2D merge=unityyamlmerge eol=lf
+*.physicMaterial merge=unityyamlmerge eol=lf
+*.asset merge=unityyamlmerge eol=lf
+*.meta merge=unityyamlmerge eol=lf
+*.controller merge=unityyamlmerge eol=lf
+
+# Collapse Unity-generated files on GitHub
+*.asset linguist-generated
+*.mat linguist-generated
+*.meta linguist-generated
+*.prefab linguist-generated
+*.unity linguist-generated
+
+# LFS
+
+## Assets
+*.cubemap filter=lfs diff=lfs merge=lfs -text
+*.unitypackage filter=lfs diff=lfs merge=lfs -text
+*.unity3d filter=lfs diff=lfs merge=lfs -text
+
+## 3D models
+*.3dm filter=lfs diff=lfs merge=lfs -text
+*.3ds filter=lfs diff=lfs merge=lfs -text
+*.blend filter=lfs diff=lfs merge=lfs -text
+*.c4d filter=lfs diff=lfs merge=lfs -text
+*.collada filter=lfs diff=lfs merge=lfs -text
+*.dae filter=lfs diff=lfs merge=lfs -text
+*.dxf filter=lfs diff=lfs merge=lfs -text
+*.fbx filter=lfs diff=lfs merge=lfs -text
+*.FBX filter=lfs diff=lfs merge=lfs -text
+*.jas filter=lfs diff=lfs merge=lfs -text
+*.lws filter=lfs diff=lfs merge=lfs -text
+*.lxo filter=lfs diff=lfs merge=lfs -text
+*.ma filter=lfs diff=lfs merge=lfs -text
+*.max filter=lfs diff=lfs merge=lfs -text
+*.mb filter=lfs diff=lfs merge=lfs -text
+*.obj filter=lfs diff=lfs merge=lfs -text
+*.ply filter=lfs diff=lfs merge=lfs -text
+*.skp filter=lfs diff=lfs merge=lfs -text
+*.stl filter=lfs diff=lfs merge=lfs -text
+*.ztl filter=lfs diff=lfs merge=lfs -text
+
+## Audio
+*.aif filter=lfs diff=lfs merge=lfs -text
+*.aiff filter=lfs diff=lfs merge=lfs -text
+*.it filter=lfs diff=lfs merge=lfs -text
+*.mod filter=lfs diff=lfs merge=lfs -text
+*.mp3 filter=lfs diff=lfs merge=lfs -text
+*.ogg filter=lfs diff=lfs merge=lfs -text
+*.s3m filter=lfs diff=lfs merge=lfs -text
+*.wav filter=lfs diff=lfs merge=lfs -text
+*.xm filter=lfs diff=lfs merge=lfs -text
+
+# Video
+*.asf filter=lfs diff=lfs merge=lfs -text
+*.avi filter=lfs diff=lfs merge=lfs -text
+*.flv filter=lfs diff=lfs merge=lfs -text
+*.mov filter=lfs diff=lfs merge=lfs -text
+*.mp4 filter=lfs diff=lfs merge=lfs -text
+*.mpeg filter=lfs diff=lfs merge=lfs -text
+*.mpg filter=lfs diff=lfs merge=lfs -text
+*.ogv filter=lfs diff=lfs merge=lfs -text
+*.wmv filter=lfs diff=lfs merge=lfs -text
+
+## Images
+*.bmp filter=lfs diff=lfs merge=lfs -text
+*.exr filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+*.hdr filter=lfs diff=lfs merge=lfs -text
+*.iff filter=lfs diff=lfs merge=lfs -text
+*.jpeg filter=lfs diff=lfs merge=lfs -text
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.pict filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.psd filter=lfs diff=lfs merge=lfs -text
+*.tga filter=lfs diff=lfs merge=lfs -text
+*.tif filter=lfs diff=lfs merge=lfs -text
+*.tiff filter=lfs diff=lfs merge=lfs -text
+
+# Compressed Archive
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.rar filter=lfs diff=lfs merge=lfs -text
+*.tar filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+
+# Compiled Dynamic Library
+*.dll filter=lfs diff=lfs merge=lfs -text
+*.pdb filter=lfs diff=lfs merge=lfs -text
+*.so filter=lfs diff=lfs merge=lfs -text
+
+## Fonts
+*.otf filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+
+## Executable/Installer
+*.apk filter=lfs diff=lfs merge=lfs -text
+*.exe filter=lfs diff=lfs merge=lfs -text
+*.x86 filter=lfs diff=lfs merge=lfs -text
+*.x64 filter=lfs diff=lfs merge=lfs -text
+
+## Documents
+*.pdf filter=lfs diff=lfs merge=lfs -text
+
+# Disabled
+docs/**/* -filter=lfs -diff=lfs -merge=lfs -text
\ No newline at end of file
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
index ce48fb19f..0e9bfb8d1 100644
--- a/.github/CODE_OF_CONDUCT.md
+++ b/.github/CODE_OF_CONDUCT.md
@@ -1,46 +1,46 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at detervistnogetmed@hotmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at detervistnogetmed@hotmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 2d9643bd9..182a60171 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -1,19 +1,19 @@
-# Contributing To The Neodroid Platform
-These guidelines are universal for the entire [Neodroid](https://github.com/sintefneodroid) Platform
-
-## Pull Requests
-We welcome pull requests.
-
-1. Fork the repo and create your branch from `master`.
-2. If you've added code that should be tested, add tests.
-3. If you've changed APIs, update the documentation.
-
-## Issues
-We use GitHub issues to track public bugs. Please ensure your description is
-clear and has sufficient instructions to be able to reproduce the issue.
-
-## Coding Style
-...
-
-## License
-By contributing to the [Neodroid](https://github.com/sintefneodroid) platform, you agree that your contributions will be licensed under the LICENSE file in the root directory of this repository.
+# Contributing To The Neodroid Platform
+These guidelines are universal for the entire [Neodroid](https://github.com/sintefneodroid) Platform
+
+## Pull Requests
+We welcome pull requests.
+
+1. Fork the repo and create your branch from `develop`, we are using the git flow branching model.
+2. If you've added code that should be tested, add tests.
+3. If you've changed APIs, update the documentation.
+
+## Issues
+We use GitHub issues to track public bugs. Please ensure your description is
+clear and has sufficient instructions to be able to reproduce the issue.
+
+## Coding Style
+...
+
+## License
+By contributing to the [Neodroid](https://github.com/sintefneodroid) platform, you agree that your contributions will be licensed under the LICENSE file in the root directory of this repository.
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..24c2a197c
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,15 @@
+
+# These are supported funding model platforms
+
+github: [cnheider]
+patreon: cnheider
+open_collective: cnheider
+ko_fi: cnheider
+custom: # Replace with a single custom sponsorship URL
+
+
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..dd84ea782
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**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.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**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
new file mode 100644
index 000000000..bbcbbe7d6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**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/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 9aa416747..221d15753 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,7 +1,7 @@
-Description of the Change
-
-Benefits
-
-Possible drawbacks
-
-Sample Usage
+Description of the Change
+
+Benefits
+
+Possible drawbacks
+
+Sample Usage
diff --git a/.github/images/csharp.svg b/.github/images/csharp.svg
index be3ec21cf..f2ec82fa7 100644
--- a/.github/images/csharp.svg
+++ b/.github/images/csharp.svg
@@ -1,47 +1,49 @@
-
-image/svg+xml
\ No newline at end of file
+
+image/svg+xml
+
+
\ No newline at end of file
diff --git a/.github/images/flatbuffers.svg b/.github/images/flatbuffers.svg
index 91e3fc442..97243aebd 100644
--- a/.github/images/flatbuffers.svg
+++ b/.github/images/flatbuffers.svg
@@ -1,476 +1,534 @@
-
-
-
-image/svg+xml
+
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.github/images/header.png b/.github/images/header.png
index f39bb7a9f..54a427bd9 100644
--- a/.github/images/header.png
+++ b/.github/images/header.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1e62cedfc2de9b7bcf61834de5d5a14499cd4c65f73d269f4c0650b95adc7234
-size 30071
+oid sha256:063dc9ff4499d872a2170e93f8f1e55198566d5d8c6f93151e8a8b12c45cf868
+size 34541
diff --git a/.github/images/neodroid.png b/.github/images/neodroid.png
index 76c876f4b..a5dcdc9ea 100644
--- a/.github/images/neodroid.png
+++ b/.github/images/neodroid.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8b9cef2eb476302583b9e3c5d8456044dbb615f8348daad9cfbf6816029270e9
-size 68568
+oid sha256:26908b7998231cce88425dfbf4913faa501217446e5d1c4d2066c9bb440a6c49
+size 19456
diff --git a/.github/images/neodroid.svg b/.github/images/neodroid.svg
new file mode 100644
index 000000000..f84c0f48b
--- /dev/null
+++ b/.github/images/neodroid.svg
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.github/images/neodroid.xcf b/.github/images/neodroid.xcf
new file mode 100644
index 000000000..e6b9426c8
Binary files /dev/null and b/.github/images/neodroid.xcf differ
diff --git a/.github/images/netmq.svg b/.github/images/netmq.svg
index dc54d450d..9fa4fa383 100644
--- a/.github/images/netmq.svg
+++ b/.github/images/netmq.svg
@@ -1,22 +1,25 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/.github/images/unity.svg b/.github/images/unity.svg
index d8512e645..10b37fd83 100644
--- a/.github/images/unity.svg
+++ b/.github/images/unity.svg
@@ -1,2 +1,9 @@
-
-
+
+
+
diff --git a/.gitignore b/.gitignore
index 841fa024c..d43d8b04b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,51 +1,62 @@
-###
-# Unity folders and files
-###
-[Aa]ssets/AssetStoreTools*
-[Bb]uild/
-[Ll]ibrary/
-[Ll]ocal[Cc]ache/
-[Oo]bj/
-[Tt]emp/
-[Uu]nityGenerated/
-[Ee]xcluded/
-JetBrains/
-
-*[Ee]xcluded.*
-
-sysinfo.txt
-
-*.pidb.meta
-*.stackdump
-
-###
-# VS/MD solution and project files
-###
-[Ee]xportedObj/
-*.booproj
-#*.csproj
-*.sln
-*.suo
-*.svd
-*.unityproj
-*.user
-*.userprefs
-*.pidb
-.DS_Store
-
-.DS_Store
-.DS_Store?
-._*
-.Spotlight-V100
-.Trashes
-ehthumbs.db
-Thumbs.db
-
-ShaderCache/
-Environments/Builds/
-*.lock
-.vs
-.vscode
-
-*.unitypackage
-ScenePreviews/
+###
+# Unity folders and files
+###
+[Aa]ssets/AssetStoreTools*
+[Bb]uild/
+[Ll]ibrary/
+[Ll]ocal[Cc]ache/
+[Oo]bj/
+[Tt]emp/
+[Uu]nityGenerated/
+[Ee]xcluded/
+JetBrains/
+
+*_REMOTE_*
+*_BACKUP_*
+*_LOCAL_*
+*_BASE_*
+
+*[Ee]xcluded.*
+*[Ee]xclude.*
+*[Ee]xcluded*
+*[Ee]xclude*
+*.orig
+*.meta~*
+
+sysinfo.txt
+
+*.pidb.meta
+*.stackdump
+
+###
+# VS/MD solution and project files
+###
+[Ee]xportedObj/
+*.booproj
+#*.csproj
+*.sln
+*.suo
+*.svd
+*.unityproj
+*.user
+*.userprefs
+*.pidb
+.DS_Store
+
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+
+ShaderCache/
+Environments/Builds/
+*.lock
+.vs
+.vscode
+
+*.unitypackage
+ScenePreviews/
+*.orig.meta
\ No newline at end of file
diff --git a/.lfsconfig b/.lfsconfig
index 5c15bdbb9..ad7af9102 100644
--- a/.lfsconfig
+++ b/.lfsconfig
@@ -1,3 +1,3 @@
-# * `lfs.url` / `remote..lfsurl`
-# url = "http://ADMIN:PASSWORD@HOST:9999/"
+# * `lfs.url` / `remote..lfsurl`
+# url = "http://ADMIN:PASSWORD@HOST:9999/"
# The url used to call the Git LFS remote API. Default blank (derive from clone URL).
\ No newline at end of file
diff --git a/.nojekyll b/.nojekyll
index d3f5a12fa..8b1378917 100644
--- a/.nojekyll
+++ b/.nojekyll
@@ -1 +1 @@
-
+
diff --git a/.npmignore b/.npmignore
index b5194f45e..6f62c9fcc 100644
--- a/.npmignore
+++ b/.npmignore
@@ -1,4 +1,4 @@
-.git
-.gitignore
-.gitattributes
+.git
+.gitignore
+.gitattributes
.gitmodules
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..a686fd4c6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,16 @@
+dist: xenial
+language: generic
+
+sudo: required
+
+script:
+ - cd .
+
+#language: csharp
+#solution: {{project}}.sln
+#mono:
+# - latest
+#install:
+# - ./build.sh
+#script:
+# - ./build.sh --target Run-UnitTests
diff --git a/Documentation.meta b/Documentation.meta
deleted file mode 100644
index b61c0681a..000000000
--- a/Documentation.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 78250b5bfc87b5946b70a601e7bdf373
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Documentation/Images/track.folder b/Documentation/Images/track.folder
deleted file mode 100644
index 08778d7a8..000000000
--- a/Documentation/Images/track.folder
+++ /dev/null
@@ -1 +0,0 @@
-{\rtf1}
\ No newline at end of file
diff --git a/Documentation/Images/track.folder.meta b/Documentation/Images/track.folder.meta
deleted file mode 100644
index 00293c870..000000000
--- a/Documentation/Images/track.folder.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 0a1ed2fced0ae404da3d35dad6abe982
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Documentation/neodroid.md b/Documentation/neodroid.md
deleted file mode 100644
index b1f8246d9..000000000
--- a/Documentation/neodroid.md
+++ /dev/null
@@ -1 +0,0 @@
-NEODROID
\ No newline at end of file
diff --git a/Documentation/neodroid.md.meta b/Documentation/neodroid.md.meta
deleted file mode 100644
index 6d8acf759..000000000
--- a/Documentation/neodroid.md.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: e545abde88c5a914b97ddfdb7adca50b
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/GameObjects/ActuatorSpawner.cs b/Editor/GameObjects/ActuatorSpawner.cs
new file mode 100644
index 000000000..c79669f68
--- /dev/null
+++ b/Editor/GameObjects/ActuatorSpawner.cs
@@ -0,0 +1,36 @@
+using droid.Runtime.Prototyping.Actuators;
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.GameObjects {
+ ///
+ ///
+ ///
+ public class ActuatorSpawner : MonoBehaviour {
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Actuators/TransformActuator", false, 10)]
+ static void CreateTransformActuatorGameObject(MenuCommand menu_command) {
+ var go = new GameObject("TransformActuator");
+ go.AddComponent();
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
+ Selection.activeObject = go;
+ }
+
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Actuators/RigidbodyActuator", false, 10)]
+ static void CreateRigidbodyActuatorGameObject(MenuCommand menu_command) {
+ var go = new GameObject("RigidbodyActuator");
+ go.AddComponent();
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
+ Selection.activeObject = go;
+ }
+ }
+}
+#endif
diff --git a/Editor/GameObjects/ActuatorSpawner.cs.meta b/Editor/GameObjects/ActuatorSpawner.cs.meta
new file mode 100644
index 000000000..604b0432b
--- /dev/null
+++ b/Editor/GameObjects/ActuatorSpawner.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9389d3b0d742b40d79bedbd67e8a9781
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/GameObjects/EditorGameObjectMenuPath.cs b/Editor/GameObjects/EditorGameObjectMenuPath.cs
index 673f640d9..14f3947f2 100644
--- a/Editor/GameObjects/EditorGameObjectMenuPath.cs
+++ b/Editor/GameObjects/EditorGameObjectMenuPath.cs
@@ -1,11 +1,9 @@
#if UNITY_EDITOR
-namespace Neodroid.Editor.GameObjects {
+namespace droid.Editor.GameObjects {
///
- ///
///
public static class EditorGameObjectMenuPath {
///
- ///
///
public const string _GameObjectMenuPath = "GameObject/Neodroid/";
}
diff --git a/Editor/GameObjects/GeneralSpawner.cs b/Editor/GameObjects/GeneralSpawner.cs
index 630e00f7a..4a3401ff1 100644
--- a/Editor/GameObjects/GeneralSpawner.cs
+++ b/Editor/GameObjects/GeneralSpawner.cs
@@ -1,48 +1,48 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime.Environments;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.Prototyping.Actors;
+using droid.Runtime.Environments.Prototyping;
+using droid.Runtime.Managers;
+using droid.Runtime.Prototyping.Actors;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.GameObjects {
+namespace droid.Editor.GameObjects {
public class GeneralSpawner : MonoBehaviour {
[MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "SimulationManager", false, 10)]
static void CreateSimulationManagerGameObject(MenuCommand menu_command) {
var go = new GameObject("SimulationManager");
- go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ go.AddComponent();
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
Selection.activeObject = go;
}
- [MenuItem("GameObject/Neodroid/Environment", false, 10)]
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Environment", false, 10)]
static void CreateEnvironmentGameObject(MenuCommand menu_command) {
var go = new GameObject("Environment");
var plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
plane.transform.parent = go.transform;
go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
Selection.activeObject = go;
}
- [MenuItem("GameObject/Neodroid/Actor", false, 10)]
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Actor", false, 10)]
static void CreateActorGameObject(MenuCommand menu_command) {
var go = new GameObject("Actor");
var capsule = GameObject.CreatePrimitive(PrimitiveType.Capsule);
capsule.transform.parent = go.transform;
go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
Selection.activeObject = go;
}
diff --git a/Editor/GameObjects/GeneralSpawner.cs.meta b/Editor/GameObjects/GeneralSpawner.cs.meta
index 70c2cc032..c7b07125e 100644
--- a/Editor/GameObjects/GeneralSpawner.cs.meta
+++ b/Editor/GameObjects/GeneralSpawner.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: 353e537cd7646448c81b6b428d1a36bb
-timeCreated: 1513680573
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/GameObjects/MotorSpawner.cs b/Editor/GameObjects/MotorSpawner.cs
deleted file mode 100644
index 606e5c71e..000000000
--- a/Editor/GameObjects/MotorSpawner.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime.Prototyping.Motors;
-using UnityEditor;
-using UnityEngine;
-
-namespace Neodroid.Editor.GameObjects {
- public class MotorSpawner : MonoBehaviour {
- [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Motors/TransformMotor", false, 10)]
- static void CreateTransformMotorGameObject(MenuCommand menu_command) {
- var go = new GameObject("TransformMotor");
- go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
- Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
- Selection.activeObject = go;
- }
-
- [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Motors/RigidbodyMotor", false, 10)]
- static void CreateRigidbodyMotorGameObject(MenuCommand menu_command) {
- var go = new GameObject("RigidbodyMotor");
- go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
- Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
- Selection.activeObject = go;
- }
- }
-}
-#endif
diff --git a/Editor/GameObjects/MotorSpawner.cs.meta b/Editor/GameObjects/MotorSpawner.cs.meta
deleted file mode 100644
index c600181a8..000000000
--- a/Editor/GameObjects/MotorSpawner.cs.meta
+++ /dev/null
@@ -1,13 +0,0 @@
-fileFormatVersion: 2
-guid: 9389d3b0d742b40d79bedbd67e8a9781
-timeCreated: 1513681529
-licenseType: Pro
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/GameObjects/ObserverSpawner.cs b/Editor/GameObjects/ObserverSpawner.cs
deleted file mode 100644
index adf282985..000000000
--- a/Editor/GameObjects/ObserverSpawner.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime.Prototyping.Observers;
-using Neodroid.Runtime.Prototyping.Observers.Transform;
-using UnityEditor;
-using UnityEngine;
-
-namespace Neodroid.Editor.GameObjects {
- public class ObserverSpawner : MonoBehaviour {
- [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Observers/Base", false, 10)]
- static void CreateObserverGameObject(MenuCommand menu_command) {
- var go = new GameObject("Observer");
- go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
- Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
- Selection.activeObject = go;
- }
-
- [MenuItem("GameObject/Neodroid/Observers/EulerTransform", false, 10)]
- static void CreateEulerTransformObserverGameObject(MenuCommand menu_command) {
- var go = new GameObject("EulerTransformObserver");
- go.AddComponent();
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
- Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
- Selection.activeObject = go;
- }
- }
-}
-#endif
diff --git a/Editor/GameObjects/ObserverSpawner.cs.meta b/Editor/GameObjects/ObserverSpawner.cs.meta
deleted file mode 100644
index 1b505ad77..000000000
--- a/Editor/GameObjects/ObserverSpawner.cs.meta
+++ /dev/null
@@ -1,13 +0,0 @@
-fileFormatVersion: 2
-guid: dd2bcf7a6041e48ecbce87d7f3763384
-timeCreated: 1513681571
-licenseType: Pro
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/GameObjects/PrebuiltSpawner.cs b/Editor/GameObjects/PrebuiltSpawner.cs
index 98852a1b0..42d4e09fd 100644
--- a/Editor/GameObjects/PrebuiltSpawner.cs
+++ b/Editor/GameObjects/PrebuiltSpawner.cs
@@ -1,24 +1,23 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime.Environments;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.Prototyping.Actors;
-using Neodroid.Runtime.Prototyping.Configurables;
-using Neodroid.Runtime.Prototyping.Motors;
-using Neodroid.Runtime.Prototyping.Observers.Transform;
-using Neodroid.Runtime.Utilities.BoundingBoxes;
+using droid.Runtime.Environments.Prototyping;
+using droid.Runtime.GameObjects.BoundingBoxes;
+using droid.Runtime.Managers;
+using droid.Runtime.Prototyping.Actors;
+using droid.Runtime.Prototyping.Actuators;
+using droid.Runtime.Prototyping.Configurables.Transforms;
+using droid.Runtime.Prototyping.Sensors.Spatial.Transform;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.GameObjects {
+namespace droid.Editor.GameObjects {
public class PrebuiltSpawner : MonoBehaviour {
///
- ///
///
///
[MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Prebuilt/SimpleEnvironment", false, 10)]
static void CreateSingleEnvironmentGameObject(MenuCommand menu_command) {
var go = new GameObject("SimpleEnvironment");
- go.AddComponent();
+ go.AddComponent();
var env = go.AddComponent();
go.AddComponent();
var bounding_box = go.AddComponent();
@@ -29,8 +28,8 @@ static void CreateSingleEnvironmentGameObject(MenuCommand menu_command) {
var actor = new GameObject("Actor");
actor.AddComponent();
- actor.AddComponent();
- actor.AddComponent();
+ actor.AddComponent();
+ actor.AddComponent();
actor.AddComponent();
actor.transform.parent = go.transform;
@@ -38,12 +37,10 @@ static void CreateSingleEnvironmentGameObject(MenuCommand menu_command) {
capsule.transform.parent = actor.transform;
capsule.transform.localPosition = Vector3.up;
- bounding_box.Initialise();
-
- GameObjectUtility.SetParentAndAlign(
- go,
- menu_command
- .context as GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
Selection.activeObject = go;
}
diff --git a/Editor/GameObjects/PrebuiltSpawner.cs.meta b/Editor/GameObjects/PrebuiltSpawner.cs.meta
index 45b7220d6..490282139 100644
--- a/Editor/GameObjects/PrebuiltSpawner.cs.meta
+++ b/Editor/GameObjects/PrebuiltSpawner.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: b566adaecc533437caebc4d13324c41e
-timeCreated: 1513682385
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/GameObjects/PrefabSpawnerPopup.cs b/Editor/GameObjects/PrefabSpawnerPopup.cs
index e070720e7..bdc8ed589 100644
--- a/Editor/GameObjects/PrefabSpawnerPopup.cs
+++ b/Editor/GameObjects/PrefabSpawnerPopup.cs
@@ -2,40 +2,38 @@
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.GameObjects {
+namespace droid.Editor.GameObjects {
///
///
///
public class PrefabSpawnerPopup : EditorWindow {
-
- static Rect _rect = new Rect(0,0, 0, 0);
+ static Rect _rect = new Rect(0,
+ 0,
+ 0,
+ 0);
+
[MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "SpawnPrefab", false, 10)]
static void Init2() {
-
-
try {
PopupWindow.Show(_rect, new PrefabsPopup());
-
} catch (ExitGUIException) {
//Debug.Log(e);
}
}
}
-
-
+
///
///
///
- public class PrefabsPopup: PopupWindowContent {
+ public class PrefabsPopup : PopupWindowContent {
+ Vector2 _scroll_position;
bool _updated_pos;
int _x_size = 300;
int _y_size = 200;
- Vector2 _scroll_position;
public override Vector2 GetWindowSize() { return new Vector2(this._x_size, this._y_size); }
public override void OnGUI(Rect rect) {
-
if (!this._updated_pos) {
var mp = Event.current.mousePosition;
rect.x = mp.x;
@@ -46,7 +44,7 @@ public override void OnGUI(Rect rect) {
}
GUILayout.Label("Spawn Prefab", EditorStyles.boldLabel);
-
+
// Supports the following syntax:
// 't:type' syntax (e.g 't:Texture2D' will show Texture2D objects)
// 'l:assetlabel' syntax (e.g 'l:architecture' will show assets with AssetLabel 'architecture')
@@ -55,8 +53,8 @@ public override void OnGUI(Rect rect) {
// 's:softLockState' syntax (e.g 's:inprogress' will show objects that are modified by anyone (except you))
// 'a:area' syntax (e.g 'a:all' will s search in all assets, 'a:assets' will s search in assets folder only and 'a:packages' will s search in packages folder only)
- var prefabs =AssetDatabase.FindAssets("t:Prefab a:all");
-
+ var prefabs = AssetDatabase.FindAssets("t:Prefab a:all");
+
this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
EditorGUILayout.BeginVertical();
foreach (var prefab in prefabs) {
@@ -65,13 +63,13 @@ public override void OnGUI(Rect rect) {
var go = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject));
if (path.Contains("Neodroid")) {
if (GUILayout.Button(go.name)) {
- Object.Instantiate(go,Selection.activeTransform);
+ Object.Instantiate(go, Selection.activeTransform);
}
}
}
+
EditorGUILayout.EndVertical();
EditorGUILayout.EndScrollView();
-
}
public override void OnOpen() {
@@ -82,6 +80,5 @@ public override void OnClose() {
//Debug.Log("Popup closed: " + this);
}
}
-
}
-#endif
\ No newline at end of file
+#endif
diff --git a/Editor/GameObjects/PrefabSpawnerPopup.cs.meta b/Editor/GameObjects/PrefabSpawnerPopup.cs.meta
index 1d43f0131..988dddb57 100644
--- a/Editor/GameObjects/PrefabSpawnerPopup.cs.meta
+++ b/Editor/GameObjects/PrefabSpawnerPopup.cs.meta
@@ -5,7 +5,7 @@ MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/GameObjects/SensorSpawner.cs b/Editor/GameObjects/SensorSpawner.cs
new file mode 100644
index 000000000..c8671880d
--- /dev/null
+++ b/Editor/GameObjects/SensorSpawner.cs
@@ -0,0 +1,37 @@
+using droid.Runtime.Prototyping.Sensors;
+using droid.Runtime.Prototyping.Sensors.Spatial.Transform;
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.GameObjects {
+ ///
+ ///
+ ///
+ public class SensorSpawner : MonoBehaviour {
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Sensors/Base", false, 10)]
+ static void CreateSensorGameObject(MenuCommand menu_command) {
+ var go = new GameObject("Sensor");
+ go.AddComponent();
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
+ Selection.activeObject = go;
+ }
+
+ [MenuItem(EditorGameObjectMenuPath._GameObjectMenuPath + "Sensors/EulerTransform", false, 10)]
+ static void CreateEulerTransformSensorGameObject(MenuCommand menu_command) {
+ var go = new GameObject("EulerTransformSensor");
+ go.AddComponent();
+ GameObjectUtility.SetParentAndAlign(go,
+ menu_command
+ .context as
+ GameObject); // Ensure it gets reparented if this was a context click (otherwise does nothing)
+ Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); // Register the creation in the undo system
+ Selection.activeObject = go;
+ }
+ }
+}
+#endif
diff --git a/Editor/GameObjects/SensorSpawner.cs.meta b/Editor/GameObjects/SensorSpawner.cs.meta
new file mode 100644
index 000000000..22420bf69
--- /dev/null
+++ b/Editor/GameObjects/SensorSpawner.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dd2bcf7a6041e48ecbce87d7f3763384
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Neodroid.Editor.asmdef b/Editor/Neodroid.Editor.asmdef
new file mode 100644
index 000000000..de1589c90
--- /dev/null
+++ b/Editor/Neodroid.Editor.asmdef
@@ -0,0 +1,20 @@
+{
+ "name": "Neodroid.Editor",
+ "references": [
+ "Neodroid.Runtime",
+ "Unity.PackageManagerUI.Editor",
+ "Unity.Postprocessing.Editor",
+ "Unity.Postprocessing.Runtime"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": true,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Editor/Neodroid.Editor.asmdef.meta b/Editor/Neodroid.Editor.asmdef.meta
new file mode 100644
index 000000000..eaa3525f2
--- /dev/null
+++ b/Editor/Neodroid.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d2007c2033e45bf2aaeedbdb8504ed4a
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/NeodroidEditorConstants.cs b/Editor/NeodroidEditorConstants.cs
new file mode 100644
index 000000000..9d9ab9d1a
--- /dev/null
+++ b/Editor/NeodroidEditorConstants.cs
@@ -0,0 +1,90 @@
+namespace droid.Editor {
+ ///
+ ///
+ ///
+ public static class NeodroidEditorConstants {
+ ///
+ ///
+ ///
+ public const string _NeodroidSettingsPath = "Assets/droid/Editor/neodroid_settings.asset";
+
+ ///
+ ///
+ ///
+ public const string _Neodroid_Project_Settings_Menu_Path = "Project/Neodroid Settings";
+
+ ///
+ ///
+ ///
+ public const string _Default_Scene_Previews_Location = "ScenePreviews/";
+
+ ///
+ ///
+ ///
+ public const string _Default_Scene_Description_Location = "SceneDescriptions/";
+
+ #if NEODROID_IS_PACKAGE
+ ///
+ ///
+ ///
+ //public const string _Default_Import_Location = "Packages/com.neodroid.droid/";
+ public const string _Default_Import_Location = "Assets/droid/";
+
+ #else
+ ///
+ ///
+ ///
+ public const string _Default_Import_Location = "Assets/droid/";
+ #endif
+
+ ///
+ ///
+ ///
+ public const string _Debug_Pref_Key = "NeodroidEnableDebug";
+
+ ///
+ ///
+ ///
+ public const string _Github_Extension_Pref_Key = "NeodroidGithubExtension";
+
+ ///
+ ///
+ ///
+ public const string _IsPackage_Pref_Key = "NeodroidIsPackage";
+
+ ///
+ ///
+ ///
+ public const string _Import_Location_Pref_Key = "NeodroidImportLocation";
+
+ ///
+ ///
+ ///
+ public const string _Generate_Previews_Pref_Key = "NeodroidGeneratePreviews";
+
+ ///
+ ///
+ ///
+ public const string _Generate_Previews_Loc_Pref_Key = "NeodroidPreviewsLocation";
+
+ ///
+ ///
+ ///
+ public const string _Generate_Descriptions_Pref_Key = "NeodroidGenerateDescriptions";
+
+ ///
+ ///
+ ///
+ public const string _Generate_Descriptions_Loc_Pref_Key = "NeodroidDescriptionLocation";
+
+ ///
+ ///
+ ///
+ public const float _Editor_Margin = 50;
+
+ ///
+ ///
+ ///
+ public const float _Preview_Margin = 5;
+ }
+}
diff --git a/Editor/NeodroidEditorConstants.cs.meta b/Editor/NeodroidEditorConstants.cs.meta
new file mode 100644
index 000000000..1c9d5114c
--- /dev/null
+++ b/Editor/NeodroidEditorConstants.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a8d2dc8e280f4042a01f208db5fd2f67
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/NeodroidSettings.cs b/Editor/NeodroidSettings.cs
new file mode 100644
index 000000000..f339be95c
--- /dev/null
+++ b/Editor/NeodroidSettings.cs
@@ -0,0 +1,328 @@
+using System;
+using System.IO;
+using droid.Editor.Utilities;
+using droid.Runtime;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.UIElements;
+
+namespace droid.Editor {
+ ///
+ ///
+ /// Create a new type of Settings Asset.
+ ///
+ [Serializable]
+ class NeodroidSettings : ScriptableObject {
+ #region Fields
+
+ [SerializeField] bool NeodroidEnableDebug = false;
+
+ [SerializeField] bool NeodroidGithubExtension = false;
+
+ [SerializeField] bool NeodroidIsPackage = false;
+
+ [SerializeField] string NeodroidImportLocation = NeodroidEditorConstants._Default_Import_Location;
+ [SerializeField] bool NeodroidGeneratePreviews = false;
+
+ [SerializeField]
+ string NeodroidPreviewsLocation = NeodroidEditorConstants._Default_Scene_Previews_Location;
+
+ [SerializeField] bool NeodroidGenerateDescriptions = false;
+
+ [SerializeField]
+ string NeodroidDescriptionLocation = NeodroidEditorConstants._Default_Scene_Description_Location;
+
+ #endregion
+
+ #region Properties
+
+ public bool NeodroidEnableDebugProp {
+ get { return this.NeodroidEnableDebug; }
+ set {
+ if (value != this.NeodroidEnableDebug || _force) {
+ ApplyDebug(value);
+ this.NeodroidEnableDebug = value;
+ }
+ }
+ }
+
+ public static void ApplyDebug(bool value) {
+ if (value) {
+ Debug.Log($"Neodroid Debugging enabled");
+ DefineSymbolsFunctionality.AddDebugDefineSymbol();
+ } else {
+ Debug.Log($"Neodroid Debugging disabled");
+ DefineSymbolsFunctionality.RemoveDebugDefineSymbols();
+ }
+ }
+
+ public bool NeodroidGithubExtensionProp {
+ get { return this.NeodroidGithubExtension; }
+ set {
+ if (value != this.NeodroidGithubExtension || _force) {
+ ApplyGithubExt(value);
+
+ this.NeodroidGithubExtension = value;
+ }
+ }
+ }
+
+ public static void ApplyGithubExt(bool value) {
+ if (value) {
+ DefineSymbolsFunctionality.AddGithubDefineSymbols();
+ Debug.Log($"Neodroid GitHub Extension enabled");
+ } else {
+ DefineSymbolsFunctionality.RemoveGithubDefineSymbols();
+ Debug.Log($"Neodroid GitHub Extension disabled");
+ }
+ }
+
+ public bool NeodroidIsPackageProp {
+ get { return this.NeodroidIsPackage; }
+ set {
+ if (value != this.NeodroidIsPackage || _force) {
+ ApplyIsPackage(value);
+ this.NeodroidIsPackage = value;
+ }
+ }
+ }
+
+ public static void ApplyIsPackage(bool value) {
+ if (value) {
+ DefineSymbolsFunctionality.AddIsPackageDefineSymbols();
+ Debug.Log($"Neodroid is set as an imported asset");
+ } else {
+ DefineSymbolsFunctionality.RemoveIsPackageDefineSymbols();
+ Debug.Log($"Neodroid is set as an package asset");
+ }
+ }
+
+ public String NeodroidImportLocationProp {
+ get { return this.NeodroidImportLocation; }
+ set {
+ if (value != this.NeodroidImportLocation || _force) {
+ var new_path = PathTrim(value);
+ Debug.Log($"Setting Neodroid import location to: {new_path}");
+
+ this.NeodroidImportLocation = new_path;
+ }
+ }
+ }
+
+ public bool NeodroidGeneratePreviewsProp {
+ get { return this.NeodroidGeneratePreviews; }
+ set { this.NeodroidGeneratePreviews = value; }
+ }
+
+ public String NeodroidPreviewsLocationProp {
+ get { return this.NeodroidPreviewsLocation; }
+ set {
+ if (value != this.NeodroidPreviewsLocation || _force) {
+ var new_path = PathTrim(value);
+ Debug.Log($"Setting Neodroid ScenePreview location to: {new_path}");
+
+ this.NeodroidPreviewsLocation = new_path;
+ }
+ }
+ }
+
+ public bool NeodroidGenerateDescriptionsProp {
+ get { return this.NeodroidGenerateDescriptions; }
+ set { this.NeodroidGenerateDescriptions = value; }
+ }
+
+ public String NeodroidDescriptionLocationProp {
+ get { return this.NeodroidDescriptionLocation; }
+ set {
+ if (value != this.NeodroidDescriptionLocation || _force) {
+ var new_path = PathTrim(value);
+ Debug.Log($"Setting Neodroid SceneDescription location to: {new_path}");
+
+ this.NeodroidDescriptionLocation = new_path;
+ }
+ }
+ }
+
+ public static string PathTrim(string value) {
+ var new_path = value.TrimEnd('/') + "/";
+ return new_path;
+ }
+
+ #endregion
+
+ internal static NeodroidSettings Defaults() {
+ var settings = CreateInstance();
+ settings.NeodroidEnableDebugProp = false;
+ settings.NeodroidGithubExtensionProp = false;
+ settings.NeodroidIsPackageProp = false;
+ settings.NeodroidImportLocationProp = NeodroidEditorConstants._Default_Import_Location;
+
+ settings.NeodroidGeneratePreviewsProp = false;
+ settings.NeodroidPreviewsLocationProp = NeodroidEditorConstants._Default_Scene_Previews_Location;
+ settings.NeodroidGenerateDescriptionsProp = false;
+ settings.NeodroidDescriptionLocationProp = NeodroidEditorConstants._Default_Scene_Description_Location;
+
+ return settings;
+ }
+
+ internal static NeodroidSettings Current {
+ get {
+ var settings =
+ AssetDatabase.LoadAssetAtPath(NeodroidEditorConstants._NeodroidSettingsPath);
+ if (settings == null) {
+ settings = Defaults();
+
+ var path = Path.GetDirectoryName(NeodroidEditorConstants._NeodroidSettingsPath);
+ Directory.CreateDirectory(path);
+ AssetDatabase.CreateAsset(settings, NeodroidEditorConstants._NeodroidSettingsPath);
+ AssetDatabase.SaveAssets();
+ }
+
+ return settings;
+ }
+ }
+
+ static bool _force = false;
+
+ internal static void ReapplyProperties(Boolean force = false) {
+ _force = force;
+ Current.NeodroidEnableDebugProp = Current.NeodroidEnableDebug;
+ Current.NeodroidGithubExtensionProp = Current.NeodroidGithubExtension;
+ Current.NeodroidIsPackageProp = Current.NeodroidIsPackage;
+ Current.NeodroidImportLocationProp = Current.NeodroidImportLocation;
+ Current.NeodroidGeneratePreviewsProp = Current.NeodroidGeneratePreviews;
+ Current.NeodroidPreviewsLocationProp = Current.NeodroidPreviewsLocation;
+ Current.NeodroidGenerateDescriptionsProp = Current.NeodroidGenerateDescriptions;
+ Current.NeodroidDescriptionLocationProp = Current.NeodroidDescriptionLocation;
+ _force = false;
+ }
+
+ void OnValidate() {
+ //ReapplyProperties();
+ }
+
+ internal static SerializedObject GetSerializedSettings() {
+ var serialized_object = new SerializedObject(Current);
+ return serialized_object;
+ }
+ }
+
+ ///
+ /// SettingsProvider for Neodroid
+ ///
+ class NeodroidSettingsProvider : SettingsProvider {
+ SerializedObject _neodroid_settings;
+
+ ///
+ ///
+ ///
+ class Styles {
+ public static GUIContent _EnableNeodroidDebug = new GUIContent(NeodroidEditorConstants._Debug_Pref_Key);
+
+ public static GUIContent _EnableGithubExtension =
+ new GUIContent(NeodroidEditorConstants._Github_Extension_Pref_Key);
+
+ public static GUIContent _IsPackage = new GUIContent(NeodroidEditorConstants._IsPackage_Pref_Key);
+
+ public static GUIContent _ImportLocation =
+ new GUIContent(NeodroidEditorConstants._Import_Location_Pref_Key);
+
+ public static GUIContent _GenerateScenePreview =
+ new GUIContent(NeodroidEditorConstants._Generate_Previews_Pref_Key);
+
+ public static GUIContent _ScenePreviewLocation =
+ new GUIContent(NeodroidEditorConstants._Generate_Previews_Loc_Pref_Key);
+
+ public static GUIContent _GenerateSceneDescription =
+ new GUIContent(NeodroidEditorConstants._Generate_Descriptions_Pref_Key);
+
+ public static GUIContent _SceneDescriptionLocation =
+ new GUIContent(NeodroidEditorConstants._Generate_Descriptions_Loc_Pref_Key);
+ }
+
+ public NeodroidSettingsProvider(string path, SettingsScope scope = SettingsScope.User) :
+ base(path, scope) { }
+
+ public static bool IsSettingsAvailable() {
+ return File.Exists(NeodroidEditorConstants._NeodroidSettingsPath);
+ }
+
+ ///
+ /// This function is called when the user clicks on the MyCustom element in the Settings window.
+ ///
+ public override void OnActivate(string search_context, VisualElement root_element) {
+ this._neodroid_settings = NeodroidSettings.GetSerializedSettings();
+ }
+
+ public override void OnGUI(string search_context) {
+ EditorGUILayout.HelpBox($"Version {NeodroidRuntimeInfo._Version}", MessageType.Info);
+
+ var is_package = this._neodroid_settings.FindProperty(NeodroidEditorConstants._IsPackage_Pref_Key);
+ EditorGUILayout.PropertyField(is_package, Styles._IsPackage);
+ if (!is_package.boolValue) {
+ EditorGUILayout.HelpBox("Enter import path of Neodroid", MessageType.Info);
+ EditorGUILayout.PropertyField(this._neodroid_settings.FindProperty(NeodroidEditorConstants
+ ._Import_Location_Pref_Key),
+ Styles._ImportLocation);
+ }
+
+ EditorGUILayout.HelpBox("Functionality", MessageType.Info);
+
+ EditorGUILayout.PropertyField(this._neodroid_settings.FindProperty(NeodroidEditorConstants
+ ._Debug_Pref_Key),
+ Styles._EnableNeodroidDebug);
+ EditorGUILayout.PropertyField(this._neodroid_settings.FindProperty(NeodroidEditorConstants
+ ._Github_Extension_Pref_Key),
+ Styles._EnableGithubExtension);
+
+ var generate_scene_preview =
+ this._neodroid_settings.FindProperty(NeodroidEditorConstants._Generate_Previews_Pref_Key);
+ EditorGUILayout.PropertyField(generate_scene_preview, Styles._GenerateScenePreview);
+ if (generate_scene_preview.boolValue) {
+ EditorGUILayout.HelpBox("Enter path for scene preview storage", MessageType.Info);
+ EditorGUILayout.PropertyField(this._neodroid_settings.FindProperty(NeodroidEditorConstants
+ ._Generate_Previews_Loc_Pref_Key),
+ Styles._ScenePreviewLocation);
+ }
+
+ var generate_scene_descriptions =
+ this._neodroid_settings.FindProperty(NeodroidEditorConstants._Generate_Descriptions_Pref_Key);
+ EditorGUILayout.PropertyField(generate_scene_descriptions, Styles._GenerateSceneDescription);
+ if (generate_scene_descriptions.boolValue) {
+ EditorGUILayout.HelpBox("Enter path for scene description storage", MessageType.Info);
+ EditorGUILayout.PropertyField(this._neodroid_settings.FindProperty(NeodroidEditorConstants
+ ._Generate_Descriptions_Loc_Pref_Key),
+ Styles._SceneDescriptionLocation);
+ }
+
+ this._neodroid_settings.ApplyModifiedProperties();
+
+ if (EditorGUILayout.Toggle("Apply", false)) {
+ NeodroidSettings.ReapplyProperties(force : true);
+ EditorUtility.SetDirty(NeodroidSettings.Current);
+ }
+ }
+
+ // Register the SettingsProvider
+ [SettingsProvider]
+ public static SettingsProvider CreateNeodroidSettingsProvider() {
+ if (IsSettingsAvailable()) {
+ var provider =
+ new NeodroidSettingsProvider(NeodroidEditorConstants._Neodroid_Project_Settings_Menu_Path,
+ SettingsScope.Project) {
+ keywords =
+ GetSearchKeywordsFromGUIContentProperties
+ ()
+ };
+
+ //provider.keywords = GetSearchKeywordsFromPath(NeodroidEditorConstants._Neodroid_Project_Settings_Menu_Path);
+
+ // Automatically extract all keywords from the Styles.
+ return provider;
+ }
+
+ // Settings Asset doesn't exist yet; no need to display anything in the Settings window.
+ return null;
+ }
+ }
+}
diff --git a/Editor/NeodroidSettings.cs.meta b/Editor/NeodroidSettings.cs.meta
new file mode 100644
index 000000000..90c4821d3
--- /dev/null
+++ b/Editor/NeodroidSettings.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a44aef6c4e27e82199c3be5129c72155
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Resources.meta b/Editor/Resources.meta
new file mode 100644
index 000000000..f3504bda8
--- /dev/null
+++ b/Editor/Resources.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ceeafd630221488aaa13b4d7cae03de0
+timeCreated: 1547270078
\ No newline at end of file
diff --git a/Editor/Resources/GithubExtension.uss b/Editor/Resources/GithubExtension.uss
new file mode 100644
index 000000000..3a2bf4289
--- /dev/null
+++ b/Editor/Resources/GithubExtension.uss
@@ -0,0 +1,27 @@
+#detailActions.display-none {
+ min-width: 0;
+ min-height: 0;
+}
+
+#detailActions #hostingIcon {
+ background-image: resource("Images/GitHub-Mark-Light-32px");
+ width: 16;
+ height: 16;
+ margin-left: 0;
+ margin-right: 0;
+ border-left: 0;
+ border-right: 0;
+ slice-left: 0;
+ slice-right: 0;
+ slice-top: 0;
+ slice-bottom: 0;
+ cursor: link;
+}
+
+#detailActions #hostingIcon.github {
+ background-image: resource("Images/GitHub-Mark-32px");
+}
+
+#detailActions #hostingIcon.github.dark {
+ background-image: resource("Images/GitHub-Mark-Light-32px");
+}
\ No newline at end of file
diff --git a/Editor/Resources/GithubExtension.uss.meta b/Editor/Resources/GithubExtension.uss.meta
new file mode 100644
index 000000000..4c82029aa
--- /dev/null
+++ b/Editor/Resources/GithubExtension.uss.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: a4afe36bde3eba8fdb8318a4a884fa53
+ScriptedImporter:
+ fileIDToRecycleName:
+ 11400000: stylesheet
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Editor/Resources/GithubExtension.uxml b/Editor/Resources/GithubExtension.uxml
new file mode 100644
index 000000000..d337d0348
--- /dev/null
+++ b/Editor/Resources/GithubExtension.uxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Editor/Resources/GithubExtension.uxml.meta b/Editor/Resources/GithubExtension.uxml.meta
new file mode 100644
index 000000000..71854c9c7
--- /dev/null
+++ b/Editor/Resources/GithubExtension.uxml.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fd8020479393113d6b7b61096a652bfd
+ScriptedImporter:
+ fileIDToRecycleName:
+ 11400000: tree
+ 11400002: inlineStyle
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Documentation/Images.meta b/Editor/Resources/Images.meta
similarity index 77%
rename from Documentation/Images.meta
rename to Editor/Resources/Images.meta
index 153d5352d..de1df0c12 100644
--- a/Documentation/Images.meta
+++ b/Editor/Resources/Images.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 7c094ef4207122a4285a15f1720e42ed
+guid: 171b5474012c71cbc83ca2f853cf25c9
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Editor/Resources/Images/GitHub-Mark-32px.png b/Editor/Resources/Images/GitHub-Mark-32px.png
new file mode 100644
index 000000000..434cf090e
--- /dev/null
+++ b/Editor/Resources/Images/GitHub-Mark-32px.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2495121b685778bd251e2b9ceea4124cf98479ec86e7d159658e47fa790f2c0e
+size 1714
diff --git a/Editor/Resources/Images/GitHub-Mark-32px.png.meta b/Editor/Resources/Images/GitHub-Mark-32px.png.meta
new file mode 100644
index 000000000..869921243
--- /dev/null
+++ b/Editor/Resources/Images/GitHub-Mark-32px.png.meta
@@ -0,0 +1,89 @@
+fileFormatVersion: 2
+guid: 7f816f6fb7343f4fa8cc81d288e20a62
+TextureImporter:
+ fileIDToRecycleName:
+ 2186277476908879412: ImportLogs
+ externalObjects: {}
+ serializedVersion: 9
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: -1
+ wrapV: -1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Resources/Images/GitHub-Mark-Light-32px.png b/Editor/Resources/Images/GitHub-Mark-Light-32px.png
new file mode 100644
index 000000000..24255aa87
--- /dev/null
+++ b/Editor/Resources/Images/GitHub-Mark-Light-32px.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b4582ced3c5b039423243207f470dcba7288918131657f89e9bdcada6fa8a40
+size 1571
diff --git a/Editor/Resources/Images/GitHub-Mark-Light-32px.png.meta b/Editor/Resources/Images/GitHub-Mark-Light-32px.png.meta
new file mode 100644
index 000000000..d2550940f
--- /dev/null
+++ b/Editor/Resources/Images/GitHub-Mark-Light-32px.png.meta
@@ -0,0 +1,89 @@
+fileFormatVersion: 2
+guid: b0bb7d061f4c15e0da320c5e3b58332c
+TextureImporter:
+ fileIDToRecycleName:
+ 2186277476908879412: ImportLogs
+ externalObjects: {}
+ serializedVersion: 9
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: -1
+ wrapV: -1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/ScriptableObjects/Curriculum.cs b/Editor/ScriptableObjects/Curriculum.cs
index b50887f28..fd8b02b6d 100644
--- a/Editor/ScriptableObjects/Curriculum.cs
+++ b/Editor/ScriptableObjects/Curriculum.cs
@@ -1,11 +1,17 @@
-#if UNITY_EDITOR
-using Neodroid.Editor.Windows;
-using Neodroid.Runtime.Utilities.ScriptableObjects;
-using UnityEditor;
+using droid.Editor.Windows;
using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.ScriptableObjects.Deprecated;
+using UnityEditor;
-namespace Neodroid.Editor.ScriptableObjects {
+namespace droid.Editor.ScriptableObjects {
+ ///
+ ///
+ ///
public static class CreateCurriculum {
+ ///
+ ///
+ ///
[MenuItem(EditorScriptableObjectMenuPath._ScriptableObjectMenuPath + "Curriculum")]
public static void CreateCurriculumAsset() {
var asset = ScriptableObject.CreateInstance();
diff --git a/Editor/ScriptableObjects/Curriculum.cs.meta b/Editor/ScriptableObjects/Curriculum.cs.meta
index 254631fdd..628300674 100644
--- a/Editor/ScriptableObjects/Curriculum.cs.meta
+++ b/Editor/ScriptableObjects/Curriculum.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: 49c9f168bf4054e75b9208402fe5fca0
-timeCreated: 1512738968
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 118bb18f79adc4eb89be353f47adae5c, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs b/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs
index b2f8c25bf..eb42a52da 100644
--- a/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs
+++ b/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs
@@ -1,5 +1,5 @@
#if UNITY_EDITOR
-namespace Neodroid.Editor.ScriptableObjects {
+namespace droid.Editor.ScriptableObjects {
public static class EditorScriptableObjectMenuPath {
public const string _ScriptableObjectMenuPath = "Tools/Neodroid/Create/ScriptableObjects/";
}
diff --git a/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs.meta b/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs.meta
index 1bfde3b6c..eb8b0c9ad 100644
--- a/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs.meta
+++ b/Editor/ScriptableObjects/EditorScriptableObjectMenuPath.cs.meta
@@ -5,7 +5,7 @@ MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 118bb18f79adc4eb89be353f47adae5c, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/ScriptableObjects/NeodroidSettings.cs b/Editor/ScriptableObjects/NeodroidSettings.cs
deleted file mode 100644
index 1921c92be..000000000
--- a/Editor/ScriptableObjects/NeodroidSettings.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using Common.Editors;
-using UnityEngine;
-
-namespace Neodroid.Editor.ScriptableObjects {
- ///
- ///
- ///
- [System.Serializable]
- [ExecuteInEditMode]
- // ReSharper disable once RequiredBaseTypesIsNotInherited
- public class NeodroidSettings : ScriptableObject {
- static NeodroidSettings _instance;
-
- ///
- /// Returns the release version of the product.
- ///
- public static string Version
- {
- get { return "1.3.0"; }
- }
-
-
- ///
- /// Get a singleton instance of the settings class.
- ///
- public static NeodroidSettings Instance
- {
- get
- {
- if (_instance == null)
- {
- _instance = Resources.Load("TMP Settings");
-
- #if UNITY_EDITOR
- // Make sure UPM(Unity Package Manager) packages resources have been added to the user project
- if (_instance == null)
- {
- // Open Resources Importer
- NeodroidPackageImporterWindow.ShowPackageImporterWindow();
- }
- #endif
- }
-
- return _instance;
- }
- }
-
-
- ///
- /// Static Function to load the Settings file.
- ///
- ///
- public static NeodroidSettings LoadDefaultSettings()
- {
- if (_instance == null)
- {
- // Load settings from Settings file
- var settings = Resources.Load("Neodroid Settings");
- if (settings != null) {
- _instance = settings;
- }
- }
-
- return _instance;
- }
-
-
- ///
- /// Returns the Sprite Asset defined in the Settings file.
- ///
- ///
- public static NeodroidSettings GetSettings()
- {
- if (Instance == null) {
- return null;
- }
-
- return Instance;
- }
- }
-}
diff --git a/Editor/ScriptableObjects/NeodroidSettings.cs.meta b/Editor/ScriptableObjects/NeodroidSettings.cs.meta
deleted file mode 100644
index 1060a9617..000000000
--- a/Editor/ScriptableObjects/NeodroidSettings.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 58ac2ac7773748e396e0788a82471247
-timeCreated: 1537856404
\ No newline at end of file
diff --git a/Editor/ScriptableObjects/NeodroidTask.cs b/Editor/ScriptableObjects/NeodroidTask.cs
index 876dd734d..54c8a9b75 100644
--- a/Editor/ScriptableObjects/NeodroidTask.cs
+++ b/Editor/ScriptableObjects/NeodroidTask.cs
@@ -1,11 +1,17 @@
-#if UNITY_EDITOR
-using Neodroid.Editor.Windows;
-using Neodroid.Runtime.Utilities.ScriptableObjects;
-using UnityEditor;
+using droid.Editor.Windows;
using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.ScriptableObjects.Deprecated;
+using UnityEditor;
-namespace Neodroid.Editor.ScriptableObjects {
+namespace droid.Editor.ScriptableObjects {
+ ///
+ ///
+ ///
public static class CreateNeodroidTask {
+ ///
+ ///
+ ///
[MenuItem(EditorScriptableObjectMenuPath._ScriptableObjectMenuPath + "NeodroidTask")]
public static void CreateNeodroidTaskAsset() {
var asset = ScriptableObject.CreateInstance();
diff --git a/Editor/ScriptableObjects/NeodroidTask.cs.meta b/Editor/ScriptableObjects/NeodroidTask.cs.meta
index 826c3a713..eb6e2c2ab 100644
--- a/Editor/ScriptableObjects/NeodroidTask.cs.meta
+++ b/Editor/ScriptableObjects/NeodroidTask.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: d6514263a597a4839a9c4662b85a9573
-timeCreated: 1510569527
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 118bb18f79adc4eb89be353f47adae5c, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/ScriptableObjects/PlayerMotions.cs b/Editor/ScriptableObjects/PlayerMotions.cs
index 94f0de8c5..4926c5fff 100644
--- a/Editor/ScriptableObjects/PlayerMotions.cs
+++ b/Editor/ScriptableObjects/PlayerMotions.cs
@@ -1,22 +1,89 @@
-#if UNITY_EDITOR
-using Neodroid.Editor.Windows;
-using Neodroid.Runtime.Utilities.ScriptableObjects;
-using UnityEditor;
+using droid.Editor.Windows;
+using droid.Runtime.Prototyping.Actuators;
+using droid.Runtime.ScriptableObjects;
using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.Prototyping.Actors;
+using UnityEditor;
-namespace Neodroid.Editor.ScriptableObjects {
+namespace droid.Editor.ScriptableObjects {
+ ///
+ ///
+ ///
public static class CreatePlayerMotions {
+ ///
+ ///
+ ///
[MenuItem(EditorScriptableObjectMenuPath._ScriptableObjectMenuPath + "PlayerMotions")]
public static void CreatePlayerMotionsAsset() {
var asset = ScriptableObject.CreateInstance();
- AssetDatabase.CreateAsset(asset, EditorWindowMenuPath._NewAssetPath + "Assets/NewPlayerMotions.asset");
+ AssetDatabase.CreateAsset(asset, EditorWindowMenuPath._NewAssetPath + "NewPlayerMotions.asset");
AssetDatabase.SaveAssets();
EditorUtility.FocusProjectWindow();
Selection.activeObject = asset;
}
+
+ ///
+ ///
+ ///
+ public class CreatePlayerMotionsWizard : ScriptableWizard {
+ const float WINDOW_WIDTH = 260, WINDOW_HEIGHT = 500;
+
+ [MenuItem(EditorScriptableObjectMenuPath._ScriptableObjectMenuPath + "PlayerMotions (Wizard)")]
+ private static void Init() {
+ var window = CreateWindow("Create Player Motions...");
+ window.Show();
+ }
+
+ private void Awake() {
+ var icon =
+ AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/table.png");
+ this.minSize = this.maxSize = new Vector2(WINDOW_WIDTH, WINDOW_HEIGHT);
+ this.titleContent = new GUIContent(this.titleContent.text, icon);
+ }
+
+ ///
+ ///
+ ///
+ [Header("Actuators to generate motions for")]
+ public Actor[] actors;
+
+ private void OnWizardCreate() {
+ var asset = CreateInstance();
+ int motionCount = 0;
+
+ foreach (var actor in this.actors) {
+ foreach (var actuator in actor.Actuators) {
+ motionCount += ((Actuator)actuator.Value).InnerMotionNames.Length;
+ }
+ }
+
+ asset._Motions = new PlayerMotion[motionCount];
+ int i = 0;
+ foreach (var actor in this.actors) {
+ foreach (var actuator in actor.Actuators) {
+ for (int j = 0; j < ((Actuator)actuator.Value).InnerMotionNames.Length; j++, i++) {
+ asset._Motions[i] = new PlayerMotion {
+ _Actor = actor.Identifier,
+ _Actuator = ((Actuator)actuator.Value)
+ .InnerMotionNames[j]
+ };
+ }
+ }
+ }
+
+ AssetDatabase.CreateAsset(asset, EditorWindowMenuPath._NewAssetPath + "NewPlayerMotions.asset");
+ AssetDatabase.SaveAssets();
+
+ EditorUtility.FocusProjectWindow();
+
+ Selection.activeObject = asset;
+ }
+ }
}
}
#endif
diff --git a/Editor/ScriptableObjects/PlayerMotions.cs.meta b/Editor/ScriptableObjects/PlayerMotions.cs.meta
index 641267cb4..691d34b27 100644
--- a/Editor/ScriptableObjects/PlayerMotions.cs.meta
+++ b/Editor/ScriptableObjects/PlayerMotions.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: 859f1ff7a0a9a42dd8359d2f2f06e850
-timeCreated: 1512693489
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 118bb18f79adc4eb89be353f47adae5c, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/ScriptableObjects/Segmentations.cs b/Editor/ScriptableObjects/Segmentations.cs
index e1a85d90e..29697c630 100644
--- a/Editor/ScriptableObjects/Segmentations.cs
+++ b/Editor/ScriptableObjects/Segmentations.cs
@@ -1,10 +1,10 @@
-#if UNITY_EDITOR
-using Neodroid.Editor.Windows;
-using Neodroid.Runtime.Utilities.ScriptableObjects;
-using UnityEditor;
+using droid.Editor.Windows;
using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.ScriptableObjects;
+using UnityEditor;
-namespace Neodroid.Editor.ScriptableObjects {
+namespace droid.Editor.ScriptableObjects {
public static class CreateSegmentations {
[MenuItem(EditorScriptableObjectMenuPath._ScriptableObjectMenuPath + "Segmentations")]
public static void CreateSegmentationsAsset() {
diff --git a/Editor/ScriptableObjects/Segmentations.cs.meta b/Editor/ScriptableObjects/Segmentations.cs.meta
index d0e59f922..fa675d70d 100644
--- a/Editor/ScriptableObjects/Segmentations.cs.meta
+++ b/Editor/ScriptableObjects/Segmentations.cs.meta
@@ -1,13 +1,11 @@
fileFormatVersion: 2
guid: b255f207a05704f34b47e7e1ec377ed9
-timeCreated: 1515983396
-licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 118bb18f79adc4eb89be353f47adae5c, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/Utilities/DefineSymbolsController.cs b/Editor/Utilities/DefineSymbolsController.cs
new file mode 100644
index 000000000..d92833517
--- /dev/null
+++ b/Editor/Utilities/DefineSymbolsController.cs
@@ -0,0 +1,139 @@
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+#if UNITY_EDITOR
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ /// Adds the given define symbols to PlayerSettings define symbols.
+ /// Just add your own define symbols to the Symbols property at the below.
+ ///
+ [InitializeOnLoad]
+ public class DefineSymbolsController : UnityEditor.Editor {
+ ///
+ /// Add define symbols as soon as Unity gets done compiling.
+ ///
+ static DefineSymbolsController() { DefineSymbolsFunctionality.AddDefineSymbols(); }
+ }
+
+ ///
+ ///
+ ///
+ public static class DefineSymbolsFunctionality {
+ ///
+ /// Symbols that will be added to the editor
+ ///
+ public static readonly string[] _Symbols = {"NEODROID", "NEODROID_EXISTS"};
+
+ ///
+ /// Debug symbols that will be added to the editor
+ ///
+ public static readonly string[] _Debug_Symbols = {"NEODROID_DEBUG"};
+
+ ///
+ ///
+ ///
+ public static readonly string[] _Github_Symbols = {"NEODROID_USE_GITHUB_EXTENSION"};
+
+ ///
+ ///
+ ///
+ public static readonly string[] _IsPackage_Symbols = {"NEODROID_IS_PACKAGE"};
+
+ ///
+ ///
+ public static void AddDefineSymbols() {
+ var defines_string =
+ PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
+ var all_defines = defines_string.Split(';').ToList();
+ all_defines.AddRange(_Symbols.Except(all_defines));
+ PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup,
+ string.Join(";", all_defines.ToArray()));
+ }
+
+ ///
+ ///
+ public static void AddDebugDefineSymbol() {
+ AddDefineSymbols(_Debug_Symbols);
+
+ Debug.LogWarning("Neodroid Debugging enabled");
+ }
+
+ ///
+ ///
+ ///
+ public static void RemoveDebugDefineSymbols() {
+ RemoveDefineSymbols(_Debug_Symbols);
+
+ Debug.LogWarning("Neodroid Debugging disabled");
+ }
+
+ ///
+ ///
+ ///
+ public static void AddGithubDefineSymbols() {
+ AddDefineSymbols(_Github_Symbols);
+
+ Debug.LogWarning("Github Extension enabled");
+ }
+
+ ///
+ ///
+ ///
+ public static void RemoveGithubDefineSymbols() {
+ RemoveDefineSymbols(_Github_Symbols);
+
+ Debug.LogWarning("Github Extension disabled");
+ }
+
+ ///
+ ///
+ ///
+ public static void AddIsPackageDefineSymbols() {
+ AddDefineSymbols(_IsPackage_Symbols);
+
+ Debug.LogWarning("Neodroid is assumed to be an imported asset");
+ }
+
+ ///
+ ///
+ ///
+ public static void RemoveIsPackageDefineSymbols() {
+ RemoveDefineSymbols(_IsPackage_Symbols);
+ Debug.LogWarning("Neodroid is assumed to be an installed package");
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public static void AddDefineSymbols(string[] symbols) {
+ var defines_string =
+ PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
+ var all_defines = defines_string.Split(';').ToList();
+ all_defines.AddRange(symbols.Except(all_defines));
+
+ PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup,
+ string.Join(";", all_defines.ToArray()));
+ }
+
+ ///
+ ///
+ public static void RemoveDefineSymbols(string[] symbols) {
+ var defines_string =
+ PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
+ var all_defines = defines_string.Split(';').ToList();
+ foreach (var b in symbols) {
+ var res = all_defines.RemoveAll(c => c == b);
+ Debug.LogWarning($"Removed define symbols {symbols.Aggregate((aa, bb) => aa + "," + bb)} : number of entries removed {res}");
+ }
+
+ PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup,
+ string.Join(";", all_defines.ToArray()));
+ }
+ }
+}
+
+#endif
diff --git a/Editor/Utilities/DefineSymbolsController.cs.meta b/Editor/Utilities/DefineSymbolsController.cs.meta
new file mode 100644
index 000000000..6a560bcfa
--- /dev/null
+++ b/Editor/Utilities/DefineSymbolsController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 962c98c878b84923b4f7e2395384772e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ExecutionOrderManager.cs b/Editor/Utilities/ExecutionOrderManager.cs
new file mode 100644
index 000000000..f4865731a
--- /dev/null
+++ b/Editor/Utilities/ExecutionOrderManager.cs
@@ -0,0 +1,31 @@
+#if UNITY_EDITOR
+using UnityEditor;
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ ///
+ [InitializeOnLoad]
+ public class ExecutionOrderManager : UnityEditor.Editor {
+ static ExecutionOrderManager() {
+ foreach (var mono_script in MonoImporter.GetAllRuntimeMonoScripts()) {
+ var type = mono_script.GetClass();
+ if (type == null) {
+ continue;
+ }
+
+ var attributes = type.GetCustomAttributes(typeof(ScriptExecutionOrderAttribute), true);
+
+ if (attributes.Length == 0) {
+ continue;
+ }
+
+ var attribute = (ScriptExecutionOrderAttribute)attributes[0];
+ if (MonoImporter.GetExecutionOrder(mono_script) != attribute.GetOrder()) {
+ MonoImporter.SetExecutionOrder(mono_script, attribute.GetOrder());
+ }
+ }
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/ExecutionOrderManager.cs.meta b/Editor/Utilities/ExecutionOrderManager.cs.meta
new file mode 100644
index 000000000..0e5f07c4a
--- /dev/null
+++ b/Editor/Utilities/ExecutionOrderManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fdee9db062ad5a6aea64803e8e53959f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/Git.meta b/Editor/Utilities/Git.meta
new file mode 100644
index 000000000..28732b4b4
--- /dev/null
+++ b/Editor/Utilities/Git.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7a9efd7d0106770629156608305e8095
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/Git/GithubExtension.cs b/Editor/Utilities/Git/GithubExtension.cs
new file mode 100644
index 000000000..ae7726d93
--- /dev/null
+++ b/Editor/Utilities/Git/GithubExtension.cs
@@ -0,0 +1,242 @@
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text.RegularExpressions;
+using UnityEditor.PackageManager;
+using UnityEngine;
+using UnityEngine.Networking;
+#if UNITY_2019_1_OR_NEWER && UNITY_EDITOR && USE_GITHUB_EXTENSION
+using System.Linq;
+using UnityEngine.UIElements;
+
+namespace droid.Editor.Utilities.Git {
+ ///
+ ///
+ ///
+ public static class GithubExtension {
+ const string _k_display_none = "display-none";
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void SetElementDisplay(VisualElement element, bool value) {
+ if (element == null) {
+ return;
+ }
+
+ SetElementClass(element, _k_display_none, !value);
+ element.visible = value;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool IsElementDisplay(VisualElement element) {
+ return !HasElementClass(element, _k_display_none);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void SetElementClass(VisualElement element, string class_name, bool value) {
+ if (element == null) {
+ return;
+ }
+
+ if (value) {
+ element.AddToClassList(class_name);
+ } else {
+ element.RemoveFromClassList(class_name);
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool HasElementClass(VisualElement element, string class_name) {
+ if (element == null) {
+ return false;
+ }
+
+ return element.ClassListContains(class_name);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetRepoUrl(PackageInfo package_info) {
+ return GetRepoUrl(package_info != null ? package_info.packageId : "");
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetRepoUrl(string package_id) {
+ var m = Regex.Match(package_id, "^[^@]+@([^#]+)(#.+)?$");
+ if (m.Success) {
+ var repo_url = m.Groups[1].Value;
+ repo_url = Regex.Replace(repo_url, "(git:)?git@([^:]+):", "https://$2/");
+ //repoUrl = repoUrl.Replace ("github.com:", "https://github.com/");
+ repo_url = repo_url.Replace("ssh://", "https://");
+ repo_url = repo_url.Replace("git@", "");
+ repo_url = Regex.Replace(repo_url, "\\.git$", "");
+
+ return repo_url;
+ }
+
+ return "";
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetRepoId(PackageInfo package_info) {
+ return GetRepoId(package_info != null ? package_info.packageId : "");
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetRepoId(string package_id) {
+ var m = Regex.Match(GetRepoUrl(package_id), "/([^/]+/[^/]+)$");
+ if (m.Success) {
+ return m.Groups[1].Value;
+ }
+
+ return "";
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetApiRequestUrl(string package_id, string method_path) {
+ var repo_id = GetRepoId(package_id);
+ if (package_id.Contains("github.com")) {
+ return "https://api.github.com/repos/" + repo_id + "/" + method_path;
+ }
+
+ return "";
+ }
+
+ public static AsyncOperation RequestTags(string package_id, List result) {
+ return Request(GetApiRequestUrl(package_id, "tags"), x => FillRefNamesFromResponse(x, result));
+ }
+
+ public static AsyncOperation RequestBranches(string package_id, List result) {
+ return Request(GetApiRequestUrl(package_id, "branches"), x => FillRefNamesFromResponse(x, result));
+ }
+
+ public static void FillRefNamesFromResponse(string res, List result) {
+ result.Clear();
+ result.AddRange(Regex.Matches(res, "\\s*\"name\": \"(.+)\",").Cast()
+ .Select(x => x.Groups[1].Value));
+ }
+
+ public static string GetRevisionHash(PackageInfo package_info) {
+ return GetRevisionHash(package_info != null ? package_info.resolvedPath : "");
+ }
+
+ public static string GetRevisionHash(string resolved_path) {
+ var m = Regex.Match(resolved_path, "@([^@]+)$");
+ if (m.Success) {
+ return m.Groups[1].Value;
+ }
+
+ return "";
+ }
+
+ public static string GetFileUrl(PackageInfo package_info, string file_path) {
+ return package_info != null
+ ? GetFileUrl(package_info.packageId, package_info.resolvedPath, file_path)
+ : "";
+ }
+
+ public static string GetFileUrl(string package_id, string resolved_path, string file_path) {
+ if (string.IsNullOrEmpty(package_id)
+ || string.IsNullOrEmpty(resolved_path)
+ || string.IsNullOrEmpty(file_path)) {
+ return "";
+ }
+
+ var repo_url = GetRepoUrl(package_id);
+ var hash = GetRevisionHash(resolved_path);
+ var blob = "blob";
+
+ return $"{repo_url}/{blob}/{hash}/{file_path}";
+ }
+
+ public static string GetSpecificPackageId(string package_id, string tag) {
+ if (string.IsNullOrEmpty(package_id)) {
+ return "";
+ }
+
+ var m = Regex.Match(package_id, "^([^#]+)(#.+)?$");
+ if (m.Success) {
+ var id = m.Groups[1].Value;
+ return string.IsNullOrEmpty(tag) ? id : id + "#" + tag;
+ }
+
+ return "";
+ }
+
+ public static string GetRequestCache(string url) {
+ var path = GetRequestCachePath(url);
+ return File.Exists(path) && (DateTime.UtcNow - File.GetLastWriteTimeUtc(path)).TotalSeconds < 300
+ ? File.ReadAllText(path)
+ : null;
+ }
+
+ public static string GetRequestCachePath(string url) { return "Temp/RequestCache_" + url.GetHashCode(); }
+
+ public static AsyncOperation Request(string url, Action on_success) {
+ if (string.IsNullOrEmpty(url)) {
+ return null;
+ }
+
+ var cache = GetRequestCache(url);
+ if (!string.IsNullOrEmpty(cache)) {
+ on_success(cache);
+ return null;
+ }
+
+ var www = UnityWebRequest.Get(url);
+ var op = www.SendWebRequest();
+ op.completed += _ => {
+ if (www.isHttpError || www.isHttpError || !string.IsNullOrEmpty(www.error)) {
+ Debug.LogError(www.error);
+ www.Dispose();
+ return;
+ }
+
+ var path = GetRequestCachePath(url);
+ File.WriteAllText(path, www.downloadHandler.text);
+ on_success(www.downloadHandler.text);
+ www.Dispose();
+ };
+ return op;
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/Git/GithubExtension.cs.meta b/Editor/Utilities/Git/GithubExtension.cs.meta
new file mode 100644
index 000000000..bb1df4d15
--- /dev/null
+++ b/Editor/Utilities/Git/GithubExtension.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c059ee11956de51d2b7041090abc6f9e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 501b2acbfbc394d6f84c42932b9b29e5, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/Git/GithubExtensionUserInterface.cs b/Editor/Utilities/Git/GithubExtensionUserInterface.cs
new file mode 100644
index 000000000..d793894d3
--- /dev/null
+++ b/Editor/Utilities/Git/GithubExtensionUserInterface.cs
@@ -0,0 +1,246 @@
+
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEditor.PackageManager;
+using UnityEditor.PackageManager.UI;
+using UnityEngine;
+using PackageInfo = UnityEditor.PackageManager.PackageInfo;
+#if UNITY_2019_1_OR_NEWER && UNITY_EDITOR && USE_GITHUB_EXTENSION
+using System.Linq;
+using UnityEngine.UIElements;
+//using UnityEditor.PackageManager.UI;
+
+namespace droid.Editor.Utilities.Git {
+ ///
+ ///
+ ///
+ [InitializeOnLoad]
+ class GithubExtensionUserInterface : VisualElement {
+ //IPackageManagerExtension {
+ //################################
+ // Constant or Static Members.
+ //################################
+
+ static readonly string _resources_path =
+ NeodroidSettings.Current.NeodroidImportLocationProp + "Editor/Resources/";
+
+ static readonly string _template_path = _resources_path + "GithubExtension.uxml";
+ static readonly string _style_path = _resources_path + "GithubExtension.uss";
+
+ static GithubExtensionUserInterface() {
+ //PackageManagerExtensions.RegisterExtension(new GithubExtensionUserInterface());
+ }
+
+ //################################
+ // Public Members.
+ //################################
+ ///
+ /// Creates the extension UI visual element.
+ ///
+ /// A visual element that represents the UI or null if none
+ public VisualElement CreateExtensionUi() {
+ this._initialized = false;
+ return this;
+ }
+
+ ///
+ /// Called by the Package Manager UI when a package is added or updated.
+ ///
+ /// The package information
+ public void OnPackageAddedOrUpdated(PackageInfo package_info) { this._detail_controls?.SetEnabled(true); }
+
+ ///
+ /// Called by the Package Manager UI when a package is removed.
+ ///
+ /// The package information
+ public void OnPackageRemoved(PackageInfo package_info) { this._detail_controls?.SetEnabled(true); }
+
+ ///
+ /// Called by the Package Manager UI when the package selection changed.
+ ///
+ /// The newly selected package information (can be null)
+ public void OnPackageSelectionChange(PackageInfo package_info) {
+ this.InitializeUi();
+ if (!this._initialized || package_info == null || this._package_info == package_info) {
+ return;
+ }
+
+ this._package_info = package_info;
+
+ var is_git = package_info.source == PackageSource.Git;
+
+ GithubExtension.SetElementDisplay(this._git_detail_actoins, is_git);
+ GithubExtension.SetElementDisplay(this._original_detail_actions, !is_git);
+ GithubExtension.SetElementDisplay(this._detail_controls.Q("", "popupField"), !is_git);
+ GithubExtension.SetElementDisplay(this._update_button, is_git);
+ GithubExtension.SetElementDisplay(this._version_popup, is_git);
+
+ if (is_git) {
+ GithubExtension.RequestTags(this._package_info.packageId, this._tags);
+ GithubExtension.RequestBranches(this._package_info.packageId, this._branches);
+
+ this.SetVersion(this._package_info.version);
+
+ var combo_element = this._detail_controls.Q("updateCombo");
+ var remove_element = this._detail_controls.Q("remove");
+ EditorApplication.delayCall += () => {
+ if (combo_element != null) {
+ GithubExtension.SetElementDisplay(combo_element, true);
+ }
+
+ if (remove_element != null) {
+ GithubExtension.SetElementDisplay(remove_element, true);
+ remove_element.SetEnabled(true);
+ }
+ };
+ }
+
+ GithubExtension.SetElementClass(this.HostingIcon, "github", true);
+ GithubExtension.SetElementClass(this.HostingIcon, "dark", EditorGUIUtility.isProSkin);
+ }
+
+ //################################
+ // Private Members.
+ //################################
+ bool _initialized;
+ PackageInfo _package_info;
+ Button HostingIcon { get { return this._git_detail_actoins.Q("hostingIcon"); } }
+ Button ViewDocumentation { get { return this._git_detail_actoins.Q("viewDocumentation"); } }
+ Button ViewChangelog { get { return this._git_detail_actoins.Q("viewChangelog"); } }
+ Button ViewLicense { get { return this._git_detail_actoins.Q("viewLicense"); } }
+ VisualElement _detail_controls;
+ VisualElement _documentation_container;
+ VisualElement _original_detail_actions;
+ VisualElement _git_detail_actoins;
+ Button _version_popup;
+ Button _update_button;
+ List _tags = new List();
+ List _branches = new List();
+
+ ///
+ /// Initializes UI.
+ ///
+ void InitializeUi() {
+ if (this._initialized) {
+ return;
+ }
+
+ var package_manager_element = this.parent?.parent;
+ if (package_manager_element == null) {
+ return;
+ }
+
+ this._detail_controls = package_manager_element
+ .parent?.parent?.parent?.Q("packageToolBar")?.Q("toolbarContainer")
+ ?.Q("rightItems");
+ if (this._detail_controls == null) {
+ return;
+ }
+
+ var asset = AssetDatabase.LoadAssetAtPath(_template_path);
+ if (!asset) {
+ Debug.Log($"Asset {_template_path} was not found");
+ return;
+ }
+
+ this._git_detail_actoins = asset.CloneTree().Q("detailActions");
+ this._git_detail_actoins.styleSheets.Add(EditorGUIUtility.Load(_style_path) as StyleSheet);
+
+ // Add callbacks
+ this.HostingIcon.clickable.clicked +=
+ () => Application.OpenURL(GithubExtension.GetRepoUrl(this._package_info));
+ this.ViewDocumentation.clickable.clicked +=
+ () => Application.OpenURL(GithubExtension.GetFileUrl(this._package_info, "README.md"));
+ this.ViewChangelog.clickable.clicked +=
+ () => Application.OpenURL(GithubExtension.GetFileUrl(this._package_info, "CHANGELOG.md"));
+ this.ViewLicense.clickable.clicked +=
+ () => Application.OpenURL(GithubExtension.GetFileUrl(this._package_info, "LICENSE.md"));
+
+ this._documentation_container = package_manager_element.Q("documentationContainer");
+ this._original_detail_actions = this._documentation_container.Q("detailActions");
+ this._documentation_container.Add(this._git_detail_actoins);
+
+ this._update_button = new Button(this.AddOrUpdatePackage) {name = "update", text = "Up to date"};
+ this._update_button.AddToClassList("action");
+ this._version_popup = new Button(this.PopupVersions) {
+ text = "hoge",
+ style = {
+ marginLeft = -4,
+ marginRight = -3,
+ marginTop = -3,
+ marginBottom = -3,
+ },
+ };
+ this._version_popup.AddToClassList("popup");
+ this._version_popup.AddToClassList("popupField");
+ this._version_popup.AddToClassList("versions");
+
+ //this._detail_controls.Q("updateCombo").Add(this._update_button);
+ this._detail_controls.Insert(0, this._update_button);
+//this._detail_controls.Q("updateCombo").Insert(1, this._update_button);
+ //this._detail_controls.Insert(1, this._update_button);
+ //this._detail_controls.Q("updateDropdownContainer").Add(this._version_popup);
+ this._detail_controls.Insert(0, this._version_popup);
+
+ this._initialized = true;
+ }
+
+ public static string GetVersionText(string version, string current = null) {
+ return current == null || current != version ? version : version + " - current";
+ }
+
+ void PopupVersions() {
+ var menu = new GenericMenu();
+ var current = this._package_info.version;
+
+ menu.AddItem(new GUIContent(current + " - current"),
+ this._version_popup.text == current,
+ this.SetVersion,
+ current);
+
+ foreach (var t in this._tags.OrderByDescending(x => x)) {
+ var tag = t;
+ var text = new GUIContent("All Tags/" + (current == tag ? tag + " - current" : tag));
+ menu.AddItem(text,
+ this._version_popup.text == tag,
+ this.SetVersion,
+ tag);
+ }
+
+ menu.AddItem(new GUIContent("All Branches/(default)"),
+ false,
+ this.SetVersion,
+ "(default)");
+ foreach (var t in this._branches.OrderBy(x => x)) {
+ var tag = t;
+ var text = new GUIContent("All Branches/" + (current == tag ? tag + " - current" : tag));
+ menu.AddItem(text,
+ this._version_popup.text == tag,
+ this.SetVersion,
+ tag);
+ }
+
+ menu.DropDown(new Rect(this._version_popup.LocalToWorld(new Vector2(0, 10)), Vector2.zero));
+ }
+
+ void SetVersion(object version) {
+ var ver = version as string;
+ this._version_popup.text = ver;
+ var same_ver = this._package_info.version != ver;
+ this._update_button.SetEnabled(same_ver);
+ if (!same_ver) {
+ this._update_button.text = "Update";
+ }
+
+ //this._update_button.SetEnabled(true);
+ }
+
+ void AddOrUpdatePackage() {
+ var target = this._version_popup.text != "(default)" ? this._version_popup.text : "";
+ var id = GithubExtension.GetSpecificPackageId(this._package_info.packageId, target);
+ Client.Remove(this._package_info.name);
+ Client.Add(id);
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/Git/GithubExtensionUserInterface.cs.meta b/Editor/Utilities/Git/GithubExtensionUserInterface.cs.meta
new file mode 100644
index 000000000..2b121916e
--- /dev/null
+++ b/Editor/Utilities/Git/GithubExtensionUserInterface.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 45da2b172943e1aa28a06481474d8760
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 501b2acbfbc394d6f84c42932b9b29e5, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/MeshSaver.cs b/Editor/Utilities/MeshSaver.cs
new file mode 100644
index 000000000..b5fbeb017
--- /dev/null
+++ b/Editor/Utilities/MeshSaver.cs
@@ -0,0 +1,69 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ ///
+ public static class MeshSaverEditor {
+ const string _menu_path = "CONTEXT" + "/MeshFilter" + "/SaveMesh";
+
+ ///
+ ///
+ ///
+ ///
+ [MenuItem(_menu_path)]
+ public static void SaveMeshInPlace(MenuCommand menu_command) {
+ var mf = menu_command.context as MeshFilter;
+
+ if (mf != null) {
+ var m = mf.sharedMesh;
+ SaveMesh(m,
+ m.name,
+ false,
+ true);
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ [MenuItem(_menu_path + "AsANewInstance")]
+ public static void SaveMeshNewInstanceItem(MenuCommand menu_command) {
+ var mf = menu_command.context as MeshFilter;
+
+ if (mf != null) {
+ var m = mf.sharedMesh;
+ SaveMesh(m,
+ m.name,
+ true,
+ true);
+ }
+ }
+
+ public static void SaveMesh(Mesh mesh, string name, bool make_new_instance, bool optimize_mesh) {
+ var path = EditorUtility.SaveFilePanel("Save Separate Mesh Asset",
+ "Neodroid/Runtime/Meshes",
+ name,
+ "asset");
+ Debug.Log($"Trying to save mesh to {path}");
+ if (string.IsNullOrEmpty(path)) {
+ return;
+ }
+
+ path = FileUtil.GetProjectRelativePath(path);
+
+ var mesh_to_save = make_new_instance ? Object.Instantiate(mesh) : mesh;
+
+ if (optimize_mesh) {
+ MeshUtility.Optimize(mesh_to_save);
+ }
+
+ AssetDatabase.CreateAsset(mesh_to_save, path);
+ AssetDatabase.SaveAssets();
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/MeshSaver.cs.meta b/Editor/Utilities/MeshSaver.cs.meta
new file mode 100644
index 000000000..d2c82dd85
--- /dev/null
+++ b/Editor/Utilities/MeshSaver.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0895134517ff4e81af01766ab787eff8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/NeodroidEditorUtilities.cs b/Editor/Utilities/NeodroidEditorUtilities.cs
index 12e462833..0fbb4d6f3 100644
--- a/Editor/Utilities/NeodroidEditorUtilities.cs
+++ b/Editor/Utilities/NeodroidEditorUtilities.cs
@@ -1,30 +1,34 @@
-#if UNITY_EDITOR
-using UnityEditor;
+using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Utilities {
+namespace droid.Editor.Utilities {
///
- ///
///
public static class NeodroidEditorUtilities {
+ static Color _link_color = new Color(0x00 / 255f,
+ 0x78 / 255f,
+ 0xDA / 255f,
+ 1f);
+
static GUIStyle _default_link_style = new GUIStyle(EditorStyles.label) {
- fontSize = 14,
- wordWrap = false,
- normal = {textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f)},
- stretchWidth = false
- };
+ fontSize = 14,
+ wordWrap = false,
+ normal = {
+ textColor =
+ _link_color
+ },
+ stretchWidth = false
+ };
///
- ///
///
///
///
///
///
- public static bool LinkLabel(
- GUIContent label,
- GUIStyle link_style = null,
- params GUILayoutOption[] options) {
+ public static bool LinkLabel(GUIContent label,
+ GUIStyle link_style = null,
+ params GUILayoutOption[] options) {
if (link_style == null) {
link_style = _default_link_style;
}
@@ -44,4 +48,3 @@ public static bool LinkLabel(
}
}
}
-#endif
diff --git a/Editor/Utilities/NeodroidEditorUtilities.cs.meta b/Editor/Utilities/NeodroidEditorUtilities.cs.meta
index 738a517d6..4915ab9a3 100644
--- a/Editor/Utilities/NeodroidEditorUtilities.cs.meta
+++ b/Editor/Utilities/NeodroidEditorUtilities.cs.meta
@@ -1,3 +1,11 @@
-fileFormatVersion: 2
+fileFormatVersion: 2
guid: 85bb5e900cac47a799c0fa1d0f2c0cdc
-timeCreated: 1526230688
\ No newline at end of file
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/NeodroidPackageImporterWindow.cs b/Editor/Utilities/NeodroidPackageImporterWindow.cs
new file mode 100644
index 000000000..5d03041a3
--- /dev/null
+++ b/Editor/Utilities/NeodroidPackageImporterWindow.cs
@@ -0,0 +1,186 @@
+using System.IO;
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ ///
+ public class NeodroidPackageImporterWindow : EditorWindow {
+ [SerializeField] bool kEssentialResourcesImported;
+ [SerializeField] bool kExamplesAndExtrasResourcesImported;
+ [SerializeField] bool kIsImportingExamples;
+
+ ///
+ ///
+ public static void ShowPackageImporterWindow() {
+ var window = GetWindow();
+ window.titleContent = new GUIContent("Neodroid Importer");
+ window.Focus();
+ }
+
+ void OnEnable() {
+ // Set Editor Window Size
+ this.SetEditorWindowSize();
+
+ // Special handling due to scripts imported in a .unitypackage result in resulting in an assembly reload which clears the callbacks.
+ if (this.kIsImportingExamples) {
+ AssetDatabase.importPackageCompleted += this.ImportCallback;
+ this.kIsImportingExamples = false;
+ }
+ }
+
+ void OnDestroy() {
+ this.kEssentialResourcesImported = false;
+ this.kExamplesAndExtrasResourcesImported = false;
+ }
+
+ void OnGUI() {
+ var import_essentials_package = false;
+ var import_examples_package = false;
+
+ GUILayout.BeginVertical();
+ {
+ // Display options to import Essential resources
+ GUILayout.BeginVertical(EditorStyles.helpBox);
+ {
+ GUILayout.Label("Neodroid Essentials", EditorStyles.boldLabel);
+ GUILayout.Label("This appears to be the first time you access TextMesh Pro, as such we need to add resources to your project that are essential for using TextMesh Pro. These new resources will be placed at the root of your project in the \"TextMesh Pro\" folder.",
+ new GUIStyle(EditorStyles.label) {wordWrap = true});
+ GUILayout.Space(5f);
+
+ GUI.enabled = !this.kEssentialResourcesImported;
+ if (GUILayout.Button("Import TMP Essentials")) {
+ import_essentials_package = true;
+ }
+
+ GUILayout.Space(5f);
+ GUI.enabled = true;
+ }
+ GUILayout.EndVertical();
+
+ // Display options to import Examples & Extras
+ GUILayout.BeginVertical(EditorStyles.helpBox);
+ {
+ GUILayout.Label("TMP Examples & Extras", EditorStyles.boldLabel);
+ GUILayout.Label("The Examples & Extras package contains addition resources and examples that will make discovering and learning about TextMesh Pro's powerful features easier. These additional resources will be placed in the same folder as the TMP essential resources.",
+ new GUIStyle(EditorStyles.label) {wordWrap = true});
+ GUILayout.Space(5f);
+
+ GUI.enabled = this.kEssentialResourcesImported && !this.kExamplesAndExtrasResourcesImported;
+ if (GUILayout.Button("Import TMP Examples & Extras")) {
+ import_examples_package = true;
+ }
+
+ GUILayout.Space(5f);
+ GUI.enabled = true;
+ }
+ GUILayout.EndVertical();
+ }
+ GUILayout.EndVertical();
+ GUILayout.Space(5f);
+
+ // Import Essential Resources
+ if (import_essentials_package) {
+ AssetDatabase.importPackageCompleted += this.ImportCallback;
+
+ var package_full_path = GetPackageFullPath();
+ AssetDatabase.ImportPackage(package_full_path
+ + "/Package Resources/TMP Essential Resources.unitypackage",
+ false);
+ }
+
+ // Import Examples & Extras
+ if (import_examples_package) {
+ // Set flag to get around importing scripts as per of this package which results in an assembly reload which in turn prevents / clears any callbacks.
+ this.kIsImportingExamples = true;
+
+ var package_full_path = GetPackageFullPath();
+ AssetDatabase.ImportPackage(package_full_path
+ + "/Package Resources/TMP Examples & Extras.unitypackage",
+ false);
+ }
+ }
+
+ void OnInspectorUpdate() { this.Repaint(); }
+
+ ///
+ /// Limits the minimum size of the editor window.
+ ///
+ void SetEditorWindowSize() {
+ EditorWindow editor_window = this;
+
+ var window_size = new Vector2(640, 210);
+ editor_window.minSize = window_size;
+ editor_window.maxSize = window_size;
+ }
+
+ ///
+ ///
+ ///
+ void ImportCallback(string package_name) {
+ if (package_name == "TMP Essential Resources") {
+ this.kEssentialResourcesImported = true;
+ //TMPro_EventManager.ON_RESOURCES_LOADED();
+
+ #if UNITY_2018_3_OR_NEWER
+ SettingsService.NotifySettingsProviderChanged();
+ #endif
+ } else if (package_name == "TMP Examples & Extras") {
+ this.kExamplesAndExtrasResourcesImported = true;
+ this.kIsImportingExamples = false;
+ }
+
+ Debug.Log("[" + package_name + "] have been imported.");
+
+ AssetDatabase.importPackageCompleted -= this.ImportCallback;
+ }
+
+ static string GetPackageFullPath() {
+ // Check for potential UPM package
+ var package_path = Path.GetFullPath("Packages/com.unity.textmeshpro");
+ if (Directory.Exists(package_path)) {
+ return package_path;
+ }
+
+ package_path = Path.GetFullPath("Assets/..");
+ if (Directory.Exists(package_path)) {
+ // Search default location for development package
+ if (Directory.Exists(package_path + "/Assets/Packages/com.unity.TextMeshPro/Editor Resources")) {
+ return package_path + "/Assets/Packages/com.unity.TextMeshPro";
+ }
+
+ // Search for default location of normal TextMesh Pro AssetStore package
+ if (Directory.Exists(package_path + "/Assets/TextMesh Pro/Editor Resources")) {
+ return package_path + "/Assets/TextMesh Pro";
+ }
+
+ // Search for potential alternative locations in the user project
+ var matching_paths =
+ Directory.GetDirectories(package_path, "TextMesh Pro", SearchOption.AllDirectories);
+ var path = ValidateLocation(matching_paths, package_path);
+ if (path != null) {
+ return package_path + path;
+ }
+ }
+
+ return null;
+ }
+
+ static string ValidateLocation(string[] paths, string project_path) {
+ for (var i = 0; i < paths.Length; i++) {
+ // Check if the Editor Resources folder exists.
+ if (Directory.Exists(paths[i] + "Editor/Resources")) {
+ var folder_path = paths[i].Replace(project_path, "");
+ folder_path = folder_path.TrimStart('\\', '/');
+ return folder_path;
+ }
+ }
+
+ return null;
+ }
+ }
+}
+
+#endif
diff --git a/Editor/Utilities/NeodroidPackageImporterWindow.cs.meta b/Editor/Utilities/NeodroidPackageImporterWindow.cs.meta
new file mode 100644
index 000000000..e952c5461
--- /dev/null
+++ b/Editor/Utilities/NeodroidPackageImporterWindow.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d49f59d859f7dc8409391acd63a970c4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/Note.cs b/Editor/Utilities/Note.cs
deleted file mode 100644
index 5df999981..000000000
--- a/Editor/Utilities/Note.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-#if UNITY_EDITOR
-using System;
-using UnityEditor;
-using UnityEngine;
-
-namespace Neodroid.Editor.Utilities {
- ///
- ///
- ///
- [Serializable]
- public class Note : MonoBehaviour {
- ///
- ///
- ///
- [TextArea, Tooltip("A component for holding notes or comments"), SerializeField]
- public string _Text;
-
- ///
- ///
- ///
- [NonSerialized]
- public bool _Editing;
-
- ///
- ///
- ///
- public void EditToggle() { this._Editing = !this._Editing; }
-
- void Start() { this.enabled = false; }
- }
-
- ///
- ///
- ///
- enum NoteType {
- Text_area_,
- Text_field_,
- Delayed_text_field_,
- Label_,
- Box_text_,
- Box_info_,
- Box_warning_,
- Box_error_
- }
-
- ///
- ///
- ///
- [CustomEditor(typeof(Note))]
- public class NoteEditor : UnityEditor.Editor {
- NoteType _note_type = NoteType.Box_info_;
-
- ///
- ///
- ///
- public override void OnInspectorGUI() {
- var note = (Note)this.target;
-
- if (note._Editing) {
- //DrawDefaultInspector();// Unity function
- note._Text = EditorGUILayout.TextArea(note._Text);
-
- EditorGUILayout.Separator();
-
- this._note_type = (NoteType)EditorGUILayout.EnumPopup(this._note_type);
-
- if (GUILayout.Button("Done")) {
- note.EditToggle();
- }
- } else {
- switch (this._note_type) {
- case NoteType.Text_area_:
- EditorGUILayout.TextArea(note._Text);
- break;
- case NoteType.Text_field_:
- EditorGUILayout.TextField(note._Text);
- break;
- case NoteType.Label_:
- EditorGUILayout.LabelField(note._Text);
- break;
- case NoteType.Box_text_:
- EditorGUILayout.HelpBox(note._Text, MessageType.None);
- break;
- case NoteType.Box_info_:
- EditorGUILayout.HelpBox(note._Text, MessageType.Info);
- break;
- case NoteType.Box_warning_:
- EditorGUILayout.HelpBox(note._Text, MessageType.Warning);
- break;
- case NoteType.Box_error_:
- EditorGUILayout.HelpBox(note._Text, MessageType.Error);
- break;
- case NoteType.Delayed_text_field_:
- break;
- default:
- EditorGUILayout.HelpBox(note._Text, MessageType.Info);
- break;
- }
-
- EditorGUILayout.Separator();
-
- if (GUILayout.Button("Edit")) {
- note.EditToggle();
- }
- }
- }
- }
-}
-#endif
\ No newline at end of file
diff --git a/Editor/Utilities/NoteUtilities.meta b/Editor/Utilities/NoteUtilities.meta
new file mode 100644
index 000000000..35633edff
--- /dev/null
+++ b/Editor/Utilities/NoteUtilities.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 4f818291dc0048538f91833dbe5db2f9
+timeCreated: 1538739514
\ No newline at end of file
diff --git a/Editor/Utilities/NoteUtilities/NoteEditor.cs b/Editor/Utilities/NoteUtilities/NoteEditor.cs
new file mode 100644
index 000000000..1728f9705
--- /dev/null
+++ b/Editor/Utilities/NoteUtilities/NoteEditor.cs
@@ -0,0 +1,70 @@
+using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.Utilities;
+using UnityEditor;
+
+namespace droid.Editor.Utilities.NoteUtilities {
+ ///
+ ///
+ ///
+ [CustomEditor(typeof(Note))]
+ public class NoteEditor : UnityEditor.Editor {
+ NoteType _note_type = NoteType.Box_info_;
+
+ ///
+ ///
+ ///
+ public override void OnInspectorGUI() {
+ var note = (Note)this.target;
+
+ if (note._Editing) {
+ //DrawDefaultInspector();// Unity function
+ note._Text = EditorGUILayout.TextArea(note._Text);
+
+ EditorGUILayout.Separator();
+
+ this._note_type = (NoteType)EditorGUILayout.EnumPopup(this._note_type);
+
+ if (GUILayout.Button("Done")) {
+ note.EditToggle();
+ }
+ } else {
+ switch (this._note_type) {
+ case NoteType.Text_area_:
+ EditorGUILayout.TextArea(note._Text);
+ break;
+ case NoteType.Text_field_:
+ EditorGUILayout.TextField(note._Text);
+ break;
+ case NoteType.Label_:
+ EditorGUILayout.LabelField(note._Text);
+ break;
+ case NoteType.Box_text_:
+ EditorGUILayout.HelpBox(note._Text, MessageType.None);
+ break;
+ case NoteType.Box_info_:
+ EditorGUILayout.HelpBox(note._Text, MessageType.Info);
+ break;
+ case NoteType.Box_warning_:
+ EditorGUILayout.HelpBox(note._Text, MessageType.Warning);
+ break;
+ case NoteType.Box_error_:
+ EditorGUILayout.HelpBox(note._Text, MessageType.Error);
+ break;
+ case NoteType.Delayed_text_field_:
+ break;
+ default:
+ EditorGUILayout.HelpBox(note._Text, MessageType.Info);
+ break;
+ }
+
+ EditorGUILayout.Separator();
+
+ if (GUILayout.Button("Edit")) {
+ note.EditToggle();
+ }
+ }
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/NoteUtilities/NoteEditor.cs.meta b/Editor/Utilities/NoteUtilities/NoteEditor.cs.meta
new file mode 100644
index 000000000..b5c916acc
--- /dev/null
+++ b/Editor/Utilities/NoteUtilities/NoteEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3aee33ab80e54995a17473b83163c0b9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 45db667f37dda44ed968a181cdfb79c6, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/NoteUtilities/NoteType.cs b/Editor/Utilities/NoteUtilities/NoteType.cs
new file mode 100644
index 000000000..1ba9bc23e
--- /dev/null
+++ b/Editor/Utilities/NoteUtilities/NoteType.cs
@@ -0,0 +1,16 @@
+#if UNITY_EDITOR
+namespace droid.Editor.Utilities.NoteUtilities {
+ ///
+ ///
+ enum NoteType {
+ Text_area_,
+ Text_field_,
+ Delayed_text_field_,
+ Label_,
+ Box_text_,
+ Box_info_,
+ Box_warning_,
+ Box_error_
+ }
+}
+#endif
diff --git a/Editor/Utilities/NoteUtilities/NoteType.cs.meta b/Editor/Utilities/NoteUtilities/NoteType.cs.meta
new file mode 100644
index 000000000..e131d2a63
--- /dev/null
+++ b/Editor/Utilities/NoteUtilities/NoteType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b7cf2fc43a784b0eb77b194bdb10fd28
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 45db667f37dda44ed968a181cdfb79c6, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ObjectDropdown.meta b/Editor/Utilities/ObjectDropdown.meta
new file mode 100644
index 000000000..cb9cd087d
--- /dev/null
+++ b/Editor/Utilities/ObjectDropdown.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 13102fc96b93420b8b8ac4e786c02570
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs b/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs
new file mode 100644
index 000000000..0e10810ff
--- /dev/null
+++ b/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs
@@ -0,0 +1,14 @@
+using System;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.ObjectDropdown {
+ ///
+ ///
+ ///
+ public class ObjectDropdownAttribute : PropertyAttribute { }
+
+ public class ObjectDropdownFilterAttribute : PropertyAttribute {
+ public Type _FilterType;
+ public ObjectDropdownFilterAttribute(Type a_type) { this._FilterType = a_type; }
+ }
+}
diff --git a/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs.meta b/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs.meta
new file mode 100644
index 000000000..f54b5767e
--- /dev/null
+++ b/Editor/Utilities/ObjectDropdown/ObjectDropdownAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a3e75ab017f1dda9ab96bc187640d661
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs b/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs
new file mode 100644
index 000000000..96b37b227
--- /dev/null
+++ b/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs
@@ -0,0 +1,128 @@
+using System.Collections.Generic;
+using System.Reflection;
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.ObjectDropdown {
+ ///
+ ///
+ ///
+ [CustomPropertyDrawer(typeof(ObjectDropdownAttribute))]
+ public class ObjectSelectorDropdown : PropertyDrawer {
+ List _m_list = new List();
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
+ var e = Event.current;
+ if (property.propertyType == SerializedPropertyType.ObjectReference) {
+ if ((e.type == EventType.DragPerform
+ || e.type == EventType.DragExited
+ || e.type == EventType.DragUpdated
+ || e.type == EventType.Repaint)
+ && position.Contains(e.mousePosition)
+ && e.shift) {
+ if (DragAndDrop.objectReferences != null) {
+ this._m_list.Clear();
+ foreach (var o in DragAndDrop.objectReferences) {
+ this._m_list.Add(o);
+ var go = o as GameObject;
+ if (go == null && o is Component) {
+ go = ((Component)o).gameObject;
+ this._m_list.Add(go);
+ }
+
+ if (go != null) {
+ foreach (var c in go.GetComponents()) {
+ if (c != o) {
+ this._m_list.Add(c);
+ }
+ }
+ }
+ }
+
+ var field_info = property.GetPropertyReferenceType();
+ if (field_info != null) {
+ var type = field_info.FieldType;
+ for (var i = this._m_list.Count - 1; i >= 0; i--) {
+ if (this._m_list[i] == null || !type.IsAssignableFrom(this._m_list[i].GetType())) {
+ this._m_list.RemoveAt(i);
+ }
+ }
+ }
+
+ if (this.attribute is ObjectDropdownFilterAttribute att) {
+ var type = att._FilterType;
+ for (var i = this._m_list.Count - 1; i >= 0; i--) {
+ if (!type.IsAssignableFrom(this._m_list[i].GetType())) {
+ this._m_list.RemoveAt(i);
+ }
+ }
+ }
+
+ if (this._m_list.Count == 0) {
+ DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
+ } else {
+ DragAndDrop.visualMode = DragAndDropVisualMode.Link;
+ if (e.type == EventType.DragPerform) {
+ var gm = new GenericMenu();
+ GenericMenu.MenuFunction2 func = o => {
+ property.objectReferenceValue = (Object)o;
+ property.serializedObject.ApplyModifiedProperties();
+ };
+ foreach (var item in this._m_list) {
+ gm.AddItem(new GUIContent(item.name + "(" + item.GetType().Name + ")"),
+ false,
+ func,
+ item);
+ }
+
+ gm.ShowAsContext();
+ e.Use();
+ }
+ }
+
+ this._m_list.Clear();
+ }
+ }
+
+ EditorGUI.ObjectField(position, property, label);
+ } else {
+ EditorGUI.PropertyField(position, property, label);
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public static class SerializedPropertyExt {
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static FieldInfo GetPropertyReferenceType(this SerializedProperty a_property) {
+ var current_type = a_property.serializedObject.targetObject.GetType();
+ FieldInfo fi = null;
+ var parts = a_property.propertyPath.Split('.');
+ foreach (var field_name in parts) {
+ fi = current_type.GetField(field_name,
+ BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
+ if (fi == null) {
+ return null;
+ }
+
+ current_type = fi.FieldType;
+ }
+
+ return fi;
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs.meta b/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs.meta
new file mode 100644
index 000000000..78a4e76de
--- /dev/null
+++ b/Editor/Utilities/ObjectDropdown/ObjectSelectorDropdown.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e3cf9163b1b4d44419a771e98cb1720e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/PostProcessing.meta b/Editor/Utilities/PostProcessing.meta
new file mode 100644
index 000000000..63eefbb72
--- /dev/null
+++ b/Editor/Utilities/PostProcessing.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 92019bd49d2dcf1799400705bad03aa7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/PostProcessing/FlipEditor.cs b/Editor/Utilities/PostProcessing/FlipEditor.cs
new file mode 100644
index 000000000..0a9ee3fc2
--- /dev/null
+++ b/Editor/Utilities/PostProcessing/FlipEditor.cs
@@ -0,0 +1,24 @@
+#if UNITY_POST_PROCESSING_STACK_V2
+using droid.Runtime.Utilities.PostProcessesEffects;
+using UnityEditor.Rendering.PostProcessing;
+
+namespace droid.Editor.Utilities.PostProcessing {
+ [PostProcessEditor(typeof(Flipper))]
+ public sealed class FlipEditor : PostProcessEffectEditor
+ {
+
+ SerializedParameterOverride _m_flip_x;
+ SerializedParameterOverride _m_flip_y;
+
+ public override void OnEnable(){
+ this._m_flip_x = this.FindParameterOverride(x => x.flip_x);
+ this._m_flip_y = this.FindParameterOverride(x => x.flip_y);
+ }
+
+ public override void OnInspectorGUI(){
+ this.PropertyField(this._m_flip_x);
+ this.PropertyField(this._m_flip_y);
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/PostProcessing/FlipEditor.cs.meta b/Editor/Utilities/PostProcessing/FlipEditor.cs.meta
new file mode 100644
index 000000000..4b7880223
--- /dev/null
+++ b/Editor/Utilities/PostProcessing/FlipEditor.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: fedbd1f564ee48b2930d82f7f1d7284f
+timeCreated: 1568235018
\ No newline at end of file
diff --git a/Editor/Utilities/PostProcessing/GrayscaleEditor.cs b/Editor/Utilities/PostProcessing/GrayscaleEditor.cs
new file mode 100644
index 000000000..42409410b
--- /dev/null
+++ b/Editor/Utilities/PostProcessing/GrayscaleEditor.cs
@@ -0,0 +1,22 @@
+#if UNITY_POST_PROCESSING_STACK_V2
+using droid.Runtime.Utilities.PostProcessesEffects;
+using UnityEditor.Rendering.PostProcessing;
+
+namespace droid.Editor.Utilities.PostProcessing {
+ [PostProcessEditor(typeof(Grayscale))]
+ public sealed class GrayscaleEditor : PostProcessEffectEditor
+ {
+ SerializedParameterOverride _m_blend;
+
+
+ public override void OnEnable(){
+ this._m_blend = this.FindParameterOverride(x => x.blend);
+
+ }
+
+ public override void OnInspectorGUI(){
+ this.PropertyField(this._m_blend);
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/PostProcessing/GrayscaleEditor.cs.meta b/Editor/Utilities/PostProcessing/GrayscaleEditor.cs.meta
new file mode 100644
index 000000000..937e62203
--- /dev/null
+++ b/Editor/Utilities/PostProcessing/GrayscaleEditor.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 55de9b2c693442b7a7186902d5ffea10
+timeCreated: 1568186886
\ No newline at end of file
diff --git a/Editor/Utilities/RuntimeDebugDraw.cs b/Editor/Utilities/RuntimeDebugDraw.cs
new file mode 100644
index 000000000..a08d6b6e5
--- /dev/null
+++ b/Editor/Utilities/RuntimeDebugDraw.cs
@@ -0,0 +1,679 @@
+using System;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using Conditional = System.Diagnostics.ConditionalAttribute;
+using Object = UnityEngine.Object;
+
+namespace droid.Editor.Utilities {
+/*
+
+Important Notes:
+ 1. You are expected to make some changes in this file before intergrating this into you projects.
+ a. `_DEBUG` symbol, you should this to your project's debugging symbol so these draw calls will be compiled away in final release builds.
+ If you forget to do this, DrawXXX calls won't be shown.
+ b. `RuntimeDebugDraw` namespace and `Draw` class name, you can change this into your project's namespace to make it more accessable.
+ c. `Draw.DrawLineLayer` is the layer the lines will be drawn on. If you have camera postprocessing turned on, set this to a layer that is ignored
+ by the post processor.
+ d. `GetDebugDrawCamera()` will be called to get the camera for line drawings and text coordinate calcuation.
+ It defaults to `Camera.main`, returning null will mute drawings.
+ e. `DrawTextDefaultSize`/`DrawDefaultColor` styling variables, defaults as Unity Debug.Draw.
+ 2. Performance should be relatively ok for debugging, but it's never intended for release use. You should use conditional to
+ compile away these calls anyway. Additionally DrawText is implemented with OnGUI, which costs a lot on mobile devices.
+ 3. Don't rename this file of 'RuntimeDebugDraw' or this won't work. This file contains a MonoBehavior also named 'RuntimeDebugDraw' and Unity needs this file
+ to have the same name. If you really want to rename this file, remember to rename the 'RuntimeDebugDraw' class below too.
+
+ */
+
+ namespace RuntimeDebugDraw {
+ ///
+ ///
+ public static class Draw {
+ #region Editor
+
+ #if UNITY_EDITOR
+ ///
+ ///
+ [InitializeOnLoad]
+ public static class DrawEditor {
+ static DrawEditor() {
+ // set a low execution order
+ var name = typeof(RuntimeDebugDraw.Internal.RuntimeDebugDraw).Name;
+ foreach (var mono_script in MonoImporter.GetAllRuntimeMonoScripts()) {
+ if (name != mono_script.name) {
+ continue;
+ }
+
+ if (MonoImporter.GetExecutionOrder(mono_script) != 9990) {
+ MonoImporter.SetExecutionOrder(mono_script, 9990);
+ return;
+ }
+ }
+ }
+ }
+ #endif
+
+ #endregion
+
+ #region Main Functions
+
+ ///
+ /// Which layer the lines will be drawn on.
+ ///
+ public const int _DrawLineLayer = 4;
+
+ ///
+ /// Default font size for DrawText.
+ ///
+ public const int _DrawTextDefaultSize = 12;
+
+ ///
+ /// Default color for Draws.
+ ///
+ public static Color _DrawDefaultColor = Color.white;
+
+ ///
+ /// Which camera to use for line drawing and texts coordinate calculation.
+ ///
+ /// Camera to debug draw on, returns null will mute debug drawing.
+ public static Camera GetDebugDrawCamera() { return Camera.main; }
+
+ const string _conditional_flag = "NEODROID_DEBUG";
+
+ ///
+ /// Draw a line from to with .
+ ///
+ /// Point in world space where the line should start.
+ /// Point in world space where the line should end.
+ /// Color of the line.
+ /// How long the line should be visible for.
+ /// Should the line be obscured by objects closer to the camera?
+ [Conditional(_conditional_flag)]
+ public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depth_test) {
+ CheckAndBuildHiddenRtDrawObject();
+ _rt_draw.RegisterLine(start,
+ end,
+ color,
+ duration,
+ !depth_test);
+ }
+
+ ///
+ /// Draws a line from start to start + dir in world coordinates.
+ ///
+ /// Point in world space where the ray should start.
+ /// Direction and length of the ray.
+ /// Color of the drawn line.
+ /// How long the line will be visible for (in seconds).
+ /// Should the line be obscured by other objects closer to the camera?
+ [Conditional(_conditional_flag)]
+ public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration, bool depth_test) {
+ CheckAndBuildHiddenRtDrawObject();
+ _rt_draw.RegisterLine(start,
+ start + dir,
+ color,
+ duration,
+ !depth_test);
+ }
+
+ ///
+ /// Draw a text at given position.
+ ///
+ /// Position
+ /// String of the text.
+ /// Color for the text.
+ /// Font size for the text.
+ /// How long the text should be visible for.
+ ///
+ /// Set to true to let the text moving up, so multiple texts at the same position can be
+ /// visible.
+ ///
+ [Conditional(_conditional_flag)]
+ public static void DrawText(Vector3 pos,
+ string text,
+ Color color,
+ int size,
+ float duration,
+ bool pop_up = false) {
+ CheckAndBuildHiddenRtDrawObject();
+ _rt_draw.RegisterDrawText(pos,
+ text,
+ color,
+ size,
+ duration,
+ pop_up);
+ }
+
+ ///
+ /// Attach text to a transform.
+ ///
+ /// Target transform to attach text to.
+ /// Function will be called on every frame to get a string as attached text.
+ /// Text attach offset to transform position.
+ /// Color for the text.
+ /// Font size for the text.
+ [Conditional(_conditional_flag)]
+ public static void AttachText(Transform transform,
+ Func str_func,
+ Vector3 offset,
+ Color color,
+ int size) {
+ CheckAndBuildHiddenRtDrawObject();
+ _rt_draw.RegisterAttachText(transform,
+ str_func,
+ offset,
+ color,
+ size);
+ }
+
+ #endregion
+
+ #region Internal
+
+ ///
+ /// Singleton RuntimeDebugDraw component that is needed to call Unity APIs.
+ ///
+ static RuntimeDebugDraw.Internal.RuntimeDebugDraw _rt_draw;
+
+ ///
+ /// Check and build
+ ///
+ const string _hidden_go_name = "________HIDDEN_C4F6A87F298241078E21C0D7C1D87A76_";
+
+ static void CheckAndBuildHiddenRtDrawObject() {
+ if (_rt_draw != null) {
+ return;
+ }
+
+ // try reuse existing one first
+ _rt_draw = Object.FindObjectOfType();
+ if (_rt_draw != null) {
+ return;
+ }
+
+ // instantiate an hidden game_object w/ RuntimeDebugDraw attached.
+ // hardcode an GUID in the name so one won't accidentally get this by name.
+ var go = new GameObject(_hidden_go_name);
+ var child_go = new GameObject(_hidden_go_name);
+ child_go.transform.parent = go.transform;
+ _rt_draw = child_go.AddComponent();
+ // hack to only hide outer go, so that RuntimeDebugDraw's OnGizmos will work properly.
+ go.hideFlags = HideFlags.HideAndDontSave;
+ if (Application.isPlaying) {
+ Object.DontDestroyOnLoad(go);
+ }
+ }
+
+ #endregion
+ }
+
+ namespace RuntimeDebugDraw.Internal {
+ ///
+ ///
+ ///
+ class RuntimeDebugDraw : MonoBehaviour {
+ #region Basics
+
+ void CheckInitialized() {
+ // as RuntimeDebugDraw component has a very low execution order, other script might Awake()
+ // earlier than this and at that moment it's not initialized. check and init on every public
+ // member
+ if (this._draw_text_entries == null) {
+ this._z_test_batch = new BatchedLineDraw(true);
+ this._always_batch = new BatchedLineDraw(false);
+ this._line_entries = new List(16);
+
+ this._text_style = new GUIStyle {alignment = TextAnchor.UpperLeft};
+ this._draw_text_entries = new List(16);
+ this._attach_text_entries = new List(16);
+ }
+ }
+
+ void Awake() { this.CheckInitialized(); }
+
+ void OnGUI() { this.DrawTextOnGui(); }
+
+ #if UNITY_EDITOR
+ void OnDrawGizmos() { this.DrawTextOnDrawGizmos(); }
+ #endif
+
+ void LateUpdate() {
+ this.TickAndDrawLines();
+ this.TickTexts();
+ }
+
+ void OnDestroy() {
+ this._always_batch.Dispose();
+ this._z_test_batch.Dispose();
+ }
+
+ void Clear() {
+ this._draw_text_entries.Clear();
+ this._line_entries.Clear();
+ this._lines_need_rebuild = true;
+ }
+
+ #endregion
+
+ #region Draw Lines
+
+ ///
+ ///
+ class DrawLineEntry {
+ public Color _Color;
+ public Vector3 _End;
+ public bool _NoZTest;
+ public bool _Occupied;
+ public Vector3 _Start;
+ public float _Timer;
+ }
+
+ List _line_entries;
+
+ // helper class for batching
+ ///
+ ///
+ class BatchedLineDraw : IDisposable {
+ List _colors;
+ List _indices;
+ public Material _Mat;
+ public Mesh _Mesh;
+
+ List _vertices;
+
+ public BatchedLineDraw(bool depth_test) {
+ this._Mesh = new Mesh();
+ this._Mesh.MarkDynamic();
+
+ // relying on a builtin shader, but it shouldn't change that much.
+ this._Mat = new Material(Shader.Find("Hidden/Internal-Colored"));
+ this._Mat.SetInt(_z_test,
+ depth_test
+ ? 4 // LEqual
+ : 0 // Always
+ );
+
+ this._vertices = new List();
+ this._colors = new List();
+ this._indices = new List();
+ }
+
+ public void Dispose() {
+ DestroyImmediate(this._Mesh);
+ DestroyImmediate(this._Mat);
+ }
+
+ public void AddLine(Vector3 from, Vector3 to, Color color) {
+ this._vertices.Add(from);
+ this._vertices.Add(to);
+ this._colors.Add(color);
+ this._colors.Add(color);
+ var vertice_count = this._vertices.Count;
+ this._indices.Add(vertice_count - 2);
+ this._indices.Add(vertice_count - 1);
+ }
+
+ public void Clear() {
+ this._Mesh.Clear();
+ this._vertices.Clear();
+ this._colors.Clear();
+ this._indices.Clear();
+ }
+
+ public void BuildBatch() {
+ this._Mesh.SetVertices(this._vertices);
+ this._Mesh.SetColors(this._colors);
+ this._Mesh.SetIndices(this._indices.ToArray(),
+ MeshTopology.Lines,
+ 0); // cant get rid of this alloc for now
+ }
+ }
+
+ BatchedLineDraw _z_test_batch;
+ BatchedLineDraw _always_batch;
+ bool _lines_need_rebuild;
+
+ public void RegisterLine(Vector3 start, Vector3 end, Color color, float timer, bool no_z_test) {
+ this.CheckInitialized();
+
+ DrawLineEntry entry = null;
+ foreach (var t in this._line_entries) {
+ if (!t._Occupied) {
+ entry = t;
+ break;
+ }
+ }
+
+ if (entry == null) {
+ entry = new DrawLineEntry();
+ this._line_entries.Add(entry);
+ }
+
+ entry._Occupied = true;
+ entry._Start = start;
+ entry._End = end;
+ entry._Color = color;
+ entry._Timer = timer;
+ entry._NoZTest = no_z_test;
+ this._lines_need_rebuild = true;
+ }
+
+ void RebuildDrawLineBatchMesh() {
+ this._z_test_batch.Clear();
+ this._always_batch.Clear();
+
+ foreach (var entry in this._line_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ if (entry._NoZTest) {
+ this._always_batch.AddLine(entry._Start, entry._End, entry._Color);
+ } else {
+ this._z_test_batch.AddLine(entry._Start, entry._End, entry._Color);
+ }
+ }
+
+ this._z_test_batch.BuildBatch();
+ this._always_batch.BuildBatch();
+ }
+
+ void TickAndDrawLines() {
+ if (this._lines_need_rebuild) {
+ this.RebuildDrawLineBatchMesh();
+ this._lines_need_rebuild = false;
+ }
+
+ // draw on UI layer which should bypass most postFX setups
+ Graphics.DrawMesh(this._always_batch._Mesh,
+ Vector3.zero,
+ Quaternion.identity,
+ this._always_batch._Mat,
+ Draw._DrawLineLayer,
+ null,
+ 0,
+ null,
+ false,
+ false);
+ Graphics.DrawMesh(this._z_test_batch._Mesh,
+ Vector3.zero,
+ Quaternion.identity,
+ this._z_test_batch._Mat,
+ Draw._DrawLineLayer,
+ null,
+ 0,
+ null,
+ false,
+ false);
+
+ // update timer late so every added entry can be drawed for at least one frame
+ foreach (var entry in this._line_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ entry._Timer -= Time.deltaTime;
+ if (entry._Timer < 0) {
+ entry._Occupied = false;
+ this._lines_need_rebuild = true;
+ }
+ }
+ }
+
+ #endregion
+
+ #region Draw Text
+
+ [Flags]
+ public enum DrawFlag : byte {
+ None_ = 0,
+ Drawn_gizmo_ = 1 << 0,
+ Drawn_gui_ = 1 << 1,
+ Drawn_all_ = Drawn_gizmo_ | Drawn_gui_
+ }
+
+ class DrawTextEntry {
+ public Vector3 _Anchor;
+ public Color _Color;
+ public GUIContent _Content;
+ public float _Duration;
+
+ // Text entries needs to be draw in both OnGUI/OnDrawGizmos, need flags for mark
+ // has been visited by both
+ public DrawFlag _Flag = DrawFlag.None_;
+ public bool _Occupied;
+ public bool _PopUp;
+ public int _Size;
+ public float _Timer;
+
+ public DrawTextEntry() { this._Content = new GUIContent(); }
+ }
+
+ ///
+ ///
+ class AttachTextEntry {
+ public Color _Color;
+ public GUIContent _Content;
+
+ public DrawFlag _Flag = DrawFlag.None_;
+ public bool _Occupied;
+ public Vector3 _Offset;
+ public int _Size;
+ public Func _StrFunc;
+
+ public Transform _Transform;
+
+ public AttachTextEntry() { this._Content = new GUIContent(); }
+ }
+
+ List _draw_text_entries;
+ List _attach_text_entries;
+ GUIStyle _text_style;
+ static readonly Int32 _z_test = Shader.PropertyToID("_ZTest");
+
+ public void RegisterDrawText(Vector3 anchor,
+ string text,
+ Color color,
+ int size,
+ float timer,
+ bool pop_up) {
+ this.CheckInitialized();
+
+ DrawTextEntry entry = null;
+ foreach (var t in this._draw_text_entries) {
+ if (!t._Occupied) {
+ entry = t;
+ break;
+ }
+ }
+
+ if (entry == null) {
+ entry = new DrawTextEntry();
+ this._draw_text_entries.Add(entry);
+ }
+
+ entry._Occupied = true;
+ entry._Anchor = anchor;
+ entry._Content.text = text;
+ entry._Size = size;
+ entry._Color = color;
+ entry._Duration = entry._Timer = timer;
+ entry._PopUp = pop_up;
+ #if UNITY_EDITOR
+ entry._Flag = DrawFlag.None_;
+ #else
+ // in builds consider gizmo is already drawn
+ entry.flag = DrawFlag.DrawnGizmo;
+ #endif
+ }
+
+ public void RegisterAttachText(Transform target,
+ Func str_func,
+ Vector3 offset,
+ Color color,
+ int size) {
+ this.CheckInitialized();
+
+ AttachTextEntry entry = null;
+ foreach (var t in this._attach_text_entries) {
+ if (!t._Occupied) {
+ entry = t;
+ break;
+ }
+ }
+
+ if (entry == null) {
+ entry = new AttachTextEntry();
+ this._attach_text_entries.Add(entry);
+ }
+
+ entry._Occupied = true;
+ entry._Offset = offset;
+ entry._Transform = target;
+ entry._StrFunc = str_func;
+ entry._Color = color;
+ entry._Size = size;
+ // get first text
+ entry._Content.text = str_func();
+ #if UNITY_EDITOR
+ entry._Flag = DrawFlag.None_;
+ #else
+ // in builds consider gizmo is already drawn
+ entry.flag = DrawFlag.DrawnGizmo;
+ #endif
+ }
+
+ void TickTexts() {
+ foreach (var entry in this._draw_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ entry._Timer -= Time.deltaTime;
+ if (entry._Flag == DrawFlag.Drawn_all_) {
+ if (entry._Timer < 0) {
+ entry._Occupied = false;
+ }
+
+ // actually no need to tick DrawFlag as it won't move
+ }
+ }
+
+ foreach (var entry in this._attach_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ if (entry._Transform == null) {
+ entry._Occupied = false;
+ entry._StrFunc = null; // needs to release ref to callback
+ } else if (entry._Flag == DrawFlag.Drawn_all_) {
+ // tick content
+ entry._Content.text = entry._StrFunc();
+ // tick flag
+ #if UNITY_EDITOR
+ entry._Flag = DrawFlag.None_;
+ #else
+ // in builds consider gizmo is already drawn
+ entry.flag = DrawFlag.DrawnGizmo;
+ #endif
+ }
+ }
+ }
+
+ void DrawTextOnGui() {
+ var this_camera = Draw.GetDebugDrawCamera();
+ if (this_camera == null) {
+ return;
+ }
+
+ foreach (var entry in this._draw_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ this.GuiDrawTextEntry(this_camera, entry);
+ entry._Flag |= DrawFlag.Drawn_gui_;
+ }
+
+ foreach (var entry in this._attach_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ this.GuiAttachTextEntry(this_camera, entry);
+ entry._Flag |= DrawFlag.Drawn_gui_;
+ }
+ }
+
+ void GuiDrawTextEntry(Camera n_camera, DrawTextEntry entry) {
+ var world_pos = entry._Anchor;
+ var screen_pos = n_camera.WorldToScreenPoint(world_pos);
+ screen_pos.y = Screen.height - screen_pos.y;
+
+ if (entry._PopUp) {
+ var ratio = entry._Timer / entry._Duration;
+ screen_pos.y -= (1 - ratio * ratio) * entry._Size * 1.5f;
+ }
+
+ this._text_style.normal.textColor = entry._Color;
+ this._text_style.fontSize = entry._Size;
+ var rect = new Rect(screen_pos, this._text_style.CalcSize(entry._Content));
+ GUI.Label(rect, entry._Content, this._text_style);
+ }
+
+ void GuiAttachTextEntry(Camera n_camera, AttachTextEntry entry) {
+ if (entry._Transform == null) {
+ return;
+ }
+
+ var world_pos = entry._Transform.position + entry._Offset;
+ var screen_pos = n_camera.WorldToScreenPoint(world_pos);
+ screen_pos.y = Screen.height - screen_pos.y;
+
+ this._text_style.normal.textColor = entry._Color;
+ this._text_style.fontSize = entry._Size;
+ var rect = new Rect(screen_pos, this._text_style.CalcSize(entry._Content));
+ GUI.Label(rect, entry._Content, this._text_style);
+ }
+
+ #if UNITY_EDITOR
+ void DrawTextOnDrawGizmos() {
+ if (!(Camera.current == Draw.GetDebugDrawCamera()
+ || Camera.current == SceneView.lastActiveSceneView.camera)) {
+ return;
+ }
+
+ var n_camera = Camera.current;
+ if (n_camera == null) {
+ return;
+ }
+
+ Handles.BeginGUI();
+ foreach (var entry in this._draw_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ this.GuiDrawTextEntry(n_camera, entry);
+ entry._Flag |= DrawFlag.Drawn_gizmo_;
+ }
+
+ foreach (var entry in this._attach_text_entries) {
+ if (!entry._Occupied) {
+ continue;
+ }
+
+ this.GuiAttachTextEntry(n_camera, entry);
+ entry._Flag |= DrawFlag.Drawn_gizmo_;
+ }
+
+ Handles.EndGUI();
+ }
+ #endif
+
+ #endregion
+ }
+ }
+ }
+}
diff --git a/Editor/Utilities/RuntimeDebugDraw.cs.meta b/Editor/Utilities/RuntimeDebugDraw.cs.meta
new file mode 100644
index 000000000..ad1d4879d
--- /dev/null
+++ b/Editor/Utilities/RuntimeDebugDraw.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 33da5553f162b4abda7088f7e389a035
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 9990
+ icon: {fileID: 2800000, guid: 2714af42bb61e46d7b2cb28089fa2885, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/SceneDescription.cs b/Editor/Utilities/SceneDescription.cs
new file mode 100644
index 000000000..f3d898e44
--- /dev/null
+++ b/Editor/Utilities/SceneDescription.cs
@@ -0,0 +1,119 @@
+using System.IO;
+using droid.Runtime.Managers;
+using Newtonsoft.Json;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+#if UNITY_EDITOR
+using System.Linq;
+using UnityEditor;
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ /// Scene preview.
+ /// https://diegogiacomelli.com.br/unity3d-scenepreview-inspector/
+ ///
+ [CustomEditor(typeof(SceneAsset))]
+ [CanEditMultipleObjects]
+ public class SceneDescription : UnityEditor.Editor {
+ ///
+ ///
+ [RuntimeInitializeOnLoadMethod]
+ public static void CaptureDescription() {
+ if (NeodroidSettings.Current.NeodroidGenerateDescriptionsProp) {
+ var preview_path = GetDescriptionPath(SceneManager.GetActiveScene().name);
+ #if NEODROID_DEBUG
+ Debug.Log($"Saving scene preview at {preview_path}");
+ #endif
+ MakeDescription(preview_path);
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public static void MakeDescription(string name) {
+ var serializer = new JsonSerializer {NullValueHandling = NullValueHandling.Ignore};
+ var simulation_manager = FindObjectOfType();
+
+ var path = Path.GetDirectoryName(name);
+ Directory.CreateDirectory(path);
+
+ using (var sw = new StreamWriter(name)) {
+ using (JsonWriter writer = new JsonTextWriter(sw)) {
+ serializer.Serialize(writer, simulation_manager.ToString());
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public override void OnInspectorGUI() {
+ if (NeodroidSettings.Current.NeodroidGeneratePreviewsProp) {
+ //AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
+ var scene_names = this.targets.Select(t => ((SceneAsset)t).name).OrderBy(n => n).ToArray();
+
+ var previews_count = scene_names.Length;
+ var preview_width = Screen.width;
+ var preview_height =
+ (Screen.height
+ - NeodroidEditorConstants._Editor_Margin * 2
+ - NeodroidEditorConstants._Preview_Margin * previews_count)
+ / previews_count;
+
+ for (var i = 0; i < scene_names.Length; i++) {
+ ScenePreview.DrawPreview(i,
+ scene_names[i],
+ preview_width,
+ preview_height);
+ }
+ }
+
+ if (NeodroidSettings.Current.NeodroidGeneratePreviewsProp) {
+ var scene_names = this.targets.Select(t => ((SceneAsset)t).name).OrderBy(n => n).ToArray();
+
+ for (var i = 0; i < scene_names.Length; i++) {
+ PrintDescription(i, scene_names[i]);
+ }
+ }
+ }
+
+ static void PrintDescription(int index, string scene_name) {
+ var preview_path = GetDescriptionPath(scene_name);
+ var preview = LoadDescription(preview_path);
+
+ if (preview != null) {
+ EditorGUILayout.HelpBox(preview, MessageType.Info);
+ } else {
+ EditorGUILayout
+ .HelpBox($"There is no image preview for scene {scene_name} at {preview_path}. Please play the scene on editor and image preview will be captured automatically or create the missing path: {NeodroidSettings.Current.NeodroidPreviewsLocationProp}.",
+ MessageType.Info);
+ }
+ }
+
+ static string GetDescriptionPath(string scene_name) {
+ //return $"{NeodroidEditorInfo.ScenePreviewsLocation}{scene_name}.png";
+ return
+ $"{Application.dataPath}/{NeodroidSettings.Current.NeodroidDescriptionLocationProp}{scene_name}.md";
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public static string LoadDescription(string file_path) {
+ var description = "The is no description available, press play to generate a description";
+
+ if (File.Exists(file_path)) {
+ using (var sr = new StreamReader(file_path)) {
+ description = sr.ReadToEnd();
+ }
+ }
+
+ return description;
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/SceneDescription.cs.meta b/Editor/Utilities/SceneDescription.cs.meta
new file mode 100644
index 000000000..5d2db309f
--- /dev/null
+++ b/Editor/Utilities/SceneDescription.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3ab984e1ccbb489f9a5d3a152f887609
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScenePreview.cs b/Editor/Utilities/ScenePreview.cs
index 320d48b34..352c451e2 100644
--- a/Editor/Utilities/ScenePreview.cs
+++ b/Editor/Utilities/ScenePreview.cs
@@ -1,77 +1,147 @@
-#if UNITY_EDITOR
-using System.Linq;
+using System.IO;
using UnityEditor;
-using UnityEngine;
using UnityEngine.SceneManagement;
-using UnityEngine.Windows;
+using Directory = UnityEngine.Windows.Directory;
+using File = UnityEngine.Windows.File;
+#if UNITY_EDITOR
+using System.Linq;
+using UnityEngine;
-namespace Neodroid.Editor.Utilities {
+namespace droid.Editor.Utilities {
///
///
- /// Scene preview.
- /// https://diegogiacomelli.com.br/unity3d-scenepreview-inspector/
+ /// Scene preview.
+ /// https://diegogiacomelli.com.br/unity3d-scenepreview-inspector/
///
[CustomEditor(typeof(SceneAsset))]
[CanEditMultipleObjects]
public class ScenePreview : UnityEditor.Editor {
- // Change this to a folder in your project.
- // Maybe the folder where your scenes are located.
- // Remember to create a subfolder called "Resources" inside of it.
- const string _preview_folders = "ScenePreviews";
- const float _editor_margin = 50;
- const float _preview_margin = 5;
-
///
- ///
///
[RuntimeInitializeOnLoadMethod]
public static void CaptureScreenShot() {
- var preview_path = GetPreviewPath(SceneManager.GetActiveScene().name);
- //Debug.LogFormat("Saving scene preview at {0}", preview_path);
- ScreenCapture.CaptureScreenshot(preview_path);
+ if (NeodroidSettings.Current.NeodroidGeneratePreviewsProp) {
+ var preview_path = GetPreviewPath(SceneManager.GetActiveScene().name);
+ Debug.Log($"Saving scene preview at {preview_path}");
+ TakeScreenshot(preview_path);
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public static void TakeScreenshot(string name) {
+ var path = Path.GetDirectoryName(name);
+ Directory.CreateDirectory(path);
+ // Take the screenshot
+ ScreenCapture.CaptureScreenshot(name); // TODO: VERY broken, unitys fault
+
+/*
+ //Wait for 4 frames
+ for (int i = 0; i < 5; i++)
+ {
+ yield return null;
+ }
+
+ // Read the data from the file
+ byte[] data = File.ReadAllBytes(Application.persistentDataPath + "/" + name);
+
+ // Create the texture
+ Texture2D screenshotTexture = new Texture2D(Screen.width, Screen.height);
+
+ // Load the image
+ screenshotTexture.LoadImage(data);
+
+ // Create a sprite
+ Sprite screenshotSprite = Sprite.Create(screenshotTexture, new Rect(0, 0, Screen.width, Screen.height), new Vector2(0.5f, 0.5f));
+
+ // Set the sprite to the screenshotPreview
+ screenshotPreview.GetComponent().sprite = screenshotSprite;
+
+ OR
+
+ Texture2D screenImage = new Texture2D(Screen.width, Screen.height);
+ //Get Image from screen
+ screenImage.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
+ screenImage.Apply();
+ //Convert to png
+ byte[] imageBytes = screenImage.EncodeToPNG();
+
+ //Save image to file
+ System.IO.File.WriteAllBytes(path, imageBytes);
+
+*/
}
///
///
///
public override void OnInspectorGUI() {
- //AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
- var scene_names = this.targets.Select(t => ((SceneAsset)t).name).OrderBy(n => n).ToArray();
+ if (NeodroidSettings.Current.NeodroidGeneratePreviewsProp) {
+ //AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
+ var scene_names = this.targets.Select(t => ((SceneAsset)t).name).OrderBy(n => n).ToArray();
- var previews_count = scene_names.Length;
- var preview_width = Screen.width;
- var preview_height = (Screen.height - _editor_margin * 2 - (_preview_margin * previews_count))
- / previews_count;
+ var previews_count = scene_names.Length;
+ var preview_width = Screen.width;
+ var preview_height =
+ (Screen.height
+ - NeodroidEditorConstants._Editor_Margin * 2
+ - NeodroidEditorConstants._Preview_Margin * previews_count)
+ / previews_count;
- for (var i = 0; i < scene_names.Length; i++) {
- DrawPreview(i, scene_names[i], preview_width, preview_height);
+ for (var i = 0; i < scene_names.Length; i++) {
+ DrawPreview(i,
+ scene_names[i],
+ preview_width,
+ preview_height);
+ }
}
}
- static void DrawPreview(int index, string scene_name, float width, float height) {
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void DrawPreview(int index, string scene_name, float width, float height) {
var preview_path = GetPreviewPath(scene_name);
//var ob = Resources.Load(scene_name);
//var preview = ob as RenderTexture;
var preview = LoadPng(preview_path);
- if (preview == null) {
- EditorGUILayout.HelpBox(
- $"There is no image preview for scene {scene_name} at {preview_path}. Please play the scene on editor and image preview will be captured automatically or create the missing path: {_preview_folders}.",
- MessageType.Info);
+ if (preview != null) { // TODO: Is broken
+ /*
+ EditorGUI.DrawPreviewTexture(new Rect(index, NeodroidEditorConstants._Editor_Margin + index * (height +
+
+NeodroidEditorConstants._Preview_Margin), width, height),
+ preview
+ );
+*/
+ GUI.DrawTexture(new Rect(index,
+ NeodroidEditorConstants._Editor_Margin
+ + index * (height + NeodroidEditorConstants._Preview_Margin),
+ width,
+ height),
+ preview,
+ ScaleMode.ScaleToFit);
} else {
- GUI.DrawTexture(
- new Rect(index, _editor_margin + index * (height + _preview_margin), width, height),
- preview,
- ScaleMode.ScaleToFit);
+ EditorGUILayout.HelpBox($"There is no image preview for scene {scene_name} at {preview_path}."
+ + $" Please play the scene on editor and image preview will be captured automatically"
+ + $" or create the missing path: {preview_path}.",
+ MessageType.Info);
}
}
static string GetPreviewPath(string scene_name) {
- return $"{Application.dataPath}/{_preview_folders}/{scene_name}.png";
+ //return $"{NeodroidEditorInfo.ScenePreviewsLocation}{scene_name}.png";
+ return
+ $"{Application.dataPath}/{NeodroidSettings.Current.NeodroidPreviewsLocationProp}{scene_name}.png";
}
///
- ///
///
///
///
diff --git a/Editor/Utilities/ScenePreview.cs.meta b/Editor/Utilities/ScenePreview.cs.meta
index 77e6eb540..db7d21b6f 100644
--- a/Editor/Utilities/ScenePreview.cs.meta
+++ b/Editor/Utilities/ScenePreview.cs.meta
@@ -1,3 +1,11 @@
-fileFormatVersion: 2
+fileFormatVersion: 2
guid: 06b055a64bed4c6cb7829b76075cb147
-timeCreated: 1533915401
\ No newline at end of file
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/SceneReference.cs b/Editor/Utilities/SceneReference.cs
index 4a7ca544e..90d29c1c9 100644
--- a/Editor/Utilities/SceneReference.cs
+++ b/Editor/Utilities/SceneReference.cs
@@ -1,92 +1,58 @@
-#if UNITY_EDITOR
-
-using System;
+using System;
+using UnityEngine.SceneManagement;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-using UnityEngine.SceneManagement;
-namespace Neodroid.Editor.Utilities {
+namespace droid.Editor.Utilities {
///
- /// Class used to serialize a reference to a scene asset that can be used
- /// at runtime in a build, when the asset can no longer be directly
- /// referenced. This caches the scene name based on the SceneAsset to use
- /// at runtime to load.
+ /// Class used to serialize a reference to a scene asset that can be used
+ /// at runtime in a build, when the asset can no longer be directly
+ /// referenced. This caches the scene name based on the SceneAsset to use
+ /// at runtime to load.
///
[Serializable]
public class SceneReference : ISerializationCallbackReceiver {
- ///
- /// Exception that is raised when there is an issue resolving and
- /// loading a scene reference.
- ///
- public class SceneLoadException : Exception {
- public SceneLoadException(string message) : base(message) { }
- }
-
#if UNITY_EDITOR
///
- ///
///
- public SceneAsset _Scene;
+ public SceneAsset scene;
#endif
- ///
- ///
- ///
- [Tooltip("The name of the referenced scene. This may be used at runtime to load the scene.")]
- public string _SceneName;
-
- [SerializeField] int _scene_index = -1;
+ [SerializeField] bool sceneEnabled;
- [SerializeField] bool _scene_enabled;
-
- void ValidateScene() {
- if (string.IsNullOrEmpty(this._SceneName)) {
- throw new SceneLoadException("No scene specified.");
- }
-
- if (this._scene_index < 0) {
- throw new SceneLoadException("Scene " + this._SceneName + " is not in the build settings");
- }
-
- if (!this._scene_enabled) {
- throw new SceneLoadException("Scene " + this._SceneName + " is not enabled in the build settings");
- }
- }
+ [SerializeField] int sceneIndex = -1;
///
- ///
///
- ///
- public void LoadScene(LoadSceneMode mode = LoadSceneMode.Single) {
- this.ValidateScene();
- SceneManager.LoadScene(this._SceneName, mode);
- }
+ [Tooltip("The name of the referenced scene. This may be used at runtime to load the scene.")]
+ public string sceneName;
///
///
///
public void OnBeforeSerialize() {
#if UNITY_EDITOR
- if (this._Scene != null) {
- var scene_asset_path = AssetDatabase.GetAssetPath(this._Scene);
+ if (this.scene != null) {
+ var scene_asset_path = AssetDatabase.GetAssetPath(this.scene);
var scene_asset_guid = AssetDatabase.AssetPathToGUID(scene_asset_path);
var scenes = EditorBuildSettings.scenes;
- this._scene_index = -1;
+ this.sceneIndex = -1;
for (var i = 0; i < scenes.Length; i++) {
if (scenes[i].guid.ToString() == scene_asset_guid) {
- this._scene_index = i;
- this._scene_enabled = scenes[i].enabled;
+ this.sceneIndex = i;
+ this.sceneEnabled = scenes[i].enabled;
if (scenes[i].enabled) {
- this._SceneName = this._Scene.name;
+ this.sceneName = this.scene.name;
}
break;
}
}
} else {
- this._SceneName = "";
+ this.sceneName = "";
}
#endif
}
@@ -95,6 +61,36 @@ public void OnBeforeSerialize() {
///
///
public void OnAfterDeserialize() { }
+
+ void ValidateScene() {
+ if (string.IsNullOrEmpty(this.sceneName)) {
+ throw new SceneLoadException("No scene specified.");
+ }
+
+ if (this.sceneIndex < 0) {
+ throw new SceneLoadException("Scene " + this.sceneName + " is not in the build settings");
+ }
+
+ if (!this.sceneEnabled) {
+ throw new SceneLoadException("Scene " + this.sceneName + " is not enabled in the build settings");
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void LoadScene(LoadSceneMode mode = LoadSceneMode.Single) {
+ this.ValidateScene();
+ SceneManager.LoadScene(this.sceneName, mode);
+ }
+
+ ///
+ /// Exception that is raised when there is an issue resolving and
+ /// loading a scene reference.
+ ///
+ public class SceneLoadException : Exception {
+ public SceneLoadException(string message) : base(message) { }
+ }
}
}
#endif
diff --git a/Editor/Utilities/SceneReference.cs.meta b/Editor/Utilities/SceneReference.cs.meta
index 1b6f77ee0..e9e4783bf 100644
--- a/Editor/Utilities/SceneReference.cs.meta
+++ b/Editor/Utilities/SceneReference.cs.meta
@@ -5,7 +5,7 @@ MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {instanceID: 0}
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Editor/Utilities/SceneReferenceEditor.cs b/Editor/Utilities/SceneReferenceEditor.cs
index 3553862b7..ad7781107 100644
--- a/Editor/Utilities/SceneReferenceEditor.cs
+++ b/Editor/Utilities/SceneReferenceEditor.cs
@@ -1,45 +1,16 @@
-#if UNITY_EDITOR
-using System;
+using System;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Utilities {
+namespace droid.Editor.Utilities {
///
///
- /// Editor for a scene reference that can display error prompts and offer
- /// solutions when the scene is not valid.
+ /// Editor for a scene reference that can display error prompts and offer
+ /// solutions when the scene is not valid.
///
[CustomPropertyDrawer(typeof(SceneReference))]
public class SceneReferenceEditor : PropertyDrawer {
- #region -- Constants --------------------------------------------------
-
- const string _tooltip_scene_missing = "Scene is not in build settings.";
-
- const string _error_scene_missing =
- "You are refencing a scene that is not added to the build. Add it to the editor build settings now?";
-
- const string _tooltip_scene_disabled = "Scene is not enebled in build settings.";
-
- const string _error_scene_disabled =
- "You are refencing a scene that is not active the build. Enable it in the build settings now?";
-
- #endregion -- Constants -----------------------------------------------
-
- #region -- Private Variables ------------------------------------------
-
- SerializedProperty _scene;
- SerializedProperty _scene_name;
- SerializedProperty _scene_index;
- SerializedProperty _scene_enabled;
- SceneAsset _scene_asset;
- string _scene_asset_path;
- string _scene_asset_guid;
-
- GUIContent _error_tooltip;
- GUIStyle _error_style;
-
- #endregion -- Private Variables ---------------------------------------
-
///
///
///
@@ -56,7 +27,10 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten
position = this.DisplayErrorsIfNecessary(position);
EditorGUI.BeginChangeCheck();
- EditorGUI.PropertyField(position, this._scene, GUIContent.none, false);
+ EditorGUI.PropertyField(position,
+ this._scene,
+ GUIContent.none,
+ false);
if (EditorGUI.EndChangeCheck()) {
property.serializedObject.ApplyModifiedProperties();
this.CacheProperties(property);
@@ -68,9 +42,9 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten
}
///
- /// Cache all used properties as local variables so that they can be
- /// used by other methods. This needs to be called every frame since a
- /// PropertyDrawer can be reused on different properties.
+ /// Cache all used properties as local variables so that they can be
+ /// used by other methods. This needs to be called every frame since a
+ /// PropertyDrawer can be reused on different properties.
///
/// Property to search through.
void CacheProperties(SerializedProperty property) {
@@ -92,8 +66,8 @@ void CacheProperties(SerializedProperty property) {
}
///
- /// Updates the scene index and enabled flags of a scene property by
- /// scanning through the scenes in EditorBuildSettings.
+ /// Updates the scene index and enabled flags of a scene property by
+ /// scanning through the scenes in EditorBuildSettings.
///
void UpdateSceneState() {
if (this._scene_asset != null) {
@@ -122,20 +96,19 @@ void UpdateSceneState() {
}
///
- /// Display a popup error message about the selected scene and respond
- /// to the user choice by either fixing the issue in the build
- /// settings, doing nothing, or opening the build settings.
+ /// Display a popup error message about the selected scene and respond
+ /// to the user choice by either fixing the issue in the build
+ /// settings, doing nothing, or opening the build settings.
///
/// Message to display.
void DisplaySceneErrorPrompt(string message) {
var scenes = EditorBuildSettings.scenes;
- var choice = EditorUtility.DisplayDialogComplex(
- "Scene Not In Build",
- message,
- "Yes",
- "No",
- "Open Build Settings");
+ var choice = EditorUtility.DisplayDialogComplex("Scene Not In Build",
+ message,
+ "Yes",
+ "No",
+ "Open Build Settings");
if (choice == 0) {
var new_count = this._scene_index.intValue < 0 ? scenes.Length + 1 : scenes.Length;
@@ -156,16 +129,16 @@ void DisplaySceneErrorPrompt(string message) {
}
///
- /// If there is anything wrong with the selected scene, this will
- /// display an error icon that the user can click on for more info.
+ /// If there is anything wrong with the selected scene, this will
+ /// display an error icon that the user can click on for more info.
///
///
- /// Full rect that will be used to draw the property.
+ /// Full rect that will be used to draw the property.
///
///
- /// The rect that should be used to draw the rest of the property. If
- /// there are no errors, this is the same as the input position Rect.
- /// Otherwise, it will be the input rect adjusted to fit the error.
+ /// The rect that should be used to draw the rest of the property. If
+ /// there are no errors, this is the same as the input position Rect.
+ /// Otherwise, it will be the input rect adjusted to fit the error.
///
Rect DisplayErrorsIfNecessary(Rect position) {
if (this._error_style == null) {
@@ -197,8 +170,8 @@ Rect DisplayErrorsIfNecessary(Rect position) {
}
///
- /// Validate any new values in the scene property. This will display
- /// popup errors if there are issues with the current value.
+ /// Validate any new values in the scene property. This will display
+ /// popup errors if there are issues with the current value.
///
void Validate() {
if (this._scene_asset != null) {
@@ -232,6 +205,35 @@ void Validate() {
this._scene_name.stringValue = "";
}
}
+
+ #region -- Constants --------------------------------------------------
+
+ const string _tooltip_scene_missing = "Scene is not in build settings.";
+
+ const string _error_scene_missing =
+ "You are refencing a scene that is not added to the build. Add it to the editor build settings now?";
+
+ const string _tooltip_scene_disabled = "Scene is not enebled in build settings.";
+
+ const string _error_scene_disabled =
+ "You are refencing a scene that is not active the build. Enable it in the build settings now?";
+
+ #endregion -- Constants -----------------------------------------------
+
+ #region -- Private Variables ------------------------------------------
+
+ SerializedProperty _scene;
+ SerializedProperty _scene_name;
+ SerializedProperty _scene_index;
+ SerializedProperty _scene_enabled;
+ SceneAsset _scene_asset;
+ string _scene_asset_path;
+ string _scene_asset_guid;
+
+ GUIContent _error_tooltip;
+ GUIStyle _error_style;
+
+ #endregion -- Private Variables ---------------------------------------
}
}
#endif
diff --git a/Editor/Utilities/SceneReferenceEditor.cs.meta b/Editor/Utilities/SceneReferenceEditor.cs.meta
index dde236381..6b27e38d6 100644
--- a/Editor/Utilities/SceneReferenceEditor.cs.meta
+++ b/Editor/Utilities/SceneReferenceEditor.cs.meta
@@ -1,3 +1,11 @@
-fileFormatVersion: 2
+fileFormatVersion: 2
guid: 417e0ca61fcd4635b27d92759ad12b7f
-timeCreated: 1525793512
\ No newline at end of file
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptExecutionOrderAttribute.cs b/Editor/Utilities/ScriptExecutionOrderAttribute.cs
new file mode 100644
index 000000000..29feff79f
--- /dev/null
+++ b/Editor/Utilities/ScriptExecutionOrderAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace droid.Editor.Utilities {
+ ///
+ ///
+ [AttributeUsage(AttributeTargets.Class)]
+ public class ScriptExecutionOrderAttribute : Attribute {
+ int _order;
+
+ public ScriptExecutionOrderAttribute(int order) { this._order = order; }
+
+ ///
+ ///
+ ///
+ public int GetOrder() { return this._order; }
+ }
+}
diff --git a/Editor/Utilities/ScriptExecutionOrderAttribute.cs.meta b/Editor/Utilities/ScriptExecutionOrderAttribute.cs.meta
new file mode 100644
index 000000000..26b67572a
--- /dev/null
+++ b/Editor/Utilities/ScriptExecutionOrderAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b59d0983374fafcacb9348f504677ce6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptableObjects.meta b/Editor/Utilities/ScriptableObjects.meta
new file mode 100644
index 000000000..68923fb75
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c02320d9df010bac9c8035dc8590108
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptableObjects/Editor.meta b/Editor/Utilities/ScriptableObjects/Editor.meta
new file mode 100644
index 000000000..d941f086a
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c709cf94d51202ae9a0012bb47e599fb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs b/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs
new file mode 100644
index 000000000..a774fb8c4
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs
@@ -0,0 +1,156 @@
+using System.IO;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.ScriptableObjects.Editor {
+ ///
+ ///
+ ///
+ [CustomEditor(typeof(ReadMe))]
+ [InitializeOnLoad]
+ public class ReadMeEditor : UnityEditor.Editor {
+ const string _showed_readme_session_state_name = "ReadMeEditor.showedReadMe";
+
+ const float _space = 16f;
+ public const string _NewAssetPath = "Assets/";
+
+ const string _scriptable_object_menu_path = "Tools/ReadMe/";
+ [SerializeField] GUIStyle bodyStyle = new GUIStyle(EditorStyles.label) {wordWrap = true, fontSize = 14};
+ [SerializeField] GUIStyle headingStyle;
+ [SerializeField] GUIStyle linkStyle;
+
+ bool _m_initialized;
+ [SerializeField] GUIStyle titleStyle;
+
+ GUIStyle LinkStyle { get { return this.linkStyle; } }
+
+ GUIStyle TitleStyle { get { return this.titleStyle; } }
+
+ GUIStyle HeadingStyle { get { return this.headingStyle; } }
+
+ GUIStyle BodyStyle { get { return this.bodyStyle; } }
+
+ static void SelectReadmeAutomatically() {
+ if (!SessionState.GetBool(_showed_readme_session_state_name, false)) {
+ var readme = SelectReadme();
+ SessionState.SetBool(_showed_readme_session_state_name, true);
+
+ if (readme && !readme.loadedLayout) {
+ LoadLayout();
+ readme.loadedLayout = true;
+ }
+ }
+ }
+
+ static void LoadLayout() {
+ var assembly = typeof(EditorApplication).Assembly;
+ var window_layout_type = assembly.GetType("UnityEditor.WindowLayout", true);
+ var method =
+ window_layout_type.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
+ method?.Invoke(null,
+ new object[] {
+ Path.Combine(Application.dataPath, "Excluded/Common/ReadMe/Layout.wlt"),
+ false
+ });
+ }
+
+ [MenuItem(_scriptable_object_menu_path + "Show ReadMe")]
+ static ReadMe SelectReadme() {
+ var ids = AssetDatabase.FindAssets("ReadMe t:ReadMe");
+ if (ids.Length == 1) {
+ var readme_object = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
+
+ Selection.objects = new[] {readme_object};
+
+ return (ReadMe)readme_object;
+ }
+
+ Debug.Log("Couldn't find a readme");
+ return null;
+ }
+
+ ///
+ ///
+ [MenuItem(_scriptable_object_menu_path + "Create new ReadMe")]
+ public static void CreateReadMeAsset() {
+ var asset = CreateInstance();
+
+ AssetDatabase.CreateAsset(asset, _NewAssetPath + "NewReadMe.asset");
+ AssetDatabase.SaveAssets();
+
+ EditorUtility.FocusProjectWindow();
+
+ Selection.activeObject = asset;
+ }
+
+ ///
+ ///
+ protected override void OnHeaderGUI() {
+ var readme = (ReadMe)this.target;
+ this.Init();
+
+ var icon_width = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
+
+ GUILayout.BeginHorizontal("In BigTitle");
+ {
+ GUILayout.Label(readme.icon, GUILayout.Width(icon_width), GUILayout.Height(icon_width));
+ GUILayout.Label(readme.title, this.TitleStyle);
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ ///
+ ///
+ ///
+ public override void OnInspectorGUI() {
+ var readme = (ReadMe)this.target;
+ this.Init();
+
+ if (readme.sections != null) {
+ foreach (var section in readme.sections) {
+ if (!string.IsNullOrEmpty(section.heading)) {
+ GUILayout.Label(section.heading, this.HeadingStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.text)) {
+ GUILayout.Label(section.text, this.BodyStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.linkText)) {
+ if (NeodroidEditorUtilities.LinkLabel(new GUIContent(section.linkText), this.LinkStyle)) {
+ Application.OpenURL(section.url);
+ }
+ }
+
+ GUILayout.Space(_space);
+ }
+ }
+ }
+
+ void Init() {
+ if (this._m_initialized) {
+ return;
+ }
+
+ this.titleStyle = new GUIStyle(this.bodyStyle) {fontSize = 26};
+
+ this.headingStyle = new GUIStyle(this.bodyStyle) {fontSize = 18};
+
+ this.linkStyle = new GUIStyle(this.bodyStyle) {
+ wordWrap = false,
+ normal = {
+ textColor =
+ new Color(0x00 / 255f,
+ 0x78 / 255f,
+ 0xDA / 255f,
+ 1f)
+ },
+ stretchWidth = false
+ };
+ // Match selection color which works nicely for both light and dark skins
+
+ this._m_initialized = true;
+ }
+ }
+}
diff --git a/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs.meta b/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs.meta
new file mode 100644
index 000000000..601549cea
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/Editor/ReadMeEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b864b421657aa89f682db1a4f8f440f3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptableObjects/NewReadMe.asset b/Editor/Utilities/ScriptableObjects/NewReadMe.asset
new file mode 100644
index 000000000..d40523908
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/NewReadMe.asset
@@ -0,0 +1,30 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_GeneratorAsset: {fileID: 0}
+ m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3}
+ m_Name: NewReadMe
+ m_EditorClassIdentifier:
+ _Icon: {fileID: 0}
+ _LoadedLayout: 0
+ _Sections:
+ - _Heading: 'Standard 3D Renderer With Graphics Extras '
+ _Text: "This template is a good starting point for people who want to develop
+ 3D projects using Unity\u2019s built-in renderer and extra graphics features.
+ This project includes the new Post-Processing stack, several presets to jump-start
+ development, and example content."
+ _LinkText:
+ _Url:
+ - _Heading:
+ _Text: 'To learn more about Post-Processing refer to the wiki page located here:'
+ _LinkText: Post-Processing
+ _Url: https://github.com/Unity-Technologies/PostProcessing/wiki
+ _Title: 3D With Extras (Preview)
diff --git a/Editor/Utilities/ScriptableObjects/NewReadMe.asset.meta b/Editor/Utilities/ScriptableObjects/NewReadMe.asset.meta
new file mode 100644
index 000000000..e906bb501
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/NewReadMe.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: af923377d508f2bdc90f23f42c6b7525
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/ScriptableObjects/ReadMe.cs b/Editor/Utilities/ScriptableObjects/ReadMe.cs
new file mode 100644
index 000000000..cda754fcf
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/ReadMe.cs
@@ -0,0 +1,34 @@
+using System;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.ScriptableObjects {
+ ///
+ ///
+ ///
+ public class ReadMe : ScriptableObject {
+ ///
+ ///
+ public Texture2D icon;
+
+ ///
+ ///
+ public bool loadedLayout;
+
+ ///
+ ///
+ public Section[] sections;
+
+ ///
+ ///
+ public string title;
+
+ ///
+ ///
+ [Serializable]
+ public class Section {
+ ///
+ ///
+ public string heading, text, linkText, url;
+ }
+ }
+}
diff --git a/Editor/Utilities/ScriptableObjects/ReadMe.cs.meta b/Editor/Utilities/ScriptableObjects/ReadMe.cs.meta
new file mode 100644
index 000000000..a4e666cbc
--- /dev/null
+++ b/Editor/Utilities/ScriptableObjects/ReadMe.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b8935ccb62b6f4b138ec123c3c19f2c2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences:
+ - icon: {instanceID: 0}
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: a186f8a87ca4f4d3aa864638ad5dfb65, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Utilities/SearchableEnum/SearchableEnumDrawer.cs b/Editor/Utilities/SearchableEnum/SearchableEnumDrawer.cs
index df55dc510..2a401bd6e 100644
--- a/Editor/Utilities/SearchableEnum/SearchableEnumDrawer.cs
+++ b/Editor/Utilities/SearchableEnum/SearchableEnumDrawer.cs
@@ -1,21 +1,21 @@
-#if UNITY_EDITOR
-using System;
-using Neodroid.Runtime.Utilities.Misc.SearchableEnum;
+using System;
+using droid.Runtime.Utilities;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Utilities.SearchableEnum {
+namespace droid.Editor.Utilities.SearchableEnum {
///
///
- /// Draws the custom enum selector popup for enum fileds using the
- /// SearchableEnumAttribute.
+ /// Draws the custom enum selector popup for enum fileds using the
+ /// SearchableEnumAttribute.
///
[CustomPropertyDrawer(typeof(SearchableEnumAttribute))]
public class SearchableEnumDrawer : PropertyDrawer {
const string _type_error = "SearchableEnum can only be used on enum fields.";
///
- /// Cache of the hash to use to resolve the ID for the drawer.
+ /// Cache of the hash to use to resolve the ID for the drawer.
///
int _id_hash;
@@ -51,20 +51,23 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten
var button_text = new GUIContent(property.enumDisplayNames[property.enumValueIndex]);
if (DropdownButton(id, position, button_text)) {
Action on_select = i => {
- property.enumValueIndex = i;
- property.serializedObject.ApplyModifiedProperties();
- };
+ property.enumValueIndex = i;
+ property.serializedObject.ApplyModifiedProperties();
+ };
- SearchablePopup.Show(position, property.enumDisplayNames, property.enumValueIndex, on_select);
+ SearchablePopup.Show(position,
+ property.enumDisplayNames,
+ property.enumValueIndex,
+ on_select);
}
EditorGUI.EndProperty();
}
///
- /// A custom button drawer that allows for a controlID so that we can
- /// sync the button ID and the label ID to allow for keyboard
- /// navigation like the built-in enum drawers.
+ /// A custom button drawer that allows for a controlID so that we can
+ /// sync the button ID and the label ID to allow for keyboard
+ /// navigation like the built-in enum drawers.
///
static bool DropdownButton(int id, Rect position, GUIContent content) {
var current = Event.current;
@@ -84,7 +87,10 @@ static bool DropdownButton(int id, Rect position, GUIContent content) {
break;
case EventType.Repaint:
- EditorStyles.popup.Draw(position, content, id, false);
+ EditorStyles.popup.Draw(position,
+ content,
+ id,
+ false);
break;
}
diff --git a/Editor/Utilities/SearchableEnum/SearchablePopup.cs b/Editor/Utilities/SearchableEnum/SearchablePopup.cs
index 958a78aeb..2a93a242e 100644
--- a/Editor/Utilities/SearchableEnum/SearchablePopup.cs
+++ b/Editor/Utilities/SearchableEnum/SearchablePopup.cs
@@ -1,85 +1,37 @@
-#if UNITY_EDITOR
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
using System;
-using System.Collections.Generic;
using UnityEditor;
-using UnityEngine;
-namespace Neodroid.Editor.Utilities.SearchableEnum {
+namespace droid.Editor.Utilities.SearchableEnum {
///
///
- /// A popup window that displays a list of options and may use a search
- /// string to filter the displayed content.
+ /// A popup window that displays a list of options and may use a search
+ /// string to filter the displayed content.
///
public class SearchablePopup : PopupWindowContent {
- #region -- Constants --------------------------------------------------
-
- /// Height of each element in the popup list.
- const float _row_height = 16.0f;
-
- /// How far to indent list entries.
- const float _row_indent = 8.0f;
-
- /// Name to use for the text field for search.
- const string _search_control_name = "EnumSearchText";
-
- #endregion -- Constants -----------------------------------------------
-
- #region -- Static Functions -------------------------------------------
-
- /// Show a new SearchablePopup.
- ///
- /// Rectangle of the button that triggered the popup.
- ///
- /// List of strings to choose from.
- ///
- /// Index of the currently selected string.
- ///
- ///
- /// Callback to trigger when a choice is made.
- ///
- public static void Show(
- Rect activator_rect,
- string[] options,
- int current,
- Action on_selection_made) {
- var win = new SearchablePopup(options, current, on_selection_made);
- PopupWindow.Show(activator_rect, win);
- }
+ #region -- Initialization ---------------------------------------------
- ///
- /// Force the focused window to redraw. This can be used to make the
- /// popup more responsive to mouse movement.
- ///
- static void Repaint() { EditorWindow.focusedWindow.Repaint(); }
+ SearchablePopup(string[] names, int current_index, Action on_selection_made) {
+ this._list = new FilteredList(names);
+ this._current_index = current_index;
+ this._on_selection_made = on_selection_made;
- /// Draw a generic box.
- /// Where to draw.
- /// Color to tint the box.
- static void DrawBox(Rect rect, Color tint) {
- var c = GUI.color;
- GUI.color = tint;
- GUI.Box(rect, "", _selection);
- GUI.color = c;
+ this._hover_index = current_index;
+ this._scroll_to_index = current_index;
+ this._scroll_offset = this.GetWindowSize().y - _row_height * 2;
}
- #endregion -- Static Functions ----------------------------------------
+ #endregion -- Initialization ------------------------------------------
#region -- Helper Classes ---------------------------------------------
///
- /// Stores a list of strings and can return a subset of that list that
- /// matches a given filter string.
+ /// Stores a list of strings and can return a subset of that list that
+ /// matches a given filter string.
///
class FilteredList {
- ///
- /// An entry in the filtererd list, mapping the text to the
- /// original index.
- ///
- public struct Entry {
- public int _Index;
- public string _Text;
- }
-
/// All posibile items in the list.
readonly string[] _all_items;
@@ -95,21 +47,19 @@ public FilteredList(string[] items) {
public string Filter { get; private set; }
/// All valid entries for the current filter.
- public List Entries { get; private set; }
+ public List Entries { get; }
/// Total possible entries in the list.
- public int MaxLength {
- get { return this._all_items.Length; }
- }
+ public int MaxLength { get { return this._all_items.Length; } }
///
- /// Sets a new filter string and updates the Entries that match the
- /// new filter if it has changed.
+ /// Sets a new filter string and updates the Entries that match the
+ /// new filter if it has changed.
///
/// String to use to filter the list.
///
- /// True if the filter is updated, false if newFilter is the same
- /// as the current Filter and no update is necessary.
+ /// True if the filter is updated, false if newFilter is the same
+ /// as the current Filter and no update is necessary.
///
public bool UpdateFilter(string filter) {
if (this.Filter == filter) {
@@ -133,23 +83,89 @@ public bool UpdateFilter(string filter) {
return true;
}
+
+ ///
+ /// An entry in the filtererd list, mapping the text to the
+ /// original index.
+ ///
+ public struct Entry {
+ public int _Index;
+ public string _Text;
+ }
}
#endregion -- Helper Classes ------------------------------------------
+ #region -- Constants --------------------------------------------------
+
+ /// Height of each element in the popup list.
+ const float _row_height = 16.0f;
+
+ /// How far to indent list entries.
+ const float _row_indent = 8.0f;
+
+ /// Name to use for the text field for search.
+ const string _search_control_name = "EnumSearchText";
+
+ #endregion -- Constants -----------------------------------------------
+
+ #region -- Static Functions -------------------------------------------
+
+ /// Show a new SearchablePopup.
+ ///
+ /// Rectangle of the button that triggered the popup.
+ ///
+ /// List of strings to choose from.
+ ///
+ /// Index of the currently selected string.
+ ///
+ ///
+ /// Callback to trigger when a choice is made.
+ ///
+ public static void Show(Rect activator_rect,
+ string[] options,
+ int current,
+ Action on_selection_made) {
+ var win = new SearchablePopup(options, current, on_selection_made);
+ PopupWindow.Show(activator_rect, win);
+ }
+
+ ///
+ /// Force the focused window to redraw. This can be used to make the
+ /// popup more responsive to mouse movement.
+ ///
+ static void Repaint() {
+ var window = EditorWindow.focusedWindow;
+ if (window) {
+ window.Repaint();
+ }
+ }
+
+ /// Draw a generic box.
+ /// Where to draw.
+ /// Color to tint the box.
+ static void DrawBox(Rect rect, Color tint) {
+ var c = GUI.color;
+ GUI.color = tint;
+ GUI.Box(rect, "", _selection);
+ GUI.color = c;
+ }
+
+ #endregion -- Static Functions ----------------------------------------
+
#region -- Private Variables ------------------------------------------
/// Callback to trigger when an item is selected.
readonly Action _on_selection_made;
///
- /// Index of the item that was selected when the list was opened.
+ /// Index of the item that was selected when the list was opened.
///
readonly int _current_index;
///
- /// Container for all available options that does the actual string
- /// filtering of the content.
+ /// Container for all available options that does the actual string
+ /// filtering of the content.
///
readonly FilteredList _list;
@@ -157,19 +173,19 @@ public bool UpdateFilter(string filter) {
Vector2 _scroll;
///
- /// Index of the item under the mouse or selected with the keyboard.
+ /// Index of the item under the mouse or selected with the keyboard.
///
int _hover_index;
///
- /// An item index to scroll to on the next draw.
+ /// An item index to scroll to on the next draw.
///
int _scroll_to_index;
///
- /// An offset to apply after scrolling to scrollToIndex. This can be
- /// used to control if the selection appears at the top, bottom, or
- /// center of the popup.
+ /// An offset to apply after scrolling to scrollToIndex. This can be
+ /// used to control if the selection appears at the top, bottom, or
+ /// center of the popup.
///
float _scroll_offset;
@@ -188,20 +204,6 @@ public bool UpdateFilter(string filter) {
#endregion -- GUI Styles ----------------------------------------------
- #region -- Initialization ---------------------------------------------
-
- SearchablePopup(string[] names, int current_index, Action on_selection_made) {
- this._list = new FilteredList(names);
- this._current_index = current_index;
- this._on_selection_made = on_selection_made;
-
- this._hover_index = current_index;
- this._scroll_to_index = current_index;
- this._scroll_offset = this.GetWindowSize().y - _row_height * 2;
- }
-
- #endregion -- Initialization ------------------------------------------
-
#region -- PopupWindowContent Overrides -------------------------------
///
@@ -226,9 +228,9 @@ public override void OnClose() {
///
///
public override Vector2 GetWindowSize() {
- return new Vector2(
- base.GetWindowSize().x,
- Mathf.Min(600, this._list.MaxLength * _row_height + EditorStyles.toolbar.fixedHeight));
+ return new Vector2(base.GetWindowSize().x,
+ Mathf.Min(600,
+ this._list.MaxLength * _row_height + EditorStyles.toolbar.fixedHeight));
}
///
@@ -236,8 +238,14 @@ public override Vector2 GetWindowSize() {
///
///
public override void OnGUI(Rect rect) {
- var search_rect = new Rect(0, 0, rect.width, EditorStyles.toolbar.fixedHeight);
- var scroll_rect = Rect.MinMaxRect(0, search_rect.yMax, rect.xMax, rect.yMax);
+ var search_rect = new Rect(0,
+ 0,
+ rect.width,
+ EditorStyles.toolbar.fixedHeight);
+ var scroll_rect = Rect.MinMaxRect(0,
+ search_rect.yMax,
+ rect.xMax,
+ rect.yMax);
this.HandleKeyboard();
this.DrawSearch(search_rect);
@@ -250,7 +258,11 @@ public override void OnGUI(Rect rect) {
void DrawSearch(Rect rect) {
if (Event.current.type == EventType.Repaint) {
- EditorStyles.toolbar.Draw(rect, false, false, false, false);
+ EditorStyles.toolbar.Draw(rect,
+ false,
+ false,
+ false,
+ false);
}
var search_rect = new Rect(rect);
@@ -280,15 +292,17 @@ void DrawSearch(Rect rect) {
}
void DrawSelectionArea(Rect scroll_rect) {
- var content_rect = new Rect(
- 0,
- 0,
- scroll_rect.width - GUI.skin.verticalScrollbar.fixedWidth,
- this._list.Entries.Count * _row_height);
+ var content_rect = new Rect(0,
+ 0,
+ scroll_rect.width - GUI.skin.verticalScrollbar.fixedWidth,
+ this._list.Entries.Count * _row_height);
this._scroll = GUI.BeginScrollView(scroll_rect, this._scroll, content_rect);
- var row_rect = new Rect(0, 0, scroll_rect.width, _row_height);
+ var row_rect = new Rect(0,
+ 0,
+ scroll_rect.width,
+ _row_height);
for (var i = 0; i < this._list.Entries.Count; i++) {
if (this._scroll_to_index == i
@@ -333,7 +347,7 @@ void DrawRow(Rect row_rect, int i) {
}
///
- /// Process keyboard input to navigate the choices or make a selection.
+ /// Process keyboard input to navigate the choices or make a selection.
///
void HandleKeyboard() {
if (Event.current.type == EventType.KeyDown) {
diff --git a/Editor/Windows/UnityDebug.meta b/Editor/Utilities/UnityDebug.meta
similarity index 100%
rename from Editor/Windows/UnityDebug.meta
rename to Editor/Utilities/UnityDebug.meta
diff --git a/Editor/Utilities/UnityDebug/FindMissingScripts.cs b/Editor/Utilities/UnityDebug/FindMissingScripts.cs
new file mode 100644
index 000000000..d2569b4e3
--- /dev/null
+++ b/Editor/Utilities/UnityDebug/FindMissingScripts.cs
@@ -0,0 +1,73 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.UnityDebug {
+ ///
+ ///
+ ///
+ public class FindMissingScripts : EditorWindow {
+ static int _game_object_count, _components_count, _missing_count;
+ [SerializeField] Texture2D icon;
+
+ ///
+ ///
+ [MenuItem("Tools/Debug/FindMissingScripts")]
+ [MenuItem("Window/Debug/FindMissingScripts")]
+ public static void ShowWindow() { GetWindow(typeof(FindMissingScripts)); }
+
+ void OnEnable() {
+ this.icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/information.png",
+ typeof(Texture2D));
+ this.titleContent = new GUIContent("Unity:Debug", this.icon, "Window for debugging Unity");
+ }
+
+ ///
+ ///
+ public void OnGUI() {
+ if (GUILayout.Button("Find Missing Scripts in selected GameObjects")) {
+ FindInSelected();
+ }
+ }
+
+ static void FindInSelected() {
+ var game_objects = Selection.gameObjects;
+ _game_object_count = 0;
+ _components_count = 0;
+ _missing_count = 0;
+ foreach (var g in game_objects) {
+ SearchInGameObject(g);
+ }
+
+ Debug.Log($"Searched {_game_object_count} GameObjects, {_components_count} components, found {_missing_count} missing");
+ }
+
+ static void SearchInGameObject(GameObject game_object) {
+ _game_object_count++;
+ var components = game_object.GetComponents();
+ for (var i = 0; i < components.Length; i++) {
+ _components_count++;
+ if (components[i] == null) {
+ _missing_count++;
+ var name = game_object.name;
+ var parent = game_object.transform;
+ while (parent.parent != null) {
+ var parent1 = parent.parent;
+ name = parent1.name + "/" + name;
+ parent = parent1;
+ }
+
+ Debug.Log(name + " has an empty script attached in position: " + i, game_object);
+ }
+ }
+
+ // Now recurse through each child GameObject (if there are any):
+ foreach (Transform child in game_object.transform) {
+ SearchInGameObject(child.gameObject);
+ }
+ }
+ }
+}
+#endif
diff --git a/Editor/Windows/UnityDebug/FindMissingScripts.cs.meta b/Editor/Utilities/UnityDebug/FindMissingScripts.cs.meta
similarity index 100%
rename from Editor/Windows/UnityDebug/FindMissingScripts.cs.meta
rename to Editor/Utilities/UnityDebug/FindMissingScripts.cs.meta
diff --git a/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs b/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs
new file mode 100644
index 000000000..1fb611f15
--- /dev/null
+++ b/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs
@@ -0,0 +1,104 @@
+using System;
+using UnityEditor;
+using UnityEditor.SceneManagement;
+using UnityEngine.SceneManagement;
+#if UNITY_EDITOR
+using System.Linq;
+using UnityEngine;
+
+namespace droid.Editor.Utilities.UnityDebug {
+ ///
+ ///
+ /// A helper editor script for finding missing references to objects.
+ ///
+ public class MissingReferencesFinder : MonoBehaviour {
+ const string _menu_root = "Tools/" + "Missing References/";
+
+ ///
+ /// Finds all missing references to objects in the currently loaded scene.
+ ///
+ [MenuItem(_menu_root + "Search in scene", false, 50)]
+ public static void FindMissingReferencesInCurrentScene() {
+ var scene_objects = GetSceneObjects();
+ FindMissingReferences(SceneManager.GetActiveScene().name, scene_objects);
+ }
+
+ ///
+ /// Finds all missing references to objects in all enabled scenes in the project.
+ /// This works by loading the scenes one by one and checking for missing object references.
+ ///
+ [MenuItem(_menu_root + "Search in all scenes", false, 51)]
+ public static void MissingSpritesInAllScenes() {
+ foreach (var scene in EditorBuildSettings.scenes.Where(s => s.enabled)) {
+ EditorSceneManager.OpenScene(scene.path);
+ FindMissingReferencesInCurrentScene();
+ }
+ }
+
+ ///
+ /// Finds all missing references to objects in assets (objects from the project window).
+ ///
+ [MenuItem(_menu_root + "Search in assets", false, 52)]
+ public static void MissingSpritesInAssets() {
+ var all_assets = AssetDatabase.GetAllAssetPaths().Where(path => path.StartsWith("Assets/")).ToArray();
+ var objs = all_assets.Select(a => AssetDatabase.LoadAssetAtPath(a, typeof(GameObject)) as GameObject)
+ .Where(a => a != null).ToArray();
+
+ FindMissingReferences("Project", objs);
+ }
+
+ static void FindMissingReferences(string context, GameObject[] objects) {
+ foreach (var go in objects) {
+ var components = go.GetComponents();
+
+ foreach (var c in components) {
+ // Missing components will be null, we can't find their type, etc.
+ if (!c) {
+ Debug.LogError("Missing Component in GO: " + GetFullPath(go), go);
+ continue;
+ }
+
+ var so = new SerializedObject(c);
+ var sp = so.GetIterator();
+
+ // Iterate over the components' properties.
+ while (sp.NextVisible(true)) {
+ if (sp.propertyType == SerializedPropertyType.ObjectReference) {
+ if (sp.objectReferenceValue == null && sp.objectReferenceInstanceIDValue != 0) {
+ ShowError(context,
+ go,
+ c.GetType().Name,
+ ObjectNames.NicifyVariableName(sp.name));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ static GameObject[] GetSceneObjects() {
+ // Use this method since GameObject.FindObjectsOfType will not return disabled objects.
+ return Resources.FindObjectsOfTypeAll()
+ .Where(go => string.IsNullOrEmpty(AssetDatabase.GetAssetPath(go))
+ && go.hideFlags == HideFlags.None).ToArray();
+ }
+
+ static void ShowError(string context, GameObject go, string component_name, string property_name) {
+ const String error_template = "Missing Ref in: [{3}]{0}. Component: {1}, Property: {2}";
+
+ Debug.LogError(string.Format(error_template,
+ GetFullPath(go),
+ component_name,
+ property_name,
+ context),
+ go);
+ }
+
+ static string GetFullPath(GameObject go) {
+ return go.transform.parent == null
+ ? go.name
+ : GetFullPath(go.transform.parent.gameObject) + "/" + go.name;
+ }
+ }
+}
+#endif
diff --git a/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs.meta b/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs.meta
new file mode 100644
index 000000000..46f302791
--- /dev/null
+++ b/Editor/Utilities/UnityDebug/MissingReferencesFinder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a03923d306a0ec5b1851054161496942
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 83aa900cbe9b64fc9b6d7493fac5030f, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Windows/CameraSynchronisationWindow.cs b/Editor/Windows/CameraSynchronisationWindow.cs
index 8a6318577..4c09ecb07 100644
--- a/Editor/Windows/CameraSynchronisationWindow.cs
+++ b/Editor/Windows/CameraSynchronisationWindow.cs
@@ -1,10 +1,9 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime;
-using Neodroid.Runtime.Utilities.NeodroidCamera;
+using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.GameObjects.NeodroidCamera;
using UnityEditor;
-using UnityEngine;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
///
///
///
@@ -16,32 +15,27 @@ public class CameraSynchronisationWindow : EditorWindow {
bool[] _show_camera_properties;
///
- ///
///
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "CameraSynchronisationWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "CameraSynchronisationWindow")]
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "CameraSynchronisationWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "CameraSynchronisationWindow")]
public static void ShowWindow() {
- GetWindow(
- typeof(CameraSynchronisationWindow)); //Show existing window instance. If one doesn't exist, make one.
+ GetWindow(typeof(CameraSynchronisationWindow)); //Show existing window instance. If one doesn't exist, make one.
}
///
- ///
///
void OnEnable() {
this._cameras = FindObjectsOfType();
this.Setup();
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/arrow_refresh.png",
- typeof(Texture2D));
- this.titleContent = new GUIContent(
- "Neo:Sync",
- this._icon,
- "Window for controlling syncronisation of cameras");
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/arrow_refresh.png",
+ typeof(Texture2D));
+ this.titleContent =
+ new GUIContent("Neo:Sync", this._icon, "Window for controlling synchronisation of cameras");
}
///
- ///
///
void Setup() {
this._show_camera_properties = new bool[this._cameras.Length];
@@ -51,7 +45,6 @@ void Setup() {
}
///
- ///
///
void OnGUI() {
this._cameras = FindObjectsOfType();
@@ -60,23 +53,21 @@ void OnGUI() {
this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
if (this._show_camera_properties != null) {
for (var i = 0; i < this._show_camera_properties.Length; i++) {
- this._show_camera_properties[i] = EditorGUILayout.Foldout(
- this._show_camera_properties[i],
- this._cameras[i].name);
+ this._show_camera_properties[i] =
+ EditorGUILayout.Foldout(this._show_camera_properties[i], this._cameras[i].name);
if (this._show_camera_properties[i]) {
EditorGUILayout.BeginVertical("Box");
- this._cameras[i].SyncOrthographicSize = EditorGUILayout.Toggle(
- "Synchronise Orthographic Size",
- this._cameras[i].SyncOrthographicSize);
- this._cameras[i].SyncNearClipPlane = EditorGUILayout.Toggle(
- "Synchronise Near Clip Plane",
- this._cameras[i].SyncNearClipPlane);
- this._cameras[i].SyncFarClipPlane = EditorGUILayout.Toggle(
- "Synchronise Far Clip Plane",
- this._cameras[i].SyncFarClipPlane);
- this._cameras[i].SyncCullingMask = EditorGUILayout.Toggle(
- "Synchronise Culling Mask",
- this._cameras[i].SyncCullingMask);
+ /*
+ this._cameras[i].SyncOrthographicSize =
+ EditorGUILayout.Toggle("Synchronise Orthographic Size",
+ this._cameras[i].SyncOrthographicSize);
+ this._cameras[i].SyncNearClipPlane =
+ EditorGUILayout.Toggle("Synchronise Near Clip Plane", this._cameras[i].SyncNearClipPlane);
+ this._cameras[i].SyncFarClipPlane =
+ EditorGUILayout.Toggle("Synchronise Far Clip Plane", this._cameras[i].SyncFarClipPlane);
+ this._cameras[i].SyncCullingMask =
+ EditorGUILayout.Toggle("Synchronise Culling Mask", this._cameras[i].SyncCullingMask);
+ */
EditorGUILayout.EndVertical();
}
}
@@ -94,7 +85,6 @@ void OnGUI() {
}
///
- ///
///
public void OnInspectorUpdate() { this.Repaint(); }
}
diff --git a/Editor/Windows/DebugWindow.cs b/Editor/Windows/DebugWindow.cs
index b62b1f2e9..647053065 100644
--- a/Editor/Windows/DebugWindow.cs
+++ b/Editor/Windows/DebugWindow.cs
@@ -1,84 +1,88 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime;
-using Neodroid.Runtime.Environments;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.PlayerControls;
-using Neodroid.Runtime.Prototyping.Actors;
-using Neodroid.Runtime.Prototyping.Configurables;
-using Neodroid.Runtime.Prototyping.Displayers;
-using Neodroid.Runtime.Prototyping.Evaluation;
-using Neodroid.Runtime.Prototyping.Internals;
-using Neodroid.Runtime.Prototyping.Motors;
-using Neodroid.Runtime.Prototyping.Observers;
+using droid.Runtime.Prototyping.ObjectiveFunctions;
+using droid.Runtime.Prototyping.Unobservables;
+#if UNITY_EDITOR && NEODROID_DEBUG
+using droid.Runtime.Utilities.InternalReactions;
+using droid.Runtime.Environments;
+using droid.Runtime.Managers;
+using droid.Runtime.Prototyping.Actors;
+using droid.Runtime.Prototyping.Configurables;
+using droid.Runtime.Prototyping.Displayers;
+using droid.Runtime.Prototyping.Actuators;
+using droid.Runtime.Prototyping.Sensors;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public class DebugWindow : EditorWindow {
Actor[] _actors;
Configurable[] _configurables;
+ bool _debug_all;
+
+ Displayer[] _displayers;
NeodroidEnvironment[] _environments;
Texture _icon;
- Motor[] _motors;
+ Unobservable[] _listeners;
- ObjectiveFunction[] _objective_functions;
+ AbstractNeodroidManager _manager;
- Observer[] _observers;
-
- Displayer[] _displayers;
+ Actuator[] _actuators;
- Resetable[] _resetables;
+ ObjectiveFunction[] _objective_functions_function;
- EnvironmentListener[] _listeners;
+ Sensor[] _sensors;
PlayerReactions _player_reactions;
- NeodroidManager _manager;
+ Vector2 _scroll_position;
bool _show_actors_debug;
bool _show_configurables_debug;
+ bool _show_displayers_debug;
bool _show_environments_debug;
- bool _show_motors_debug;
+ bool _show_listeners_debug;
+ bool _show_actuators_debug;
bool _show_objective_functions_debug;
- bool _show_observers_debug;
- bool _show_simulation_manager_debug;
- bool _show_displayers_debug;
+ bool _show_sensors_debug;
bool _show_player_reactions_debug;
- bool _show_resetables_debug;
- bool _show_listeners_debug;
- bool _debug_all;
+ bool _show_simulation_manager_debug;
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "DebugWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "DebugWindow")]
+ ///
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "DebugWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "DebugWindow")]
public static void ShowWindow() {
GetWindow(); //Show existing window instance. If one doesn't exist, make one.
}
void OnEnable() {
this.FindObjects();
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/information.png",
- typeof(Texture2D));
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/information.png",
+ typeof(Texture2D));
this.titleContent = new GUIContent("Neo:Debug", this._icon, "Window for controlling debug messages");
}
void FindObjects() {
- this._manager = FindObjectOfType();
+ this._manager = FindObjectOfType();
this._environments = FindObjectsOfType();
this._actors = FindObjectsOfType();
- this._motors = FindObjectsOfType();
- this._observers = FindObjectsOfType();
+ this._actuators = FindObjectsOfType();
+ this._sensors = FindObjectsOfType();
this._configurables = FindObjectsOfType();
- this._objective_functions = FindObjectsOfType();
+ this._objective_functions_function = FindObjectsOfType();
this._displayers = FindObjectsOfType();
- this._listeners = FindObjectsOfType();
- this._resetables = FindObjectsOfType();
+ this._listeners = FindObjectsOfType();
this._player_reactions = FindObjectOfType();
}
@@ -87,12 +91,11 @@ void EnableAll() {
this._show_player_reactions_debug = true;
this._show_environments_debug = true;
this._show_actors_debug = true;
- this._show_motors_debug = true;
- this._show_observers_debug = true;
+ this._show_actuators_debug = true;
+ this._show_sensors_debug = true;
this._show_configurables_debug = true;
this._show_objective_functions_debug = true;
this._show_displayers_debug = true;
- this._show_resetables_debug = true;
this._show_listeners_debug = true;
}
@@ -101,12 +104,11 @@ void DisableAll() {
this._show_player_reactions_debug = false;
this._show_environments_debug = false;
this._show_actors_debug = false;
- this._show_motors_debug = false;
- this._show_observers_debug = false;
+ this._show_actuators_debug = false;
+ this._show_sensors_debug = false;
this._show_configurables_debug = false;
this._show_objective_functions_debug = false;
this._show_displayers_debug = false;
- this._show_resetables_debug = false;
this._show_listeners_debug = false;
}
@@ -115,12 +117,11 @@ bool AreAllChecked() {
&& this._show_player_reactions_debug
&& this._show_environments_debug
&& this._show_actors_debug
- && this._show_motors_debug
- && this._show_observers_debug
+ && this._show_actuators_debug
+ && this._show_sensors_debug
&& this._show_configurables_debug
&& this._show_objective_functions_debug
&& this._show_displayers_debug
- && this._show_resetables_debug
&& this._show_listeners_debug) {
return true;
}
@@ -143,33 +144,30 @@ void OnGUI() {
EditorGUILayout.Separator();
- this._show_simulation_manager_debug = EditorGUILayout.Toggle(
- "Debug simulation manager",
- this._show_simulation_manager_debug);
- this._show_player_reactions_debug = EditorGUILayout.Toggle(
- "Debug player reactions",
- this._show_player_reactions_debug);
- this._show_environments_debug = EditorGUILayout.Toggle(
- "Debug all environments",
- this._show_environments_debug);
+ this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
+ EditorGUILayout.BeginVertical("Box");
+
+ this._show_simulation_manager_debug =
+ EditorGUILayout.Toggle("Debug simulation manager", this._show_simulation_manager_debug);
+ this._show_player_reactions_debug =
+ EditorGUILayout.Toggle("Debug player reactions", this._show_player_reactions_debug);
+ this._show_environments_debug =
+ EditorGUILayout.Toggle("Debug all environments", this._show_environments_debug);
this._show_actors_debug = EditorGUILayout.Toggle("Debug all actors", this._show_actors_debug);
- this._show_motors_debug = EditorGUILayout.Toggle("Debug all motors", this._show_motors_debug);
- this._show_observers_debug = EditorGUILayout.Toggle("Debug all observers", this._show_observers_debug);
- this._show_configurables_debug = EditorGUILayout.Toggle(
- "Debug all configurables",
- this._show_configurables_debug);
- this._show_objective_functions_debug = EditorGUILayout.Toggle(
- "Debug all objective functions",
- this._show_objective_functions_debug);
- this._show_displayers_debug = EditorGUILayout.Toggle(
- "Debug all displayers",
- this._show_displayers_debug);
-
- this._show_resetables_debug = EditorGUILayout.Toggle(
- "Debug all resetables",
- this._show_resetables_debug);
+ this._show_actuators_debug = EditorGUILayout.Toggle("Debug all Actuators", this._show_actuators_debug);
+ this._show_sensors_debug = EditorGUILayout.Toggle("Debug all sensors", this._show_sensors_debug);
+ this._show_configurables_debug =
+ EditorGUILayout.Toggle("Debug all configurables", this._show_configurables_debug);
+ this._show_objective_functions_debug =
+ EditorGUILayout.Toggle("Debug all objective functions", this._show_objective_functions_debug);
+ this._show_displayers_debug =
+ EditorGUILayout.Toggle("Debug all displayers", this._show_displayers_debug);
this._show_listeners_debug = EditorGUILayout.Toggle("Debug all listeners", this._show_listeners_debug);
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.EndScrollView();
+
this._debug_all = this.AreAllChecked();
if (GUILayout.Button("Apply")) {
@@ -189,19 +187,19 @@ void OnGUI() {
actor.Debugging = this._show_actors_debug;
}
- foreach (var motor in this._motors) {
- motor.Debugging = this._show_motors_debug;
+ foreach (var actuator in this._actuators) {
+ actuator.Debugging = this._show_actuators_debug;
}
- foreach (var observer in this._observers) {
- observer.Debugging = this._show_observers_debug;
+ foreach (var observer in this._sensors) {
+ observer.Debugging = this._show_sensors_debug;
}
foreach (var configurable in this._configurables) {
configurable.Debugging = this._show_configurables_debug;
}
- foreach (var objective_functions in this._objective_functions) {
+ foreach (var objective_functions in this._objective_functions_function) {
objective_functions.Debugging = this._show_objective_functions_debug;
}
@@ -209,10 +207,6 @@ void OnGUI() {
displayer.Debugging = this._show_displayers_debug;
}
- foreach (var resetable in this._resetables) {
- resetable.Debugging = this._show_resetables_debug;
- }
-
foreach (var listener in this._listeners) {
listener.Debugging = this._show_listeners_debug;
}
@@ -220,11 +214,14 @@ void OnGUI() {
if (GUI.changed && !Application.isPlaying) {
EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
- // Unity not tracking changes to properties of gameobject made through this window automatically and
- // are not saved unless other changes are made from a working inpector window
+ // Unity not tracking changes to properties of a GameObject made through this window automatically and
+ // are not saved unless other changes are made from a working inspector window
}
}
+ ///
+ ///
+ ///
public void OnInspectorUpdate() { this.Repaint(); }
}
}
diff --git a/Editor/Windows/DemonstrationWindow.cs b/Editor/Windows/DemonstrationWindow.cs
index b34672525..8d331ad37 100644
--- a/Editor/Windows/DemonstrationWindow.cs
+++ b/Editor/Windows/DemonstrationWindow.cs
@@ -1,9 +1,11 @@
#if UNITY_EDITOR
-using Neodroid.Runtime;
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public class DemonstrationWindow : EditorWindow {
int _captured_frame;
@@ -15,19 +17,26 @@ public class DemonstrationWindow : EditorWindow {
string _status = "Idle";
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "DemonstrationWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "DemonstrationWindow")]
+ ///
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "DemonstrationWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "DemonstrationWindow")]
public static void ShowWindow() {
GetWindow(typeof(DemonstrationWindow)); //Show existing window instance. If one doesn't exist, make one.
}
void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/bullet_red.png",
- typeof(Texture2D));
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/bullet_red.png",
+ typeof(Texture2D));
this.titleContent = new GUIContent("Neo:Rec", this._icon, "Window for recording demonstrations");
}
+ ///
+ ///
+ ///
public void OnInspectorUpdate() { this.Repaint(); }
void OnGUI() {
diff --git a/Editor/Windows/Deprecated.meta b/Editor/Windows/Deprecated.meta
new file mode 100644
index 000000000..8e9877ac9
--- /dev/null
+++ b/Editor/Windows/Deprecated.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ee4b2e432c654ebc96f5ddd1d8e72a9a
+timeCreated: 1561136888
\ No newline at end of file
diff --git a/Editor/Windows/Deprecated/PreferenceWindow.cs b/Editor/Windows/Deprecated/PreferenceWindow.cs
new file mode 100644
index 000000000..9c531fc96
--- /dev/null
+++ b/Editor/Windows/Deprecated/PreferenceWindow.cs
@@ -0,0 +1,174 @@
+/*
+#if UNITY_EDITOR
+using droid.Editor.Utilities;
+
+using UnityEditor;
+using UnityEngine;
+
+using System.Linq;
+using droid.Runtime;
+
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
+ public class PreferenceWindow : MonoBehaviour {
+ static bool _preferences_loaded;
+
+ ///
+ ///
+ static bool _enable_neodroid_debug;
+
+ static bool _use_github_extension;
+ static bool _imported_asset;
+ static string _import_location;
+ static bool _generate_scene_previews;
+ static string _scene_previews_location;
+
+ static bool _generate_scene_descriptions;
+ static string _scene_descriptions_location;
+
+ ///
+ ///
+ [PreferenceItem("Neodroid")]
+ public static void PreferencesGui() {
+ if (!_preferences_loaded) {
+ _enable_neodroid_debug = EditorPrefs.GetBool(NeodroidEditorInfo._Debug_Pref_Key, false);
+ _use_github_extension = EditorPrefs.GetBool(NeodroidEditorInfo._Github_Extension_Pref_Key, false);
+ _imported_asset = EditorPrefs.GetBool(NeodroidEditorInfo._Imported_Asset_Pref_Key, false);
+ _generate_scene_previews = EditorPrefs.GetBool(NeodroidEditorInfo._Generate_Previews_Pref_Key, false);
+ if (_generate_scene_previews) {
+ _scene_previews_location = EditorPrefs.GetString(NeodroidEditorInfo._Generate_Previews_Loc_Pref_Key,
+ NeodroidEditorInfo.ScenePreviewsLocation);
+ }
+
+ _generate_scene_descriptions =
+ EditorPrefs.GetBool(NeodroidEditorInfo._Generate_Descriptions_Pref_Key, false);
+ if (_generate_scene_descriptions) {
+ _scene_descriptions_location =
+ EditorPrefs.GetString(NeodroidEditorInfo._Generate_Descriptions_Loc_Pref_Key,
+ NeodroidEditorInfo.SceneDescriptionLocation);
+ }
+
+ #if NEODROID_IS_PACKAGE
+ _import_location = EditorPrefs.GetString(NeodroidEditorInfo._Import_Location_Pref_Key,
+ NeodroidEditorInfo.ImportLocation);
+ #endif
+
+ _preferences_loaded = true;
+ }
+
+ EditorGUILayout.HelpBox($"Version {NeodroidRuntimeInfo._Version}", MessageType.Info);
+
+ var imported_asset_new =
+ EditorGUILayout.Toggle(NeodroidEditorInfo._Imported_Asset_Pref_Key, _imported_asset);
+
+ #if NEODROID_IS_PACKAGE
+ EditorGUILayout.HelpBox("Enter import path of Neodroid", MessageType.Info);
+ _import_location = EditorGUILayout.TextField(_import_location);
+ #endif
+
+ EditorGUILayout.HelpBox("Functionality", MessageType.Info);
+
+ var enable_neodroid_debug_new =
+ EditorGUILayout.Toggle(NeodroidEditorInfo._Debug_Pref_Key, _enable_neodroid_debug);
+ var use_github_extension_new =
+ EditorGUILayout.Toggle(NeodroidEditorInfo._Github_Extension_Pref_Key, _use_github_extension);
+ var generate_scene_previews_new =
+ EditorGUILayout.Toggle(NeodroidEditorInfo._Generate_Previews_Pref_Key, _generate_scene_previews);
+ if (_generate_scene_previews) {
+ EditorGUILayout.HelpBox("Enter path for scene preview storage", MessageType.Info);
+ _scene_previews_location = EditorGUILayout.TextField(_scene_previews_location);
+ }
+
+ var generate_scene_descriptions_new =
+ EditorGUILayout.Toggle(NeodroidEditorInfo._Generate_Descriptions_Pref_Key,
+ _generate_scene_descriptions);
+ if (_generate_scene_descriptions) {
+ EditorGUILayout.HelpBox("Enter path for scene description storage", MessageType.Info);
+ _scene_descriptions_location = EditorGUILayout.TextField(_scene_descriptions_location);
+ }
+
+ if (GUI.changed) {
+ if (enable_neodroid_debug_new != _enable_neodroid_debug) {
+ _enable_neodroid_debug = enable_neodroid_debug_new;
+ EditorPrefs.SetBool(NeodroidEditorInfo._Debug_Pref_Key, _enable_neodroid_debug);
+ Debug.Log($"Neodroid Debugging {_enable_neodroid_debug}");
+ if (_enable_neodroid_debug) {
+ DefineSymbolsFunctionality.AddDebugDefineSymbol();
+ } else {
+ DefineSymbolsFunctionality.RemoveDebugDefineSymbols();
+ }
+ }
+
+ if (use_github_extension_new != _use_github_extension) {
+ _use_github_extension = use_github_extension_new;
+ EditorPrefs.SetBool(NeodroidEditorInfo._Github_Extension_Pref_Key, _use_github_extension);
+ Debug.Log($"Neodroid GitHub Extension{_use_github_extension}");
+ if (_use_github_extension) {
+ DefineSymbolsFunctionality.AddGithubDefineSymbols();
+ } else {
+ DefineSymbolsFunctionality.RemoveGithubDefineSymbols();
+ }
+ }
+
+ if (imported_asset_new != _imported_asset) {
+ _imported_asset = imported_asset_new;
+ EditorPrefs.SetBool(NeodroidEditorInfo._Imported_Asset_Pref_Key, _imported_asset);
+ Debug.Log($"Neodroid is set as an imported asset {_imported_asset}");
+ if (_imported_asset) {
+ DefineSymbolsFunctionality.AddImportedAssetDefineSymbols();
+ } else {
+ DefineSymbolsFunctionality.RemoveImportedAssetDefineSymbols();
+ }
+ }
+
+ #if NEODROID_IS_PACKAGE
+ if (NeodroidEditorInfo.ImportLocation != _import_location) {
+ NeodroidEditorInfo.ImportLocation = _import_location;
+ EditorPrefs.SetString(NeodroidEditorInfo._Import_Location_Pref_Key, _import_location);
+ }
+ #endif
+
+ if (generate_scene_previews_new != _generate_scene_previews) {
+ _generate_scene_previews = generate_scene_previews_new;
+ Debug.Log($"Setting Neodroid Generate ScenePreview: {_generate_scene_previews}");
+ EditorPrefs.SetBool(NeodroidEditorInfo._Generate_Previews_Pref_Key, _generate_scene_previews);
+ }
+
+ if (_generate_scene_previews) {
+ if (NeodroidEditorInfo.ScenePreviewsLocation != _scene_previews_location) {
+ NeodroidEditorInfo.ScenePreviewsLocation = _scene_previews_location;
+ EditorPrefs.SetString(NeodroidEditorInfo._Generate_Previews_Loc_Pref_Key,
+ _scene_previews_location);
+ }
+ }
+
+ if (generate_scene_descriptions_new != _generate_scene_descriptions) {
+ _generate_scene_descriptions = generate_scene_descriptions_new;
+ Debug.Log($"Setting Neodroid Generate SceneDescription: {_generate_scene_descriptions}");
+ EditorPrefs.SetBool(NeodroidEditorInfo._Generate_Descriptions_Pref_Key,
+ _generate_scene_descriptions);
+ }
+
+ if (_generate_scene_descriptions) {
+ if (NeodroidEditorInfo.SceneDescriptionLocation != _scene_descriptions_location) {
+ NeodroidEditorInfo.SceneDescriptionLocation = _scene_descriptions_location;
+ EditorPrefs.SetString(NeodroidEditorInfo._Generate_Descriptions_Loc_Pref_Key,
+ _scene_descriptions_location);
+ }
+ }
+
+ _preferences_loaded = false;
+ }
+ }
+
+ void OnValidate() { _preferences_loaded = false; }
+
+
+ }
+}
+#endif
+*/
+
+
diff --git a/Editor/Windows/PreferenceWindow.cs.meta b/Editor/Windows/Deprecated/PreferenceWindow.cs.meta
similarity index 100%
rename from Editor/Windows/PreferenceWindow.cs.meta
rename to Editor/Windows/Deprecated/PreferenceWindow.cs.meta
diff --git a/Editor/Windows/EditorWindowMenuPath.cs b/Editor/Windows/EditorWindowMenuPath.cs
index 2524ea52c..bdd2e4f53 100644
--- a/Editor/Windows/EditorWindowMenuPath.cs
+++ b/Editor/Windows/EditorWindowMenuPath.cs
@@ -1,8 +1,22 @@
#if UNITY_EDITOR
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public static class EditorWindowMenuPath {
+ ///
+ ///
+ ///
public const string _ToolMenuPath = "Tools/Neodroid/";
+
+ ///
+ ///
+ ///
public const string _WindowMenuPath = "Window/Neodroid/";
+
+ ///
+ ///
+ ///
public const string _NewAssetPath = "Assets/";
}
}
diff --git a/Editor/Windows/PreferenceWindow.cs b/Editor/Windows/PreferenceWindow.cs
deleted file mode 100644
index e34471e35..000000000
--- a/Editor/Windows/PreferenceWindow.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-#if UNITY_EDITOR
-using System.Linq;
-using Neodroid.Editor.ScriptableObjects;
-using Neodroid.Runtime;
-using TMPro;
-using UnityEditor;
-using UnityEditor.Graphs;
-using UnityEngine;
-
-namespace Neodroid.Editor.Windows {
- ///
- ///
- ///
- public class PreferenceWindow : MonoBehaviour {
- static bool _preferences_loaded;
-
- ///
- ///
- ///
- public static bool _EnableNeodroidDebug;
-
- const string _debug_pref_key = "EnableNeodroidDebug";
-
- ///
- ///
- ///
- [PreferenceItem("Neodroid")]
- public static void PreferencesGui() {
- EditorGUILayout.HelpBox($"Version {NeodroidInfo._Version}", MessageType.Info);
-
- if (!_preferences_loaded) {
- _EnableNeodroidDebug = EditorPrefs.GetBool(_debug_pref_key, false);
- _preferences_loaded = true;
- }
-
- _EnableNeodroidDebug = EditorGUILayout.Toggle(_debug_pref_key, _EnableNeodroidDebug);
-
- EditorGUILayout.HelpBox("Enter import path of Neodroid!", MessageType.Info);
-
- NeodroidInfo._ImportLocation = EditorGUILayout.TextField(NeodroidInfo._ImportLocation);
-
- if (GUI.changed) {
- if (_EnableNeodroidDebug) {
- DefineSymbolsFunctionality.AddDebugDefineSymbol();
- } else {
- DefineSymbolsFunctionality.RemoveDebugDefineSymbol();
- }
-
- EditorPrefs.SetBool(_debug_pref_key, _EnableNeodroidDebug);
- }
- }
-
- /*[SettingsProvider]
- static SettingsProvider CreateProjectSettingsProvider()
- {
- var provider = new AssetSettingsProvider("Project/Physics", "ProjectSettings/DynamicsManager.asset")
- {
- icon = EditorGUIUtility.IconContent("Profiler.Physics").image as Texture2D
- };
- SettingsProvider.GetSearchKeywordsFromSerializedObject(provider.CreateEditor().serializedObject, provider.keywords);
- return provider;
- }*/
-
- /*
- #if UNITY_2018_3_OR_NEWER
- [SettingsProvider]
- static SettingsProvider CreateNeodroidSettingsProvider() {
- var provider = new AssetSettingsProvider("Project/Neodroid", () => NeodroidSettings.Instance);
- provider.PopulateSearchKeywordsFromGUIContentProperties();
- return provider;
- }
- #endif
-
- */
- }
-
- ///
- ///
- /// Adds the given define symbols to PlayerSettings define symbols.
- /// Just add your own define symbols to the Symbols property at the below.
- ///
- [InitializeOnLoad]
- public class DefineSymbolsController : UnityEditor.Editor {
- ///
- /// Add define symbols as soon as Unity gets done compiling.
- ///
- static DefineSymbolsController() { DefineSymbolsFunctionality.AddDefineSymbols(); }
- }
-
- public static class DefineSymbolsFunctionality {
- ///
- /// Symbols that will be added to the editor
- ///
- public static readonly string[] _Symbols = {"NEODROID", "NEODROID_EXISTS"};
-
- ///
- /// Debug symbols that will be added to the editor
- ///
- public static readonly string[] _Debug_Symbols = {"NEODROID_DEBUG"};
-
- ///
- ///
- ///
- public static void AddDefineSymbols() {
- var defines_string =
- PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
- var all_defines = defines_string.Split(';').ToList();
- all_defines.AddRange(_Symbols.Except(all_defines));
- PlayerSettings.SetScriptingDefineSymbolsForGroup(
- EditorUserBuildSettings.selectedBuildTargetGroup,
- string.Join(";", all_defines.ToArray()));
- }
-
- ///
- ///
- ///
- public static void AddDebugDefineSymbol() {
- var defines_string =
- PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
- var all_defines = defines_string.Split(';').ToList();
- all_defines.AddRange(_Debug_Symbols.Except(all_defines));
-
- Debug.LogWarning($"Debug enabled: {true}");
-
- PlayerSettings.SetScriptingDefineSymbolsForGroup(
- EditorUserBuildSettings.selectedBuildTargetGroup,
- string.Join(";", all_defines.ToArray()));
- }
-
- ///
- ///
- ///
- public static void RemoveDebugDefineSymbol() {
- var defines_string =
- PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
- var all_defines = defines_string.Split(';').ToList();
- foreach (var b in _Debug_Symbols) {
- var res = all_defines.RemoveAll(c => c == b);
- Debug.LogWarning($"Debug disabled: {res}");
- }
-
- PlayerSettings.SetScriptingDefineSymbolsForGroup(
- EditorUserBuildSettings.selectedBuildTargetGroup,
- string.Join(";", all_defines.ToArray()));
- }
- }
-}
-#endif
diff --git a/Editor/Windows/PrototypingWindow.cs b/Editor/Windows/PrototypingWindow.cs
new file mode 100644
index 000000000..7a2588b12
--- /dev/null
+++ b/Editor/Windows/PrototypingWindow.cs
@@ -0,0 +1,479 @@
+using System;
+using System.Collections.Generic;
+using droid.Editor.Utilities;
+using droid.Runtime.Enums;
+using droid.Runtime.Environments;
+using droid.Runtime.GameObjects;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Managers;
+using droid.Runtime.Prototyping.Actors;
+using droid.Runtime.Prototyping.Actuators;
+using droid.Runtime.Prototyping.Configurables;
+using droid.Runtime.Prototyping.Displayers;
+using droid.Runtime.Prototyping.ObjectiveFunctions;
+using droid.Runtime.Prototyping.Sensors;
+using droid.Runtime.Prototyping.Unobservables;
+using droid.Runtime.Structs;
+using droid.Runtime.Structs.Space;
+using droid.Runtime.Utilities;
+using droid.Runtime.Utilities.InternalReactions;
+using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.Environments.Prototyping;
+using UnityEditor;
+
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
+ public class PrototypingWindow : EditorWindow {
+ const int _logo_image_size = 100;
+
+ const string _neodroid_url_text = "Documentation";
+ const string _neodroid_url = "https://sintefneodroid.github.io/documentation";
+
+ ///
+ ///
+ const bool _refresh_enabled = false;
+
+ PrototypingEnvironment[] _environments;
+ Texture _icon;
+ Texture _neodroid_icon;
+
+ PlayerReactions _player_reactions;
+ Vector2 _scroll_position;
+ bool[] _show_environment_properties = new bool[1];
+ bool _show_detailed_descriptions;
+
+ ///
+ ///
+ AbstractNeodroidManager _simulation_manager;
+
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "PrototypingWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "PrototypingWindow")]
+ public static void ShowWindow() {
+ GetWindow(typeof(PrototypingWindow)); //Show existing window instance. If one doesn't exist, make one.
+ //window.Show();
+ }
+
+ ///
+ ///
+ void OnEnable() {
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/world.png",
+ typeof(Texture2D));
+ this._neodroid_icon =
+ (Texture)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/neodroid_favicon_cut.png",
+ typeof(Texture));
+ this.titleContent = new GUIContent("Neo:Env", this._icon, "Window for configuring environments");
+ this.Setup();
+ }
+
+ ///
+ ///
+ void Setup() {
+ if (this._environments != null) {
+ this._show_environment_properties = new bool[this._environments.Length];
+ }
+ }
+
+ ///
+ ///
+ void OnGUI() {
+ var serialised_object = new SerializedObject(this);
+ this._simulation_manager = FindObjectOfType();
+ if (this._simulation_manager) {
+ EditorGUILayout.BeginHorizontal();
+
+ EditorGUILayout.BeginVertical();
+ GUILayout.Label(this._neodroid_icon,
+ GUILayout.Width(_logo_image_size),
+ GUILayout.Height(_logo_image_size));
+
+ if (NeodroidEditorUtilities.LinkLabel(new GUIContent(_neodroid_url_text))) {
+ Application.OpenURL(_neodroid_url);
+ }
+
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.BeginVertical();
+ EditorGUILayout.ObjectField(this._simulation_manager, typeof(AbstractNeodroidManager), true);
+
+ this._simulation_manager.Configuration =
+ (SimulatorConfiguration)
+ EditorGUILayout.ObjectField((SimulatorConfiguration)this._simulation_manager.Configuration,
+ typeof(SimulatorConfiguration),
+ true);
+
+ this._simulation_manager.Configuration.FrameSkips =
+ EditorGUILayout.IntField("Frame Skips", this._simulation_manager.Configuration.FrameSkips);
+
+ this._simulation_manager.Configuration.SimulationType =
+ (SimulationType)EditorGUILayout.EnumPopup("Simulation Type",
+ this._simulation_manager.Configuration.SimulationType);
+
+
+ this._player_reactions = FindObjectOfType();
+ EditorGUILayout.ObjectField(this._player_reactions, typeof(PlayerReactions), true);
+
+ this._show_detailed_descriptions =
+ EditorGUILayout.Toggle("Show Details", this._show_detailed_descriptions);
+
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.EndHorizontal();
+
+ this._environments =
+ NeodroidSceneUtilities.FindAllObjectsOfTypeInScene();
+ if (this._show_environment_properties.Length != this._environments.Length) {
+ this.Setup();
+ }
+
+ this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
+
+ EditorGUILayout.BeginVertical("Box");
+ var num_active_environments = this._environments.Length;
+ var num_inactive_environments = this._environments.Length - num_active_environments;
+
+ //EditorGUILayout.BeginHorizontal();
+
+ GUILayout.Label($"Environments - Active({num_active_environments}), Inactive({num_inactive_environments}), Total({this._environments.Length})");
+
+ //EditorGUILayout.EndHorizontal();
+
+ if (this._show_environment_properties != null) {
+ for (var i = 0; i < this._show_environment_properties.Length; i++) {
+ if (this._environments[i].isActiveAndEnabled) {
+ this._show_environment_properties[i] =
+ EditorGUILayout.Foldout(this._show_environment_properties[i],
+ $"{this._environments[i].Identifier}");
+ if (this._show_environment_properties[i]) {
+ var sensors = this._environments[i].Sensors;
+ var configurables = this._environments[i].Configurables;
+ var listeners = this._environments[i].Listeners;
+ var displayers = this._environments[i].Displayers;
+
+ EditorGUILayout.BeginVertical("Box");
+ this._environments[i].enabled =
+ EditorGUILayout.BeginToggleGroup(this._environments[i].Identifier,
+ this._environments[i].enabled
+ && this._environments[i].gameObject.activeSelf);
+
+ EditorGUILayout.ObjectField(this._environments[i], typeof(PrototypingEnvironment), true);
+
+ if (this._show_detailed_descriptions) {
+ this._environments[i].CoordinateSpace =
+ (CoordinateSpace)EditorGUILayout.EnumPopup("Coordinate system",
+ this._environments[i].CoordinateSpace);
+ EditorGUI.BeginDisabledGroup(this._environments[i].CoordinateSpace
+ != CoordinateSpace.Environment_);
+ this._environments[i].CoordinateReferencePoint =
+ (Transform)EditorGUILayout.ObjectField("Reference point",
+ this._environments[i].CoordinateReferencePoint,
+ typeof(Transform),
+ true);
+ EditorGUI.EndDisabledGroup();
+ if (this._environments[i].ObjectiveFunction != null) {
+ this._environments[i].ObjectiveFunction =
+ (EpisodicObjective)EditorGUILayout.ObjectField("Objective function",
+ (EpisodicObjective)this
+ ._environments[i]
+ .ObjectiveFunction,
+ typeof(EpisodicObjective),
+ true);
+ EditorGUILayout.LabelField("Signal: "
+ + ((EpisodicObjective)this._environments[i].ObjectiveFunction).LastSignal);
+ this._environments[i].ObjectiveFunction.SignalSpace
+ .FromVector3(EditorGUILayout.Vector3Field(Space1.Vector3Description(),
+ this._environments[i].ObjectiveFunction
+ .SignalSpace.ToVector3()));
+ this._environments[i].ObjectiveFunction.EpisodeLength =
+ EditorGUILayout.IntField("Episode Length",
+ this._environments[i].ObjectiveFunction.EpisodeLength);
+ }
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ this._environments[i].Debugging =
+ EditorGUILayout.Toggle("Debugging", this._environments[i].Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+
+ EditorGUI.BeginDisabledGroup(true);
+ EditorGUILayout.LabelField("Info:");
+ EditorGUILayout.Toggle("Terminated", this._environments[i].Terminated);
+ EditorGUI.EndDisabledGroup();
+ }
+
+ var s = this._environments[i] as AbstractSpatialPrototypingEnvironment as ActorisedPrototypingEnvironment;
+ if (s) {
+ var actors = s.Actors;
+ this.DrawActors(actors);
+ } else {
+ var c = this._environments[i] as PrototypingEnvironment;
+ if (c) {
+ this.DrawActuators(c.Actuators);
+ }
+ }
+
+ this.DrawSensors(sensors);
+
+ this.DrawConfigurables(configurables);
+
+ this.DrawDisplayers(displayers);
+
+ this.DrawListeners(listeners);
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Disabled environments");
+ for (var i = 0; i < this._show_environment_properties.Length; i++) {
+ if (!this._environments[i].isActiveAndEnabled) {
+ EditorGUILayout.ObjectField(this._environments[i], typeof(NeodroidEnvironment), true);
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.EndScrollView();
+ serialised_object.ApplyModifiedProperties();
+ }
+ }
+ }
+
+ #region GUIDRAWS
+
+ void DrawListeners(SortedDictionary listeners) {
+ EditorGUILayout.BeginVertical("Box");
+
+ GUILayout.Label("Listeners");
+ foreach (var resetable in listeners) {
+ var resetable_value = (Unobservable)resetable.Value;
+ if (resetable_value != null) {
+ EditorGUILayout.BeginVertical("Box");
+ resetable_value.enabled =
+ EditorGUILayout.BeginToggleGroup(resetable.Key,
+ resetable_value.enabled
+ && resetable_value.gameObject.activeSelf);
+ EditorGUILayout.ObjectField(resetable_value, typeof(Unobservable), true);
+ if (this._show_detailed_descriptions) {
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ resetable_value.Debugging = EditorGUILayout.Toggle("Debugging", resetable_value.Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ void DrawActors(SortedDictionary actors) {
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Actors");
+ foreach (var actor in actors) {
+ var actor_value = (Actor)actor.Value;
+ if (actor_value != null) {
+ var actuators = actor_value.Actuators;
+
+ EditorGUILayout.BeginVertical("Box");
+
+ actor_value.enabled =
+ EditorGUILayout.BeginToggleGroup(actor.Key,
+ actor_value.enabled && actor_value.gameObject.activeSelf);
+ EditorGUILayout.ObjectField(actor_value, typeof(Actor), true);
+ if (this._show_detailed_descriptions) {
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ actor_value.Debugging = EditorGUILayout.Toggle("Debugging", actor_value.Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ this.DrawActuators(actuators);
+
+ EditorGUILayout.EndToggleGroup();
+
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ void DrawSensors(SortedDictionary sensors) {
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Sensors");
+ foreach (var sensor in sensors) {
+ var sensor_value = (Sensor)sensor.Value;
+ if (sensor_value != null) {
+ EditorGUILayout.BeginVertical("Box");
+ sensor_value.enabled =
+ EditorGUILayout.BeginToggleGroup(sensor.Key,
+ sensor_value.enabled && sensor_value.gameObject.activeSelf);
+ EditorGUILayout.ObjectField(sensor_value, typeof(Sensor), true);
+ if (this._show_detailed_descriptions) {
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ sensor_value.Debugging = EditorGUILayout.Toggle("Debugging", sensor_value.Debugging);
+ EditorGUILayout.LabelField("Observables: [" + sensor_value.ToString() + "]");
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ void DrawDisplayers(SortedDictionary displayers) {
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Displayers");
+ foreach (var displayer in displayers) {
+ var displayer_value = (Displayer)displayer.Value;
+ if (displayer_value != null) {
+ EditorGUILayout.BeginVertical("Box");
+ displayer_value.enabled =
+ EditorGUILayout.BeginToggleGroup(displayer.Key,
+ displayer_value.enabled
+ && displayer_value.gameObject.activeSelf);
+ EditorGUILayout.ObjectField(displayer_value, typeof(Displayer), true);
+ if (this._show_detailed_descriptions) {
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ displayer_value.Debugging = EditorGUILayout.Toggle("Debugging", displayer_value.Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ void DrawConfigurables(SortedDictionary configurables) {
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Configurables");
+ foreach (var configurable in configurables) {
+ var configurable_value = (Configurable)configurable.Value;
+ if (configurable_value != null) {
+ EditorGUILayout.BeginVertical("Box");
+ configurable_value.enabled = EditorGUILayout.BeginToggleGroup(configurable.Key,
+ configurable_value.enabled
+ && configurable_value
+ .gameObject.activeSelf);
+ EditorGUILayout.ObjectField(configurable_value, typeof(Configurable), true);
+ if (this._show_detailed_descriptions) {
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ configurable_value.Debugging = EditorGUILayout.Toggle("Debugging", configurable_value.Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ void DrawActuators(SortedDictionary actuators) {
+ EditorGUILayout.BeginVertical("Box");
+ GUILayout.Label("Actuators");
+ foreach (var actuator in actuators) {
+ var actuator_value = (Actuator)actuator.Value;
+ if (actuator_value != null) {
+ EditorGUILayout.BeginVertical("Box");
+ actuator_value.enabled =
+ EditorGUILayout.BeginToggleGroup(actuator.Key,
+ actuator_value.enabled
+ && actuator_value.gameObject.activeSelf);
+ EditorGUILayout.ObjectField(actuator_value, typeof(Actuator), true);
+
+ if (this._show_detailed_descriptions) {
+ actuator_value.MotionSpace.FromVector3(EditorGUILayout.Vector3Field(Space1.Vector3Description(),
+ actuator_value
+ .MotionSpace
+ .ToVector3()));
+ //EditorGUILayout.BeginHorizontal("Box");
+ #if NEODROID_DEBUG
+ actuator_value.Debugging = EditorGUILayout.Toggle("Debugging", actuator_value.Debugging);
+ #endif
+ //EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.EndToggleGroup();
+
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ #endregion
+
+ ///
+ ///
+ void Refresh() {
+ if (this._simulation_manager) {
+ this._simulation_manager.Clear();
+ }
+
+ var prototyping_game_objects = FindObjectsOfType();
+ foreach (var obj in prototyping_game_objects) {
+ obj.RefreshAwake();
+ }
+
+ foreach (var obj in prototyping_game_objects) {
+ obj.RefreshStart();
+ }
+ }
+
+ ///
+ ///
+ void OnValidate() {
+ if (EditorApplication.isPlaying || !_refresh_enabled) {
+ return;
+ }
+
+ this.Refresh();
+ }
+
+ ///
+ ///
+ void OnHierarchyChange() { this.Refresh(); }
+
+ ///
+ ///
+ public void OnInspectorUpdate() {
+ this.Repaint();
+ if (GUI.changed) {
+ this.Refresh();
+ }
+ }
+ }
+}
+#endif
diff --git a/Editor/Windows/PrototypingWindow.cs.meta b/Editor/Windows/PrototypingWindow.cs.meta
new file mode 100644
index 000000000..2a2443821
--- /dev/null
+++ b/Editor/Windows/PrototypingWindow.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 3c002438c79ce48759d368479702747b
+timeCreated: 1513626317
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 06ba9add127194f4e81b3bf0cde5bf84, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/Windows/RenderTextureConfiguratorWindow.cs b/Editor/Windows/RenderTextureConfiguratorWindow.cs
index 0febccc22..c61a54b01 100644
--- a/Editor/Windows/RenderTextureConfiguratorWindow.cs
+++ b/Editor/Windows/RenderTextureConfiguratorWindow.cs
@@ -1,14 +1,17 @@
-#if UNITY_EDITOR
-using System.Collections.Generic;
-using Neodroid.Runtime;
+using System.Collections.Generic;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public class RenderTextureConfiguratorWindow : EditorWindow {
- int _preview_image_size = 100;
-
Texture _icon;
+
+ const int _preview_image_size = 100;
+
//float[] _render_texture_height;
//float[] _render_texture_width;
@@ -17,17 +20,20 @@ public class RenderTextureConfiguratorWindow : EditorWindow {
Vector2 _scroll_position;
Vector2 _texture_size;
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "RenderTextureConfiguratorWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "RenderTextureConfiguratorWindow")]
+ ///
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "RenderTextureConfiguratorWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "RenderTextureConfiguratorWindow")]
public static void ShowWindow() {
- GetWindow(
- typeof(RenderTextureConfiguratorWindow)); //Show existing window instance. If one doesn't exist, make one.
+ GetWindow(typeof(RenderTextureConfiguratorWindow)); //Show existing window instance. If one doesn't exist, make one.
}
void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/images.png",
- typeof(Texture2D));
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/images.png",
+ typeof(Texture2D));
this.titleContent = new GUIContent("Neo:Tex", this._icon, "Window for RenderTexture configuration");
}
@@ -50,7 +56,7 @@ void OnGUI() {
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
- var rect = GUILayoutUtility.GetRect(this._preview_image_size, this._preview_image_size);
+ var rect = GUILayoutUtility.GetRect(_preview_image_size, _preview_image_size);
EditorGUI.DrawPreviewTexture(rect, render_texture);
this._texture_size = new Vector2(render_texture.width, render_texture.height);
GUILayout.FlexibleSpace();
@@ -69,6 +75,9 @@ void OnGUI() {
}
}
+ ///
+ ///
+ ///
public void OnInspectorUpdate() { this.Repaint(); }
}
}
diff --git a/Editor/Windows/SegmentationWindow.cs b/Editor/Windows/SegmentationWindow.cs
index 3b5edafda..5f5857f99 100644
--- a/Editor/Windows/SegmentationWindow.cs
+++ b/Editor/Windows/SegmentationWindow.cs
@@ -1,29 +1,35 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime;
-using Neodroid.Runtime.Utilities.Segmentation;
-using Neodroid.Runtime.Utilities.Structs;
-using UnityEditor;
+using droid.Runtime.GameObjects.NeodroidCamera.Segmentation.Obsolete;
using UnityEngine;
+#if UNITY_EDITOR
+using droid.Runtime.Structs;
+using UnityEditor;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public class SegmentationWindow : EditorWindow {
- [SerializeField] ColorByInstance[] _colors_by_instance;
+ [SerializeField] ColorByInstance[] colorsByInstance;
- [SerializeField] ColorByTag[] _colors_by_tag;
+ [SerializeField] ColorByCategory[] _colorsByCategory;
Texture _icon;
Vector2 _scroll_position;
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "SegmentationWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "SegmentationWindow")]
+ ///
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "SegmentationWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "SegmentationWindow")]
public static void ShowWindow() {
GetWindow(typeof(SegmentationWindow)); //Show existing window instance. If one doesn't exist, make one.
}
void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/color_wheel.png",
- typeof(Texture2D));
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/color_wheel.png",
+ typeof(Texture2D));
this.titleContent = new GUIContent("Neo:Seg", this._icon, "Window for segmentation");
}
@@ -35,19 +41,17 @@ void OnGUI() {
GUILayout.Label("By Tag");
var material_changers_by_tag = FindObjectsOfType();
foreach (var material_changer_by_tag in material_changers_by_tag) {
- this._colors_by_tag = material_changer_by_tag.ColorsByTag;
- if (this._colors_by_tag != null) {
+ this._colorsByCategory = material_changer_by_tag.ColorsByCategory;
+ if (this._colorsByCategory != null) {
var tag_colors_property = serialised_object.FindProperty("_segmentation_colors_by_tag");
- EditorGUILayout.PropertyField(
- tag_colors_property,
- new GUIContent(material_changer_by_tag.name),
- true); // True means show children
- material_changer_by_tag._Replace_Untagged_Color = EditorGUILayout.Toggle(
- " - Replace untagged colors",
- material_changer_by_tag._Replace_Untagged_Color);
- material_changer_by_tag._Untagged_Color = EditorGUILayout.ColorField(
- " - Untagged color",
- material_changer_by_tag._Untagged_Color);
+ EditorGUILayout.PropertyField(tag_colors_property,
+ new GUIContent(material_changer_by_tag.name),
+ true); // True means show children
+ material_changer_by_tag._Replace_Untagged_Color =
+ EditorGUILayout.Toggle(" - Replace untagged colors",
+ material_changer_by_tag._Replace_Untagged_Color);
+ material_changer_by_tag._Untagged_Color =
+ EditorGUILayout.ColorField(" - Untagged color", material_changer_by_tag._Untagged_Color);
}
}
@@ -63,13 +67,12 @@ void OnGUI() {
GUILayout.Label("By Instance (Not changable, only for inspection) ");
var material_changers_by_instance = FindObjectsOfType();
foreach (var material_changer_by_instance in material_changers_by_instance) {
- this._colors_by_instance = material_changer_by_instance.InstanceColors;
- if (this._colors_by_instance != null) {
+ this.colorsByInstance = material_changer_by_instance.InstanceColors;
+ if (this.colorsByInstance != null) {
var instance_colors_property = serialised_object.FindProperty("_segmentation_colors_by_instance");
- EditorGUILayout.PropertyField(
- instance_colors_property,
- new GUIContent(material_changer_by_instance.name),
- true); // True means show children
+ EditorGUILayout.PropertyField(instance_colors_property,
+ new GUIContent(material_changer_by_instance.name),
+ true); // True means show children
}
}
diff --git a/Editor/Windows/SimulationWindow.cs b/Editor/Windows/SimulationWindow.cs
index 704da2dd5..0f7d9b0c8 100644
--- a/Editor/Windows/SimulationWindow.cs
+++ b/Editor/Windows/SimulationWindow.cs
@@ -1,417 +1,78 @@
-#if UNITY_EDITOR
-using Neodroid.Editor.Utilities;
-using Neodroid.Runtime;
-using Neodroid.Runtime.Environments;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.PlayerControls;
-using Neodroid.Runtime.Prototyping.Actors;
-using Neodroid.Runtime.Prototyping.Configurables;
-using Neodroid.Runtime.Prototyping.Displayers;
-using Neodroid.Runtime.Prototyping.Evaluation;
-using Neodroid.Runtime.Prototyping.Internals;
-using Neodroid.Runtime.Prototyping.Motors;
-using Neodroid.Runtime.Prototyping.Observers;
-using Neodroid.Runtime.Utilities.Enums;
-using Neodroid.Runtime.Utilities.GameObjects;
-using Neodroid.Runtime.Utilities.Misc.Drawing;
-using Neodroid.Runtime.Utilities.Misc.Grasping;
-using Neodroid.Runtime.Utilities.ScriptableObjects;
+using droid.Runtime.Managers;
+using droid.Runtime.Messaging.Messages;
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Windows {
- ///
+namespace droid.Editor.Windows {
///
+ ///
///
public class SimulationWindow : EditorWindow {
- const int _logo_image_size = 100;
- PrototypingEnvironment[] _environments;
- Texture _icon;
- Texture _neodroid_icon;
- Vector2 _scroll_position;
- bool[] _show_environment_properties = new bool[1];
-
- ///
- ///
- ///
- NeodroidManager _simulation_manager;
-
- PlayerReactions _player_reactions;
-
- const string _neodroid_url_text = "Documentation";
- const string _neodroid_url = "https://github.com/sintefneodroid/droid";
-
- ///
- ///
- ///
- const bool _refresh_enabled = false;
-
///
///
///
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "SimulationWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "SimulationWindow")]
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "SimulationWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "SimulationWindow")]
public static void ShowWindow() {
GetWindow(typeof(SimulationWindow)); //Show existing window instance. If one doesn't exist, make one.
//window.Show();
}
+ Texture _icon;
+ NeodroidManager _simulation_manager;
+
///
- ///
///
void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/world.png",
- typeof(Texture2D));
- this._neodroid_icon = (Texture)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/neodroid_favicon_cut.png",
- typeof(Texture));
- this.titleContent = new GUIContent("Neo:Sim", this._icon, "Window for configuring simulation");
- this.Setup();
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/clock.png",
+ typeof(Texture2D));
+ this.titleContent = new GUIContent("Neo:Sim", this._icon, "Window for controlling simulation");
}
- ///
- ///
- ///
- void Setup() {
- if (this._environments != null) {
- this._show_environment_properties = new bool[this._environments.Length];
- }
- }
+ void OnFocus() { this.Setup(); }
- ///
- ///
- ///
- void OnGUI() {
+ void Setup() {
var serialised_object = new SerializedObject(this);
- this._simulation_manager = FindObjectOfType();
- if (this._simulation_manager) {
- EditorGUILayout.BeginHorizontal();
-
- EditorGUILayout.BeginVertical();
- GUILayout.Label(
- this._neodroid_icon,
- GUILayout.Width(_logo_image_size),
- GUILayout.Height(_logo_image_size));
-
- if (NeodroidEditorUtilities.LinkLabel(new GUIContent(_neodroid_url_text))) {
- Application.OpenURL(_neodroid_url);
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical();
- EditorGUILayout.ObjectField(this._simulation_manager, typeof(NeodroidManager), true);
-
- this._simulation_manager.Configuration = (SimulatorConfiguration)EditorGUILayout.ObjectField(
- (SimulatorConfiguration)this._simulation_manager.Configuration,
- typeof(SimulatorConfiguration),
- true);
-
- this._simulation_manager.Configuration.FrameSkips = EditorGUILayout.IntField(
- "Frame Skips",
- this._simulation_manager.Configuration.FrameSkips);
- this._simulation_manager.Configuration.ResetIterations = EditorGUILayout.IntField(
- "Reset Iterations",
- this._simulation_manager.Configuration.ResetIterations);
- this._simulation_manager.Configuration.SimulationType = (SimulationType)EditorGUILayout.EnumPopup(
- "Simulation Type",
- this._simulation_manager.Configuration.SimulationType);
- this._simulation_manager.TestMotors = EditorGUILayout.Toggle(
- "Test Motors",
- this._simulation_manager.TestMotors);
-
- this._player_reactions = FindObjectOfType();
- EditorGUILayout.ObjectField(this._player_reactions, typeof(PlayerReactions), true);
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.EndHorizontal();
-
- this._environments = NeodroidUtilities.FindAllObjectsOfTypeInScene();
- if (this._show_environment_properties.Length != this._environments.Length) {
- this.Setup();
- }
-
- this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
-
- EditorGUILayout.BeginVertical("Box");
- var num_active_environments = this._environments.Length; //TODO: Calculate actual number
- var num_inactive_environments =
- this._environments.Length - num_active_environments; //TODO: Calculate actual number
- GUILayout.Label(
- $"Environments - Active({num_active_environments}), Inactive({num_inactive_environments}), Total({this._environments.Length})");
- if (this._show_environment_properties != null) {
- for (var i = 0; i < this._show_environment_properties.Length; i++) {
- if (this._environments[i].isActiveAndEnabled) {
- this._show_environment_properties[i] = EditorGUILayout.Foldout(
- this._show_environment_properties[i],
- $"{this._environments[i].Identifier}");
- if (this._show_environment_properties[i]) {
- var actors = this._environments[i].Actors;
- var observers = this._environments[i].Observers;
- var configurables = this._environments[i].Configurables;
- var resetables = this._environments[i].Resetables;
- var listeners = this._environments[i].Listeners;
- var displayers = this._environments[i].Displayers;
-
- EditorGUILayout.BeginVertical("Box");
- this._environments[i].enabled = EditorGUILayout.BeginToggleGroup(
- this._environments[i].Identifier,
- this._environments[i].enabled && this._environments[i].gameObject.activeSelf);
- EditorGUILayout.ObjectField(this._environments[i], typeof(PrototypingEnvironment), true);
- this._environments[i].CoordinateSystem = (CoordinateSystem)EditorGUILayout.EnumPopup(
- "Coordinate system",
- this._environments[i].CoordinateSystem);
- EditorGUI.BeginDisabledGroup(
- this._environments[i].CoordinateSystem != CoordinateSystem.Relative_to_reference_point_);
- this._environments[i].CoordinateReferencePoint = (Transform)EditorGUILayout.ObjectField(
- "Reference point",
- this._environments[i].CoordinateReferencePoint,
- typeof(Transform),
- true);
- EditorGUI.EndDisabledGroup();
- this._environments[i].ObjectiveFunction = (ObjectiveFunction)EditorGUILayout.ObjectField(
- "Objective function",
- (ObjectiveFunction)this._environments[i].ObjectiveFunction,
- typeof(ObjectiveFunction),
- true);
- this._environments[i].EpisodeLength = EditorGUILayout.IntField(
- "Episode Length",
- this._environments[i].EpisodeLength);
-
- EditorGUI.BeginDisabledGroup(true);
- EditorGUILayout.LabelField("Info:");
- EditorGUILayout.Toggle("Terminated", this._environments[i].Terminated);
- EditorGUI.EndDisabledGroup();
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Actors");
- foreach (var actor in actors) {
- var actor_value = (Actor) actor.Value;
- if (actor_value != null) {
- var motors = actor_value.Motors;
-
- EditorGUILayout.BeginVertical("Box");
-
- actor_value.enabled = EditorGUILayout.BeginToggleGroup(
- actor.Key,
- actor_value.enabled && actor_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(actor_value, typeof(Actor), true);
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Motors");
- foreach (var motor in motors) {
- var motor_value = (Motor) motor.Value;
- if (motor_value != null) {
-
- EditorGUILayout.BeginVertical("Box");
- motor_value.enabled = EditorGUILayout.BeginToggleGroup(
- motor.Key,
- motor_value.enabled && motor_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(motor_value, typeof(Motor), true);
- EditorGUILayout.EndToggleGroup();
-
- EditorGUILayout.EndVertical();
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.EndToggleGroup();
-
- EditorGUILayout.EndVertical();
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Observers");
- foreach (var observer in observers) {
- var observer_value = (Observer) observer.Value;
- if (observer_value != null){
-
- EditorGUILayout.BeginVertical("Box");
- observer_value.enabled = EditorGUILayout.BeginToggleGroup(
- observer.Key,
- observer_value.enabled && observer_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(observer_value, typeof(Observer), true);
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Configurables");
- foreach (var configurable in configurables) {
- var configurable_value = (Configurable) configurable.Value;
- if (configurable_value != null) {
-
- EditorGUILayout.BeginVertical("Box");
- configurable_value.enabled = EditorGUILayout.BeginToggleGroup(
- configurable.Key,
- configurable_value.enabled && configurable_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(configurable_value, typeof(Configurable), true);
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Displayers");
- foreach (var displayer in displayers) {
- var displayer_value = (Displayer) displayer.Value;
- if (displayer_value != null) {
-
- EditorGUILayout.BeginVertical("Box");
- displayer_value.enabled = EditorGUILayout.BeginToggleGroup(
- displayer.Key,
- displayer_value.enabled && displayer_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(displayer_value, typeof(Displayer), true);
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical("Box");
- /*
- GUILayout.Label("Internals");
- foreach (var resetable in resetables) {
- var resetable_value = (Resetable) resetable.Value;
- if (resetable_value != null) {
-
- EditorGUILayout.BeginVertical("Box");
- resetable_value.enabled = EditorGUILayout.BeginToggleGroup(
- resetable.Key,
- resetable_value.enabled && resetable_value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(resetable_value, typeof(Resetable), true);
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
- */
-
-/*
- foreach (var listener in listeners) {
- if (listener.Value != null) {
- EditorGUILayout.BeginVertical("Box");
- listener.Value.enabled = EditorGUILayout.BeginToggleGroup(
- listener.Key,
- listener.Value.enabled && listener.Value.gameObject.activeSelf);
- EditorGUILayout.ObjectField(listener.Value, typeof(EnvironmentListener), true);
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
-*/
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.EndToggleGroup();
- EditorGUILayout.EndVertical();
- }
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.BeginVertical("Box");
- GUILayout.Label("Disabled environments");
- for (var i = 0; i < this._show_environment_properties.Length; i++) {
- if (!this._environments[i].isActiveAndEnabled) {
- EditorGUILayout.ObjectField(this._environments[i], typeof(NeodroidEnvironment), true);
- }
- }
-
- EditorGUILayout.EndVertical();
-
- EditorGUILayout.EndScrollView();
- serialised_object.ApplyModifiedProperties();
-
- /*
- if (GUILayout.Button("Refresh")) {
- this.Refresh();
- }
-
- EditorGUI.BeginDisabledGroup(!Application.isPlaying);
-
- if (GUILayout.Button("Step")) {
- this._simulation_manager.ReactAndCollectStates(
- new Reaction(
- new ReactionParameters(true, true, episode_count:true),
- null,
- null,
- null,
- null,
- ""));
- }
-
- if (GUILayout.Button("Reset")) {
- this._simulation_manager.ReactAndCollectStates(
- new Reaction(
- new ReactionParameters(true, false, true, episode_count:true),
- null,
- null,
- null,
- null,
- ""));
- }
-
- EditorGUI.EndDisabledGroup();
- */
- }
+ if (this._simulation_manager == null) {
+ this._simulation_manager = FindObjectOfType();
}
- }
- ///
- ///
- ///
- void Refresh() {
- if (this._simulation_manager) {
- this._simulation_manager.Clear();
- }
+ serialised_object.ApplyModifiedProperties();
+ }
- var prototyping_game_objects = FindObjectsOfType();
- foreach (var obj in prototyping_game_objects) {
- obj.RefreshAwake();
+ void OnGUI() {
+ EditorGUILayout.ObjectField(this._simulation_manager, typeof(AbstractNeodroidManager), true);
+ EditorGUI.BeginDisabledGroup(!Application.isPlaying);
+
+ if (GUILayout.Button("Step")) {
+ this._simulation_manager?.SendToEnvironments(new[] {
+ new
+ Reaction(new
+ ReactionParameters(StepResetObserve
+ .Step_,
+ true,
+ configure :
+ true),
+ null,
+ null,
+ null,
+ null,
+ "")
+ });
}
- foreach (var obj in prototyping_game_objects) {
- obj.RefreshStart();
+ if (GUILayout.Button("Reset")) {
+ this._simulation_manager?.ResetAllEnvironments();
}
- }
- ///
- ///
- ///
- void OnValidate() {
- if (EditorApplication.isPlaying || !_refresh_enabled) {
- return;
+ if (this._simulation_manager) {
+ this._simulation_manager.TestActuators =
+ EditorGUILayout.Toggle("Test Actuators", this._simulation_manager.TestActuators);
}
- this.Refresh();
- }
-
- ///
- ///
- ///
- void OnHierarchyChange() { this.Refresh(); }
-
- ///
- ///
- ///
- public void OnInspectorUpdate() {
- this.Repaint();
- if (GUI.changed) {
- this.Refresh();
- }
+ EditorGUI.EndDisabledGroup();
}
}
}
-#endif
diff --git a/Editor/Windows/SimulationWindow.cs.meta b/Editor/Windows/SimulationWindow.cs.meta
index 2a2443821..7a9567b67 100644
--- a/Editor/Windows/SimulationWindow.cs.meta
+++ b/Editor/Windows/SimulationWindow.cs.meta
@@ -1,7 +1,5 @@
fileFormatVersion: 2
-guid: 3c002438c79ce48759d368479702747b
-timeCreated: 1513626317
-licenseType: Pro
+guid: 72ed65ac1329f414099fd7623606074b
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Editor/Windows/TaskWindow.cs b/Editor/Windows/TaskWindow.cs
index fdc20fd13..f38dafde6 100644
--- a/Editor/Windows/TaskWindow.cs
+++ b/Editor/Windows/TaskWindow.cs
@@ -1,36 +1,39 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime;
-using Neodroid.Runtime.Prototyping.Evaluation.Tasks;
+using droid.Runtime.Prototyping.ObjectiveFunctions.Tasks;
+#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
public class TaskWindow : EditorWindow {
Texture _icon;
Vector2 _scroll_position;
TaskSequence _task_sequence;
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "TaskWindow"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "TaskWindow")]
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "TaskWindow")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "TaskWindow")]
public static void ShowWindow() {
GetWindow(typeof(TaskWindow)); //Show existing window instance. If one doesn't exist, make one.
}
void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/script.png",
- typeof(Texture2D));
+ this._icon =
+ (Texture2D)AssetDatabase.LoadAssetAtPath(NeodroidSettings.Current.NeodroidImportLocationProp
+ + "Gizmos/Icons/script.png",
+ typeof(Texture2D));
this.titleContent = new GUIContent("Neo:Task", this._icon, "Window for task descriptions");
if (!this._task_sequence) {
this._task_sequence = FindObjectOfType();
}
}
+ ///
+ ///
+ ///
public void OnInspectorUpdate() { this.Repaint(); }
void OnGUI() {
- GUILayout.Label("Tasklist", EditorStyles.boldLabel);
+ GUILayout.Label("Task list", EditorStyles.boldLabel);
this._task_sequence = FindObjectOfType();
if (this._task_sequence != null) {
this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);
diff --git a/Editor/Windows/UnityDebug/FindMissingScripts.cs b/Editor/Windows/UnityDebug/FindMissingScripts.cs
deleted file mode 100644
index a43672b36..000000000
--- a/Editor/Windows/UnityDebug/FindMissingScripts.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-#if UNITY_EDITOR
-using Neodroid.Runtime;
-using UnityEditor;
-using UnityEngine;
-
-namespace Neodroid.Editor.Windows.UnityDebug {
- ///
- ///
- ///
- public class FindMissingScripts : EditorWindow {
- static int _game_object_count, _components_count, _missing_count;
- [SerializeField] Texture2D _icon;
-
- ///
- ///
- ///
- [MenuItem("Tools/Debug/FindMissingScripts"), MenuItem("Window/Debug/FindMissingScripts")]
- public static void ShowWindow() { GetWindow(typeof(FindMissingScripts)); }
-
- void OnEnable() {
- this._icon = (Texture2D)AssetDatabase.LoadAssetAtPath(
- NeodroidInfo._ImportLocation + "Gizmos/Icons/information.png",
- typeof(Texture2D));
- this.titleContent = new GUIContent("Unity:Debug", this._icon, "Window for debugging Unity");
- }
-
- ///
- ///
- ///
- public void OnGUI() {
- if (GUILayout.Button("Find Missing Scripts in selected GameObjects")) {
- FindInSelected();
- }
- }
-
- static void FindInSelected() {
- var game_objects = Selection.gameObjects;
- _game_object_count = 0;
- _components_count = 0;
- _missing_count = 0;
- foreach (var g in game_objects) {
- SearchInGameObject(g);
- }
-
- Debug.Log(
- $"Searched {_game_object_count} GameObjects, {_components_count} components, found {_missing_count} missing");
- }
-
- static void SearchInGameObject(GameObject game_object) {
- _game_object_count++;
- var components = game_object.GetComponents();
- for (var i = 0; i < components.Length; i++) {
- _components_count++;
- if (components[i] == null) {
- _missing_count++;
- var name = game_object.name;
- var parent = game_object.transform;
- while (parent.parent != null) {
- name = parent.parent.name + "/" + name;
- parent = parent.parent;
- }
-
- Debug.Log(name + " has an empty script attached in position: " + i, game_object);
- }
- }
-
- // Now recurse through each child GameObject (if there are any):
- foreach (Transform child in game_object.transform) {
- SearchInGameObject(child.gameObject);
- }
- }
- }
-}
-#endif
diff --git a/Editor/Windows/WindowManager.cs b/Editor/Windows/WindowManager.cs
index e388ce08e..3b70b5760 100644
--- a/Editor/Windows/WindowManager.cs
+++ b/Editor/Windows/WindowManager.cs
@@ -2,29 +2,41 @@
using System;
using UnityEditor;
-namespace Neodroid.Editor.Windows {
+namespace droid.Editor.Windows {
+ ///
+ ///
+ ///
public class WindowManager : EditorWindow {
static Type[] _desired_dock_next_toos = {
- typeof(RenderTextureConfiguratorWindow),
- typeof(CameraSynchronisationWindow),
- typeof(DebugWindow),
- typeof(SegmentationWindow),
- typeof(SimulationWindow),
- typeof(TaskWindow),
- typeof(DemonstrationWindow)
- };
+ typeof(RenderTextureConfiguratorWindow),
+ typeof(CameraSynchronisationWindow),
+ #if NEODROID_DEBUG
+ typeof(DebugWindow),
+ #endif
+ typeof(SegmentationWindow),
+ typeof(PrototypingWindow),
+ typeof(TaskWindow),
+ typeof(DemonstrationWindow),
+ typeof(SimulationWindow)
+ };
- [MenuItem(EditorWindowMenuPath._WindowMenuPath + "ShowAllWindows"),
- MenuItem(EditorWindowMenuPath._ToolMenuPath + "ShowAllWindows")]
+ ///
+ ///
+ ///
+ [MenuItem(EditorWindowMenuPath._WindowMenuPath + "ShowAllWindows")]
+ [MenuItem(EditorWindowMenuPath._ToolMenuPath + "ShowAllWindows")]
public static void ShowWindow() {
- GetWindow(
- _desired_dock_next_toos); //Show existing window instance. If one doesn't exist, make one.
+ //Show existing window instance. If one doesn't exist, make one.
+ GetWindow(_desired_dock_next_toos);
GetWindow(_desired_dock_next_toos);
+ #if NEODROID_DEBUG
GetWindow(_desired_dock_next_toos);
+ #endif
GetWindow(_desired_dock_next_toos);
- GetWindow(_desired_dock_next_toos);
+ GetWindow(_desired_dock_next_toos);
GetWindow(_desired_dock_next_toos);
GetWindow(_desired_dock_next_toos);
+ GetWindow(_desired_dock_next_toos);
}
}
}
diff --git a/Editor/neodroid_settings.asset b/Editor/neodroid_settings.asset
new file mode 100644
index 000000000..c912134ab
--- /dev/null
+++ b/Editor/neodroid_settings.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a44aef6c4e27e82199c3be5129c72155, type: 3}
+ m_Name: neodroid_settings
+ m_EditorClassIdentifier:
+ NeodroidEnableDebug: 1
+ NeodroidGithubExtension: 0
+ NeodroidIsPackage: 0
+ NeodroidImportLocation: Assets/droid/
+ NeodroidGeneratePreviews: 0
+ NeodroidPreviewsLocation: ScenePreviews/
+ NeodroidGenerateDescriptions: 0
+ NeodroidDescriptionLocation: SceneDescriptions/
diff --git a/Editor/neodroid_settings.asset.meta b/Editor/neodroid_settings.asset.meta
new file mode 100644
index 000000000..99165be6f
--- /dev/null
+++ b/Editor/neodroid_settings.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8e7494d92f28d1a4684449cf2555a852
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Gizmos/Icons/accept.png.meta b/Gizmos/Icons/accept.png.meta
index 76a5dbb36..3d4627509 100644
--- a/Gizmos/Icons/accept.png.meta
+++ b/Gizmos/Icons/accept.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 928b37ed1df904a6ca6349cb8ff91cbc
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/add.png.meta b/Gizmos/Icons/add.png.meta
index 995d9277e..c2879b6d7 100644
--- a/Gizmos/Icons/add.png.meta
+++ b/Gizmos/Icons/add.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 8be5ae4222777460184231ce33797530
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/anchor.png.meta b/Gizmos/Icons/anchor.png.meta
index 31743261d..53ffc0c19 100644
--- a/Gizmos/Icons/anchor.png.meta
+++ b/Gizmos/Icons/anchor.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: df416e8b2646d4bb68d439078d2841f9
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/application.png.meta b/Gizmos/Icons/application.png.meta
index 53705d996..7c5740ce9 100644
--- a/Gizmos/Icons/application.png.meta
+++ b/Gizmos/Icons/application.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: a56274c1e36e244ec817f5e29c9dd679
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_down.png.meta b/Gizmos/Icons/arrow_down.png.meta
index b5be87a3a..4e21e4f68 100644
--- a/Gizmos/Icons/arrow_down.png.meta
+++ b/Gizmos/Icons/arrow_down.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: f9f18f86c55b24f759cbb57454129b3d
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_left.png.meta b/Gizmos/Icons/arrow_left.png.meta
index 9b9160d99..f80859c52 100644
--- a/Gizmos/Icons/arrow_left.png.meta
+++ b/Gizmos/Icons/arrow_left.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 6dd2363c29b6d46acbfe618684c3786e
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_out.png b/Gizmos/Icons/arrow_out.png
new file mode 100644
index 000000000..168db62ea
--- /dev/null
+++ b/Gizmos/Icons/arrow_out.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d8d3440bdc91b4cb900d412b342a094a7c5eb404f4047533aa967b418f2603e
+size 594
diff --git a/Gizmos/Icons/arrow_out.png.meta b/Gizmos/Icons/arrow_out.png.meta
new file mode 100644
index 000000000..385059eac
--- /dev/null
+++ b/Gizmos/Icons/arrow_out.png.meta
@@ -0,0 +1,139 @@
+fileFormatVersion: 2
+guid: db58be42e12e2973988fcbb9c4c28543
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 10
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: 4
+ mipBias: -1
+ wrapU: 1
+ wrapV: 1
+ wrapW: -1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: iPhone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Windows Store Apps
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_refresh.png.meta b/Gizmos/Icons/arrow_refresh.png.meta
index 692c3abc8..51dac83ad 100644
--- a/Gizmos/Icons/arrow_refresh.png.meta
+++ b/Gizmos/Icons/arrow_refresh.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 823d975311eaa41b49379f4dd1e8791c
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_right.png.meta b/Gizmos/Icons/arrow_right.png.meta
index a8a59e135..dd76c207d 100644
--- a/Gizmos/Icons/arrow_right.png.meta
+++ b/Gizmos/Icons/arrow_right.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 351a2be8349d3477a987d9ab4aa38ccb
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_rotate_clockwise.png b/Gizmos/Icons/arrow_rotate_clockwise.png
new file mode 100644
index 000000000..31dcf5e55
--- /dev/null
+++ b/Gizmos/Icons/arrow_rotate_clockwise.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29eddb8fe7beea1fc07a1d8c275ada1d39a0b12ca6f1583ca0fa175eb992319a
+size 602
diff --git a/Gizmos/Icons/arrow_rotate_clockwise.png.meta b/Gizmos/Icons/arrow_rotate_clockwise.png.meta
new file mode 100644
index 000000000..aaa99f63c
--- /dev/null
+++ b/Gizmos/Icons/arrow_rotate_clockwise.png.meta
@@ -0,0 +1,139 @@
+fileFormatVersion: 2
+guid: 71186ec478814cce6a9c4c09ebdab056
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 10
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: 4
+ mipBias: -1
+ wrapU: 1
+ wrapV: 1
+ wrapW: -1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: iPhone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Windows Store Apps
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Gizmos/Icons/arrow_up.png.meta b/Gizmos/Icons/arrow_up.png.meta
index 94c844500..ca0a507f6 100644
--- a/Gizmos/Icons/arrow_up.png.meta
+++ b/Gizmos/Icons/arrow_up.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 1e51a6ff1ed84433fab0bf7a6f1f465f
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/bin_closed.png.meta b/Gizmos/Icons/bin_closed.png.meta
index 9194ee704..294beec0f 100644
--- a/Gizmos/Icons/bin_closed.png.meta
+++ b/Gizmos/Icons/bin_closed.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 62a20ea13396d4c61b2d907972b079cf
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/bomb.png.meta b/Gizmos/Icons/bomb.png.meta
index 056f31885..f709d0373 100644
--- a/Gizmos/Icons/bomb.png.meta
+++ b/Gizmos/Icons/bomb.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 603aab7f326de4d3b8d656a879d3e45a
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/box.png.meta b/Gizmos/Icons/box.png.meta
index 0b1f0af96..462ce5f04 100644
--- a/Gizmos/Icons/box.png.meta
+++ b/Gizmos/Icons/box.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 7a493b7d66f0e4613960b18f3b71f9c9
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/brick.png.meta b/Gizmos/Icons/brick.png.meta
index 8a5571ae4..4f8dc3c78 100644
--- a/Gizmos/Icons/brick.png.meta
+++ b/Gizmos/Icons/brick.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: b2c054480a4624efca12c428fbb700bc
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/briefcase.png.meta b/Gizmos/Icons/briefcase.png.meta
index 2934bf012..9cbc440ee 100644
--- a/Gizmos/Icons/briefcase.png.meta
+++ b/Gizmos/Icons/briefcase.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: bfd5d7efa9c5240db97e8461ba0f3708
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/bug.png.meta b/Gizmos/Icons/bug.png.meta
index fba04b2fc..2013ee321 100644
--- a/Gizmos/Icons/bug.png.meta
+++ b/Gizmos/Icons/bug.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: bffee1e5a97af416bbc179b7f8908010
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/building.png.meta b/Gizmos/Icons/building.png.meta
index b4153066a..97efe201e 100644
--- a/Gizmos/Icons/building.png.meta
+++ b/Gizmos/Icons/building.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: cddb781872dc740aaaf4b0d2d225da1e
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/bullet_red.png.meta b/Gizmos/Icons/bullet_red.png.meta
index 859185759..9e55a738a 100644
--- a/Gizmos/Icons/bullet_red.png.meta
+++ b/Gizmos/Icons/bullet_red.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 7beb54c65aa5f4fa298b63990f5ca966
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/cake.png.meta b/Gizmos/Icons/cake.png.meta
index 492a92328..c69bfdac3 100644
--- a/Gizmos/Icons/cake.png.meta
+++ b/Gizmos/Icons/cake.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 2714af42bb61e46d7b2cb28089fa2885
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/camera.png.meta b/Gizmos/Icons/camera.png.meta
index f342f7120..06aae8ddd 100644
--- a/Gizmos/Icons/camera.png.meta
+++ b/Gizmos/Icons/camera.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: fa2530ece249847448409133a5495ad9
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/car.png.meta b/Gizmos/Icons/car.png.meta
index 576d8c2ac..1cf06efb9 100644
--- a/Gizmos/Icons/car.png.meta
+++ b/Gizmos/Icons/car.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: eb2555c892415470c9bcf92186fdf76b
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/chart_bar.png.meta b/Gizmos/Icons/chart_bar.png.meta
index 9c0e198d9..a27b713c2 100644
--- a/Gizmos/Icons/chart_bar.png.meta
+++ b/Gizmos/Icons/chart_bar.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 93aeb3ad5f6f74460a40e6356b76bf23
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/chart_curve.png.meta b/Gizmos/Icons/chart_curve.png.meta
index 04768cfd0..e801852c2 100644
--- a/Gizmos/Icons/chart_curve.png.meta
+++ b/Gizmos/Icons/chart_curve.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 220aaf79f9121448e908f8b9d4347330
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/chart_line.png.meta b/Gizmos/Icons/chart_line.png.meta
index 6ea1cb557..ee1e74b80 100644
--- a/Gizmos/Icons/chart_line.png.meta
+++ b/Gizmos/Icons/chart_line.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: b636ed346d3fa4770809f19fe6dc6b90
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/chart_organisation.png.meta b/Gizmos/Icons/chart_organisation.png.meta
index 092508989..694780b4d 100644
--- a/Gizmos/Icons/chart_organisation.png.meta
+++ b/Gizmos/Icons/chart_organisation.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 7009c8fb96e4f45ea8ee811a90981e0b
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/chart_pie.png.meta b/Gizmos/Icons/chart_pie.png.meta
index bf78d78cc..26e2198f4 100644
--- a/Gizmos/Icons/chart_pie.png.meta
+++ b/Gizmos/Icons/chart_pie.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: ba407c208f9cf45a1ab6becee5d294f5
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/clock.png.meta b/Gizmos/Icons/clock.png.meta
index 925fe68f5..1245b3987 100644
--- a/Gizmos/Icons/clock.png.meta
+++ b/Gizmos/Icons/clock.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 2e973004b702542598f7e8aff6a8bec5
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/cog.png.meta b/Gizmos/Icons/cog.png.meta
index 5f41094b0..a9457b248 100644
--- a/Gizmos/Icons/cog.png.meta
+++ b/Gizmos/Icons/cog.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: eaaf4ae26ac344786bcd6df823cbe51b
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/coins.png.meta b/Gizmos/Icons/coins.png.meta
index cea5c8ef9..5d9811f30 100644
--- a/Gizmos/Icons/coins.png.meta
+++ b/Gizmos/Icons/coins.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 1ba3b8594dc4847b7a658b000bdeb20d
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/color_swatch.png.meta b/Gizmos/Icons/color_swatch.png.meta
index 2db4d5a35..d70ac78d8 100644
--- a/Gizmos/Icons/color_swatch.png.meta
+++ b/Gizmos/Icons/color_swatch.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 69da4b8de058c41c5992c2b9938375fe
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/color_wheel.png.meta b/Gizmos/Icons/color_wheel.png.meta
index 591fcfcd0..c68b90a0e 100644
--- a/Gizmos/Icons/color_wheel.png.meta
+++ b/Gizmos/Icons/color_wheel.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 10de84a348a804b72a0104ac1887f531
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/computer.png.meta b/Gizmos/Icons/computer.png.meta
index 82e7c4c2b..634e07e89 100644
--- a/Gizmos/Icons/computer.png.meta
+++ b/Gizmos/Icons/computer.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: f191bef042a4c46a3824e04b9978cd20
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/computer_link.png.meta b/Gizmos/Icons/computer_link.png.meta
index c2d5e96d7..e26f577d3 100644
--- a/Gizmos/Icons/computer_link.png.meta
+++ b/Gizmos/Icons/computer_link.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: fb4098fc6460c47258c2f489a10b69d0
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/connect.png.meta b/Gizmos/Icons/connect.png.meta
index 480bafe2f..c115f40e1 100644
--- a/Gizmos/Icons/connect.png.meta
+++ b/Gizmos/Icons/connect.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 32b7af45a099747df875152e99a0db9b
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/contrast.png.meta b/Gizmos/Icons/contrast.png.meta
index ebe03344d..89d870ce9 100644
--- a/Gizmos/Icons/contrast.png.meta
+++ b/Gizmos/Icons/contrast.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 7d6a948f99cc34f298317116aebc2c9d
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/controller.png.meta b/Gizmos/Icons/controller.png.meta
index 78cbdac5f..dd64bcb4a 100644
--- a/Gizmos/Icons/controller.png.meta
+++ b/Gizmos/Icons/controller.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 9ac6e392d128f40929350a662de676aa
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/cup.png.meta b/Gizmos/Icons/cup.png.meta
index 7b09c1995..77bcadce9 100644
--- a/Gizmos/Icons/cup.png.meta
+++ b/Gizmos/Icons/cup.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 544a7ab396cb843e6a4c43fcfe553321
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/email.png.meta b/Gizmos/Icons/email.png.meta
index 0a06fa6f4..d3dd1712d 100644
--- a/Gizmos/Icons/email.png.meta
+++ b/Gizmos/Icons/email.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 520a54f95fd5d4b588f9ea7e4cb9463f
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,7 +84,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -93,7 +96,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -104,7 +108,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -115,7 +120,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -126,7 +132,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -137,18 +144,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/exclamation.png.meta b/Gizmos/Icons/exclamation.png.meta
index 4ba4d054a..1d18d1489 100644
--- a/Gizmos/Icons/exclamation.png.meta
+++ b/Gizmos/Icons/exclamation.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 88a289cf0379b48dfb8063edbd98de70
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/film.png.meta b/Gizmos/Icons/film.png.meta
index b146ae302..7b3ccd508 100644
--- a/Gizmos/Icons/film.png.meta
+++ b/Gizmos/Icons/film.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 22b4b8b5868214f26bf4b0586fb1ea83
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_blue.png.meta b/Gizmos/Icons/flag_blue.png.meta
index 7a1e3cf49..95a718fa6 100644
--- a/Gizmos/Icons/flag_blue.png.meta
+++ b/Gizmos/Icons/flag_blue.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 3ad62ee04e8624041bc603a878ce9841
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_green.png.meta b/Gizmos/Icons/flag_green.png.meta
index 6b7e1834a..c8f2bcdee 100644
--- a/Gizmos/Icons/flag_green.png.meta
+++ b/Gizmos/Icons/flag_green.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 0fd090aaff77844739e02c95cce29802
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_orange.png.meta b/Gizmos/Icons/flag_orange.png.meta
index 64a243e6a..d1897d375 100644
--- a/Gizmos/Icons/flag_orange.png.meta
+++ b/Gizmos/Icons/flag_orange.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 2b9f01e4547b04c08b0a106100f17789
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_pink.png.meta b/Gizmos/Icons/flag_pink.png.meta
index ea29d27a4..48695aeb5 100644
--- a/Gizmos/Icons/flag_pink.png.meta
+++ b/Gizmos/Icons/flag_pink.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 2736b8fb73eaf49c3ac4b05875274366
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_purple.png.meta b/Gizmos/Icons/flag_purple.png.meta
index 7de7851fa..957aa8664 100644
--- a/Gizmos/Icons/flag_purple.png.meta
+++ b/Gizmos/Icons/flag_purple.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: f7a82bb6871e1439e8b604148b1c9304
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_red.png.meta b/Gizmos/Icons/flag_red.png.meta
index 8923cccd7..1cdd6b391 100644
--- a/Gizmos/Icons/flag_red.png.meta
+++ b/Gizmos/Icons/flag_red.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 3f90071ed8aeb4ce38df996bd248cfcb
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/flag_yellow.png.meta b/Gizmos/Icons/flag_yellow.png.meta
index c50301fb0..b3448a472 100644
--- a/Gizmos/Icons/flag_yellow.png.meta
+++ b/Gizmos/Icons/flag_yellow.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 227186d05e4274badb26b928c6923707
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/folder.png.meta b/Gizmos/Icons/folder.png.meta
index ad67177c4..3bc87320b 100644
--- a/Gizmos/Icons/folder.png.meta
+++ b/Gizmos/Icons/folder.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 82e7753a51fdc48879a4522129da8f12
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/folder_add.png.meta b/Gizmos/Icons/folder_add.png.meta
index 0e5f18254..5b4652cfa 100644
--- a/Gizmos/Icons/folder_add.png.meta
+++ b/Gizmos/Icons/folder_add.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 6fd69928327eb42c9b65b40bae0ec905
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/folder_delete.png.meta b/Gizmos/Icons/folder_delete.png.meta
index 1d09709fe..1126623fe 100644
--- a/Gizmos/Icons/folder_delete.png.meta
+++ b/Gizmos/Icons/folder_delete.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: b275f0e7669bc4de895f0380e84aeaf2
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/folder_edit.png.meta b/Gizmos/Icons/folder_edit.png.meta
index e33f8a9f3..f31eea249 100644
--- a/Gizmos/Icons/folder_edit.png.meta
+++ b/Gizmos/Icons/folder_edit.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: c6fb44c83ecce4c8c94580491d21153c
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/images.png.meta b/Gizmos/Icons/images.png.meta
index 0f02624e6..111a1aa59 100644
--- a/Gizmos/Icons/images.png.meta
+++ b/Gizmos/Icons/images.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 0944c63d169264417b5b273e27eb9a53
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/information.png.meta b/Gizmos/Icons/information.png.meta
index 9507a15c5..23e1174d8 100644
--- a/Gizmos/Icons/information.png.meta
+++ b/Gizmos/Icons/information.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 6bda13f59e43e406cae4afe9aad66823
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/joystick.png.meta b/Gizmos/Icons/joystick.png.meta
index 091a06bf9..776a334f7 100644
--- a/Gizmos/Icons/joystick.png.meta
+++ b/Gizmos/Icons/joystick.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 048bd58cce9bd486199d8be3ee13d777
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/keyboard.png.meta b/Gizmos/Icons/keyboard.png.meta
index 17d4c5795..80799d2cc 100644
--- a/Gizmos/Icons/keyboard.png.meta
+++ b/Gizmos/Icons/keyboard.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 86e3921b1a48f4289a5ba07595952982
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/layers.png.meta b/Gizmos/Icons/layers.png.meta
index 3ed2d6f09..efb8c4359 100644
--- a/Gizmos/Icons/layers.png.meta
+++ b/Gizmos/Icons/layers.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 7bafbde5720b542d29623b60b84057de
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/lightbulb.png.meta b/Gizmos/Icons/lightbulb.png.meta
index ca8e51095..c734fc1cc 100644
--- a/Gizmos/Icons/lightbulb.png.meta
+++ b/Gizmos/Icons/lightbulb.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: a861b8894568348a9a71a5b438e2ef74
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/lightning.png.meta b/Gizmos/Icons/lightning.png.meta
index 2f681fc4f..972b07e76 100644
--- a/Gizmos/Icons/lightning.png.meta
+++ b/Gizmos/Icons/lightning.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 83aa900cbe9b64fc9b6d7493fac5030f
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/link.png.meta b/Gizmos/Icons/link.png.meta
index f8b9c3f5a..47904052f 100644
--- a/Gizmos/Icons/link.png.meta
+++ b/Gizmos/Icons/link.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 1f8399a9b42324cb8a6a614810f20648
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/lock.png.meta b/Gizmos/Icons/lock.png.meta
index 963cada6e..ceea9b95b 100644
--- a/Gizmos/Icons/lock.png.meta
+++ b/Gizmos/Icons/lock.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: d15b464a71cb445bbb471abc4ded0fa4
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/lock_open.png.meta b/Gizmos/Icons/lock_open.png.meta
index 99fa41396..e97f270e0 100644
--- a/Gizmos/Icons/lock_open.png.meta
+++ b/Gizmos/Icons/lock_open.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: f490fdede8bfc481582008bd48b2074d
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/magnifier.png.meta b/Gizmos/Icons/magnifier.png.meta
index 1b1c14ccc..f379b2bc9 100644
--- a/Gizmos/Icons/magnifier.png.meta
+++ b/Gizmos/Icons/magnifier.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: ed6e277fb394543bdb4ae98711e6c47f
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/map.png.meta b/Gizmos/Icons/map.png.meta
index 5cddb1009..109a264a2 100644
--- a/Gizmos/Icons/map.png.meta
+++ b/Gizmos/Icons/map.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 0cf17af6042694cf8a8a93a800c7ba46
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/medal_bronze_2.png.meta b/Gizmos/Icons/medal_bronze_2.png.meta
index 01c2f00f5..5ee536aed 100644
--- a/Gizmos/Icons/medal_bronze_2.png.meta
+++ b/Gizmos/Icons/medal_bronze_2.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 34abbc409c9ba4003aca55c2d7965a4b
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/medal_gold_1.png.meta b/Gizmos/Icons/medal_gold_1.png.meta
index f81e133e9..250414e7a 100644
--- a/Gizmos/Icons/medal_gold_1.png.meta
+++ b/Gizmos/Icons/medal_gold_1.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 13c17d1b9379148b797759e2d8f1278d
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/medal_silver_3.png.meta b/Gizmos/Icons/medal_silver_3.png.meta
index 57aaebaf5..72ff56ccd 100644
--- a/Gizmos/Icons/medal_silver_3.png.meta
+++ b/Gizmos/Icons/medal_silver_3.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 59be556536cc54c379ab23f6a0ae4e4f
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/neodroid_favicon_cut.png b/Gizmos/Icons/neodroid_favicon_cut.png
index 900d96165..a5dcdc9ea 100644
--- a/Gizmos/Icons/neodroid_favicon_cut.png
+++ b/Gizmos/Icons/neodroid_favicon_cut.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:39fdde3243ce540c8fa13ec5ac7fe5ed4428bc313b1aef23791c9f8d512b1b70
-size 1976
+oid sha256:26908b7998231cce88425dfbf4913faa501217446e5d1c4d2066c9bb440a6c49
+size 19456
diff --git a/Gizmos/Icons/neodroid_favicon_cut.png.meta b/Gizmos/Icons/neodroid_favicon_cut.png.meta
index 8f54d586c..fcbbbee27 100644
--- a/Gizmos/Icons/neodroid_favicon_cut.png.meta
+++ b/Gizmos/Icons/neodroid_favicon_cut.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 7e66b4120a7284a649e009e852d59b8a
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,7 +84,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -93,7 +96,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -104,7 +108,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -115,7 +120,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -126,7 +132,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -137,18 +144,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/note.png.meta b/Gizmos/Icons/note.png.meta
index 3fc6599ba..97b52fb6d 100644
--- a/Gizmos/Icons/note.png.meta
+++ b/Gizmos/Icons/note.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 45db667f37dda44ed968a181cdfb79c6
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/paintbrush.png.meta b/Gizmos/Icons/paintbrush.png.meta
index d14ef4fd9..95155e432 100644
--- a/Gizmos/Icons/paintbrush.png.meta
+++ b/Gizmos/Icons/paintbrush.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: f004526abd09349b7afec31efbaf3ee8
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/paintcan.png.meta b/Gizmos/Icons/paintcan.png.meta
index 1241ba09c..7123ed4fd 100644
--- a/Gizmos/Icons/paintcan.png.meta
+++ b/Gizmos/Icons/paintcan.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: b6b323fc2bfed45e081c0fd64b668a4c
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/palette.png.meta b/Gizmos/Icons/palette.png.meta
index a36326737..b47b55676 100644
--- a/Gizmos/Icons/palette.png.meta
+++ b/Gizmos/Icons/palette.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: 501b2acbfbc394d6f84c42932b9b29e5
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/photo.png.meta b/Gizmos/Icons/photo.png.meta
index df3828392..d8b01fc06 100644
--- a/Gizmos/Icons/photo.png.meta
+++ b/Gizmos/Icons/photo.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: af4792457046746828ff2d22efe682aa
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/pictures.png.meta b/Gizmos/Icons/pictures.png.meta
index efa96f636..3ec9a0e89 100644
--- a/Gizmos/Icons/pictures.png.meta
+++ b/Gizmos/Icons/pictures.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 06ba9add127194f4e81b3bf0cde5bf84
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/rainbow.png.meta b/Gizmos/Icons/rainbow.png.meta
index 804b18178..7a9fe4874 100644
--- a/Gizmos/Icons/rainbow.png.meta
+++ b/Gizmos/Icons/rainbow.png.meta
@@ -1,9 +1,12 @@
fileFormatVersion: 2
guid: a6a72fa5605df4a688a7ba2129cc352c
TextureImporter:
- fileIDToRecycleName: {}
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,7 +61,7 @@ TextureImporter:
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -69,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -80,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/readme.txt b/Gizmos/Icons/readme.txt
index 400a64d78..2cf67dcaf 100644
--- a/Gizmos/Icons/readme.txt
+++ b/Gizmos/Icons/readme.txt
@@ -1,22 +1,22 @@
-Silk icon set 1.3
-
-_________________________________________
-Mark James
-http://www.famfamfam.com/lab/icons/silk/
-_________________________________________
-
-This work is licensed under a
-Creative Commons Attribution 2.5 License.
-[ http://creativecommons.org/licenses/by/2.5/ ]
-
-This means you may use it for any purpose,
-and make any changes you like.
-All I ask is that you include a link back
-to this page in your credits.
-
-Are you using this icon set? Send me an email
-(including a link or picture if available) to
-mjames@gmail.com
-
-Any other questions about this icon set please
+Silk icon set 1.3
+
+_________________________________________
+Mark James
+http://www.famfamfam.com/lab/icons/silk/
+_________________________________________
+
+This work is licensed under a
+Creative Commons Attribution 2.5 License.
+[ http://creativecommons.org/licenses/by/2.5/ ]
+
+This means you may use it for any purpose,
+and make any changes you like.
+All I ask is that you include a link back
+to this page in your credits.
+
+Are you using this icon set? Send me an email
+(including a link or picture if available) to
+mjames@gmail.com
+
+Any other questions about this icon set please
contact mjames@gmail.com
\ No newline at end of file
diff --git a/Gizmos/Icons/ruby.png.meta b/Gizmos/Icons/ruby.png.meta
index 443265a31..cb9b11616 100644
--- a/Gizmos/Icons/ruby.png.meta
+++ b/Gizmos/Icons/ruby.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: c893eecc0c5f14664b30bf9f980ef8b7
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/script.png.meta b/Gizmos/Icons/script.png.meta
index 0dd891bdd..fcc96e104 100644
--- a/Gizmos/Icons/script.png.meta
+++ b/Gizmos/Icons/script.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 8aac423aefdd844578a5fbeac56e561c
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/shape_handles.png.meta b/Gizmos/Icons/shape_handles.png.meta
index 01e58a83c..cebe19820 100644
--- a/Gizmos/Icons/shape_handles.png.meta
+++ b/Gizmos/Icons/shape_handles.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: db43f7d76c98f4ba1bb808154c33d6bb
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sound.png.meta b/Gizmos/Icons/sound.png.meta
index 7251af820..b21e8d0f9 100644
--- a/Gizmos/Icons/sound.png.meta
+++ b/Gizmos/Icons/sound.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 4bfd1041a06a6422b877294800089c3f
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sport_8ball.png.meta b/Gizmos/Icons/sport_8ball.png.meta
index 822b3e206..a9e5c6e2b 100644
--- a/Gizmos/Icons/sport_8ball.png.meta
+++ b/Gizmos/Icons/sport_8ball.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 9457f1cdac1d943ac88293787ad09dd4
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sport_raquet.png.meta b/Gizmos/Icons/sport_raquet.png.meta
index 962b7bd89..ea063db03 100644
--- a/Gizmos/Icons/sport_raquet.png.meta
+++ b/Gizmos/Icons/sport_raquet.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 0d806c21514cc47d4b17b2da94031a22
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sport_soccer.png.meta b/Gizmos/Icons/sport_soccer.png.meta
index 5875fd851..56f1d1630 100644
--- a/Gizmos/Icons/sport_soccer.png.meta
+++ b/Gizmos/Icons/sport_soccer.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: f72abfc5d661d4ed7aa9bc58caee8937
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sport_tennis.png.meta b/Gizmos/Icons/sport_tennis.png.meta
index 3d884a980..f8ad0f70d 100644
--- a/Gizmos/Icons/sport_tennis.png.meta
+++ b/Gizmos/Icons/sport_tennis.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: c87f16bc9808243eca6b6a8b255e1a36
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/star.png.meta b/Gizmos/Icons/star.png.meta
index cd8025534..f44ac73d1 100644
--- a/Gizmos/Icons/star.png.meta
+++ b/Gizmos/Icons/star.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: f84e7e62c5de24e67a7a3e6eb4dbcaf2
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/stop.png.meta b/Gizmos/Icons/stop.png.meta
index 1651a6ce9..1fd79b8cc 100644
--- a/Gizmos/Icons/stop.png.meta
+++ b/Gizmos/Icons/stop.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 21c99ac9ff97f4079b01bfde9c222ce9
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/sum.png.meta b/Gizmos/Icons/sum.png.meta
index c408c75b6..7406bde99 100644
--- a/Gizmos/Icons/sum.png.meta
+++ b/Gizmos/Icons/sum.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 17fcdffc70a3a4ad292d69bbf78ba1ca
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/table.png.meta b/Gizmos/Icons/table.png.meta
index e9aa5481f..c3162be69 100644
--- a/Gizmos/Icons/table.png.meta
+++ b/Gizmos/Icons/table.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 118bb18f79adc4eb89be353f47adae5c
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,7 +84,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -93,7 +96,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -104,7 +108,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -115,7 +120,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -126,7 +132,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -137,18 +144,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/tux.png.meta b/Gizmos/Icons/tux.png.meta
index ca46c9625..2bc6920ff 100644
--- a/Gizmos/Icons/tux.png.meta
+++ b/Gizmos/Icons/tux.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 3a15da2f85fce43b98f33177ba75233b
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/user_gray.png.meta b/Gizmos/Icons/user_gray.png.meta
index 190dec907..a0148db5d 100644
--- a/Gizmos/Icons/user_gray.png.meta
+++ b/Gizmos/Icons/user_gray.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: ab457b1b17f134d65a7ac3f30408d1e8
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/wand.png.meta b/Gizmos/Icons/wand.png.meta
index cf03a58ef..b190dced2 100644
--- a/Gizmos/Icons/wand.png.meta
+++ b/Gizmos/Icons/wand.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 4864b74e6f998417aad29cc9acb85a2c
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/weather_sun.png.meta b/Gizmos/Icons/weather_sun.png.meta
index d7d0a70d6..14494d995 100644
--- a/Gizmos/Icons/weather_sun.png.meta
+++ b/Gizmos/Icons/weather_sun.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 845b8b4c6a6374517b412d045be1bdae
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/world.png.meta b/Gizmos/Icons/world.png.meta
index 468693690..03cfea4ca 100644
--- a/Gizmos/Icons/world.png.meta
+++ b/Gizmos/Icons/world.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 4e08a2d574ba14804a3b42b6a9abc9dd
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,73 +84,83 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Tizen
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Samsung TV
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
- textureCompression: 1
+ textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Gizmos/Icons/wrench.png.meta b/Gizmos/Icons/wrench.png.meta
index f5bf6fee6..966bf29fa 100644
--- a/Gizmos/Icons/wrench.png.meta
+++ b/Gizmos/Icons/wrench.png.meta
@@ -1,10 +1,12 @@
fileFormatVersion: 2
guid: 81ec35b9a33484501bde1198d5277b46
TextureImporter:
- fileIDToRecycleName:
- 2186277476908879412: ImportLogs
+ internalIDToNameTable:
+ - first:
+ 41386430: 2186277476908879412
+ second: ImportLogs
externalObjects: {}
- serializedVersion: 6
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -58,9 +60,8 @@ TextureImporter:
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
- pushPullDilation: 0
platformSettings:
- - serializedVersion: 2
+ - serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -71,7 +72,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - serializedVersion: 2
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
@@ -82,18 +84,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
- spriteID:
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
vertices: []
indices:
edges: []
weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/LICENSE.md b/LICENSE.md
index 3084bc6aa..ccf7e49d5 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,202 +1,202 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2018 Christian Heider Nielsen
-
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2018 Christian Heider Nielsen
+
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/Libaries.meta b/Libaries.meta
deleted file mode 100644
index 1d9eea930..000000000
--- a/Libaries.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 9174bb5c3cf9a176781062b2513acd2e
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta b/Libaries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta
deleted file mode 100644
index 20697bc86..000000000
--- a/Libaries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 18dafd50560283e4994857c0580b1595
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61/lib.meta b/Libaries/AsyncIO.0.1.61/lib.meta
deleted file mode 100644
index 6fd4ee99a..000000000
--- a/Libaries/AsyncIO.0.1.61/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: ed5b9086af6b2dc41a25a9feaa9776fb
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61/lib/net40.meta b/Libaries/AsyncIO.0.1.61/lib/net40.meta
deleted file mode 100644
index 8c9dc7084..000000000
--- a/Libaries/AsyncIO.0.1.61/lib/net40.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: acade8cab08424445ab9c3e583278060
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta b/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta
deleted file mode 100644
index 649de0ede..000000000
--- a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 8b13a02280eefdb438954065110aeea4
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0.meta b/Libaries/Microsoft.CSharp.4.5.0.meta
deleted file mode 100644
index 2976c91d0..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 61f566ad6103df4478469b7e6d5c97d3
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/.signature.p7s b/Libaries/Microsoft.CSharp.4.5.0/.signature.p7s
deleted file mode 100644
index 3b5795358..000000000
Binary files a/Libaries/Microsoft.CSharp.4.5.0/.signature.p7s and /dev/null differ
diff --git a/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT b/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT
deleted file mode 100644
index fa3121dfa..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) .NET Foundation and Contributors
-
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT.meta b/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT.meta
deleted file mode 100644
index b0d97f2e1..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/LICENSE.TXT.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 459f7310c3c7bcf44aa95ccd22c06780
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg b/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg
deleted file mode 100644
index e76fee336..000000000
Binary files a/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg and /dev/null differ
diff --git a/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg.meta b/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg.meta
deleted file mode 100644
index 3f4aca353..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/Microsoft.CSharp.4.5.0.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 8796287b6a6560a4fb48a2484404d2a2
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT b/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT
deleted file mode 100644
index 207a2a734..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT
+++ /dev/null
@@ -1,309 +0,0 @@
-.NET Core uses third-party libraries or other resources that may be
-distributed under licenses different than the .NET Core software.
-
-In the event that we accidentally failed to list a required notice, please
-bring it to our attention. Post an issue or email us:
-
- dotnet@microsoft.com
-
-The attached notices are provided for information only.
-
-License notice for Slicing-by-8
--------------------------------
-
-http://sourceforge.net/projects/slicing-by-8/
-
-Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
-
-
-This software program is licensed subject to the BSD License, available at
-http://www.opensource.org/licenses/bsd-license.html.
-
-
-License notice for Unicode data
--------------------------------
-
-http://www.unicode.org/copyright.html#License
-
-Copyright © 1991-2017 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
-
-License notice for Zlib
------------------------
-
-https://github.com/madler/zlib
-http://zlib.net/zlib_license.html
-
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
-
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
-*/
-
-License notice for Mono
--------------------------------
-
-http://www.mono-project.com/docs/about-mono/
-
-Copyright (c) .NET Foundation Contributors
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the Software), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-License notice for International Organization for Standardization
------------------------------------------------------------------
-
-Portions (C) International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
-
-License notice for Intel
-------------------------
-
-"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-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 HOLDER 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.
-
-License notice for Xamarin and Novell
--------------------------------------
-
-Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Copyright (c) 2011 Novell, Inc (http://www.novell.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Third party notice for W3C
---------------------------
-
-"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
-Status: This license takes effect 13 May, 2015.
-This work is being provided by the copyright holders under the following license.
-License
-By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
-Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
-The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
-Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
-Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
-Disclaimers
-THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
-
-License notice for Bit Twiddling Hacks
---------------------------------------
-
-Bit Twiddling Hacks
-
-By Sean Eron Anderson
-seander@cs.stanford.edu
-
-Individually, the code snippets here are in the public domain (unless otherwise
-noted) — feel free to use them however you please. The aggregate collection and
-descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
-distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
-without even the implied warranty of merchantability or fitness for a particular
-purpose.
-
-License notice for Brotli
---------------------------------------
-
-Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-compress_fragment.c:
-Copyright (c) 2011, Google Inc.
-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.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. 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.
-
-decode_fuzzer.c:
-Copyright (c) 2015 The Chromium Authors. 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.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. 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."
-
diff --git a/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT.meta b/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT.meta
deleted file mode 100644
index d4cdb50bd..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/THIRD-PARTY-NOTICES.TXT.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 321f77e169a346f40abc28eca39443dd
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/lib.meta b/Libaries/Microsoft.CSharp.4.5.0/lib.meta
deleted file mode 100644
index 3aefe8f4e..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 6c41455e42a446c408b516296c750abc
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50.meta b/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50.meta
deleted file mode 100644
index b4ac54949..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 2c62ef9112f856c4bb5d805579dff6ee
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll b/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll
deleted file mode 100644
index d6c50c250..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07874811f11bace15d1b9f29fa6a7f5fc30acb208b551dfad45a2295d5e758ed
-size 450248
diff --git a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll.meta b/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll.meta
deleted file mode 100644
index 4261e1777..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/lib/netcore50/Microsoft.CSharp.dll.meta
+++ /dev/null
@@ -1,32 +0,0 @@
-fileFormatVersion: 2
-guid: bb31c366296069b4dbc68fd5fb274af2
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- Any:
- second:
- enabled: 1
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/useSharedDesignerContext.txt b/Libaries/Microsoft.CSharp.4.5.0/useSharedDesignerContext.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/Libaries/Microsoft.CSharp.4.5.0/useSharedDesignerContext.txt.meta b/Libaries/Microsoft.CSharp.4.5.0/useSharedDesignerContext.txt.meta
deleted file mode 100644
index 5120f9c04..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/useSharedDesignerContext.txt.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 03dc29911d7fdab4ca7b86f3f92f19ab
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Microsoft.CSharp.4.5.0/version.txt b/Libaries/Microsoft.CSharp.4.5.0/version.txt
deleted file mode 100644
index 9fd007e4f..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-30ab651fcb4354552bd4891619a0bdd81e0ebdbf
diff --git a/Libaries/Microsoft.CSharp.4.5.0/version.txt.meta b/Libaries/Microsoft.CSharp.4.5.0/version.txt.meta
deleted file mode 100644
index eb5ef917e..000000000
--- a/Libaries/Microsoft.CSharp.4.5.0/version.txt.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 523303c1fe1246947a66e186a028d637
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta b/Libaries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta
deleted file mode 100644
index a101edf84..000000000
--- a/Libaries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 741d925e6f0b94aa987c118a3b391242
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/lib.meta b/Libaries/Neodroid-FlatBuffers.1.0.0/lib.meta
deleted file mode 100644
index 6d7614cb2..000000000
--- a/Libaries/Neodroid-FlatBuffers.1.0.0/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: d7b8775bf333b4ab4b47441c4ee04f2e
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta b/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta
deleted file mode 100644
index 426e2b7b1..000000000
--- a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8f06852f2b59b49b8b98c4b16b6c5f2e
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll b/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll
deleted file mode 100644
index a94ded666..000000000
--- a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b1436270054eb8d77b596f4b2a7edd6303a4b68c32a74815fa90ccefb1022205
-size 17920
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll.meta b/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll.meta
deleted file mode 100644
index fab280f35..000000000
--- a/Libaries/Neodroid-FlatBuffers.1.0.0/lib/net45/Neodroid-FlatBuffers.dll.meta
+++ /dev/null
@@ -1,32 +0,0 @@
-fileFormatVersion: 2
-guid: 03910d7172d53438e9dbae29ca3ddf5d
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- Any:
- second:
- enabled: 1
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta b/Libaries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta
deleted file mode 100644
index c614f0eb0..000000000
--- a/Libaries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 0d10b5e414798ab4d93e1d9fa486bb5a
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib.meta b/Libaries/NetMQ.4.0.0.175-pre/lib.meta
deleted file mode 100644
index 486d9ae59..000000000
--- a/Libaries/NetMQ.4.0.0.175-pre/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 71e3026b56453bf4d8a6def4233155ba
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40.meta b/Libaries/NetMQ.4.0.0.175-pre/lib/net40.meta
deleted file mode 100644
index 2c655163c..000000000
--- a/Libaries/NetMQ.4.0.0.175-pre/lib/net40.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: f6af1473978ce44449d4a3696ebbbe0f
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta b/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta
deleted file mode 100644
index 9aa95effe..000000000
--- a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: ada214c85880a7e49b90e685443d0ba4
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta b/Libaries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta
deleted file mode 100644
index a2d1bc72c..000000000
--- a/Libaries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 2d5e93d4e352d4510b83ab4cf16c2cab
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib.meta b/Libaries/Newtonsoft.Json.11.0.2/lib.meta
deleted file mode 100644
index 270b1bda6..000000000
--- a/Libaries/Newtonsoft.Json.11.0.2/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 3d8599298109444918aeffa139ef27d4
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib/net45.meta b/Libaries/Newtonsoft.Json.11.0.2/lib/net45.meta
deleted file mode 100644
index 6f5a3042d..000000000
--- a/Libaries/Newtonsoft.Json.11.0.2/lib/net45.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 56f377079c8ec4178a87d272fa0616b6
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml b/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml
deleted file mode 100644
index 3e2cacf6d..000000000
--- a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml
+++ /dev/null
@@ -1,13265 +0,0 @@
-
-
-
-
- Newtonsoft.Json
-
-
-
-
- Represents a BSON Oid (object id).
-
-
-
-
- Gets or sets the value of the Oid.
-
- The value of the Oid.
-
-
-
- Initializes a new instance of the class.
-
- The Oid value.
-
-
-
- Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data.
-
-
-
-
- Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary.
-
-
- true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise,
- false .
-
-
-
-
- Gets or sets a value indicating whether the root object will be read as a JSON array.
-
-
- true if the root object will be read as a JSON array; otherwise, false .
-
-
-
-
- Gets or sets the used when reading
- values from BSON.
-
-
- The used when reading
- values from BSON.
-
-
-
-
- Initializes a new instance of the class.
-
- The containing the BSON data to read.
-
-
-
- Initializes a new instance of the class.
-
- The containing the BSON data to read.
-
-
-
- Initializes a new instance of the class.
-
- The containing the BSON data to read.
- if set to true the root object will be read as a JSON array.
-
- The used when reading
- values from BSON.
-
-
-
-
- Initializes a new instance of the class.
-
- The containing the BSON data to read.
- if set to true the root object will be read as a JSON array.
-
- The used when reading
- values from BSON.
-
-
-
-
- Reads the next JSON token from the underlying .
-
-
- true if the next token was read successfully; false if there are no more tokens to read.
-
-
-
-
- Changes the reader's state to .
- If is set to true , the underlying
- is also closed.
-
-
-
-
- Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data.
-
-
-
-
- Gets or sets the used when writing
- values to BSON.
- When set to no conversion will occur.
-
-
- The used when writing
- values to BSON.
-
-
-
-
- Initializes a new instance of the class.
-
- The to write to.
-
-
-
- Initializes a new instance of the class.
-
- The to write to.
-
-
-
- Flushes whatever is in the buffer to the underlying and also flushes the underlying stream.
-
-
-
-
- Writes the end.
-
- The token.
-
-
-
- Writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
-
-
- Writes the start of a constructor with the given name.
-
- The name of the constructor.
-
-
-
- Writes raw JSON.
-
- The raw JSON to write.
-
-
-
- Writes raw JSON where a value is expected and updates the writer's state.
-
- The raw JSON to write.
-
-
-
- Writes the beginning of a JSON array.
-
-
-
-
- Writes the beginning of a JSON object.
-
-
-
-
- Writes the property name of a name/value pair on a JSON object.
-
- The name of the property.
-
-
-
- Closes this writer.
- If is set to true , the underlying
- is also closed.
- If is set to true , the JSON is auto-completed.
-
-
-
-
- Writes a value.
- An error will raised if the value cannot be written as a single JSON token.
-
- The value to write.
-
-
-
- Writes a null value.
-
-
-
-
- Writes an undefined value.
-
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a [] value.
-
- The [] value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a [] value that represents a BSON object id.
-
- The Object ID value to write.
-
-
-
- Writes a BSON regex.
-
- The regex pattern.
- The regex options.
-
-
-
- Specifies how constructors are used when initializing objects during deserialization by the
- .
-
-
-
-
- First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor.
-
-
-
-
- Json.NET will use a non-public default constructor before falling back to a parameterized constructor.
-
-
-
-
- Converts a binary value to and from a base 64 string value.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts a to and from JSON and BSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Creates a custom object.
-
- The object type to convert.
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Creates an object which will then be populated by the serializer.
-
- Type of the object.
- The created object.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Gets a value indicating whether this can write JSON.
-
-
- true if this can write JSON; otherwise,
- false .
-
-
-
-
- Converts a to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified value type.
-
- Type of the value.
-
- true if this instance can convert the specified value type; otherwise, false .
-
-
-
-
- Converts a to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified value type.
-
- Type of the value.
-
- true if this instance can convert the specified value type; otherwise, false .
-
-
-
-
- Provides a base class for converting a to and from JSON.
-
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts a F# discriminated union type to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts an Entity Framework to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts an to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Gets a value indicating whether this can write JSON.
-
-
- true if this can write JSON; otherwise,
- false .
-
-
-
-
- Converts a to and from the ISO 8601 date format (e.g.
- "2008-04-12T12:53Z" ).
-
-
-
-
- Gets or sets the date time styles used when converting a date to and from JSON.
-
- The date time styles used when converting a date to and from JSON.
-
-
-
- Gets or sets the date time format used when converting a date to and from JSON.
-
- The date time format used when converting a date to and from JSON.
-
-
-
- Gets or sets the culture used when converting a date to and from JSON.
-
- The culture used when converting a date to and from JSON.
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Converts a to and from a JavaScript Date constructor (e.g.
- new Date(52231943) ).
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing property value of the JSON that is being converted.
- The calling serializer.
- The object value.
-
-
-
- Converts a to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts a to and from JSON and BSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts an to and from its name string value.
-
-
-
-
- Gets or sets a value indicating whether the written enum text should be camel case.
- The default value is false .
-
- true if the written enum text will be camel case; otherwise, false .
-
-
-
- Gets or sets a value indicating whether integer values are allowed when deserializing.
- The default value is true .
-
- true if integers are allowed when deserializing; otherwise, false .
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- true if the written enum text will be camel case; otherwise,
- false .
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts a to and from Unix epoch time
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing property value of the JSON that is being converted.
- The calling serializer.
- The object value.
-
-
-
- Converts a to and from a string (e.g. "1.2.3.4" ).
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing property value of the JSON that is being converted.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Converts XML to and from JSON.
-
-
-
-
- Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements.
-
- The name of the deserialized root element.
-
-
-
- Gets or sets a flag to indicate whether to write the Json.NET array attribute.
- This attribute helps preserve arrays when converting the written XML back to JSON.
-
- true if the array attribute is written to the XML; otherwise, false .
-
-
-
- Gets or sets a value indicating whether to write the root JSON object.
-
- true if the JSON root object is omitted; otherwise, false .
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The calling serializer.
- The value.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Checks if the is a namespace attribute.
-
- Attribute name to test.
- The attribute name prefix if it has one, otherwise an empty string.
- true if attribute name is for a namespace attribute, otherwise false .
-
-
-
- Determines whether this instance can convert the specified value type.
-
- Type of the value.
-
- true if this instance can convert the specified value type; otherwise, false .
-
-
-
-
- Specifies how dates are formatted when writing JSON text.
-
-
-
-
- Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z" .
-
-
-
-
- Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/" .
-
-
-
-
- Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and
- "2012-03-21T05:40Z" , are parsed when reading JSON text.
-
-
-
-
- Date formatted strings are not parsed to a date type and are read as strings.
-
-
-
-
- Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z" , are parsed to
- .
-
-
-
-
- Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z" , are parsed to
- .
-
-
-
-
- Specifies how to treat the time value when converting between string and
- .
-
-
-
-
- Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time.
-
-
-
-
- Treat as a UTC. If the object represents a local time, it is converted to a UTC.
-
-
-
-
- Treat as a local time if a is being converted to a string.
- If a string is being converted to , convert to a local time if a time zone is specified.
-
-
-
-
- Time zone information should be preserved when converting.
-
-
-
-
- Specifies default value handling options for the
- .
-
-
-
-
-
-
-
-
- Include members where the member value is the same as the member's default value when serializing objects.
- Included members are written to JSON. Has no effect when deserializing.
-
-
-
-
- Ignore members where the member value is the same as the member's default value when serializing objects
- so that it is not written to JSON.
- This option will ignore all default values (e.g. null for objects and nullable types;
- 0 for integers,
- decimals and floating point numbers; and false for booleans). The default value ignored can be changed by
- placing the on the property.
-
-
-
-
- Members with a default value but no JSON will be set to their default value when deserializing.
-
-
-
-
- Ignore members where the member value is the same as the member's default value when serializing objects
- and set members to their default value when deserializing.
-
-
-
-
- Specifies float format handling options when writing special floating point numbers, e.g.
- ,
- and
- with
- .
-
-
-
-
- Write special floating point values as strings in JSON, e.g. "NaN" , "Infinity" ,
- "-Infinity" .
-
-
-
-
- Write special floating point values as symbols in JSON, e.g. NaN , Infinity ,
- -Infinity .
- Note that this will produce non-valid JSON.
-
-
-
-
- Write special floating point values as the property's default value in JSON, e.g. 0.0 for a
- property, null for a
- of property.
-
-
-
-
- Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
-
-
-
-
- Floating point numbers are parsed to
- .
-
-
-
-
- Floating point numbers are parsed to
- .
-
-
-
-
- Specifies formatting options for the .
-
-
-
-
- No special formatting is applied. This is the default.
-
-
-
-
- Causes child objects to be indented according to the
- and
- settings.
-
-
-
-
- Provides an interface for using pooled arrays.
-
- The array type content.
-
-
-
- Rent an array from the pool. This array must be returned when it is no longer needed.
-
- The minimum required length of the array. The returned array may be longer.
- The rented array from the pool. This array must be returned when it is no longer needed.
-
-
-
- Return an array to the pool.
-
- The array that is being returned.
-
-
-
- Provides an interface to enable a class to return line and position information.
-
-
-
-
- Gets a value indicating whether the class can return line information.
-
-
- true if and
- can be provided; otherwise,
- false .
-
-
-
-
- Gets the current line number.
-
-
- The current line number or 0 if no line information is available (for example, when
- returns false ).
-
-
-
-
- Gets the current line position.
-
-
- The current line position or 0 if no line information is available (for example, when
- returns false ).
-
-
-
-
- Instructs the how to serialize the collection.
-
-
-
-
- Gets or sets a value indicating whether null items are allowed in the collection.
-
- true if null items are allowed in the collection; otherwise, false .
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class with a flag indicating whether the array can contain null items.
-
- A flag indicating whether the array can contain null items.
-
-
-
- Initializes a new instance of the class with the specified container Id.
-
- The container Id.
-
-
-
- Instructs the to use the specified constructor when deserializing that object.
-
-
-
-
- Instructs the how to serialize the object.
-
-
-
-
- Gets or sets the id.
-
- The id.
-
-
-
- Gets or sets the title.
-
- The title.
-
-
-
- Gets or sets the description.
-
- The description.
-
-
-
- Gets or sets the collection's items converter.
-
- The collection's items converter.
-
-
-
- The parameter list to use when constructing the
- described by
- .
- If null , the default constructor is used.
- When non-null , there must be a constructor defined in the
- that exactly matches the number,
- order, and type of these parameters.
-
-
-
- [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
-
-
-
-
-
- Gets or sets the of the
- .
-
-
- The of the
- .
-
-
-
-
- The parameter list to use when constructing the
- described by
- .
- If null , the default constructor is used.
- When non-null , there must be a constructor defined in the
- that exactly matches the number,
- order, and type of these parameters.
-
-
-
- [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
-
-
-
-
-
- Gets or sets a value that indicates whether to preserve object references.
-
-
- true to keep object reference; otherwise, false . The default is false .
-
-
-
-
- Gets or sets a value that indicates whether to preserve collection's items references.
-
-
- true to keep collection's items object references; otherwise, false . The default is
- false .
-
-
-
-
- Gets or sets the reference loop handling used when serializing the collection's items.
-
- The reference loop handling.
-
-
-
- Gets or sets the type name handling used when serializing the collection's items.
-
- The type name handling.
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class with the specified container Id.
-
- The container Id.
-
-
-
- Provides methods for converting between .NET types and JSON types.
-
-
-
-
-
-
-
- Gets or sets a function that creates default
- .
- Default settings are automatically used by serialization methods on
- ,
- and and
- on
- .
- To serialize without using any default settings create a
- with
- .
-
-
-
-
- Represents JavaScript's boolean value true as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's boolean value false as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's null as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's undefined as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's positive infinity as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's negative infinity as a string. This field is read-only.
-
-
-
-
- Represents JavaScript's NaN as a string. This field is read-only.
-
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation using the
- specified.
-
- The value to convert.
- The format the date will be converted to.
- The time zone handling when the date is converted to a string.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation using the
- specified.
-
- The value to convert.
- The format the date will be converted to.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- The string delimiter character.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- The string delimiter character.
- The string escape handling.
- A JSON string representation of the .
-
-
-
- Converts the to its JSON string representation.
-
- The value to convert.
- A JSON string representation of the .
-
-
-
- Serializes the specified object to a JSON string.
-
- The object to serialize.
- A JSON string representation of the object.
-
-
-
- Serializes the specified object to a JSON string using formatting.
-
- The object to serialize.
- Indicates how the output should be formatted.
-
- A JSON string representation of the object.
-
-
-
-
- Serializes the specified object to a JSON string using a collection of
- .
-
- The object to serialize.
- A collection of converters used while serializing.
- A JSON string representation of the object.
-
-
-
- Serializes the specified object to a JSON string using formatting and a collection of
- .
-
- The object to serialize.
- Indicates how the output should be formatted.
- A collection of converters used while serializing.
- A JSON string representation of the object.
-
-
-
- Serializes the specified object to a JSON string using
- .
-
- The object to serialize.
-
- The used to serialize the object.
- If this is null , default serialization settings will be used.
-
-
- A JSON string representation of the object.
-
-
-
-
- Serializes the specified object to a JSON string using a type, formatting and
- .
-
- The object to serialize.
-
- The used to serialize the object.
- If this is null , default serialization settings will be used.
-
-
- The type of the value being serialized.
- This parameter is used when
- is to write out the type name if the type of the value does not match.
- Specifying the type is optional.
-
-
- A JSON string representation of the object.
-
-
-
-
- Serializes the specified object to a JSON string using formatting and
- .
-
- The object to serialize.
- Indicates how the output should be formatted.
-
- The used to serialize the object.
- If this is null , default serialization settings will be used.
-
-
- A JSON string representation of the object.
-
-
-
-
- Serializes the specified object to a JSON string using a type, formatting and
- .
-
- The object to serialize.
- Indicates how the output should be formatted.
-
- The used to serialize the object.
- If this is null , default serialization settings will be used.
-
-
- The type of the value being serialized.
- This parameter is used when
- is to write out the type name if the type of the value does not match.
- Specifying the type is optional.
-
-
- A JSON string representation of the object.
-
-
-
-
- Deserializes the JSON to a .NET object.
-
- The JSON to deserialize.
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to a .NET object using
- .
-
- The JSON to deserialize.
-
- The used to deserialize the object.
- If this is null , default serialization settings will be used.
-
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type.
-
- The JSON to deserialize.
- The of object being deserialized.
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type.
-
- The type of the object to deserialize to.
- The JSON to deserialize.
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the given anonymous type.
-
-
- The anonymous type to deserialize to. This can't be specified
- traditionally and must be inferred from the anonymous type passed
- as a parameter.
-
- The JSON to deserialize.
- The anonymous type object.
- The deserialized anonymous type from the JSON string.
-
-
-
- Deserializes the JSON to the given anonymous type using
- .
-
-
- The anonymous type to deserialize to. This can't be specified
- traditionally and must be inferred from the anonymous type passed
- as a parameter.
-
- The JSON to deserialize.
- The anonymous type object.
-
- The used to deserialize the object.
- If this is null , default serialization settings will be used.
-
- The deserialized anonymous type from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type using a collection of
- .
-
- The type of the object to deserialize to.
- The JSON to deserialize.
- Converters to use while deserializing.
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type using
- .
-
- The type of the object to deserialize to.
- The object to deserialize.
-
- The used to deserialize the object.
- If this is null , default serialization settings will be used.
-
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type using a collection of
- .
-
- The JSON to deserialize.
- The type of the object to deserialize.
- Converters to use while deserializing.
- The deserialized object from the JSON string.
-
-
-
- Deserializes the JSON to the specified .NET type using
- .
-
- The JSON to deserialize.
- The type of the object to deserialize to.
-
- The used to deserialize the object.
- If this is null , default serialization settings will be used.
-
- The deserialized object from the JSON string.
-
-
-
- Populates the object with values from the JSON string.
-
- The JSON to populate values from.
- The target object to populate values onto.
-
-
-
- Populates the object with values from the JSON string using
- .
-
- The JSON to populate values from.
- The target object to populate values onto.
-
- The used to deserialize the object.
- If this is null , default serialization settings will be used.
-
-
-
-
- Serializes the to a JSON string.
-
- The node to serialize.
- A JSON string of the .
-
-
-
- Serializes the to a JSON string using formatting.
-
- The node to serialize.
- Indicates how the output should be formatted.
- A JSON string of the .
-
-
-
- Serializes the to a JSON string using formatting and omits the root object if
- is true .
-
- The node to serialize.
- Indicates how the output should be formatted.
- Omits writing the root object.
- A JSON string of the .
-
-
-
- Deserializes the from a JSON string.
-
- The JSON string.
- The deserialized .
-
-
-
- Deserializes the from a JSON string nested in a root element specified by
- .
-
- The JSON string.
- The name of the root element to append when deserializing.
- The deserialized .
-
-
-
- Deserializes the from a JSON string nested in a root element specified by
-
- and writes a Json.NET array attribute for collections.
-
- The JSON string.
- The name of the root element to append when deserializing.
-
- A flag to indicate whether to write the Json.NET array attribute.
- This attribute helps preserve arrays when converting the written XML back to JSON.
-
- The deserialized .
-
-
-
- Serializes the to a JSON string.
-
- The node to convert to JSON.
- A JSON string of the .
-
-
-
- Serializes the to a JSON string using formatting.
-
- The node to convert to JSON.
- Indicates how the output should be formatted.
- A JSON string of the .
-
-
-
- Serializes the to a JSON string using formatting and omits the root object if
- is true .
-
- The node to serialize.
- Indicates how the output should be formatted.
- Omits writing the root object.
- A JSON string of the .
-
-
-
- Deserializes the from a JSON string.
-
- The JSON string.
- The deserialized .
-
-
-
- Deserializes the from a JSON string nested in a root element specified by
- .
-
- The JSON string.
- The name of the root element to append when deserializing.
- The deserialized .
-
-
-
- Deserializes the from a JSON string nested in a root element specified by
-
- and writes a Json.NET array attribute for collections.
-
- The JSON string.
- The name of the root element to append when deserializing.
-
- A flag to indicate whether to write the Json.NET array attribute.
- This attribute helps preserve arrays when converting the written XML back to JSON.
-
- The deserialized .
-
-
-
- Converts an object to and from JSON.
-
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Gets a value indicating whether this can read JSON.
-
-
- true if this can read JSON; otherwise,
- false .
-
-
-
-
- Gets a value indicating whether this can write JSON.
-
-
- true if this can write JSON; otherwise,
- false .
-
-
-
-
- Converts an object to and from JSON.
-
- The object type to convert.
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Writes the JSON representation of the object.
-
- The to write to.
- The value.
- The calling serializer.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
- The existing value of object being read.
- The calling serializer.
- The object value.
-
-
-
- Reads the JSON representation of the object.
-
- The to read from.
- Type of the object.
-
- The existing value of object being read. If there is no existing value then
- null will be used.
-
- The existing value has a value.
- The calling serializer.
- The object value.
-
-
-
- Determines whether this instance can convert the specified object type.
-
- Type of the object.
-
- true if this instance can convert the specified object type; otherwise, false .
-
-
-
-
- Instructs the to use the specified
- when serializing the member or class.
-
-
-
-
- Gets the of the .
-
- The of the .
-
-
-
- The parameter list to use when constructing the
- described by
- .
- If null , the default constructor is used.
-
-
-
-
- Initializes a new instance of the
- class.
-
- Type of the .
-
-
-
- Initializes a new instance of the
- class.
-
- Type of the .
-
- Parameter list to use when constructing the
- . Can be null .
-
-
-
-
- Represents a collection of .
-
-
-
-
- Instructs the how to serialize the collection.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class with the specified container Id.
-
- The container Id.
-
-
-
- The exception thrown when an error occurs during JSON serialization or deserialization.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class
- with a specified error message.
-
- The error message that explains the reason for the exception.
-
-
-
- Initializes a new instance of the class
- with a specified error message and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Initializes a new instance of the class.
-
- The that holds the serialized object data about the exception being thrown.
- The that contains contextual information about the source or destination.
-
- The parameter is
- null .
-
-
- The class name is
- null or is zero (0).
-
-
-
-
- Instructs the to deserialize properties with no matching class member into the specified collection
- and write values during serialization.
-
-
-
-
- Gets or sets a value that indicates whether to write extension data when serializing the object.
-
-
- true to write extension data when serializing the object; otherwise, false . The default is
- true .
-
-
-
-
- Gets or sets a value that indicates whether to read extension data when deserializing the object.
-
-
- true to read extension data when deserializing the object; otherwise, false . The default is
- true .
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Instructs the not to serialize the public field or public read/write property value.
-
-
-
-
- Instructs the how to serialize the object.
-
-
-
-
- Gets or sets the member serialization.
-
- The member serialization.
-
-
-
- Gets or sets how the object's properties with null values are handled during serialization and deserialization.
-
- How the object's properties with null values are handled during serialization and deserialization.
-
-
-
- Gets or sets a value that indicates whether the object's properties are required.
-
-
- A value indicating whether the object's properties are required.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class with the specified member serialization.
-
- The member serialization.
-
-
-
- Initializes a new instance of the class with the specified container Id.
-
- The container Id.
-
-
-
- Instructs the to always serialize the member with the specified name.
-
-
-
-
- Gets or sets the used when serializing the property's collection items.
-
- The collection's items .
-
-
-
- The parameter list to use when constructing the
- described by
- .
- If null , the default constructor is used.
- When non-null , there must be a constructor defined in the
- that exactly matches the number,
- order, and type of these parameters.
-
-
-
- [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
-
-
-
-
-
- Gets or sets the of the
- .
-
-
- The of the
- .
-
-
-
-
- The parameter list to use when constructing the
- described by
- .
- If null , the default constructor is used.
- When non-null , there must be a constructor defined in the
- that exactly matches the number,
- order, and type of these parameters.
-
-
-
- [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
-
-
-
-
-
- Gets or sets the null value handling used when serializing this property.
-
- The null value handling.
-
-
-
- Gets or sets the default value handling used when serializing this property.
-
- The default value handling.
-
-
-
- Gets or sets the reference loop handling used when serializing this property.
-
- The reference loop handling.
-
-
-
- Gets or sets the object creation handling used when deserializing this property.
-
- The object creation handling.
-
-
-
- Gets or sets the type name handling used when serializing this property.
-
- The type name handling.
-
-
-
- Gets or sets whether this property's value is serialized as a reference.
-
- Whether this property's value is serialized as a reference.
-
-
-
- Gets or sets the order of serialization of a member.
-
- The numeric order of serialization.
-
-
-
- Gets or sets a value indicating whether this property is required.
-
-
- A value indicating whether this property is required.
-
-
-
-
- Gets or sets the name of the property.
-
- The name of the property.
-
-
-
- Gets or sets the reference loop handling used when serializing the property's collection items.
-
- The collection's items reference loop handling.
-
-
-
- Gets or sets the type name handling used when serializing the property's collection items.
-
- The collection's items type name handling.
-
-
-
- Gets or sets whether this property's collection items are serialized as a reference.
-
- Whether this property's collection items are serialized as a reference.
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class with the specified name.
-
- Name of the property.
-
-
-
- Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
-
-
-
-
- Asynchronously reads the next JSON token from the source.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns true if the next token was read successfully; false if there are no more tokens to read.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously skips the children of the current token.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a [].
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the []. This result will be null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of
- . This result will be null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the . This result will be null at the end of an array.
-
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Specifies the state of the reader.
-
-
-
-
- A read method has not been called.
-
-
-
-
- The end of the file has been reached successfully.
-
-
-
-
- Reader is at a property.
-
-
-
-
- Reader is at the start of an object.
-
-
-
-
- Reader is in an object.
-
-
-
-
- Reader is at the start of an array.
-
-
-
-
- Reader is in an array.
-
-
-
-
- The method has been called.
-
-
-
-
- Reader has just read a value.
-
-
-
-
- Reader is at the start of a constructor.
-
-
-
-
- Reader is in a constructor.
-
-
-
-
- An error occurred that prevents the read operation from continuing.
-
-
-
-
- The end of the file has been reached successfully.
-
-
-
-
- Gets the current reader state.
-
- The current reader state.
-
-
-
- Gets or sets a value indicating whether the source should be closed when this reader is closed.
-
-
- true to close the source when this reader is closed; otherwise false . The default is
- true .
-
-
-
-
- Gets or sets a value indicating whether multiple pieces of JSON content can
- be read from a continuous stream without erroring.
-
-
- true to support reading multiple pieces of JSON content; otherwise false .
- The default is false .
-
-
-
-
- Gets the quotation mark character used to enclose the value of a string.
-
-
-
-
- Gets or sets how time zones are handled when reading JSON.
-
-
-
-
- Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
-
-
-
-
- Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
-
-
-
-
- Gets or sets how custom date formatted strings are parsed when reading JSON.
-
-
-
-
- Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
- .
-
-
-
-
- Gets the type of the current JSON token.
-
-
-
-
- Gets the text value of the current JSON token.
-
-
-
-
- Gets the .NET type for the current JSON token.
-
-
-
-
- Gets the depth of the current token in the JSON document.
-
- The depth of the current token in the JSON document.
-
-
-
- Gets the path of the current JSON token.
-
-
-
-
- Gets or sets the culture used when reading JSON. Defaults to
- .
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Reads the next JSON token from the source.
-
- true if the next token was read successfully; false if there are no more tokens to read.
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a .
-
- A . This method will return null at the end of an array.
-
-
-
- Reads the next JSON token from the source as a [].
-
-
- A [] or null if the next JSON token is null. This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the source as a of
- .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Skips the children of the current token.
-
-
-
-
- Sets the current token.
-
- The new token.
-
-
-
- Sets the current token and value.
-
- The new token.
- The value.
-
-
-
- Sets the current token and value.
-
- The new token.
- The value.
- A flag indicating whether the position index inside an array should be updated.
-
-
-
- Sets the state based on current token type.
-
-
-
-
- Releases unmanaged and - optionally - managed resources.
-
-
- true to release both managed and unmanaged resources; false
- to release only unmanaged resources.
-
-
-
-
- Changes the reader's state to .
- If is set to true , the source is also closed.
-
-
-
-
- The exception thrown when an error occurs while reading JSON text.
-
-
-
-
- Gets the line number indicating where the error occurred.
-
- The line number indicating where the error occurred.
-
-
-
- Gets the line position indicating where the error occurred.
-
- The line position indicating where the error occurred.
-
-
-
- Gets the path to the JSON where the error occurred.
-
- The path to the JSON where the error occurred.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class
- with a specified error message.
-
- The error message that explains the reason for the exception.
-
-
-
- Initializes a new instance of the class
- with a specified error message and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Initializes a new instance of the class.
-
- The that holds the serialized object data about the exception being thrown.
- The that contains contextual information about the source or destination.
-
- The parameter is
- null .
-
-
- The class name is
- null or is zero (0).
-
-
-
-
- Initializes a new instance of the class
- with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
- The path to the JSON where the error occurred.
- The line number indicating where the error occurred.
- The line position indicating where the error occurred.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Instructs the to always serialize the member, and to require that the member has a value.
-
-
-
-
- The exception thrown when an error occurs during JSON serialization or deserialization.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class
- with a specified error message.
-
- The error message that explains the reason for the exception.
-
-
-
- Initializes a new instance of the
- class
- with a specified error message and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The that holds the serialized object data about the exception being thrown.
- The that contains contextual information about the source or destination.
-
- The parameter is
- null .
-
-
- The class name is
- null or is zero (0).
-
-
-
-
- Serializes and deserializes objects into and from the JSON format.
- The enables you to control how objects are encoded into JSON.
-
-
-
-
- Occurs when the errors during serialization and deserialization.
-
-
-
-
- Gets or sets the used by the serializer when resolving references.
-
-
-
-
- Gets or sets the used by the serializer when resolving type names.
-
-
-
-
- Gets or sets the used by the serializer when resolving type names.
-
-
-
-
- Gets or sets the used by the serializer when writing trace messages.
-
- The trace writer.
-
-
-
- Gets or sets the equality comparer used by the serializer when comparing references.
-
- The equality comparer.
-
-
-
- Gets or sets how type name writing and reading is handled by the serializer.
- The default value is .
-
-
- should be used with caution when your application deserializes JSON from an external source.
- Incoming types should be validated with a custom
-
- when deserializing with a value other than
- .
-
-
-
-
- Gets or sets how a type name assembly is written and resolved by the serializer.
- The default value is
- .
-
- The type name assembly format.
-
-
-
- Gets or sets how a type name assembly is written and resolved by the serializer.
- The default value is .
-
- The type name assembly format.
-
-
-
- Gets or sets how object references are preserved by the serializer.
- The default value is .
-
-
-
-
- Gets or sets how reference loops (e.g. a class referencing itself) is handled.
- The default value is .
-
-
-
-
- Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
- The default value is .
-
-
-
-
- Gets or sets how null values are handled during serialization and deserialization.
- The default value is .
-
-
-
-
- Gets or sets how default values are handled during serialization and deserialization.
- The default value is .
-
-
-
-
- Gets or sets how objects are created during deserialization.
- The default value is .
-
- The object creation handling.
-
-
-
- Gets or sets how constructors are used during deserialization.
- The default value is .
-
- The constructor handling.
-
-
-
- Gets or sets how metadata properties are used during deserialization.
- The default value is .
-
- The metadata properties handling.
-
-
-
- Gets a collection that will be used during serialization.
-
- Collection that will be used during serialization.
-
-
-
- Gets or sets the contract resolver used by the serializer when
- serializing .NET objects to JSON and vice versa.
-
-
-
-
- Gets or sets the used by the serializer when invoking serialization callback methods.
-
- The context.
-
-
-
- Indicates how JSON text output is formatted.
- The default value is .
-
-
-
-
- Gets or sets how dates are written to JSON text.
- The default value is .
-
-
-
-
- Gets or sets how time zones are handled during serialization and deserialization.
- The default value is .
-
-
-
-
- Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and
- "2012-03-21T05:40Z" , are parsed when reading JSON.
- The default value is .
-
-
-
-
- Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
- The default value is .
-
-
-
-
- Gets or sets how special floating point numbers, e.g. ,
- and
- ,
- are written as JSON text.
- The default value is .
-
-
-
-
- Gets or sets how strings are escaped when writing JSON text.
- The default value is .
-
-
-
-
- Gets or sets how and
- values are formatted when writing JSON text,
- and the expected date format when reading JSON text.
- The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" .
-
-
-
-
- Gets or sets the culture used when reading JSON.
- The default value is .
-
-
-
-
- Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
- .
- A null value means there is no maximum.
- The default value is null .
-
-
-
-
- Gets a value indicating whether there will be a check for additional JSON content after deserializing an object.
- The default value is false .
-
-
- true if there will be a check for additional JSON content after deserializing an object; otherwise,
- false .
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Creates a new instance.
- The will not use default settings
- from .
-
-
- A new instance.
- The will not use default settings
- from .
-
-
-
-
- Creates a new instance using the specified
- .
- The will not use default settings
- from .
-
-
- The settings to be applied to the
- .
-
-
- A new instance using the specified
- .
- The will not use default settings
- from .
-
-
-
-
- Creates a new instance.
- The will use default settings
- from .
-
-
- A new instance.
- The will use default settings
- from .
-
-
-
-
- Creates a new instance using the specified
- .
- The will use default settings
- from as well as the specified
- .
-
-
- The settings to be applied to the
- .
-
-
- A new instance using the specified
- .
- The will use default settings
- from as well as the specified
- .
-
-
-
-
- Populates the JSON values onto the target object.
-
- The that contains the JSON structure to reader values from.
- The target object to populate values onto.
-
-
-
- Populates the JSON values onto the target object.
-
- The that contains the JSON structure to reader values from.
- The target object to populate values onto.
-
-
-
- Deserializes the JSON structure contained by the specified
- .
-
- The that contains the JSON structure to deserialize.
- The being deserialized.
-
-
-
- Deserializes the JSON structure contained by the specified
-
- into an instance of the specified type.
-
- The containing the object.
- The of object being deserialized.
- The instance of being deserialized.
-
-
-
- Deserializes the JSON structure contained by the specified
-
- into an instance of the specified type.
-
- The containing the object.
- The type of the object to deserialize.
- The instance of being deserialized.
-
-
-
- Deserializes the JSON structure contained by the specified
-
- into an instance of the specified type.
-
- The containing the object.
- The of object being deserialized.
- The instance of being deserialized.
-
-
-
- Serializes the specified and writes the JSON structure
- using the specified .
-
- The used to write the JSON structure.
- The to serialize.
-
-
-
- Serializes the specified and writes the JSON structure
- using the specified .
-
- The used to write the JSON structure.
- The to serialize.
-
- The type of the value being serialized.
- This parameter is used when
- is to write out the type name if the type of the value does not match.
- Specifying the type is optional.
-
-
-
-
- Serializes the specified and writes the JSON structure
- using the specified .
-
- The used to write the JSON structure.
- The to serialize.
-
- The type of the value being serialized.
- This parameter is used when
- is Auto to write out the type name if the type of the value does not match.
- Specifying the type is optional.
-
-
-
-
- Serializes the specified and writes the JSON structure
- using the specified .
-
- The used to write the JSON structure.
- The to serialize.
-
-
-
- Specifies the settings on a object.
-
-
-
-
- Gets or sets how reference loops (e.g. a class referencing itself) are handled.
- The default value is .
-
- Reference loop handling.
-
-
-
- Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
- The default value is .
-
- Missing member handling.
-
-
-
- Gets or sets how objects are created during deserialization.
- The default value is .
-
- The object creation handling.
-
-
-
- Gets or sets how null values are handled during serialization and deserialization.
- The default value is .
-
- Null value handling.
-
-
-
- Gets or sets how default values are handled during serialization and deserialization.
- The default value is .
-
- The default value handling.
-
-
-
- Gets or sets a collection that will be used during serialization.
-
- The converters.
-
-
-
- Gets or sets how object references are preserved by the serializer.
- The default value is .
-
- The preserve references handling.
-
-
-
- Gets or sets how type name writing and reading is handled by the serializer.
- The default value is .
-
-
- should be used with caution when your application deserializes JSON from an external source.
- Incoming types should be validated with a custom
-
- when deserializing with a value other than
- .
-
- The type name handling.
-
-
-
- Gets or sets how metadata properties are used during deserialization.
- The default value is .
-
- The metadata properties handling.
-
-
-
- Gets or sets how a type name assembly is written and resolved by the serializer.
- The default value is
- .
-
- The type name assembly format.
-
-
-
- Gets or sets how a type name assembly is written and resolved by the serializer.
- The default value is .
-
- The type name assembly format.
-
-
-
- Gets or sets how constructors are used during deserialization.
- The default value is .
-
- The constructor handling.
-
-
-
- Gets or sets the contract resolver used by the serializer when
- serializing .NET objects to JSON and vice versa.
-
- The contract resolver.
-
-
-
- Gets or sets the equality comparer used by the serializer when comparing references.
-
- The equality comparer.
-
-
-
- Gets or sets the used by the serializer when resolving references.
-
- The reference resolver.
-
-
-
- Gets or sets a function that creates the
- used by the serializer when resolving references.
-
-
- A function that creates the
- used by the serializer when resolving references.
-
-
-
-
- Gets or sets the used by the serializer when writing trace messages.
-
- The trace writer.
-
-
-
- Gets or sets the
- used by the serializer when resolving type names.
-
- The binder.
-
-
-
- Gets or sets the used by the serializer when resolving type names.
-
- The binder.
-
-
-
- Gets or sets the error handler called during serialization and deserialization.
-
- The error handler called during serialization and deserialization.
-
-
-
- Gets or sets the used by the serializer when invoking serialization callback methods.
-
- The context.
-
-
-
- Gets or sets how and
- values are formatted when writing JSON text,
- and the expected date format when reading JSON text.
- The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" .
-
-
-
-
- Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
- .
- A null value means there is no maximum.
- The default value is null .
-
-
-
-
- Indicates how JSON text output is formatted.
- The default value is .
-
-
-
-
- Gets or sets how dates are written to JSON text.
- The default value is .
-
-
-
-
- Gets or sets how time zones are handled during serialization and deserialization.
- The default value is .
-
-
-
-
- Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and
- "2012-03-21T05:40Z" , are parsed when reading JSON.
- The default value is .
-
-
-
-
- Gets or sets how special floating point numbers, e.g. ,
- and
- ,
- are written as JSON.
- The default value is .
-
-
-
-
- Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
- The default value is .
-
-
-
-
- Gets or sets how strings are escaped when writing JSON text.
- The default value is .
-
-
-
-
- Gets or sets the culture used when reading JSON.
- The default value is .
-
-
-
-
- Gets a value indicating whether there will be a check for additional content after deserializing an object.
- The default value is false .
-
-
- true if there will be a check for additional content after deserializing an object; otherwise,
- false .
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
-
-
-
-
- Asynchronously reads the next JSON token from the source.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns true if the next token was read successfully; false if there are no more tokens to read.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a [].
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the []. This result will be null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of
- . This result will be null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a
- of .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the of . This result will be
- null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously reads the next JSON token from the source as a .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous read. The
-
- property returns the . This result will be null at the end of an array.
-
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Initializes a new instance of the class with the specified
- .
-
- The containing the JSON data to read.
-
-
-
- Gets or sets the reader's character buffer pool.
-
-
-
-
- Reads the next JSON token from the underlying .
-
-
- true if the next token was read successfully; false if there are no more tokens to read.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- .
-
- A . This method will return null at the end of an array.
-
-
-
- Reads the next JSON token from the underlying as a
- [].
-
-
- A [] or null if the next JSON token is null. This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Changes the reader's state to .
- If is set to true , the underlying
- is also closed.
-
-
-
-
- Gets a value indicating whether the class can return line information.
-
-
- true if and
- can be provided; otherwise,
- false .
-
-
-
-
- Gets the current line number.
-
-
- The current line number or 0 if no line information is available (for example,
- returns false ).
-
-
-
-
- Gets the current line position.
-
-
- The current line position or 0 if no line information is available (for example,
- returns false ).
-
-
-
-
- Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
-
-
-
-
- Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the JSON value delimiter.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the specified end token.
-
- The end token to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously closes this writer.
- If is set to true , the destination is also closed.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the end of the current JSON object or array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes indent characters.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes an indent space.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes raw JSON without changing the writer's state.
-
- The raw JSON to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a null value.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
- A flag to indicate whether the text should be escaped when it is written as a JSON property name.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the beginning of a JSON array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the beginning of a JSON object.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the start of a constructor with the given name.
-
- The name of the constructor.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes an undefined value.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the given white space.
-
- The string of white space characters.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a [] value.
-
- The [] value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the end of an array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the end of a constructor.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes the end of a JSON object.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Asynchronously writes raw JSON where a value is expected and updates the writer's state.
-
- The raw JSON to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- Derived classes must override this method to get asynchronous behaviour. Otherwise it will
- execute synchronously, returning an already-completed task.
-
-
-
-
- Gets or sets the writer's character array pool.
-
-
-
-
- Gets or sets how many s to write for each level in the hierarchy when
- is set to
- .
-
-
-
-
- Gets or sets which character to use to quote attribute values.
-
-
-
-
- Gets or sets which character to use for indenting when
- is set to
- .
-
-
-
-
- Gets or sets a value indicating whether object names will be surrounded with quotes.
-
-
-
-
- Initializes a new instance of the class using the specified
- .
-
- The to write to.
-
-
-
- Flushes whatever is in the buffer to the underlying and also flushes the underlying
- .
-
-
-
-
- Closes this writer.
- If is set to true , the underlying
- is also closed.
- If is set to true , the JSON is auto-completed.
-
-
-
-
- Writes the beginning of a JSON object.
-
-
-
-
- Writes the beginning of a JSON array.
-
-
-
-
- Writes the start of a constructor with the given name.
-
- The name of the constructor.
-
-
-
- Writes the specified end token.
-
- The end token to write.
-
-
-
- Writes the property name of a name/value pair on a JSON object.
-
- The name of the property.
-
-
-
- Writes the property name of a name/value pair on a JSON object.
-
- The name of the property.
- A flag to indicate whether the text should be escaped when it is written as a JSON property name.
-
-
-
- Writes indent characters.
-
-
-
-
- Writes the JSON value delimiter.
-
-
-
-
- Writes an indent space.
-
-
-
-
- Writes a value.
- An error will raised if the value cannot be written as a single JSON token.
-
- The value to write.
-
-
-
- Writes a null value.
-
-
-
-
- Writes an undefined value.
-
-
-
-
- Writes raw JSON.
-
- The raw JSON to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a [] value.
-
- The [] value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
-
-
- Writes the given white space.
-
- The string of white space characters.
-
-
-
- Specifies the type of JSON token.
-
-
-
-
- This is returned by the if a read method has not been called.
-
-
-
-
- An object start token.
-
-
-
-
- An array start token.
-
-
-
-
- A constructor start token.
-
-
-
-
- An object property name.
-
-
-
-
- A comment.
-
-
-
-
- Raw JSON.
-
-
-
-
- An integer.
-
-
-
-
- A float.
-
-
-
-
- A string.
-
-
-
-
- A boolean.
-
-
-
-
- A null token.
-
-
-
-
- An undefined token.
-
-
-
-
- An object end token.
-
-
-
-
- An array end token.
-
-
-
-
- A constructor end token.
-
-
-
-
- A Date.
-
-
-
-
- Byte data.
-
-
-
-
-
- Represents a reader that provides
- validation.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Sets an event handler for receiving schema validation errors.
-
-
-
-
- Gets the text value of the current JSON token.
-
-
-
-
-
- Gets the depth of the current token in the JSON document.
-
- The depth of the current token in the JSON document.
-
-
-
- Gets the path of the current JSON token.
-
-
-
-
- Gets the quotation mark character used to enclose the value of a string.
-
-
-
-
-
- Gets the type of the current JSON token.
-
-
-
-
-
- Gets the .NET type for the current JSON token.
-
-
-
-
-
- Initializes a new instance of the class that
- validates the content returned from the given .
-
- The to read from while validating.
-
-
-
- Gets or sets the schema.
-
- The schema.
-
-
-
- Gets the used to construct this
- .
-
- The specified in the constructor.
-
-
-
- Changes the reader's state to .
- If is set to true , the underlying
- is also closed.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
- A of .
-
-
-
- Reads the next JSON token from the underlying as a
- [].
-
-
- A [] or null if the next JSON token is null.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
- A of .
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
- A of .
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
- A of .
-
-
-
- Reads the next JSON token from the underlying as a
- .
-
- A . This method will return null at the end of an array.
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
-
- A of . This method will return
- null at the end of an array.
-
-
-
-
- Reads the next JSON token from the underlying as a
- of .
-
- A of .
-
-
-
- Reads the next JSON token from the underlying .
-
-
- true if the next token was read successfully; false if there are no more tokens to read.
-
-
-
-
- Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
-
-
-
-
- Asynchronously closes this writer.
- If is set to true , the destination is also closed.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the specified end token.
-
- The end token to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes indent characters.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the JSON value delimiter.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes an indent space.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes raw JSON without changing the writer's state.
-
- The raw JSON to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the end of the current JSON object or array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the end of an array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the end of a constructor.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the end of a JSON object.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a null value.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
- A flag to indicate whether the text should be escaped when it is written as a JSON property name.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the beginning of a JSON array.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes raw JSON where a value is expected and updates the writer's state.
-
- The raw JSON to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the start of a constructor with the given name.
-
- The name of the constructor.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the beginning of a JSON object.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the current token.
-
- The to read the token from.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the current token.
-
- The to read the token from.
- A flag indicating whether the current token's children should be written.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the token and its value.
-
- The to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the token and its value.
-
- The to write.
-
- The value to write.
- A value is only required for tokens that have an associated value, e.g. the
- property name for
- .
- null can be passed to the method for tokens that don't have a value, e.g.
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a [] value.
-
- The [] value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
- The of value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a value.
-
- The value to write.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes a of
- value.
-
-
- The of
- value to write.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes an undefined value.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously writes the given white space.
-
- The string of white space characters.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Asynchronously ets the state of the .
-
- The being written.
- The value being written.
-
- The token to monitor for cancellation requests. The default value is
- .
-
- A that represents the asynchronous operation.
-
- The default behaviour is to execute synchronously, returning an already-completed task. Derived
- classes can override this behaviour for true asynchronicity.
-
-
-
-
- Gets or sets a value indicating whether the destination should be closed when this writer is closed.
-
-
- true to close the destination when this writer is closed; otherwise false . The default is
- true .
-
-
-
-
- Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed.
-
-
- true to auto-complete the JSON when this writer is closed; otherwise false . The default is
- true .
-
-
-
-
- Gets the top.
-
- The top.
-
-
-
- Gets the state of the writer.
-
-
-
-
- Gets the path of the writer.
-
-
-
-
- Gets or sets a value indicating how JSON text output should be formatted.
-
-
-
-
- Gets or sets how dates are written to JSON text.
-
-
-
-
- Gets or sets how time zones are handled when writing JSON text.
-
-
-
-
- Gets or sets how strings are escaped when writing JSON text.
-
-
-
-
- Gets or sets how special floating point numbers, e.g. ,
- and
- ,
- are written to JSON text.
-
-
-
-
- Gets or sets how and
- values are formatted when writing JSON text.
-
-
-
-
- Gets or sets the culture used when writing JSON. Defaults to
- .
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Flushes whatever is in the buffer to the destination and also flushes the destination.
-
-
-
-
- Closes this writer.
- If is set to true , the destination is also closed.
- If is set to true , the JSON is auto-completed.
-
-
-
-
- Writes the beginning of a JSON object.
-
-
-
-
- Writes the end of a JSON object.
-
-
-
-
- Writes the beginning of a JSON array.
-
-
-
-
- Writes the end of an array.
-
-
-
-
- Writes the start of a constructor with the given name.
-
- The name of the constructor.
-
-
-
- Writes the end constructor.
-
-
-
-
- Writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
-
-
-
- Writes the property name of a name/value pair of a JSON object.
-
- The name of the property.
- A flag to indicate whether the text should be escaped when it is written as a JSON property name.
-
-
-
- Writes the end of the current JSON object or array.
-
-
-
-
- Writes the current token and its children.
-
- The to read the token from.
-
-
-
- Writes the current token.
-
- The to read the token from.
- A flag indicating whether the current token's children should be written.
-
-
-
- Writes the token and its value.
-
- The to write.
-
- The value to write.
- A value is only required for tokens that have an associated value, e.g. the
- property name for
- .
- null can be passed to the method for tokens that don't have a value, e.g.
- .
-
-
-
-
- Writes the token.
-
- The to write.
-
-
-
- Writes the specified end token.
-
- The end token to write.
-
-
-
- Writes indent characters.
-
-
-
-
- Writes the JSON value delimiter.
-
-
-
-
- Writes an indent space.
-
-
-
-
- Writes a null value.
-
-
-
-
- Writes an undefined value.
-
-
-
-
- Writes raw JSON without changing the writer's state.
-
- The raw JSON to write.
-
-
-
- Writes raw JSON where a value is expected and updates the writer's state.
-
- The raw JSON to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a of value.
-
- The of value to write.
-
-
-
- Writes a of value.
-
-
- The of
- value to write.
-
-
-
-
- Writes a [] value.
-
- The [] value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
- An error will raised if the value cannot be written as a single JSON token.
-
- The value to write.
-
-
-
- Writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
-
-
- Writes the given white space.
-
- The string of white space characters.
-
-
-
- Releases unmanaged and - optionally - managed resources.
-
-
- true to release both managed and unmanaged resources; false
- to release only unmanaged resources.
-
-
-
-
- Sets the state of the .
-
- The being written.
- The value being written.
-
-
-
- The exception thrown when an error occurs while writing JSON text.
-
-
-
-
- Gets the path to the JSON where the error occurred.
-
- The path to the JSON where the error occurred.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class
- with a specified error message.
-
- The error message that explains the reason for the exception.
-
-
-
- Initializes a new instance of the class
- with a specified error message and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Initializes a new instance of the class.
-
- The that holds the serialized object data about the exception being thrown.
- The that contains contextual information about the source or destination.
-
- The parameter is
- null .
-
-
- The class name is
- null or is zero (0).
-
-
-
-
- Initializes a new instance of the class
- with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
- The path to the JSON where the error occurred.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Specifies how JSON comments are handled when loading JSON.
-
-
-
-
- Ignore comments.
-
-
-
-
- Load comments as a with type
- .
-
-
-
-
- Contains the LINQ to JSON extension methods.
-
-
-
-
- Returns a collection of tokens that contains the ancestors of every token in the source collection.
-
-
- The type of the objects in source, constrained to
- .
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains the ancestors of every token in the source collection.
-
-
-
-
- Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection.
-
-
- The type of the objects in source, constrained to
- .
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains every token in the source collection, the ancestors of every token in the source collection.
-
-
-
-
- Returns a collection of tokens that contains the descendants of every token in the source collection.
-
-
- The type of the objects in source, constrained to
- .
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains the descendants of every token in the source collection.
-
-
-
-
- Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection.
-
-
- The type of the objects in source, constrained to
- .
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains every token in the source collection, and the descendants of every token in the source collection.
-
-
-
-
- Returns a collection of child properties of every object in the source collection.
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains the properties of every object in the source collection.
-
-
-
-
- Returns a collection of child values of every object in the source collection with the given key.
-
-
- An of
- that contains the source collection.
-
- The token key.
-
- An of
- that contains the values of every token in the source collection with the given key.
-
-
-
-
- Returns a collection of child values of every object in the source collection.
-
-
- An of
- that contains the source collection.
-
-
- An of
- that contains the values of every token in the source collection.
-
-
-
-
- Returns a collection of converted child values of every object in the source collection with the given key.
-
- The type to convert the values to.
-
- An of
- that contains the source collection.
-
- The token key.
- An that contains the converted values of every token in the source collection with the given key.
-
-
-
- Returns a collection of converted child values of every object in the source collection.
-
- The type to convert the values to.
-
- An of
- that contains the source collection.
-
- An that contains the converted values of every token in the source collection.
-
-
-
- Converts the value.
-
- The type to convert the value to.
-
- A cast as a
- of
- .
-
- A converted value.
-
-
-
- Converts the value.
-
- The source collection type.
- The type to convert the value to.
-
- A cast as a
- of
- .
-
- A converted value.
-
-
-
- Returns a collection of child tokens of every array in the source collection.
-
- The source collection type.
-
- An of
- that contains the source collection.
-
-
- An of
- that contains the values of every token in the source collection.
-
-
-
-
- Returns a collection of converted child tokens of every array in the source collection.
-
-
- An of
- that contains the source collection.
-
- The type to convert the values to.
- The source collection type.
- An that contains the converted values of every token in the source collection.
-
-
-
- Returns the input typed as .
-
-
- An of
- that contains the source collection.
-
- The input typed as .
-
-
-
- Returns the input typed as .
-
- The source collection type.
-
- An of
- that contains the source collection.
-
- The input typed as .
-
-
-
- Represents a collection of objects.
-
- The type of token.
-
-
-
- Gets the of
- with the specified key.
-
-
-
-
-
- Represents a JSON array.
-
-
-
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A representing the asynchronous load. The
- property contains the JSON that was read from the specified
- .
-
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A representing the asynchronous load. The
- property contains the JSON that was read from the specified
- .
-
-
-
-
- Gets the container's children tokens.
-
- The container's children tokens.
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Initializes a new instance of the class with the specified content.
-
- The contents of the array.
-
-
-
- Initializes a new instance of the class with the specified content.
-
- The contents of the array.
-
-
-
- Loads an from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Loads an from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
- A populated from the string that contains JSON.
-
-
-
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
- A populated from the string that contains JSON.
-
-
-
-
-
-
- Creates a from an object.
-
-
- The object that will be used to create
- .
-
- A with the values of the specified object.
-
-
-
- Creates a from an object.
-
-
- The object that will be used to create
- .
-
- The that will be used to read the object.
- A with the values of the specified object.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of which will be used when writing the token.
-
-
-
- Gets the with the specified key.
-
- The with the specified key.
-
-
-
- Gets or sets the at the specified index.
-
-
-
-
-
- Determines the index of a specific item in the .
-
- The object to locate in the .
-
- The index of if found in the list; otherwise, -1.
-
-
-
-
- Inserts an item to the at the specified index.
-
- The zero-based index at which should be inserted.
- The object to insert into the .
-
- is not a valid index in the
- .
-
-
-
-
- Removes the item at the specified index.
-
- The zero-based index of the item to remove.
-
- is not a valid index in the
- .
-
-
-
-
- Returns an enumerator that iterates through the collection.
-
-
- A of
- that can be used to iterate through the collection.
-
-
-
-
- Adds an item to the .
-
- The object to add to the .
-
-
-
- Removes all items from the .
-
-
-
-
- Determines whether the contains a specific value.
-
- The object to locate in the .
-
- true if is found in the
- ; otherwise, false .
-
-
-
-
- Copies the elements of the to an array, starting at a particular array index.
-
- The array.
- Index of the array.
-
-
-
- Gets a value indicating whether the is read-only.
-
-
- true if the is read-only; otherwise,
- false .
-
-
-
-
- Removes the first occurrence of a specific object from the
- .
-
- The object to remove from the .
-
- true if was successfully removed from the
- ; otherwise, false . This method also returns
- false if is not found in the original
- .
-
-
-
-
- Represents a JSON constructor.
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous load. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous load. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Gets the container's children tokens.
-
- The container's children tokens.
-
-
-
- Gets or sets the name of this constructor.
-
- The constructor name.
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Initializes a new instance of the class with the specified name and content.
-
- The constructor name.
- The contents of the constructor.
-
-
-
- Initializes a new instance of the class with the specified name and content.
-
- The constructor name.
- The contents of the constructor.
-
-
-
- Initializes a new instance of the class with the specified name.
-
- The constructor name.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of which will be used when writing the token.
-
-
-
- Gets the with the specified key.
-
- The with the specified key.
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Represents a token that can contain other tokens.
-
-
-
-
- Occurs when the list changes or an item in the list changes.
-
-
-
-
- Occurs before an item is added to the collection.
-
-
-
-
- Occurs when the items list of the collection has changed, or the collection is reset.
-
-
-
-
- Gets the container's children tokens.
-
- The container's children tokens.
-
-
-
- Raises the event.
-
- The instance containing the event data.
-
-
-
- Raises the event.
-
- The instance containing the event data.
-
-
-
- Raises the event.
-
-
- The
- instance containing the event data.
-
-
-
-
- Gets a value indicating whether this token has child tokens.
-
-
- true if this token has child values; otherwise, false .
-
-
-
-
- Get the first child token of this token.
-
-
- A containing the first child token of the
- .
-
-
-
-
- Get the last child token of this token.
-
-
- A containing the last child token of the
- .
-
-
-
-
- Returns a collection of the child tokens of this token, in document order.
-
-
- An of
- containing the child tokens of this
- , in document order.
-
-
-
-
- Returns a collection of the child values of this token, in document order.
-
- The type to convert the values to.
-
- A containing the child values of this
- , in document order.
-
-
-
-
- Returns a collection of the descendant tokens for this token in document order.
-
-
- An of
- containing the descendant tokens of the
- .
-
-
-
-
- Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order.
-
-
- An of
- containing this token, and all the descendant tokens of the
- .
-
-
-
-
- Adds the specified content as children of this .
-
- The content to be added.
-
-
-
- Adds the specified content as the first children of this
- .
-
- The content to be added.
-
-
-
- Creates a that can be used to add tokens to the
- .
-
- A that is ready to have content written to it.
-
-
-
- Replaces the child nodes of this token with the specified content.
-
- The content.
-
-
-
- Removes the child nodes from this token.
-
-
-
-
- Merge the specified content into this .
-
- The content to be merged.
-
-
-
- Merge the specified content into this using
- .
-
- The content to be merged.
- The used to merge the content.
-
-
-
- Gets the count of child JSON tokens.
-
- The count of child JSON tokens.
-
-
-
- Represents a collection of objects.
-
- The type of token.
-
-
-
- An empty collection of objects.
-
-
-
-
- Initializes a new instance of the struct.
-
- The enumerable.
-
-
-
- Returns an enumerator that can be used to iterate through the collection.
-
-
- A that can be used to iterate through the collection.
-
-
-
-
- Gets the of
- with the specified key.
-
-
-
-
-
- Determines whether the specified is equal to this instance.
-
- The to compare with this instance.
-
- true if the specified is equal to this instance; otherwise,
- false .
-
-
-
-
- Determines whether the specified is equal to this instance.
-
- The to compare with this instance.
-
- true if the specified is equal to this instance; otherwise,
- false .
-
-
-
-
- Returns a hash code for this instance.
-
-
- A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
-
-
-
-
- Represents a JSON object.
-
-
-
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous load. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous load. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Gets the container's children tokens.
-
- The container's children tokens.
-
-
-
- Occurs when a property value changes.
-
-
-
-
- Occurs when a property value is changing.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Initializes a new instance of the class with the specified content.
-
- The contents of the object.
-
-
-
- Initializes a new instance of the class with the specified content.
-
- The contents of the object.
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Gets an of
- of this object's properties.
-
-
- An of
- of this object's properties.
-
-
-
-
- Gets a the specified name.
-
- The property name.
-
- A with the specified name or null
- .
-
-
-
-
- Gets a of
- of this object's property values.
-
-
- A of
- of this object's property values.
-
-
-
-
- Gets the with the specified key.
-
- The with the specified key.
-
-
-
- Gets or sets the with the specified property name.
-
-
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- A that contains the JSON that was read from the specified
- .
-
-
- is not valid JSON.
-
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the JSON that was read from the specified
- .
-
-
- is not valid JSON.
-
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
- A populated from the string that contains JSON.
-
- is not valid JSON.
-
-
-
-
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
- A populated from the string that contains JSON.
-
- is not valid JSON.
-
-
-
-
-
-
-
- Creates a from an object.
-
-
- The object that will be used to create
- .
-
- A with the values of the specified object.
-
-
-
- Creates a from an object.
-
-
- The object that will be used to create
- .
-
- The that will be used to read the object.
- A with the values of the specified object.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of which will be used when writing the token.
-
-
-
- Gets the with the specified property name.
-
- Name of the property.
- The with the specified property name.
-
-
-
- Gets the with the specified property name.
- The exact property name will be searched for first and if no matching property is found then
- the will be used to match a property.
-
- Name of the property.
- One of the enumeration values that specifies how the strings will be compared.
- The with the specified property name.
-
-
-
- Tries to get the with the specified property name.
- The exact property name will be searched for first and if no matching property is found then
- the will be used to match a property.
-
- Name of the property.
- The value.
- One of the enumeration values that specifies how the strings will be compared.
- true if a value was successfully retrieved; otherwise, false .
-
-
-
- Adds the specified property name.
-
- Name of the property.
- The value.
-
-
-
- Determines whether the JSON object has the specified property name.
-
- Name of the property.
- true if the JSON object has the specified property name; otherwise, false .
-
-
-
- Removes the property with the specified name.
-
- Name of the property.
- true if item was successfully removed; otherwise, false .
-
-
-
- Tries to get the with the specified property name.
-
- Name of the property.
- The value.
- true if a value was successfully retrieved; otherwise, false .
-
-
-
- Returns an enumerator that can be used to iterate through the collection.
-
-
- A that can be used to iterate through the collection.
-
-
-
-
- Raises the event with the provided arguments.
-
- Name of the property.
-
-
-
- Raises the event with the provided arguments.
-
- Name of the property.
-
-
-
- Returns the responsible for binding operations performed on this object.
-
- The expression tree representation of the runtime value.
-
- The to bind this object.
-
-
-
-
- Represents a JSON property.
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A representing the asynchronous creation. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Asynchronously loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A representing the asynchronous creation. The
-
- property returns a that contains the JSON that was read from the specified
- .
-
-
-
-
- Gets the container's children tokens.
-
- The container's children tokens.
-
-
-
- Gets the property name.
-
- The property name.
-
-
-
- Gets or sets the property value.
-
- The property value.
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Initializes a new instance of the class.
-
- The property name.
- The property content.
-
-
-
- Initializes a new instance of the class.
-
- The property name.
- The property content.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of which will be used when writing the token.
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Loads a from a
- .
-
-
- A that will be read for the content of the
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the JSON that was read from the specified
- .
-
-
-
-
- Represents a view of a .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The name.
-
-
-
- When overridden in a derived class, returns whether resetting an object changes its value.
-
-
- true if resetting the component changes its value; otherwise, false .
-
- The component to test for reset capability.
-
-
-
- When overridden in a derived class, gets the current value of the property on a component.
-
-
- The value of a property for a given component.
-
- The component with the property for which to retrieve the value.
-
-
-
- When overridden in a derived class, resets the value for this property of the component to the default value.
-
- The component with the property value that is to be reset to the default value.
-
-
-
- When overridden in a derived class, sets the value of the component to a different value.
-
- The component with the property value that is to be set.
- The new value.
-
-
-
- When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
-
-
- true if the property should be persisted; otherwise, false .
-
- The component with the property to be examined for persistence.
-
-
-
- When overridden in a derived class, gets the type of the component this property is bound to.
-
-
- A that represents the type of component this property is bound to.
- When the or
-
- methods are invoked, the object specified might be an instance of this type.
-
-
-
-
- When overridden in a derived class, gets a value indicating whether this property is read-only.
-
-
- true if the property is read-only; otherwise, false .
-
-
-
-
- When overridden in a derived class, gets the type of the property.
-
-
- A that represents the type of the property.
-
-
-
-
- Gets the hash code for the name of the member.
-
-
-
- The hash code for the name of the member.
-
-
-
-
- Represents a raw JSON string.
-
-
-
-
- Asynchronously creates an instance of with the content of the reader's current token.
-
- The reader.
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A representing the asynchronous creation. The
-
- property returns an instance of with the content of the reader's current token.
-
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Initializes a new instance of the class.
-
- The raw json.
-
-
-
- Creates an instance of with the content of the reader's current token.
-
- The reader.
- An instance of with the content of the reader's current token.
-
-
-
- Specifies the settings used when loading JSON.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Gets or sets how JSON comments are handled when loading JSON.
-
- The JSON comment handling.
-
-
-
- Gets or sets how JSON line info is handled when loading JSON.
-
- The JSON line info handling.
-
-
-
- Specifies the settings used when merging JSON.
-
-
-
-
- Gets or sets the method used when merging JSON arrays.
-
- The method used when merging JSON arrays.
-
-
-
- Gets or sets how null value properties are merged.
-
- How null value properties are merged.
-
-
-
- Represents an abstract JSON token.
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Asynchronously creates a from a
- .
-
-
- An positioned at the token to read into this
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous creation. The
- property returns a
- that contains
- the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Asynchronously creates a from a
- .
-
-
- An positioned at the token to read into this
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous creation. The
- property returns a
- that contains
- the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Asynchronously creates a from a
- .
-
-
- A positioned at the token to read into this
- .
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous creation. The
-
- property returns a that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Asynchronously creates a from a
- .
-
-
- A positioned at the token to read into this
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- The token to monitor for cancellation requests. The default value is
- .
-
-
- A that represents the asynchronous creation. The
-
- property returns a that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Gets a comparer that can compare two tokens for value equality.
-
- A that can compare two nodes for value equality.
-
-
-
- Gets or sets the parent.
-
- The parent.
-
-
-
- Gets the root of this
- .
-
-
- The root of this
- .
-
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Gets a value indicating whether this token has child tokens.
-
-
- true if this token has child values; otherwise, false .
-
-
-
-
- Compares the values of two tokens, including the values of all descendant tokens.
-
- The first to compare.
- The second to compare.
- true if the tokens are equal; otherwise false .
-
-
-
- Gets the next sibling token of this node.
-
- The that contains the next sibling token.
-
-
-
- Gets the previous sibling token of this node.
-
- The that contains the previous sibling token.
-
-
-
- Gets the path of the JSON token.
-
-
-
-
- Adds the specified content immediately after this token.
-
- A content object that contains simple content or a collection of content objects to be added after this token.
-
-
-
- Adds the specified content immediately before this token.
-
- A content object that contains simple content or a collection of content objects to be added before this token.
-
-
-
- Returns a collection of the ancestor tokens of this token.
-
- A collection of the ancestor tokens of this token.
-
-
-
- Returns a collection of tokens that contain this token, and the ancestors of this token.
-
- A collection of tokens that contain this token, and the ancestors of this token.
-
-
-
- Returns a collection of the sibling tokens after this token, in document order.
-
- A collection of the sibling tokens after this tokens, in document order.
-
-
-
- Returns a collection of the sibling tokens before this token, in document order.
-
- A collection of the sibling tokens before this token, in document order.
-
-
-
- Gets the with the specified key.
-
- The with the specified key.
-
-
-
- Gets the with the specified key converted to the specified type.
-
- The type to convert the token to.
- The token key.
- The converted token value.
-
-
-
- Get the first child token of this token.
-
-
- A containing the first child token of the
- .
-
-
-
-
- Get the last child token of this token.
-
-
- A containing the last child token of the
- .
-
-
-
-
- Returns a collection of the child tokens of this token, in document order.
-
-
- An of
- containing the child tokens of this
- , in document order.
-
-
-
-
- Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
-
- The type to filter the child tokens on.
-
- A containing the child tokens of this
- , in document order.
-
-
-
-
- Returns a collection of the child values of this token, in document order.
-
- The type to convert the values to.
-
- A containing the child values of this
- , in document order.
-
-
-
-
- Removes this token from its parent.
-
-
-
-
- Replaces this token with the specified token.
-
- The value.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of which will be used when writing the token.
-
-
-
- Returns the indented JSON for this token.
-
-
- The indented JSON for this token.
-
-
-
-
- Returns the JSON for this token using the given formatting and converters.
-
- Indicates how the output should be formatted.
- A collection of s which will be used when writing the token.
- The JSON for this token using the given formatting and converters.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- [].
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- of .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an explicit conversion from to
- .
-
- The value.
- The result of the conversion.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from [] to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from to
- .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Performs an implicit conversion from of
- to .
-
- The value to create a from.
- The initialized with the specified value.
-
-
-
- Creates a for this token.
-
- A that can be used to read this token and its descendants.
-
-
-
- Creates a from an object.
-
-
- The object that will be used to create
- .
-
- A with the value of the specified object.
-
-
-
- Creates a from an object using the specified
- .
-
-
- The object that will be used to create
- .
-
- The that will be used when reading the object.
- A with the value of the specified object.
-
-
-
- Creates an instance of the specified .NET type from the
- .
-
- The object type that the token will be deserialized to.
- The new object created from the JSON value.
-
-
-
- Creates an instance of the specified .NET type from the
- .
-
- The object type that the token will be deserialized to.
- The new object created from the JSON value.
-
-
-
- Creates an instance of the specified .NET type from the
- using the specified
- .
-
- The object type that the token will be deserialized to.
- The that will be used when creating the object.
- The new object created from the JSON value.
-
-
-
- Creates an instance of the specified .NET type from the
- using the specified
- .
-
- The object type that the token will be deserialized to.
- The that will be used when creating the object.
- The new object created from the JSON value.
-
-
-
- Creates a from a
- .
-
-
- A positioned at the token to read into this
- .
-
-
- A that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Creates a from a
- .
-
-
- An positioned at the token to read into this
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
- A populated from the string that contains JSON.
-
-
-
- Load a from a string that contains JSON.
-
- A that contains JSON.
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
- A populated from the string that contains JSON.
-
-
-
- Creates a from a
- .
-
-
- A positioned at the token to read into this
- .
-
-
- The used to load the JSON.
- If this is null , default load settings will be used.
-
-
- A that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Creates a from a
- .
-
-
- A positioned at the token to read into this
- .
-
-
- A that contains the token and its descendant tokens
- that were read from the reader. The runtime type of the token is determined
- by the token type of the first token encountered in the reader.
-
-
-
-
- Selects a using a JPath expression. Selects the token that matches the object path.
-
-
- A that contains a JPath expression.
-
- A , or null .
-
-
-
- Selects a using a JPath expression. Selects the token that matches the object path.
-
-
- A that contains a JPath expression.
-
- A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
- A .
-
-
-
- Selects a collection of elements using a JPath expression.
-
-
- A that contains a JPath expression.
-
-
- An of
- that contains the selected elements.
-
-
-
-
- Selects a collection of elements using a JPath expression.
-
-
- A that contains a JPath expression.
-
- A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
-
- An of
- that contains the selected elements.
-
-
-
-
- Returns the responsible for binding operations performed on this object.
-
- The expression tree representation of the runtime value.
-
- The to bind this object.
-
-
-
-
- Returns the responsible for binding operations performed on this object.
-
- The expression tree representation of the runtime value.
-
- The to bind this object.
-
-
-
-
- Creates a new instance of the . All child tokens are recursively cloned.
-
- A new instance of the .
-
-
-
- Adds an object to the annotation list of this .
-
- The annotation to add.
-
-
-
- Get the first annotation object of the specified type from this
- .
-
- The type of the annotation to retrieve.
- The first annotation object that matches the specified type, or null if no annotation is of the specified type.
-
-
-
- Gets the first annotation object of the specified type from this
- .
-
- The of the annotation to retrieve.
- The first annotation object that matches the specified type, or null if no annotation is of the specified type.
-
-
-
- Gets a collection of annotations of the specified type for this
- .
-
- The type of the annotations to retrieve.
-
- An that contains the annotations for this
- .
-
-
-
-
- Gets a collection of annotations of the specified type for this
- .
-
- The of the annotations to retrieve.
-
- An of
- that contains the annotations that match the specified type for this
- .
-
-
-
-
- Removes the annotations of the specified type from this
- .
-
- The type of annotations to remove.
-
-
-
- Removes the annotations of the specified type from this
- .
-
- The of annotations to remove.
-
-
-
- Compares tokens to determine whether they are equal.
-
-
-
-
- Determines whether the specified objects are equal.
-
- The first object of type to compare.
- The second object of type to compare.
-
- true if the specified objects are equal; otherwise, false .
-
-
-
-
- Returns a hash code for the specified object.
-
- The for which a hash code is to be returned.
- A hash code for the specified object.
-
- The type of is a reference type and
- is null .
-
-
-
-
- Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
-
-
-
-
- Gets the at the reader's current position.
-
-
-
-
- Initializes a new instance of the class.
-
- The token to read from.
-
-
-
- Reads the next JSON token from the underlying .
-
-
- true if the next token was read successfully; false if there are no more tokens to read.
-
-
-
-
- Gets the path of the current JSON token.
-
-
-
-
- Specifies the type of token.
-
-
-
-
- No token type has been set.
-
-
-
-
- A JSON object.
-
-
-
-
- A JSON array.
-
-
-
-
- A JSON constructor.
-
-
-
-
- A JSON object property.
-
-
-
-
- A comment.
-
-
-
-
- An integer value.
-
-
-
-
- A float value.
-
-
-
-
- A string value.
-
-
-
-
- A boolean value.
-
-
-
-
- A null value.
-
-
-
-
- An undefined value.
-
-
-
-
- A date value.
-
-
-
-
- A raw JSON value.
-
-
-
-
- A collection of bytes value.
-
-
-
-
- A Guid value.
-
-
-
-
- A Uri value.
-
-
-
-
- A TimeSpan value.
-
-
-
-
- Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
-
-
-
-
- Gets the at the writer's current position.
-
-
-
-
- Gets the token being written.
-
- The token being written.
-
-
-
- Initializes a new instance of the class writing to the given
- .
-
- The container being written to.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Flushes whatever is in the buffer to the underlying
- .
-
-
-
-
- Closes this writer.
- If is set to true , the JSON is auto-completed.
-
-
- Setting to true has no additional effect, since the underlying
- is a type that cannot be closed.
-
-
-
-
- Writes the beginning of a JSON object.
-
-
-
-
- Writes the beginning of a JSON array.
-
-
-
-
- Writes the start of a constructor with the given name.
-
- The name of the constructor.
-
-
-
- Writes the end.
-
- The token.
-
-
-
- Writes the property name of a name/value pair on a JSON object.
-
- The name of the property.
-
-
-
- Writes a value.
- An error will be raised if the value cannot be written as a single JSON token.
-
- The value to write.
-
-
-
- Writes a null value.
-
-
-
-
- Writes an undefined value.
-
-
-
-
- Writes raw JSON.
-
- The raw JSON to write.
-
-
-
- Writes a comment /*...*/ containing the specified text.
-
- Text to place inside the comment.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a [] value.
-
- The [] value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Writes a value.
-
- The value to write.
-
-
-
- Represents a value in JSON (string, integer, date, etc).
-
-
-
-
- Writes this token to a asynchronously.
-
- A into which this method will write.
- The token to monitor for cancellation requests.
- A collection of which will be used when writing the token.
- A that represents the asynchronous write operation.
-
-
-
- Initializes a new instance of the class from another
- object.
-
- A object to copy from.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Initializes a new instance of the class with the given value.
-
- The value.
-
-
-
- Gets a value indicating whether this token has child tokens.
-
-
- true if this token has child values; otherwise, false .
-
-
-
-
- Creates a comment with the given value.
-
- The value.
- A comment with the given value.
-
-
-
- Creates a string with the given value.
-
- The value.
- A string with the given value.
-
-
-
- Creates a null value.
-
- A null value.
-
-
-
- Creates a undefined value.
-
- A undefined value.
-
-
-
- Gets the node type for this .
-
- The type.
-
-
-
- Gets or sets the underlying token value.
-
- The underlying token value.
-
-
-
- Writes this token to a .
-
- A into which this method will write.
- A collection of s which will be used when writing the token.
-
-
-
- Indicates whether the current object is equal to another object of the same type.
-
-
- true if the current object is equal to the parameter; otherwise,
- false .
-
- An object to compare with this object.
-
-
-
- Determines whether the specified is equal to the current
- .
-
-
- The to compare with the current
- .
-
-
- true if the specified is equal to the current
- ; otherwise, false .
-
-
-
-
- Serves as a hash function for a particular type.
-
-
- A hash code for the current .
-
-
-
-
- Returns a that represents this instance.
-
-
- A that represents this instance.
-
-
-
-
- Returns a that represents this instance.
-
- The format.
-
- A that represents this instance.
-
-
-
-
- Returns a that represents this instance.
-
- The format provider.
-
- A that represents this instance.
-
-
-
-
- Returns a that represents this instance.
-
- The format.
- The format provider.
-
- A that represents this instance.
-
-
-
-
- Returns the responsible for binding operations performed on this object.
-
- The expression tree representation of the runtime value.
-
- The to bind this object.
-
-
-
-
- Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
-
- An object to compare with this instance.
-
- A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
- Value
- Meaning
- Less than zero
- This instance is less than .
- Zero
- This instance is equal to .
- Greater than zero
- This instance is greater than .
-
-
- is not of the same type as this instance.
-
-
-
-
- Specifies how line information is handled when loading JSON.
-
-
-
-
- Ignore line information.
-
-
-
-
- Load line information.
-
-
-
-
- Specifies how JSON arrays are merged together.
-
-
-
- Concatenate arrays.
-
-
- Union arrays, skipping items that already exist.
-
-
- Replace all array items.
-
-
- Merge array items together, matched by index.
-
-
-
- Specifies how null value properties are merged.
-
-
-
-
- The content's null value properties will be ignored during merging.
-
-
-
-
- The content's null value properties will be merged.
-
-
-
-
- Specifies the member serialization options for the
- .
-
-
-
-
- All public members are serialized by default. Members can be excluded using
- or
- .
- This is the default member serialization mode.
-
-
-
-
- Only members marked with or
- are serialized.
- This member serialization mode can also be set by marking the class with
- .
-
-
-
-
- All public and private fields are serialized. Members can be excluded using
- or
- .
- This member serialization mode can also be set by marking the class with
-
- and setting IgnoreSerializableAttribute on
- to false .
-
-
-
-
- Specifies metadata property handling options for the
- .
-
-
-
-
- Read metadata properties located at the start of a JSON object.
-
-
-
-
- Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance.
-
-
-
-
- Do not try to read metadata properties.
-
-
-
-
- Specifies missing member handling options for the
- .
-
-
-
-
- Ignore a missing member and do not attempt to deserialize it.
-
-
-
-
- Throw a when a missing member is encountered during deserialization.
-
-
-
-
- Specifies null value handling options for the
- .
-
-
-
-
-
-
-
-
- Include null values when serializing and deserializing objects.
-
-
-
-
- Ignore null values when serializing and deserializing objects.
-
-
-
-
- Specifies how object creation is handled by the
- .
-
-
-
-
- Reuse existing objects, create new objects when needed.
-
-
-
-
- Only reuse existing objects.
-
-
-
-
- Always create new objects.
-
-
-
-
- Specifies reference handling options for the .
- Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement
- .
-
-
-
-
-
-
-
- Do not preserve references when serializing types.
-
-
-
-
- Preserve references when serializing into a JSON object structure.
-
-
-
-
- Preserve references when serializing into a JSON array structure.
-
-
-
-
- Preserve references when serializing.
-
-
-
-
- Specifies reference loop handling options for the
- .
-
-
-
-
- Throw a when a loop is encountered.
-
-
-
-
- Ignore loop references and do not serialize.
-
-
-
-
- Serialize loop references.
-
-
-
-
- Indicating whether a property is required.
-
-
-
-
- The property is not required. The default state.
-
-
-
-
- The property must be defined in JSON but can be a null value.
-
-
-
-
- The property must be defined in JSON and cannot be a null value.
-
-
-
-
- The property is not required but it cannot be a null value.
-
-
-
-
-
- Contains the JSON schema extension methods.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
-
- Determines whether the is valid.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
- The source to test.
- The schema to test with.
-
- true if the specified is valid; otherwise,
- false .
-
-
-
-
-
- Determines whether the is valid.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
- The source to test.
- The schema to test with.
- When this method returns, contains any error messages generated while validating.
-
- true if the specified is valid; otherwise,
- false .
-
-
-
-
-
- Validates the specified .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
- The source to test.
- The schema to test with.
-
-
-
-
- Validates the specified .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
- The source to test.
- The schema to test with.
- The validation event handler.
-
-
-
-
- An in-memory representation of a JSON Schema.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Gets or sets the id.
-
-
-
-
- Gets or sets the title.
-
-
-
-
- Gets or sets whether the object is required.
-
-
-
-
- Gets or sets whether the object is read-only.
-
-
-
-
- Gets or sets whether the object is visible to users.
-
-
-
-
- Gets or sets whether the object is transient.
-
-
-
-
- Gets or sets the description of the object.
-
-
-
-
- Gets or sets the types of values allowed by the object.
-
- The type.
-
-
-
- Gets or sets the pattern.
-
- The pattern.
-
-
-
- Gets or sets the minimum length.
-
- The minimum length.
-
-
-
- Gets or sets the maximum length.
-
- The maximum length.
-
-
-
- Gets or sets a number that the value should be divisible by.
-
- A number that the value should be divisible by.
-
-
-
- Gets or sets the minimum.
-
- The minimum.
-
-
-
- Gets or sets the maximum.
-
- The maximum.
-
-
-
- Gets or sets a flag indicating whether the value can not equal the number defined by the
- minimum attribute ( ).
-
-
- A flag indicating whether the value can not equal the number defined by the minimum
- attribute ( ).
-
-
-
-
- Gets or sets a flag indicating whether the value can not equal the number defined by the
- maximum attribute ( ).
-
-
- A flag indicating whether the value can not equal the number defined by the maximum
- attribute ( ).
-
-
-
-
- Gets or sets the minimum number of items.
-
- The minimum number of items.
-
-
-
- Gets or sets the maximum number of items.
-
- The maximum number of items.
-
-
-
- Gets or sets the of items.
-
- The of items.
-
-
-
- Gets or sets a value indicating whether items in an array are validated using the
- instance at their array position from
- .
-
-
- true if items are validated using their array position; otherwise, false .
-
-
-
-
- Gets or sets the of additional items.
-
- The of additional items.
-
-
-
- Gets or sets a value indicating whether additional items are allowed.
-
-
- true if additional items are allowed; otherwise, false .
-
-
-
-
- Gets or sets whether the array items must be unique.
-
-
-
-
- Gets or sets the of properties.
-
- The of properties.
-
-
-
- Gets or sets the of additional properties.
-
- The of additional properties.
-
-
-
- Gets or sets the pattern properties.
-
- The pattern properties.
-
-
-
- Gets or sets a value indicating whether additional properties are allowed.
-
-
- true if additional properties are allowed; otherwise, false .
-
-
-
-
- Gets or sets the required property if this property is present.
-
- The required property if this property is present.
-
-
-
- Gets or sets the a collection of valid enum values allowed.
-
- A collection of valid enum values allowed.
-
-
-
- Gets or sets disallowed types.
-
- The disallowed types.
-
-
-
- Gets or sets the default value.
-
- The default value.
-
-
-
- Gets or sets the collection of that this schema extends.
-
- The collection of that this schema extends.
-
-
-
- Gets or sets the format.
-
- The format.
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Reads a from the specified
- .
-
- The containing the JSON Schema to read.
- The object representing the JSON Schema.
-
-
-
- Reads a from the specified
- .
-
- The containing the JSON Schema to read.
- The to use when resolving schema references.
- The object representing the JSON Schema.
-
-
-
- Load a from a string that contains JSON Schema.
-
- A that contains JSON Schema.
- A populated from the string that contains JSON Schema.
-
-
-
- Load a from a string that contains JSON Schema using the specified
- .
-
- A that contains JSON Schema.
- The resolver.
- A populated from the string that contains JSON Schema.
-
-
-
- Writes this schema to a .
-
- A into which this method will write.
-
-
-
- Writes this schema to a using the specified
- .
-
- A into which this method will write.
- The resolver used.
-
-
-
- Returns a that represents the current
- .
-
-
- A that represents the current .
-
-
-
-
-
- Returns detailed information about the schema exception.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Gets the line number indicating where the error occurred.
-
- The line number indicating where the error occurred.
-
-
-
- Gets the line position indicating where the error occurred.
-
- The line position indicating where the error occurred.
-
-
-
- Gets the path to the JSON where the error occurred.
-
- The path to the JSON where the error occurred.
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Initializes a new instance of the
- class
- with a specified error message.
-
- The error message that explains the reason for the exception.
-
-
-
- Initializes a new instance of the
- class
- with a specified error message and a reference to the inner exception that is the cause of this exception.
-
- The error message that explains the reason for the exception.
-
- The exception that is the cause of the current exception, or
- null if no inner exception is specified.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The that holds the serialized object data about the exception being thrown.
- The that contains contextual information about the source or destination.
-
- The parameter is
- null .
-
-
- The class name is
- null or is zero (0).
-
-
-
-
-
- Generates a from a specified
- .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Gets or sets how undefined schemas are handled by the serializer.
-
-
-
-
- Gets or sets the contract resolver.
-
- The contract resolver.
-
-
-
- Generate a from the specified type.
-
-
- The type to generate a
- from.
-
- A generated from the specified type.
-
-
-
- Generate a from the specified type.
-
-
- The type to generate a
- from.
-
- The used to resolve schema references.
- A generated from the specified type.
-
-
-
- Generate a from the specified type.
-
-
- The type to generate a
- from.
-
-
- Specify whether the generated root
- will be nullable.
-
- A generated from the specified type.
-
-
-
- Generate a from the specified type.
-
-
- The type to generate a
- from.
-
- The used to resolve schema references.
-
- Specify whether the generated root
- will be nullable.
-
- A generated from the specified type.
-
-
-
-
- Resolves from an id.
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Gets or sets the loaded schemas.
-
- The loaded schemas.
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Gets a for the specified reference.
-
- The id.
- A for the specified reference.
-
-
-
-
- The value types allowed by the .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- No type specified.
-
-
-
-
- String type.
-
-
-
-
- Float type.
-
-
-
-
- Integer type.
-
-
-
-
- Boolean type.
-
-
-
-
- Object type.
-
-
-
-
- Array type.
-
-
-
-
- Null type.
-
-
-
-
- Any type.
-
-
-
-
-
- Specifies undefined schema Id handling options for the
- .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Do not infer a schema Id.
-
-
-
-
- Use the .NET type name as the schema Id.
-
-
-
-
- Use the assembly qualified .NET type name as the schema Id.
-
-
-
-
-
- Returns detailed information related to the
- .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- Gets the associated with the validation error.
-
- The JsonSchemaException associated with the validation error.
-
-
-
- Gets the path of the JSON location where the validation error occurred.
-
- The path of the JSON location where the validation error occurred.
-
-
-
- Gets the text description corresponding to the validation error.
-
- The text description.
-
-
-
-
- Represents the callback method that will handle JSON schema validation events and the
- .
-
-
- JSON Schema validation has been moved to its own package. See
- http://www.newtonsoft.com/jsonschema
- for more details.
-
-
-
-
-
- A camel case naming strategy.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- A flag indicating whether dictionary keys should be processed.
-
-
- A flag indicating whether explicitly specified property names should be processed,
- e.g. a property name customized with a
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- A flag indicating whether dictionary keys should be processed.
-
-
- A flag indicating whether explicitly specified property names should be processed,
- e.g. a property name customized with a
- .
-
-
- A flag indicating whether extension data names should be processed.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Resolves the specified property name.
-
- The property name to resolve.
- The resolved property name.
-
-
-
- Resolves member mappings for a type, camel casing property names.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Resolves the contract for a given type.
-
- The type to resolve a contract for.
- The contract for a given type.
-
-
-
- Used by to resolve a
- for a given
- .
-
-
-
-
- Gets a value indicating whether members are being get and set using dynamic code generation.
- This value is determined by the runtime permissions available.
-
-
- true if using dynamic code generation; otherwise, false .
-
-
-
-
- Gets or sets the default members search flags.
-
- The default members search flags.
-
-
-
- Gets or sets a value indicating whether compiler generated members should be serialized.
-
-
- true if serialized compiler generated members; otherwise, false .
-
-
-
-
- Gets or sets a value indicating whether to ignore the
- interface when serializing and deserializing types.
-
-
- true if the interface will be ignored when serializing and deserializing types; otherwise,
- false .
-
-
-
-
- Gets or sets a value indicating whether to ignore the
- attribute when serializing and deserializing types.
-
-
- true if the attribute will be ignored when serializing and deserializing types; otherwise,
- false .
-
-
-
-
- Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types.
-
-
- true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise,
- false .
-
-
-
-
- Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types.
-
-
- true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise,
- false .
-
-
-
-
- Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized.
-
- The naming strategy used to resolve how property names and dictionary keys are serialized.
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Resolves the contract for a given type.
-
- The type to resolve a contract for.
- The contract for a given type.
-
-
-
- Gets the serializable members for the type.
-
- The type to get serializable members for.
- The serializable members for the type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates the constructor parameters.
-
- The constructor to create properties for.
- The type's member properties.
- Properties for the given .
-
-
-
- Creates a for the given
- .
-
- The matching member property.
- The constructor parameter.
-
- A created for the given
- .
-
-
-
-
- Resolves the default for the contract.
-
- Type of the object.
- The contract's default .
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates a for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Determines which contract type is created for the given type.
-
- Type of the object.
- A for the given type.
-
-
-
- Creates properties for the given .
-
- The type to create properties for.
- /// The member serialization mode for the type.
- Properties for the given .
-
-
-
- Creates the used by the serializer to get and set values from a member.
-
- The member.
- The used by the serializer to get and set values from a member.
-
-
-
- Creates a for the given
- .
-
-
- The member's parent
- .
-
-
- The member to create a
- for.
-
-
- A created for the given
- .
-
-
-
-
- Resolves the name of the property.
-
- Name of the property.
- Resolved name of the property.
-
-
-
- Resolves the name of the extension data. By default no changes are made to extension data names.
-
- Name of the extension data.
- Resolved name of the extension data.
-
-
-
- Resolves the key of the dictionary. By default
-
- is used to resolve dictionary keys.
-
- Key of the dictionary.
- Resolved key of the dictionary.
-
-
-
- Gets the resolved name of the property.
-
- Name of the property.
- Name of the property.
-
-
-
- The default naming strategy. Property names and dictionary keys are unchanged.
-
-
-
-
- Resolves the specified property name.
-
- The property name to resolve.
- The resolved property name.
-
-
-
- The default serialization binder used when resolving and loading classes from type names.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- When overridden in a derived class, controls the binding of a serialized object to a type.
-
- Specifies the name of the serialized object.
- Specifies the name of the serialized object.
-
- The type of the object the formatter creates a new instance of.
-
-
-
-
- When overridden in a derived class, controls the binding of a serialized object to a type.
-
- The type of the object the formatter creates a new instance of.
- Specifies the name of the serialized object.
- Specifies the name of the serialized object.
-
-
-
- Represents a trace writer that writes to the application's
- instances.
-
-
-
-
- Gets the that will be used to filter the trace messages passed to the writer.
- For example a filter level of will exclude
- messages and include
- ,
- and
- messages.
-
-
- The that will be used to filter the trace messages passed to the writer.
-
-
-
-
- Writes the specified trace level, message and optional exception.
-
- The at which to write this trace.
- The trace message.
- The trace exception. This parameter is optional.
-
-
-
- Get and set values for a using dynamic methods.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The member info.
-
-
-
- Sets the value.
-
- The target to set the value on.
- The value to set on the target.
-
-
-
- Gets the value.
-
- The target to get the value from.
- The value.
-
-
-
- Provides information surrounding an error.
-
-
-
-
- Gets the error.
-
- The error.
-
-
-
- Gets the original object that caused the error.
-
- The original object that caused the error.
-
-
-
- Gets the member that caused the error.
-
- The member that caused the error.
-
-
-
- Gets the path of the JSON location where the error occurred.
-
- The path of the JSON location where the error occurred.
-
-
-
- Gets or sets a value indicating whether this
- is handled.
-
- true if handled; otherwise, false .
-
-
-
- Provides data for the Error event.
-
-
-
-
- Gets the current object the error event is being raised against.
-
- The current object the error event is being raised against.
-
-
-
- Gets the error context.
-
- The error context.
-
-
-
- Initializes a new instance of the
- class.
-
- The current object.
- The error context.
-
-
-
- Get and set values for a using dynamic methods.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The member info.
-
-
-
- Sets the value.
-
- The target to set the value on.
- The value to set on the target.
-
-
-
- Gets the value.
-
- The target to get the value from.
- The value.
-
-
-
- Provides methods to get attributes.
-
-
-
-
- Returns a collection of all of the attributes, or an empty collection if there are no attributes.
-
- When true , look up the hierarchy chain for the inherited custom attribute.
- A collection of s, or an empty collection.
-
-
-
- Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
-
- The type of the attributes.
- When true , look up the hierarchy chain for the inherited custom attribute.
- A collection of s, or an empty collection.
-
-
-
- Used by to resolve a
- for a given
- .
-
-
-
-
-
-
-
-
- Resolves the contract for a given type.
-
- The type to resolve a contract for.
- The contract for a given type.
-
-
-
- Used to resolve references when serializing and deserializing JSON by the
- .
-
-
-
-
- Resolves a reference to its object.
-
- The serialization context.
- The reference to resolve.
- The object that was resolved from the reference.
-
-
-
- Gets the reference for the specified object.
-
- The serialization context.
- The object to get a reference for.
- The reference to the object.
-
-
-
- Determines whether the specified object is referenced.
-
- The serialization context.
- The object to test for a reference.
-
- true if the specified object is referenced; otherwise, false .
-
-
-
-
- Adds a reference to the specified object.
-
- The serialization context.
- The reference.
- The object to reference.
-
-
-
- Allows users to control class loading and mandate what class to load.
-
-
-
-
- When implemented, controls the binding of a serialized object to a type.
-
- Specifies the name of the serialized object.
- Specifies the name of the serialized object
- The type of the object the formatter creates a new instance of.
-
-
-
- When implemented, controls the binding of a serialized object to a type.
-
- The type of the object the formatter creates a new instance of.
- Specifies the name of the serialized object.
- Specifies the name of the serialized object.
-
-
-
- Represents a trace writer.
-
-
-
-
- Gets the that will be used to filter the trace messages passed to the writer.
- For example a filter level of will exclude
- messages and include
- ,
- and
- messages.
-
- The that will be used to filter the trace messages passed to the writer.
-
-
-
- Writes the specified trace level, message and optional exception.
-
- The at which to write this trace.
- The trace message.
- The trace exception. This parameter is optional.
-
-
-
- Provides methods to get and set values.
-
-
-
-
- Sets the value.
-
- The target to set the value on.
- The value to set on the target.
-
-
-
- Gets the value.
-
- The target to get the value from.
- The value.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets the of the collection items.
-
- The of the collection items.
-
-
-
- Gets a value indicating whether the collection type is a multidimensional array.
-
- true if the collection type is a multidimensional array; otherwise, false .
-
-
-
- Gets or sets the function used to create the object. When set this function will override
- .
-
- The function used to create the object.
-
-
-
- Gets a value indicating whether the creator has a parameter with the collection values.
-
-
- true if the creator has a parameter with the collection values; otherwise,
- false .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets or sets the default collection items .
-
- The converter.
-
-
-
- Gets or sets a value indicating whether the collection items preserve object references.
-
- true if collection items preserve object references; otherwise, false .
-
-
-
- Gets or sets the collection item reference loop handling.
-
- The reference loop handling.
-
-
-
- Gets or sets the collection item type name handling.
-
- The type name handling.
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Handles serialization callback events.
-
- The object that raised the callback event.
- The streaming context.
-
-
-
- Handles serialization error callback events.
-
- The object that raised the callback event.
- The streaming context.
- The error context.
-
-
-
- Sets extension data for an object during deserialization.
-
- The object to set extension data on.
- The extension data key.
- The extension data value.
-
-
-
- Gets extension data for an object during serialization.
-
- The object to set extension data on.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets the underlying type for the contract.
-
- The underlying type for the contract.
-
-
-
- Gets or sets the type created during deserialization.
-
- The type created during deserialization.
-
-
-
- Gets or sets whether this type contract is serialized as a reference.
-
- Whether this type contract is serialized as a reference.
-
-
-
- Gets or sets the default for this contract.
-
- The converter.
-
-
-
- Gets or sets all methods called immediately after deserialization of the object.
-
- The methods called immediately after deserialization of the object.
-
-
-
- Gets or sets all methods called during deserialization of the object.
-
- The methods called during deserialization of the object.
-
-
-
- Gets or sets all methods called after serialization of the object graph.
-
- The methods called after serialization of the object graph.
-
-
-
- Gets or sets all methods called before serialization of the object.
-
- The methods called before serialization of the object.
-
-
-
- Gets or sets all method called when an error is thrown during the serialization of the object.
-
- The methods called when an error is thrown during the serialization of the object.
-
-
-
- Gets or sets the default creator method used to create the object.
-
- The default creator method used to create the object.
-
-
-
- Gets or sets a value indicating whether the default creator is non-public.
-
- true if the default object creator is non-public; otherwise, false .
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets or sets the dictionary key resolver.
-
- The dictionary key resolver.
-
-
-
- Gets the of the dictionary keys.
-
- The of the dictionary keys.
-
-
-
- Gets the of the dictionary values.
-
- The of the dictionary values.
-
-
-
- Gets or sets the function used to create the object. When set this function will override
- .
-
- The function used to create the object.
-
-
-
- Gets a value indicating whether the creator has a parameter with the dictionary values.
-
-
- true if the creator has a parameter with the dictionary values; otherwise,
- false .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets the object's properties.
-
- The object's properties.
-
-
-
- Gets or sets the property name resolver.
-
- The property name resolver.
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets or sets the object constructor.
-
- The object constructor.
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Gets or sets the object member serialization.
-
- The member object serialization.
-
-
-
- Gets or sets a value that indicates whether the object's properties are required.
-
-
- A value indicating whether the object's properties are required.
-
-
-
-
- Gets or sets how the object's properties with null values are handled during serialization and deserialization.
-
- How the object's properties with null values are handled during serialization and deserialization.
-
-
-
- Gets the object's properties.
-
- The object's properties.
-
-
-
- Gets a collection of instances that define the parameters used with
- .
-
-
-
-
- Gets or sets the function used to create the object. When set this function will override
- .
- This function is called with a collection of arguments which are defined by the
-
- collection.
-
- The function used to create the object.
-
-
-
- Gets or sets the extension data setter.
-
-
-
-
- Gets or sets the extension data getter.
-
-
-
-
- Gets or sets the extension data value type.
-
-
-
-
- Gets or sets the extension data name resolver.
-
- The extension data name resolver.
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Maps a JSON property to a .NET member or constructor parameter.
-
-
-
-
- Gets or sets the name of the property.
-
- The name of the property.
-
-
-
- Gets or sets the type that declared this property.
-
- The type that declared this property.
-
-
-
- Gets or sets the order of serialization of a member.
-
- The numeric order of serialization.
-
-
-
- Gets or sets the name of the underlying member or parameter.
-
- The name of the underlying member or parameter.
-
-
-
- Gets the that will get and set the
- during serialization.
-
-
- The that will get and set the
- during serialization.
-
-
-
-
- Gets or sets the for this property.
-
- The for this property.
-
-
-
- Gets or sets the type of the property.
-
- The type of the property.
-
-
-
- Gets or sets the for the property.
- If set this converter takes precedence over the contract converter for the property type.
-
- The converter.
-
-
-
- Gets or sets the member converter.
-
- The member converter.
-
-
-
- Gets or sets a value indicating whether this
- is ignored.
-
- true if ignored; otherwise, false .
-
-
-
- Gets or sets a value indicating whether this
- is readable.
-
- true if readable; otherwise, false .
-
-
-
- Gets or sets a value indicating whether this
- is writable.
-
- true if writable; otherwise, false .
-
-
-
- Gets or sets a value indicating whether this
- has a member attribute.
-
- true if has a member attribute; otherwise, false .
-
-
-
- Gets the default value.
-
- The default value.
-
-
-
- Gets or sets a value indicating whether this
- is required.
-
-
- A value indicating whether this
- is required.
-
-
-
-
- Gets or sets a value indicating whether this property preserves object references.
-
-
- true if this instance is reference; otherwise, false .
-
-
-
-
- Gets or sets the property null value handling.
-
- The null value handling.
-
-
-
- Gets or sets the property default value handling.
-
- The default value handling.
-
-
-
- Gets or sets the property reference loop handling.
-
- The reference loop handling.
-
-
-
- Gets or sets the property object creation handling.
-
- The object creation handling.
-
-
-
- Gets or sets or sets the type name handling.
-
- The type name handling.
-
-
-
- Gets or sets a predicate used to determine whether the property should be serialized.
-
- A predicate used to determine whether the property should be serialized.
-
-
-
- Gets or sets a predicate used to determine whether the property should be deserialized.
-
- A predicate used to determine whether the property should be deserialized.
-
-
-
- Gets or sets a predicate used to determine whether the property should be serialized.
-
- A predicate used to determine whether the property should be serialized.
-
-
-
- Gets or sets an action used to set whether the property has been deserialized.
-
- An action used to set whether the property has been deserialized.
-
-
-
- Returns a that represents this instance.
-
-
- A that represents this instance.
-
-
-
-
- Gets or sets the converter used when serializing the property's collection items.
-
- The collection's items converter.
-
-
-
- Gets or sets whether this property's collection items are serialized as a reference.
-
- Whether this property's collection items are serialized as a reference.
-
-
-
- Gets or sets the type name handling used when serializing the property's collection items.
-
- The collection's items type name handling.
-
-
-
- Gets or sets the reference loop handling used when serializing the property's collection items.
-
- The collection's items reference loop handling.
-
-
-
- A collection of objects.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The type.
-
-
-
- When implemented in a derived class, extracts the key from the specified element.
-
- The element from which to extract the key.
- The key for the specified element.
-
-
-
- Adds a object.
-
- The property to add to the collection.
-
-
-
- Gets the closest matching object.
- First attempts to get an exact case match of and then
- a case insensitive match.
-
- Name of the property.
- A matching property if found.
-
-
-
- Gets a property by property name.
-
- The name of the property to get.
- Type property name string comparison.
- A matching property if found.
-
-
-
- Contract details for a used by the
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
- The underlying type for the contract.
-
-
-
- Lookup and create an instance of the type described by the argument.
-
- The type to create.
-
- Optional arguments to pass to an initializing constructor of the JsonConverter.
- If null , the default constructor is used.
-
-
-
-
- Represents a trace writer that writes to memory. When the trace message limit is
- reached then old trace messages will be removed as new messages are added.
-
-
-
-
- Gets the that will be used to filter the trace messages passed to the writer.
- For example a filter level of will exclude
- messages and include
- ,
- and
- messages.
-
-
- The that will be used to filter the trace messages passed to the writer.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Writes the specified trace level, message and optional exception.
-
- The at which to write this trace.
- The trace message.
- The trace exception. This parameter is optional.
-
-
-
- Returns an enumeration of the most recent trace messages.
-
- An enumeration of the most recent trace messages.
-
-
-
- Returns a of the most recent trace messages.
-
-
- A of the most recent trace messages.
-
-
-
-
- A base class for resolving how property names and dictionary keys are serialized.
-
-
-
-
- A flag indicating whether dictionary keys should be processed.
- Defaults to false .
-
-
-
-
- A flag indicating whether extension data names should be processed.
- Defaults to false .
-
-
-
-
- A flag indicating whether explicitly specified property names,
- e.g. a property name customized with a
- , should be processed.
- Defaults to false .
-
-
-
-
- Gets the serialized name for a given property name.
-
- The initial property name.
- A flag indicating whether the property has had a name explicitly specified.
- The serialized property name.
-
-
-
- Gets the serialized name for a given extension data name.
-
- The initial extension data name.
- The serialized extension data name.
-
-
-
- Gets the serialized key for a given dictionary key.
-
- The initial dictionary key.
- The serialized dictionary key.
-
-
-
- Resolves the specified property name.
-
- The property name to resolve.
- The resolved property name.
-
-
-
- Represents a method that constructs an object.
-
- The object type to create.
-
-
-
- When applied to a method, specifies that the method is called when an error occurs serializing an object.
-
-
-
-
- Provides methods to get attributes from a ,
- ,
- or
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- The instance to get attributes for. This parameter should be a
- , ,
- or
- .
-
-
-
-
- Returns a collection of all of the attributes, or an empty collection if there are no attributes.
-
- When true , look up the hierarchy chain for the inherited custom attribute.
- A collection of s, or an empty collection.
-
-
-
- Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
-
- The type of the attributes.
- When true , look up the hierarchy chain for the inherited custom attribute.
- A collection of s, or an empty collection.
-
-
-
- Get and set values for a using reflection.
-
-
-
-
- Initializes a new instance of the
- class.
-
- The member info.
-
-
-
- Sets the value.
-
- The target to set the value on.
- The value to set on the target.
-
-
-
- Gets the value.
-
- The target to get the value from.
- The value.
-
-
-
- A snake case naming strategy.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- A flag indicating whether dictionary keys should be processed.
-
-
- A flag indicating whether explicitly specified property names should be processed,
- e.g. a property name customized with a
- .
-
-
-
-
- Initializes a new instance of the
- class.
-
-
- A flag indicating whether dictionary keys should be processed.
-
-
- A flag indicating whether explicitly specified property names should be processed,
- e.g. a property name customized with a
- .
-
-
- A flag indicating whether extension data names should be processed.
-
-
-
-
- Initializes a new instance of the
- class.
-
-
-
-
- Resolves the specified property name.
-
- The property name to resolve.
- The resolved property name.
-
-
-
- Specifies how strings are escaped when writing JSON text.
-
-
-
-
- Only control characters (e.g. newline) are escaped.
-
-
-
-
- All non-ASCII and control characters (e.g. newline) are escaped.
-
-
-
-
- HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped.
-
-
-
-
- Indicates the method that will be used during deserialization for locating and loading assemblies.
-
-
-
-
- In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the
- LoadWithPartialName method of the class is used to load the assembly.
-
-
-
-
- In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The
- Load method of the class is used to load the assembly.
-
-
-
-
- Specifies type name handling options for the .
-
-
- should be used with caution when your application deserializes JSON from an external source.
- Incoming types should be validated with a custom
-
- when deserializing with a value other than
- .
-
-
-
-
- Do not include the .NET type name when serializing types.
-
-
-
-
- Include the .NET type name when serializing into a JSON object structure.
-
-
-
-
- Include the .NET type name when serializing into a JSON array structure.
-
-
-
-
- Always include the .NET type name when serializing.
-
-
-
-
- Include the .NET type name when the type of the object being serialized is not the same as its declared type.
- Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON
- you must specify a root type object with
-
- or
-
- .
-
-
-
-
- Determines whether the collection is null or empty.
-
- The collection.
-
- true if the collection is null or empty; otherwise, false .
-
-
-
-
- Adds the elements of the specified collection to the specified generic
- .
-
- The list to add to.
- The collection of elements to add.
-
-
-
- Converts the value to the specified type. If the value is unable to be converted, the
- value is checked whether it assignable to the specified type.
-
- The value to convert.
- The culture to use when converting.
- The type to convert or cast the value to.
-
- The converted type. If conversion was unsuccessful, the initial value
- is returned if assignable to the target type.
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic that returns a result
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic, but uses one of the arguments for
- the result.
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic, but uses one of the arguments for
- the result.
-
-
-
-
- Returns a Restrictions object which includes our current restrictions merged
- with a restriction limiting our type
-
-
-
-
- Helper class for serializing immutable collections.
- Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed
- https://github.com/JamesNK/Newtonsoft.Json/issues/652
-
-
-
-
- Gets the type of the typed collection's items.
-
- The type.
- The type of the typed collection's items.
-
-
-
- Gets the member's underlying type.
-
- The member.
- The underlying type of the member.
-
-
-
- Determines whether the member is an indexed property.
-
- The member.
-
- true if the member is an indexed property; otherwise, false .
-
-
-
-
- Determines whether the property is an indexed property.
-
- The property.
-
- true if the property is an indexed property; otherwise, false .
-
-
-
-
- Gets the member's value on the object.
-
- The member.
- The target object.
- The member's value on the object.
-
-
-
- Sets the member's value on the target object.
-
- The member.
- The target.
- The value.
-
-
-
- Determines whether the specified MemberInfo can be read.
-
- The MemberInfo to determine whether can be read.
- ///
- if set to true then allow the member to be gotten non-publicly.
-
- true if the specified MemberInfo can be read; otherwise, false .
-
-
-
-
- Determines whether the specified MemberInfo can be set.
-
- The MemberInfo to determine whether can be set.
- if set to true then allow the member to be set non-publicly.
- if set to true then allow the member to be set if read-only.
-
- true if the specified MemberInfo can be set; otherwise, false .
-
-
-
-
- Builds a string. Unlike this class lets you reuse its internal buffer.
-
-
-
-
- Determines whether the string is all white space. Empty string will return false .
-
- The string to test whether it is all white space.
-
- true if the string is all white space; otherwise, false .
-
-
-
-
- Specifies the state of the .
-
-
-
-
- An exception has been thrown, which has left the
- in an invalid state.
- You may call the method to put the
- in the Closed state.
- Any other method calls result in an
- being thrown.
-
-
-
-
- The method has been called.
-
-
-
-
- An object is being written.
-
-
-
-
- An array is being written.
-
-
-
-
- A constructor is being written.
-
-
-
-
- A property is being written.
-
-
-
-
- A write method has not been called.
-
-
-
-
\ No newline at end of file
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta b/Libaries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta
deleted file mode 100644
index 2d68596c2..000000000
--- a/Libaries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: f5fe7796c746d434f88a9f3470ed7512
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib.meta b/Libaries/OptimizedPriorityQueue.4.1.1/lib.meta
deleted file mode 100644
index 71cb85768..000000000
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: ee8b5f7f7cfb95d42b63765c2c2fe94f
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45.meta b/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45.meta
deleted file mode 100644
index 7702c3cc2..000000000
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 6e53fbf3dbf52134ba1385c20623f6a4
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta b/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta
deleted file mode 100644
index db4ec6eb3..000000000
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: b962b46089235f14a9e0c372ebb36f02
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Libraries.meta b/Libraries.meta
new file mode 100644
index 000000000..65079e41f
--- /dev/null
+++ b/Libraries.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c974f47f709ddeb10b1e4a7b25132726
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61.meta b/Libraries/AsyncIO.0.1.61.meta
similarity index 77%
rename from Libaries/AsyncIO.0.1.61.meta
rename to Libraries/AsyncIO.0.1.61.meta
index 292f25404..b143c5e4e 100644
--- a/Libaries/AsyncIO.0.1.61.meta
+++ b/Libraries/AsyncIO.0.1.61.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 439c0718d9fc3a246818f24cefa41444
+guid: 729ec8fe0303cda9ab9e7ea0551bce9f
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Libaries/AsyncIO.0.1.61/.signature.p7s b/Libraries/AsyncIO.0.1.61/.signature.p7s
similarity index 100%
rename from Libaries/AsyncIO.0.1.61/.signature.p7s
rename to Libraries/AsyncIO.0.1.61/.signature.p7s
diff --git a/Libaries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg b/Libraries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg
similarity index 100%
rename from Libaries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg
rename to Libraries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg
diff --git a/Libraries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta b/Libraries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta
new file mode 100644
index 000000000..d861ed4a3
--- /dev/null
+++ b/Libraries/AsyncIO.0.1.61/AsyncIO.0.1.61.nupkg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e9ab1a17a29578a09b9ca1f3611b0e3a
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/AsyncIO.0.1.61/lib.meta b/Libraries/AsyncIO.0.1.61/lib.meta
new file mode 100644
index 000000000..22854b3eb
--- /dev/null
+++ b/Libraries/AsyncIO.0.1.61/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eba99efd066c79feaad892608f4e7e0a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/AsyncIO.0.1.61/lib/net40.meta b/Libraries/AsyncIO.0.1.61/lib/net40.meta
new file mode 100644
index 000000000..01228ceab
--- /dev/null
+++ b/Libraries/AsyncIO.0.1.61/lib/net40.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 036a8433ff2cdb26f9357b82592b8e7b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll
similarity index 100%
rename from Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll
rename to Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll
diff --git a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta
similarity index 93%
rename from Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta
rename to Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta
index 659e29845..977e1ef68 100644
--- a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta
+++ b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5b2c6c6f2f9dfca4b9556607225c64b5
+guid: e7bf7e1c78371cd4b8cfe7fdba180fd2
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb
similarity index 100%
rename from Libaries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb
rename to Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb
diff --git a/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta
new file mode 100644
index 000000000..d91e59e18
--- /dev/null
+++ b/Libraries/AsyncIO.0.1.61/lib/net40/AsyncIO.pdb.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 063b233dacfb9259081999db1c2adc41
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0.meta b/Libraries/Neodroid-FlatBuffers.1.0.0.meta
similarity index 77%
rename from Libaries/Neodroid-FlatBuffers.1.0.0.meta
rename to Libraries/Neodroid-FlatBuffers.1.0.0.meta
index cb2077c99..f5f95c632 100644
--- a/Libaries/Neodroid-FlatBuffers.1.0.0.meta
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 48c7025dea804436c8d0cf57be1b63be
+guid: b8ab2225ae88d2a8eb91d4bfc377fe28
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Libaries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg b/Libraries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg
similarity index 100%
rename from Libaries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg
rename to Libraries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta b/Libraries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta
new file mode 100644
index 000000000..ba5abfd6d
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/Neodroid-FlatBuffers.1.0.0.nupkg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8037e55c199d2d32cb0b5c0bf876a694
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib.meta b/Libraries/Neodroid-FlatBuffers.1.0.0/lib.meta
new file mode 100644
index 000000000..e76452795
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 99b9a9f7aabd13ac086d8e75de594ad4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta
new file mode 100644
index 000000000..ac196b6cb
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3998946eb72f1e2a1bc6ca3b41c8ecad
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll
new file mode 100755
index 000000000..187f87424
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b19c61f01764e29e56b67012d2bf0caf0d997473130ee20d2d9e674ce1c7b11
+size 18944
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll.meta b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll.meta
new file mode 100644
index 000000000..76dba7187
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.dll.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 6a2b73aa2277602db97969dbedb9d92c
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb
new file mode 100755
index 000000000..266226f66
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a92a9071e4a605530dd6a8d21ee8fffb017d8d94ba1a8f2c6fa21fe962d9bb4
+size 7520
diff --git a/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb.meta b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb.meta
new file mode 100644
index 000000000..d26b2cbe0
--- /dev/null
+++ b/Libraries/Neodroid-FlatBuffers.1.0.0/lib/net45/FlatBuffers.pdb.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9a3a825d94166743396015d3c892c331
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre.meta b/Libraries/NetMQ.4.0.0.175-pre.meta
similarity index 77%
rename from Libaries/NetMQ.4.0.0.175-pre.meta
rename to Libraries/NetMQ.4.0.0.175-pre.meta
index 904eded19..bc95b0431 100644
--- a/Libaries/NetMQ.4.0.0.175-pre.meta
+++ b/Libraries/NetMQ.4.0.0.175-pre.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 276e53aff460de641921bc1340e88f17
+guid: c76f2afdf5abb94f99d4516f1654d2e5
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Libaries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg b/Libraries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg
similarity index 100%
rename from Libaries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg
rename to Libraries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg
diff --git a/Libraries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta b/Libraries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta
new file mode 100644
index 000000000..3d11d1199
--- /dev/null
+++ b/Libraries/NetMQ.4.0.0.175-pre/NetMQ.4.0.0.175-pre.nupkg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ec944f69d00549fb3afb5b3e938e787d
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/NetMQ.4.0.0.175-pre/lib.meta b/Libraries/NetMQ.4.0.0.175-pre/lib.meta
new file mode 100644
index 000000000..58983e3bc
--- /dev/null
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e317903ea61400efea7b000b7774e285
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/NetMQ.4.0.0.175-pre/lib/net40.meta b/Libraries/NetMQ.4.0.0.175-pre/lib/net40.meta
new file mode 100644
index 000000000..cd51d9b1a
--- /dev/null
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib/net40.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dcd4600f6b941fc01843ff9b639c0c39
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll
similarity index 100%
rename from Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll
rename to Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta
similarity index 93%
rename from Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta
rename to Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta
index 8fbdc2ae7..8570755f9 100644
--- a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: e67596a133a2de14cbeb55fa9c3b30c0
+guid: 6a69a6154c9d057d394ab47953647520
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb
similarity index 100%
rename from Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb
rename to Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb
diff --git a/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta
new file mode 100644
index 000000000..53c8ed64f
--- /dev/null
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.pdb.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f7f3d8703b85246549107ec939a99342
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml
similarity index 81%
rename from Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml
rename to Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml
index 208d56910..9f83d5b33 100644
--- a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml
@@ -1,9675 +1,11101 @@
-
-
-
-
- NetMQ
-
-
-
-
- The IBufferPool interface specifies two methods: Take, and Return.
- These provide for taking byte-array data from a common pool, and returning it.
-
-
-
-
- Take byte-array storage from the buffer-pool.
-
- the number of bytes to take
- a byte-array that comes from the buffer-pool
-
-
-
- Return the given byte-array buffer to the common buffer-pool.
-
- the byte-array to return to the buffer-pool
-
-
-
- This implementation of uses WCF's
-
- class to manage a pool of buffers.
-
-
-
-
- Create a new BufferManagerBufferPool with the specified maximum buffer pool size
- and a maximum size for each individual buffer in the pool.
-
- the maximum size to allow for the buffer pool
- the maximum size to allow for each individual buffer in the pool
- There was insufficient memory to create the requested buffer pool.
- Either maxBufferPoolSize or maxBufferSize was less than zero.
-
-
-
- Return a byte-array buffer of at least the specified size from the pool.
-
- the size in bytes of the requested buffer
- a byte-array that is the requested size
- size cannot be less than zero
-
-
-
- Return the given buffer to this manager pool.
-
- a reference to the buffer being returned
- the Length of buffer does not match the pool's buffer length property
- the buffer reference cannot be null
-
-
-
- Release the buffers currently cached in this manager.
-
-
-
-
- Release the buffers currently cached in this manager.
-
- true if managed resources are to be disposed
-
-
-
- This simple implementation of does no buffer pooling. Instead, it uses regular
- .NET memory management to allocate a buffer each time
- is called. Unused buffers
- passed to are simply left for the .NET garbage collector to deal with.
-
-
-
-
- Return a newly-allocated byte-array buffer of at least the specified size from the pool.
-
- the size in bytes of the requested buffer
- a byte-array that is the requested size
- there is not sufficient memory to allocate the requested memory
-
-
-
- The expectation of an actual buffer-manager is that this method returns the given buffer to the manager pool.
- This particular implementation does nothing.
-
- a reference to the buffer being returned
-
-
-
- The expectation of an actual buffer-manager is that the Dispose method will release the buffers currently cached in this manager.
- This particular implementation does nothing.
-
-
-
-
- Release the buffers currently cached in this manager (however in this case, this does nothing).
-
- true if managed resources are to be disposed
-
-
-
- Contains a singleton instance of used for allocating byte arrays
- for instances with type .
-
-
- Sending and receiving message frames requires the use of buffers (byte arrays), which are expensive to create and destroy.
- You can use the BufferPool class to pool buffers for reuse, reducing allocation, deallocation and garbage collection.
-
- The default implementation is .
-
- -
- Call
-
- to replace it with a .
-
- -
- Call
to reinstate the default
- .
-
- -
- Call
to substitute a custom implementation for the allocation and
- deallocation of message buffers.
-
-
-
-
-
-
- Set BufferPool to use the (which it does by default).
-
-
-
-
- Set BufferPool to use the to manage the buffer-pool.
-
- the maximum size to allow for the buffer pool
- the maximum size to allow for each individual buffer in the pool
- There was insufficient memory to create the requested buffer pool.
- Either maxBufferPoolSize or maxBufferSize was less than zero.
-
-
-
- Set BufferPool to use the specified IBufferPool implementation to manage the buffer-pool.
-
- the implementation of to use
-
-
-
- Allocate a buffer of at least bytes from the current
- .
-
- The minimum size required, in bytes.
- A byte array having at least bytes.
-
-
-
- Returns to the .
-
- The byte array to be returned to the pool.
-
-
-
- Class Address contains a specification of a protocol and an MqEndPoint.
-
-
-
-
- The string-literal "inproc"
- - this denotes in-process, or inter-thread, communication.
-
-
-
-
- The string-literal "tcp"
- - this denotes TCP communication over the network.
-
-
-
-
- The string-literal "ipc"
- - this denotes inter-process communication, which on NetMQ is exactly the same as TCP.
-
-
-
-
- The string-literal "pgm"
- - this denotes the Pragmatic General Multicast (PGM) reliable multicast protocol.
-
-
-
-
- The string-literal "epgm"
- - this denotes the Encapsulated PGM protocol.
-
-
-
-
- Interface IZAddress specifies that Resolve and property Address must be implemented.
-
-
-
-
- Create a new Address instance with the given protocol and text expression of an address.
-
- the protocol of this Address - as in tcp, ipc, pgm
- a text representation of the address
-
-
-
- Create a new Address instance based upon the given endpoint, assuming a protocol of tcp.
-
- the subclass of EndPoint to base this Address upon
-
-
-
- Defines a command sent between threads.
-
-
-
-
- Create a new Command object for the given destination, type, and optional argument.
-
- a ZObject that denotes the destination for this command
- the CommandType of the new command
- an Object to comprise the argument for the command (optional)
-
-
- The destination to which the command should be applied.
-
-
- The type of this command.
-
-
-
- Get the argument to this command.
-
-
-
-
- Override of ToString, which returns a string in the form [ command-type, destination ].
-
- a string that denotes the command-type and destination
-
-
-
- Enumeration of possible types.
-
-
- The value of denotes what action
- the command will perform.
-
-
-
-
- Sent to I/O thread to let it know that it should
- terminate itself.
-
-
-
-
- Sent to I/O object to make it register with its I/O thread
-
-
-
-
- Sent to socket to let it know about the newly created object.
-
-
-
-
- Attach the engine to the session. If engine is NULL, it informs
- session that the connection has failed.
-
-
-
-
- Sent from session to socket to establish pipe(s) between them.
- Caller must have used inc_seqnum before sending the command.
-
-
-
-
- Sent by pipe writer to inform dormant pipe reader that there
- are messages in the pipe.
-
-
-
-
- Sent by pipe reader to inform pipe writer how many
- messages it has read so far.
-
-
-
-
- Sent by pipe reader to writer after creating a new inpipe.
- The parameter is actually of type pipe_t::upipe_t, however,
- its definition is private so we'll have to do with void*.
-
-
-
-
- Sent by pipe reader to pipe writer to ask it to terminate
- its end of the pipe.
-
-
-
-
- Pipe writer acknowledges pipe_term command.
-
-
-
-
- Sent by I/O object to the socket to request the shutdown of
- the I/O object.
-
-
-
-
- Sent by socket to I/O object to start its shutdown.
-
-
-
-
- Sent by I/O object to the socket to acknowledge it has
- shut down.
-
-
-
-
- Transfers the ownership of the closed socket
- to the reaper thread.
-
-
-
-
- Closed socket notifies the reaper that it's already deallocated.
-
-
-
-
- Sent by reaper thread to the term thread when all the sockets
- have successfully been deallocated.
-
-
-
-
- Send to reaper to stop the reaper immediatly
-
-
-
-
- This class exists to hold constant values that comprise the internal configuration of the messaging system.
-
-
-
-
- Number of new messages in message pipe needed to trigger new memory
- allocation. Setting this parameter to 256 decreases the impact of
- memory allocation by approximately 99.6%
-
-
-
-
- Commands in pipe per allocation event.
-
-
-
-
- Determines how often does socket poll for new commands when it
- still has unprocessed messages to handle. Thus, if it is set to 100,
- socket will process 100 inbound messages before doing the poll.
- If there are no unprocessed messages available, poll is done
- immediately. Decreasing the value trades overall latency for more
- real-time behaviour (less latency peaks).
-
-
-
-
- Maximal batching size for engines with receiving functionality.
- So, if there are 10 messages that fit into the batch size, all of
- them may be read by a single 'recv' system call, thus avoiding
- unnecessary network stack traversals.
-
-
-
-
- Maximal batching size for engines with sending functionality.
- So, if there are 10 messages that fit into the batch size, all of
- them may be written by a single 'send' system call, thus avoiding
- unnecessary network stack traversals.
-
-
-
-
- Maximal delta between high and low watermark.
-
-
-
-
- Maximum number of events the I/O thread can process in one go.
-
-
-
-
- Maximal delay to process command in API thread (in CPU ticks).
- 3,000,000 ticks equals to 1 - 2 milliseconds on current CPUs.
- Note that delay is only applied when there is continuous stream of
- messages to process. If not so, commands are processed immediately.
-
-
-
-
- Low-precision clock precision in CPU ticks. 1ms. Value of 1000000
- should be OK for CPU frequencies above 1GHz. If should work
- reasonably well for CPU frequencies above 500MHz. For lower CPU
- frequencies you may consider lowering this value to get best
- possible latencies.
-
-
-
-
- Maximum transport data unit size for PGM (TPDU).
-
-
-
-
- On some OSes the signaler has to be emulated using a TCP
- connection. In such cases following port is used.
-
-
-
-
- Objects of class Ctx are intended to encapsulate all of the global state
- associated with the NetMQ library. This contains the sockets, and manages interaction
- between them.
-
-
-
-
- Information associated with inproc endpoint. Note that endpoint options
- are registered as well so that the peer can access them without a need
- for synchronisation, handshaking or similar.
-
-
-
-
- Create a new Endpoint with the given socket.
-
- the socket for this new Endpoint
- the Options to assign to this new Endpoint
-
-
-
- Get the socket associated with this Endpoint.
-
-
-
-
- Get the Options of this Endpoint.
-
-
-
-
- Sockets belonging to this context. We need the list so that
- we can notify the sockets when zmq_term() is called. The sockets
- will return ETERM then.
-
-
-
-
- List of unused thread slots.
-
-
-
-
- If true, zmq_init has been called but no socket has been created
- yet. Launching of I/O threads is delayed.
-
-
-
-
- If true, zmq_term was already called.
-
-
-
-
- This object is for synchronisation of accesses to global slot-related data:
- sockets, empty_slots, terminating. It also synchronises
- access to zombie sockets as such (as opposed to slots) and provides
- a memory barrier to ensure that all CPU cores see the same data.
-
-
-
-
- The reaper thread.
-
-
-
-
- List of I/O threads.
-
-
-
-
- Length of the mailbox-array.
-
-
-
-
- Array of pointers to mailboxes for both application and I/O threads.
-
-
-
-
- Mailbox for zmq_term thread.
-
-
-
-
- Dictionary containing the inproc endpoints within this context.
-
-
-
-
- This object provides synchronisation of access to the list of inproc endpoints.
-
-
-
-
- The highest socket-id that has been assigned thus far.
-
-
-
-
- The maximum number of sockets that can be opened at the same time.
-
-
-
-
- The number of I/O threads to launch.
-
-
-
-
- This object is used to synchronize access to context options.
-
-
-
-
- The thread-id for the termination (the equivalent of the zmq_term) thread.
-
-
-
-
- This is the thread-id to assign to the Reaper (value is 1).
-
-
-
-
- This function is called when user invokes zmq_term. If there are
- no more sockets open it'll cause all the infrastructure to be shut
- down. If there are open sockets still, the deallocation happens
- after the last one is closed.
-
-
-
-
- Create and return a new socket of the given type, and initialize this Ctx if this is the first one.
-
- the type of socket to create
- the newly-created socket
- Cannot create new socket while terminating.
- Maximum number of sockets reached.
- The context (Ctx) must not be already terminating.
-
-
-
- Destroy the given socket - which means to remove it from the list of active sockets,
- and add it to the list of unused sockets to be terminated.
-
- the socket to destroy
-
- If this was the last socket, then stop the reaper.
-
-
-
-
- Returns reaper thread object.
-
-
-
-
- Send a command to the given destination thread.
-
-
-
-
- Returns the that is the least busy at the moment.
-
- Which threads are eligible (0 = all).
- The least busy thread, or null if none is available.
-
-
-
- Save the given address and Endpoint within our internal list.
- This is used for management of inproc endpoints.
-
- the textual name to give this endpoint
- the Endpoint to remember
- true if the given address was NOT already registered
-
-
-
- Un-register the given address/socket, by removing it from the contained list of endpoints.
-
- the (string) address denoting the endpoint to unregister
- the socket associated with that endpoint
- true if the endpoint having this address and socket is found, false otherwise
-
-
-
- Remove from the list of endpoints, all endpoints that reference the given socket.
-
- the socket to remove all references to
-
-
-
- Return the EndPoint that has the given address, and increments the seqnum of the associated socket.
-
- the (string) address to match against the endpoints
- the Endpoint that was found
- The given address was not found in the list of endpoints.
-
- By calling this method, the socket associated with that returned EndPoint has it's Seqnum incremented,
- in order to prevent it from being de-allocated before a command can be sent to it.
-
-
-
-
- Class ErrorHelper provides one static method - ToErrorCode, for converting a SocketError to the equivalent ErrorCode.
-
-
-
-
- Return the ErrorCode that is the closest equivalent to the given SocketError.
-
- the SocketError to convert from
- an ErrorCode that corresponds to the given SocketError
-
-
-
- Interface IMsgSink mandates a PushMsg( Msg ) method.
-
-
-
-
- Deliver a message. Return true if successful; false otherwise.
- This function takes ownership of the passed message.
-
- the message (of type Msg) to deliver
-
-
-
- Classes that implement IMsgSource are able to fetch a message, with the method: PullMsg.
-
-
-
-
- Fetch a message.
- If successful - returns true and writes the message instance to the msg argument.
- If not successful - return false and write null to the msg argument.
-
- the Msg to write the fetched message into
- true if successful - and writes the message to the msg argument
-
-
-
- Simple base class for objects that live in I/O threads.
- It makes communication with the poller object easier and
- makes defining unneeded event handlers unnecessary.
-
-
-
-
- Create a new IOObject object and plug it into the given IOThread.
-
- the IOThread to plug this new IOObject into.
-
-
-
- "Plug in" this IOObject to the given IOThread, - ie associate this with the specified IOThread.
-
- the IOThread for this object to live in
-
- When migrating an object from one I/O thread to another, first
- unplug it, then migrate it, then plug it to the new thread.
-
-
-
-
- "Un-Plug" this IOObject from its current IOThread, and set its handler to null.
-
-
- When migrating an object from one I/O thread to another, first
- unplug it, then migrate it, then plug it to the new thread.
-
-
-
-
- Add the given socket to the Proactor.
-
- the AsyncSocket to add
-
-
-
- Remove the given socket from the Proactor.
-
- the AsyncSocket to remove
-
-
-
- This method is called when a message receive operation has been completed. This forwards it on to the handler's InCompleted method.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This method is called when a message Send operation has been completed. This forwards it on to the handler's OutCompleted method.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This is called when the timer expires.
-
- an integer used to identify the timer
-
-
-
- I/O thread accesses incoming commands via this mailbox.
-
-
-
-
- I/O multiplexing is performed using a poller object.
-
-
-
-
- Create a new IOThread object within the given context (Ctx) and thread.
-
- the Ctx (context) for this thread to live within
- the integer thread-id for this new IOThread
-
-
-
- Classes that implement IPollEvents provide two methods (InEvent and OutEvent) that are invoked when ready for reading or writing.
-
-
-
-
- Called by the I/O thread when the file descriptor is ready for reading.
-
-
-
-
- Called by the I/O thread when the file descriptor is ready for writing.
-
-
-
-
- This is an ITimerEvent, with InCompleted and OutCompleted callback-methods,
- used for implementing a Proactor pattern.
-
-
-
-
- This is the "Input-Completed" method - called by the I/O-thread when the file descriptor is ready for reading.
-
- this is set to any socket-error that has occurred
- the number of bytes that are now ready to be read
-
-
-
- This is the "Output-Completed" method - called by the I/O thread when the file descriptor is ready for writing.
-
- this is set to any socket-error that has occurred
- the number of bytes that are now ready to be written
-
-
-
- The ITimerEvent interface mandates a TimerEvent( int id ) method,
- that is called with an id-value when the timer expires.
-
-
-
-
- This is called when the timer expires.
-
- an integer used to identify the timer
-
-
-
- There's only one thread receiving from the mailbox, but there
- is arbitrary number of threads sending. Given that ypipe requires
- synchronised access on both of its endpoints, we have to synchronize
- the sending side.
-
-
-
-
- The pipe to store actual commands.
-
-
-
-
- Signaler to pass signals from writer thread to reader thread.
-
-
-
-
- There's only one thread receiving from the mailbox, but there
- is an arbitrary number of threads sending. Given that
- requires
- synchronised access on both of its endpoints, we have to synchronize
- the sending side.
-
-
-
-
- True if the underlying pipe is active, ie. when we are allowed to
- read commands from it.
-
-
-
-
- Create a new Mailbox with the given name.
-
- the name to give this new Mailbox
-
-
-
- Get the socket-handle contained by the Signaler.
-
-
-
-
- Send the given Command out across the command-pipe.
-
- the Command to send
-
-
-
- Receive and return a Command from the command-pipe.
-
- how long to wait for a command (in milliseconds) before returning
-
-
-
-
- Close the contained Signaler.
-
-
-
-
- Class Options is essentially a container for socket-related option-settings.
-
-
-
-
- Create a new Options object with all default values.
-
-
-
-
- Get or set the I/O-thread affinity.
- The default value is 0.
-
-
-
-
- Maximum backlog for pending connections.
- The default value is 100.
-
-
-
-
- Get or set whether connecting pipes are not attached immediately, meaning a send()
- on a socket with only connecting pipes would block.
- The default value is false.
-
-
-
-
- If true, session reads all the pending messages from the pipe and
- sends them to the network when socket is closed.
- The default value is true.
-
-
-
-
- If true, socket reads all the messages from the pipe and delivers
- them to the user when the peer terminates.
- The default value is true.
-
-
-
-
- Get or set the Endian-ness, which indicates whether the most-significant bits are placed higher or lower in memory.
- The default value is Endianness.Big.
-
-
-
-
- If true, (X)SUB socket should filter the messages. If false (which is the default), it should not.
-
-
-
-
- Get or set the byte-array that represents the Identity.
- The initial value is null.
-
-
-
-
- Get or set the size of the socket-identity byte-array.
- The initial value is 0, until the Identity property is set.
-
-
-
-
- Get or set whether this allows the use of IPv4 sockets only.
- If true (the default), it will not be possible to communicate with IPv6-only hosts.
- If false, the socket can connect to and accept connections from both IPv4 and IPv6 hosts.
-
-
-
-
- Get or set the last socket endpoint resolved URI
- The initial value is null.
-
-
-
-
- Get or set the Linger time, in milliseconds.
- The default value is -1; The XSub ctor sets this to 0.
-
-
-
-
- Get or set the maximum size of message to handle.
- The default value is -1, which indicates no limit.
-
-
-
-
- Sets the time-to-live field in every multicast packet sent.
- The default value is 1.
-
-
-
-
- Get or set the maximum transfer rate [Kb/s]. The default is 100 Kb/s.
-
-
-
-
- If true, router socket accepts non-zmq tcp connections
- The default value is false, except the Stream ctor initialises this to true.
- Setting this to true changes RecvIdentity to false.
-
-
-
-
- If true, the identity message is forwarded to the socket.
- The default value is false.
-
-
-
-
- Get or set the minimum interval between attempts to reconnect, in milliseconds.
- The default is 100 ms
-
-
-
-
- Get or set the maximum interval between attempts to reconnect, in milliseconds.
- The default is 0 (unused).
-
-
-
-
- Get or set the recovery time interval [ms]. The default is 10 seconds.
-
-
-
-
- SO_SNDBUF and SO_RCVBUF to be passed to underlying transport sockets.
- The initial value is 0.
-
-
-
-
- Get or set the size of the receive-buffer.
- The initial value is 0.
-
-
-
-
- Get or set the high-water marks for message pipes.
- The default value is 1000.
-
-
-
-
- Get or set the high-water mark for message reception.
- The default value is 1000.
-
-
-
-
- The low-water mark for message transmission.
-
-
-
-
- The low-water mark for message reception.
-
-
-
-
- Get or set the timeout for send operations for this socket.
- The default value is -1, which means no timeout.
-
-
-
-
- Get or set the ID of the socket.
- The default value is 0.
-
-
-
-
- Get or set the type of socket (ZmqSocketType).
- The default value is ZmqSocketType.None.
-
-
-
-
- TCP keep-alive settings.
- Defaults to -1 = do not change socket options
-
-
-
-
- Get or set the TCP Keep-Alive Count.
- The default value is -1.
-
-
-
-
- Get or set the TCP Keep-Alive interval to use when at idle.
- The default value is -1.
-
-
-
-
- Get or set the TCP Keep-Alive Interval
- The default value is -1.
-
-
-
-
- Disable TIME_WAIT tcp state when client disconnect.
- The default value is false.
-
-
-
-
- Controls the maximum datagram size for PGM.
-
-
-
-
- Assign the given optionValue to the specified option.
-
- a ZmqSocketOption that specifies what to set
- an Object that is the value to set that option to
- The option and optionValue must be valid.
-
-
-
- Get the value of the specified option.
-
- a ZmqSocketOption that specifies what to get
- an Object that is the value of that option
- A valid option must be specified.
-
-
-
- Base class for objects forming a part of ownership hierarchy.
- It handles initialisation and destruction of such objects.
-
-
-
-
- The Options of this Own.
-
-
-
-
- True if termination was already initiated. If so, we can destroy
- the object if there are no more child objects or pending term acks.
-
-
-
-
- Sequence number of the last command sent to this object.
-
-
-
-
- Sequence number of the last command processed by this object.
-
-
-
-
- Socket owning this object. It's responsible for shutting down
- this object.
-
-
-
-
- List of all objects owned by this socket. We are responsible
- for deallocating them before we quit.
-
-
-
-
- Number of events we have to get before we can destroy the object.
-
-
-
-
- Initializes a new instance of the class that is running on a thread outside of 0MQ infrastructure.
-
- The parent context.
- The thread id.
-
- Note that the owner is unspecified in the constructor. It'll be assigned later on using
-
- when the object is plugged in.
-
-
-
-
- Initializes a new instance of the class that is running within I/O thread.
-
- The I/O thread.
- The options.
-
- Note that the owner is unspecified in the constructor. It'll be assigned later on using
-
- when the object is plugged in.
-
-
-
-
- Eliminate any contained resources that need to have this explicitly done.
-
-
-
-
- A place to hook in when physical destruction of the object is to be delayed.
- Unless overridden, this simply calls Destroy.
-
-
-
-
- Set the owner of *this* Own object, to be the given owner.
-
- the Own object to be our new owner
-
-
-
- When another owned object wants to send a command to this object it calls this function
- to let it know it should not shut down before the command is delivered.
-
-
- This function may be called from a different thread!
-
-
-
-
- Launch the supplied object and become its owner.
-
- The object to be launched.
-
-
-
- Terminate owned object.
-
-
-
-
- Process a termination-request for the given Own obj,
- removing it from the listed of owned things.
-
- the Own object to remove and terminate
-
-
-
- Add the given Own object to the list of owned things.
-
- the Own object to add to our list
-
- If *this* Own is already terminating, then send a request to the given Own obj
- to terminate itself.
-
-
-
-
- Ask owner object to terminate this object. It may take a while actual termination is started.
-
-
- This function should not be called more than once.
-
-
-
-
- Returns true if the object is in process of termination.
-
-
-
-
- Send termination requests to all of the owned objects, and then runs the termination process.
-
- the linger time, in milliseconds
-
- Termination handler is protected rather than private so that it can be intercepted by the derived class.
- This is useful to add custom steps to the beginning of the termination process.
-
-
-
-
- Add the given number to the termination-acknowledgement count.
-
-
- The methods RegisterTermAcks and are used to wait for arbitrary events before
- terminating. Just add the number of events to wait for, and when the event occurs - call
- .
- When the number of pending termination-acknowledgements reaches zero, this object will be deallocated.
-
-
-
-
- Decrement the termination-acknowledgement count, and if it reaches zero
- then send a termination-ack to the owner.
-
-
- The methods and UnregisterTermAck are used to wait for arbitrary events before
- terminating. Just add the number of events to wait for, and when the event occurs - call UnregisterTermAck.
- When the number of pending termination-acknowledgements reaches zero, this object will be deallocated.
-
-
-
-
- Process the first termination-acknowledgement.
- Unless this is overridden, it simply calls .
-
-
-
-
- If terminating, and we've already worked through the Seq-nums that were sent,
- then send a termination-ack to the owner (if there is one) and destroy itself.
-
-
-
-
- A Dealer socket is a SocketBase that is used as the parent-class of the Req socket.
- It provides for a pre-fetched Msg, and skips identity-messages.
-
-
-
-
- A DealerSession is a SessionBase subclass that is contained within the Dealer class.
-
-
-
-
- Create a new DealerSession (which is just a SessionBase).
-
- the I/O-thread to associate this with
-
-
-
-
-
-
-
- Messages are fair-queued from inbound pipes. And load-balanced to
- the outbound pipes.
-
-
-
-
- Have we prefetched a message.
-
-
-
-
- The Msg that we have pre-fetched.
-
-
-
-
- Create a new Dealer socket that holds the prefetched message.
-
-
-
-
- Destroy this Dealer-socket and close out any pre-fetched Msg.
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- For a Dealer socket: If there's a pre-fetched message, snatch that.
- Otherwise, dump any identity messages and get the first non-identity message,
- or return false if there are no messages available.
-
- a Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- If there's a pre-fetched message, snatch that.
- Otherwise, dump any identity messages and get the first non-identity message,
- or return false if there are no messages available.
-
- a Msg to receive the message into
- false if there were no messages to receive
-
-
-
- If there is a message available and one has not been pre-fetched yet,
- preserve that message as our pre-fetched one.
-
-
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method
- and gets overridden by the different sockets
- to provide their own concrete implementation.
-
- the Pipe that is now becoming available for writing
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Indicate the given pipe as being ready for reading by this socket
- - however in the case of Pair, this does nothing.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket,
- however in the case of this Pair socket - this does nothing.
- This method gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- A Router is a subclass of SocketBase
-
-
-
-
- An instance of class Outpipe contains a Pipe and a boolean property Active.
-
-
-
-
- Fair queueing object for inbound pipes.
-
-
-
-
- Holds the prefetched message.
-
-
-
-
- Outbound pipes indexed by the peer IDs.
-
-
-
-
- The pipe we are currently writing to.
-
-
-
-
- State of the recv operation
-
-
-
-
- State of the sending operation
-
-
-
-
- Peer ID are generated. It's a simple increment and wrap-over
- algorithm. This value is the next ID to use (if not used already).
-
-
-
-
- Create a new Router instance with the given parent-Ctx, thread-id, and socket-id.
-
- the Ctx that will contain this Router
- the integer thread-id value
- the integer socket-id value
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
- The receiving host must be identifiable.
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- This override of the abstract XRecv method, simply throws a NotSupportedException because XRecv is not supported on a Pub socket.
-
- the Msg to receive the message into
- Messages cannot be received from PUB socket
-
-
-
- Fair queueing object for inbound pipes.
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- Load balancer managing the outbound pipes.
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- If true, we are in process of sending the reply. If false we are
- in process of receiving a request.
-
-
-
-
- If true, we are starting to receive a request. The beginning
- of the request is the backtrace stack.
-
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
- XSend must only be called on Rep when in the state of sending a reply.
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
- XRecv must not be called on Rep while in the state of sending a reply.
-
-
-
- A Req is a Dealer socket that serves as the Request in a Request/Response pattern.
-
-
-
-
- If true, request was already sent and reply wasn't received yet or
- was received partially.
-
-
-
-
- If true, we are starting to send/receive a message. The first part
- of the message must be empty message part (backtrace stack bottom).
-
-
-
-
- Create a new Req (Request) socket with the given parent Ctx, thread and socket id.
-
- the Ctx to contain this socket
- an integer thread-id for this socket to execute on
- the socket-id for this socket
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
- Cannot XSend on a Req while awaiting reply.
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
- Req.XRecv expecting send, not receive.
-
-
- ReqSession must be in a valid state when PushMsg is called.
-
-
-
- A Router is a subclass of SocketBase
-
-
-
-
- An instance of class Outpipe contains a Pipe and a boolean property Active.
-
-
-
-
- Fair queueing object for inbound pipes.
-
-
-
-
- True if there is a message held in the pre-fetch buffer.
-
-
-
-
- If true, the receiver got the message part with
- the peer's identity.
-
-
-
-
- Holds the prefetched identity.
-
-
-
-
- Holds the prefetched message.
-
-
-
-
- If true, more incoming message parts are expected.
-
-
-
-
- We keep a set of pipes that have not been identified yet.
-
-
-
-
- Outbound pipes indexed by the peer IDs.
-
-
-
-
- The pipe we are currently writing to.
-
-
-
-
- The pipe we are currently reading from.
-
-
-
-
- If true, more outgoing message parts are expected.
-
-
-
-
- Peer ID are generated. It's a simple increment and wrap-over
- algorithm. This value is the next ID to use (if not used already).
-
-
-
-
- If true, report EHOSTUNREACH to the caller instead of silently dropping
- the message targeting an unknown peer.
-
-
-
-
- If true, router socket accepts non-zmq tcp connections
-
-
-
-
- When enabled new router connections with same identity take over old ones
-
-
-
-
- Create a new Router instance with the given parent-Ctx, thread-id, and socket-id.
-
- the Ctx that will contain this Router
- the integer thread-id value
- the integer socket-id value
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
- The receiving host must be identifiable.
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- Fair queueing object for inbound pipes.
-
-
-
-
- True if there is a message held in the pre-fetch buffer.
-
-
-
-
- If true, the receiver got the message part with
- the peer's identity.
-
-
-
-
- Holds the prefetched identity.
-
-
-
-
- Holds the prefetched message.
-
-
-
-
- Outbound pipes indexed by the peer IDs.
-
-
-
-
- The pipe we are currently writing to.
-
-
-
-
- If true, more outgoing message parts are expected.
-
-
-
-
- Peer ID are generated. It's a simple increment and wrap-over
- algorithm. This value is the next ID to use (if not used already).
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
- In Stream.XSend
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- Set the specified option on this socket - which must be either a SubScribe or an Unsubscribe.
-
- which option to set
- the value to set the option to
- true if successful
- optionValue must be a String or a byte-array.
-
-
-
- XSend transmits a given message. The Send method calls this to do the actual sending.
- This override of that abstract method simply throws NotSupportedException because XSend is not supported on a Sub socket.
-
- the message to transmit
- XSend not supported on Sub socket
-
-
-
- Return false to indicate that XHasOut is not applicable on a Sub socket.
-
-
-
-
-
- Make resize operation on array.
-
- Type of containing data.
- Source array.
- New size of array.
- If grow/shrink operation should be applied to the end of array.
- Resized array.
-
-
-
- List of outbound pipes.
-
-
-
-
- Number of all the pipes to send the next message to.
-
-
-
-
- Number of active pipes. All the active pipes are located at the
- beginning of the pipes array. These are the pipes the messages
- can be sent to at the moment.
-
-
-
-
- Number of pipes eligible for sending messages to. This includes all
- the active pipes plus all the pipes that we can in theory send
- messages to (the HWM is not yet reached), but sending a message
- to them would result in partial message being delivered, ie. message
- with initial parts missing.
-
-
-
-
- True if last we are in the middle of a multipart message.
-
-
-
-
- Create a new, empty Distribution object.
-
-
-
-
- Adds the pipe to the distributor object.
-
-
-
-
-
- Mark the pipe as matching. Subsequent call to send_to_matching
- will send message also to this pipe.
-
-
-
-
-
- Mark all pipes as non-matching.
-
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe from the distributor.
-
- the pipe that was terminated
-
-
-
- Activates pipe that have previously reached high watermark.
-
-
-
-
-
- Send the message to all the outbound pipes.
-
-
-
-
-
- Send the message to the matching outbound pipes.
-
-
-
-
-
- Put the message to all active pipes.
-
-
-
-
- Write the message to the pipe. Make the pipe inactive if writing
- fails. In such a case false is returned.
-
-
-
-
- This class manages a set of inbound pipes. On receive it performs fair
- queueing so that senders gone berserk won't cause denial of
- service for decent senders.
-
-
-
-
- Inbound pipes.
-
-
-
-
- Number of active pipes. All the active pipes are located at the
- beginning of the pipes array.
-
-
-
-
- Index of the next bound pipe to read a message from.
-
-
-
-
- If true, part of a multipart message was already received, but
- there are following parts still waiting in the current pipe.
-
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
-
- the pipe that was terminated
-
-
-
- List of outbound pipes.
-
-
-
-
- Number of active pipes. All the active pipes are located at the
- beginning of the pipes array.
-
-
-
-
- Points to the last pipe that the most recent message was sent to.
-
-
-
-
- True if last we are in the middle of a multipart message.
-
-
-
-
- True if we are dropping current message.
-
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
-
- the pipe that was terminated
-
-
-
- Multi-trie. Each node in the trie is a set of pointers to pipes.
-
-
-
-
- Add key to the trie. Returns true if it's a new subscription
- rather than a duplicate.
-
-
-
-
- Remove all subscriptions for a specific peer from the trie.
- If there are no subscriptions left on some topics, invoke the
- supplied callback function.
-
-
-
-
-
-
-
-
- Remove specific subscription from the trie. Return true is it was
- actually removed rather than de-duplicated.
-
-
-
-
-
-
-
-
-
- Signal all the matching pipes.
-
-
-
-
- Add key to the trie. Returns true if this is a new item in the trie
- rather than a duplicate.
-
-
-
-
-
-
-
-
- Remove key from the trie. Returns true if the item is actually
- removed from the trie.
-
-
-
-
-
-
-
-
- Check whether particular key is in the trie.
-
-
-
-
-
-
-
-
- List of all subscriptions mapped to corresponding pipes.
-
-
-
-
- Distributor of messages holding the list of outbound pipes.
-
-
-
-
- If true, send all subscription messages upstream, not just
- unique ones. The default is false.
-
-
-
-
-
- The default value is false.
-
-
-
-
- True if we are in the middle of sending a multipart message.
-
-
-
-
- True if we are in the middle of receiving a multipart message.
-
-
-
-
- List of pending (un)subscriptions, ie. those that were already
- applied to the trie, but not yet received by the user.
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- if true - subscribe to all data on the pipe
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- Set the specified option on this socket.
-
- which option to set
- the value to set the option to
- true if successful
- optionValue must be a byte-array.
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- An XSubSession is a subclass of SessionBase that provides nothing more.
-
-
-
-
- Fair queueing object for inbound pipes.
-
-
-
-
- Object for distributing the subscriptions upstream.
-
-
-
-
- The repository of subscriptions.
-
-
-
-
- If true, 'message' contains a matching message to return on the
- next recv call.
-
-
-
-
- If true, part of a multipart message was already received, but
- there are following parts still waiting.
-
-
-
-
- Register the pipe with this socket.
-
- the Pipe to attach
- not used
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This gets called by the WriteActivated method.
-
- the Pipe that is now becoming available for writing
-
-
-
- This is an override of the abstract method that gets called to signal that the given pipe is to be removed from this socket.
-
- the Pipe that is being removed
-
-
-
- Transmit the given message. The Send method calls this to do the actual sending.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- A pipe is a ZObject with ..
-
-
- Note that pipe can be stored in three different arrays.
- The array of inbound pipes (1), the array of outbound pipes (2) and
- the generic array of pipes to deallocate (3).
-
-
-
-
- Indicate that the given pipe is now ready for reading.
- Pipe calls this on it's sink in response to ProcessActivateRead.
- When called upon an instance of SocketBase, this simply calls XReadActivated.
-
- the pipe to indicate is ready for reading
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
-
- the pipe that was terminated
-
-
-
- The underlying pipe for reading from.
-
-
-
-
- The underlying pipe for writing to.
-
-
-
-
- This indicates whether this pipe can be read from.
-
-
-
-
- This indicates whether this pipe be written to.
-
-
-
-
- High watermark for the outbound pipe.
-
-
-
-
- Low watermark for the inbound pipe.
-
-
-
-
- Number of messages read so far.
-
-
-
-
- Number of messages written so far.
-
-
-
-
- Last received peer's msgs_read. The actual number in the peer
- can be higher at the moment.
-
-
-
-
- The pipe object on the other side of the pipe-pair.
-
-
-
-
- Sink to send events to.
-
-
-
-
- Specifies the state of the pipe endpoint.
-
-
-
- Active is common state before any termination begins.
-
-
- Delimited means that delimiter was read from pipe before term command was received.
-
-
- Pending means that term command was already received from the peer but there are still pending messages to read.
-
-
- Terminating means that all pending messages were already read and all we are waiting for is ack from the peer.
-
-
- Terminated means that 'terminate' was explicitly called by the user.
-
-
- Double_terminated means that user called 'terminate' and then we've got term command from the peer as well.
-
-
-
- If true , we receive all the pending inbound messages before terminating.
- If false , we terminate immediately when the peer asks us to.
-
-
-
-
- Identity of the writer. Used uniquely by the reader side.
-
-
-
-
- Create a new Pipe object with the given parent, and inbound and outbound YPipes.
-
-
- Constructor is private as pipe can only be created using
-
- method.
-
-
-
-
- Create a pipe pair for bi-directional transfer of messages.
-
- The parents.
-
- First HWM is for messages passed from first pipe to the second pipe.
- Second HWM is for messages passed from second pipe to the first pipe.
-
-
- First LWM is for messages passed from first pipe to the second pipe.
- Second LWM is for messages passed from second pipe to the first pipe.
-
-
- Delay specifies how the pipe behaves when the peer terminates. If true
- pipe receives all the pending messages before terminating, otherwise it
- terminates straight away.
-
- A pipe pair for bi-directional transfer of messages.
-
-
-
-
- uses this function to let us know about the peer pipe object.
-
- The peer to be assigned.
-
-
-
- Specifies the object to send events to.
-
- The receiver of the events.
-
-
-
- Get or set the byte-array that comprises the identity of this Pipe.
-
-
-
-
- Get or set the byte-array that comprises the routing id of this Pipe.
-
-
-
-
- Checks if there is at least one message to read in the pipe.
-
-
- Returns true if there is at least one message to read in the pipe; false
- otherwise.
-
-
-
-
- Read a message from the underlying inbound pipe, and write it to the provided Msg argument.
-
- true if a message is read from the pipe, false if pipe is terminated or no messages are available
-
-
-
- Check whether messages can be written to the pipe. If writing
- the message would cause high watermark the function returns false.
-
- true if message can be written to the pipe; false otherwise.
-
-
-
- Write a message to the underlying pipe.
-
- The message to write.
- false if the message cannot be written because high watermark was reached.
-
-
-
- Remove unfinished parts of the outbound message from the pipe.
-
-
-
-
- Flush the messages downstream.
-
-
-
-
- This method is called to assign the specified pipe as a replacement for the outbound pipe that was being used.
-
- the pipe to use for writing
-
- A "Hiccup" occurs when an outbound pipe experiences something like a transient disconnect or for whatever other reason
- is no longer available for writing to.
-
-
-
-
- Process the pipe-termination ack.
-
-
-
-
- Ask pipe to terminate. The termination will happen asynchronously
- and user will be notified about actual deallocation by 'terminated'
- event.
-
-
- if set to true , the pending messages will be processed
- before actual shutdown.
-
-
-
-
- Compute an appropriate low watermark from the given high-watermark.
-
- the given high-watermark value to compute it from
- predefined low watermark value coming from configuration
- the computed low-watermark
-
-
-
- Handles the delimiter read from the pipe.
-
-
-
-
- Temporarily disconnects the inbound message stream and drops
- all the messages on the fly. Causes 'hiccuped' event to be generated in the peer.
-
-
-
-
- Override the ToString method to return a string denoting the type and the parent.
-
- a string containing this type and also the value of the parent-property
-
-
-
- Class Reaper is a ZObject and implements IPollEvents.
- The Reaper is dedicated toward handling socket shutdown asynchronously and cleanly.
- By passing this task off to the Reaper, the message-queueing subsystem can terminate immediately.
-
-
-
-
- Reaper thread accesses incoming commands via this mailbox.
-
-
-
-
- This is a Socket, used as the handle associated with the mailbox's file descriptor.
-
-
-
-
- I/O multiplexing is performed using a poller object.
-
-
-
-
- Number of sockets being reaped at the moment.
- These are the reason for having a reaper: to take over the task of terminating these sockets.
-
-
-
-
- If true, we were already asked to terminate.
-
-
-
-
- Create a new Reaper with the given thread-id.
- This will have a new Poller with the name "reaper-" + thread-id, and a Mailbox of that same name.
-
- the Ctx for this to be in
- an integer id to give to the thread this will live on
-
-
-
- Release any contained resources - by destroying the poller and closing the mailbox.
-
-
-
-
- Get the Mailbox that this Reaper uses for communication with the rest of the message-queueing subsystem.
-
-
-
-
- Start the contained Poller to begin polling.
-
-
-
-
- Issue the Stop command to this Reaper object.
-
-
-
-
- Handle input-ready events, by receiving and processing any commands
- that are waiting in the mailbox.
-
-
-
-
- This method normally is for handling output-ready events, which don't apply here.
-
- You must not call OutEvent on a Reaper.
-
-
-
- This would be called when a timer expires - however in this event NotSupportedException would be thrown.
-
- an integer used to identify the timer
- You must not call TimerEvent on a Reaper.
-
-
-
- Respond to the Stop command by signaling the polling-loop to terminate,
- and if there're no sockets left to reap - stop the poller.
-
-
-
-
- Add the given socket to the list to be reaped (terminated).
-
- the socket to add to the list for termination
-
-
-
- Respond to having one of the sockets that are marked for reaping, - finished being reaped,
- and if there are none left - send the Done command and stop the poller.
-
-
-
-
- If true, this session (re)connects to the peer. Otherwise, it's
- a transient session created by the listener.
-
-
-
-
- Pipe connecting the session to its socket.
-
-
-
-
- This set is added to with pipes we are disconnecting, but haven't yet completed
-
-
-
-
- This flag is true if the remainder of the message being processed
- is still in the pipe.
-
-
-
-
- True if termination have been suspended to push the pending
- messages to the network.
-
-
-
-
- The protocol I/O engine connected to the session.
-
-
-
-
- The socket the session belongs to.
-
-
-
-
- I/O thread the session is living in. It will be used to plug in
- the engines into the same thread.
-
-
-
-
- ID of the linger timer (0x20)
-
-
-
-
- True is linger timer is running.
-
-
-
-
- If true, identity has been sent to the network.
-
-
-
-
- If true, identity has been received from the network.
-
-
-
-
- Protocol and address to use when connecting.
-
-
-
-
- Create a return a new session.
- The specific subclass of SessionBase that is created is dictated by the SocketType specified by the options argument.
-
- the IOThread for this session to run in
- whether to immediately connect
- the socket to connect
- an Options that provides the SocketType that dictates which type of session to create
- an Address object that specifies the protocol and address to connect to
- the newly-created instance of whichever subclass of SessionBase is specified by the options
- The socket must be of the correct type.
-
-
-
- Create a new SessionBase object from the given IOThread, socket, and Address.
-
- the IOThread for this session to run on
- this flag dictates whether to connect
- the socket to contain
- Options that dictate the settings of this session
- an Address that dictates the protocol and IP-address to use when connecting
-
-
-
- Terminate and release any contained resources.
- This cancels the linger-timer if that exists, and terminates the protocol-engine if that exists.
-
-
-
-
- Attach the given pipe to this session.
-
-
- This is to be used once only, when creating the session.
-
-
-
-
- Read a message from the pipe.
-
- a reference to a Msg to put the message into
- true if the Msg is successfully sent
-
-
-
- Write the given Msg to the pipe.
-
- the Msg to push to the pipe
- true if the Msg was successfully sent
-
-
-
- Set the identity-sent and identity-received flags to false.
-
-
-
-
- Flush any messages that are in the pipe downstream.
-
-
-
-
- Remove any half processed messages. Flush unflushed messages.
- Call this function when engine disconnect to get rid of leftovers.
-
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
-
- the pipe that was terminated
-
-
-
- Indicate that the given pipe is now ready for reading.
- Pipe calls this on it's sink in response to ProcessActivateRead.
-
- the pipe to indicate is ready for reading
-
-
-
- Get the contained socket.
-
-
-
-
- Process the Plug-request by setting this SessionBase as the handler for the io-object
- and starting connecting (without waiting).
-
-
-
-
- Process the Attach-request by hooking up the pipes
- and plugging in the given engine.
-
- the IEngine to plug in
-
-
-
- Flush out any leftover messages and call Detached.
-
-
-
-
- Process a termination request.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
-
-
-
- Call this function to move on with the delayed process-termination request.
-
-
-
-
- This is called when the timer expires.
-
- an integer used to identify the timer
-
-
-
- The parent SessionBase class calls this when the Detach method finishes detaching.
-
-
-
-
- Begin connecting.
-
- Whether to wait a bit before actually attempting to connect
-
-
-
- Override the ToString method to also show the socket-id.
-
- the type of this object and [ socket-id ]
-
-
-
- This method would be called when a message receive operation has been completed, although here it only throws a NotSupportedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- This operation is not supported on the SessionBase class.
-
-
-
- This method would be called when a message Send operation has been completed, although here it only throws a NotSupportedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- This operation is not supported on the SessionBase class.
-
-
- If true, associated context was already terminated.
-
-
-
- If true, object should have been already destroyed. However,
- destruction is delayed while we unwind the stack to the point
- where it doesn't intersect the object being destroyed.
-
-
-
- Socket's mailbox object.
-
-
- List of attached pipes.
-
-
- Reaper's poller.
-
-
- The handle of this socket within the reaper's poller.
-
-
- Timestamp of when commands were processed the last time.
-
-
- Number of messages received since last command processing.
-
-
- True if the last message received had MORE flag set.
-
-
- Monitor socket.
-
-
- Bitmask of events being monitored.
-
-
- The tcp port that was bound to, if any.
-
-
-
- Create a new SocketBase within the given Ctx, with the specified thread-id and socket-id.
-
- the Ctx context that this socket will live within
- the id of the thread upon which this socket will execute
- the integer id for the new socket
-
-
-
- Abstract method for attaching a given pipe to this socket.
- The concrete implementations are defined by the individual socket types.
-
- the Pipe to attach
- if true - subscribe to all data on the pipe
-
-
-
- Abstract method that gets called to signal that the given pipe is to be removed from this socket.
- The concrete implementations of SocketBase override this to provide their own implementation
- of how to terminate the pipe.
-
- the Pipe that is being removed
-
-
- Throw if this socket is already disposed.
- This object is already disposed.
-
-
-
- Throw if the message-queueing system has started terminating.
-
- The socket has been stopped.
-
-
-
- Create a socket of a specified type.
-
- a ZmqSocketType specifying the type of socket to create
- the parent context
- the thread for this new socket to run on
- an integer id for this socket
- The socket type must be valid.
-
-
-
- Destroy this socket - which means to stop monitoring the queue for messages.
- This simply calls StopMonitor, and then verifies that the destroyed-flag is set.
-
-
-
-
- Return the Mailbox associated with this socket.
-
-
-
-
- Interrupt a blocking call if the socket is stuck in one.
- This function can be called from a different thread!
-
-
-
-
- Check whether the transport protocol, as specified in connect or
- bind, is available and compatible with the socket type.
-
- the specified protocol is not supported
- the socket type and protocol do not match
-
- The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
- If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
-
-
-
-
- Register the given pipe with this socket.
-
- the Pipe to attach
- if true - subscribe to all data on the pipe (optional - default is false)
-
-
-
- Set the specified socket option.
-
- which option to set
- the value to set the option to
- The socket has been stopped.
-
-
-
- Return the integer-value of the specified option.
-
- which option to get
- the value of the specified option, or -1 if error
- The socket has been stopped.
-
- If the ReceiveMore option is specified, then 1 is returned if it is true, 0 if it is false.
- If the Events option is specified, then process any outstanding commands, and return -1 if that throws a TerminatingException.
- then return an integer that is the bitwise-OR of the PollEvents.PollOut and PollEvents.PollIn flags.
- Otherwise, cast the specified option value to an integer and return it.
-
-
-
-
- Return the value of the specified option as an Object.
-
- which option to get
- the value of the option
- The socket has already been stopped.
-
- If the Handle option is specified, then return the handle of the contained mailbox.
- If the Events option is specified, then process any outstanding commands, and return -1 if that throws a TerminatingException.
- then return a PollEvents that is the bitwise-OR of the PollEvents.PollOut and PollEvents.PollIn flags.
-
-
-
-
- Bind this socket to the given address.
-
- a string denoting the endpoint-address to bind to
- the address specified to bind to must not be already in use
- The requested protocol is not supported.
- the socket bind failed
-
- No IO thread was found, or the protocol's listener encountered an
- error during initialisation.
-
- the specified protocol is not supported
- the socket type and protocol do not match
- The socket has been stopped.
-
- The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
- If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
- If the protocol is "inproc", you cannot bind to the same address more than once.
-
-
-
- Bind the specified TCP address to an available port, assigned by the operating system.
- a string denoting the endpoint to bind to
- the port-number that was bound to
- uses a protocol other than TCP.
- The socket has been stopped.
- The specified address is already in use.
-
- No IO thread was found, or the protocol's listener errored during
- initialisation.
-
- the socket bind failed
-
-
-
- Connect this socket to the given address.
-
- a string denoting the endpoint to connect to
- The specified address is already in use.
- No IO thread was found.
- the specified protocol is not supported
- the socket type and protocol do not match
- The socket has been stopped.
-
- The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
- If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
-
- The given address was not found in the list of endpoints.
-
-
-
- Given a string containing an endpoint address like "tcp://127.0.0.1:5555,
- break-it-down into the address part ("127.0.0.1:5555") and the protocol part ("tcp").
-
- a string denoting the endpoint, to take the parts from
- the IP-address portion of the end-point address
- the protocol portion of the end-point address (such as "tcp")
-
-
-
- Take ownership of the given and register it against the given
- .
-
-
-
-
- Disconnect from the given endpoint.
-
- the endpoint to disconnect from
- is null .
- Endpoint was not found and cannot be disconnected.
- The specified protocol must be valid.
- The socket has been stopped.
-
-
-
- Transmit the given Msg across the message-queueing system.
-
- The to send.
-
- The timeout to wait before returning false . Pass
- to disable timeout.
-
- Whether this message will contain another frame after this one.
- The socket has been stopped.
- is not initialised.
-
-
-
- Receive a frame into the given and return true if successful,
- false if it timed out.
-
- the Msg to read the received message into
- this controls whether the call blocks, and for how long.
- true if successful, false if it timed out
-
- For , there are three categories of value:
-
- - return false immediately if no message is available
- -
-
(or a negative value) - wait indefinitely, always returning
- true
-
- - Any positive value - return
false after the corresponding duration if no message has become available
-
-
- the Msg must already have been uninitialised
- The socket must not already be stopped.
-
-
-
- Close this socket. Mark it as disposed, and send ownership of it to the reaper thread to
- attend to the rest of it's shutdown process.
-
-
-
-
- These functions are used by the polling mechanism to determine
- which events are to be reported from this socket.
-
-
-
-
- These functions are used by the polling mechanism to determine
- which events are to be reported from this socket.
-
-
-
-
- Using this function reaper thread ask the socket to register with
- its poller.
-
-
-
-
- Processes commands sent to this socket (if any).
- If is -1 , the call blocks until at least one command was processed.
- If is true , commands are processed at most once in a predefined time period.
-
- how much time to allow to wait for a command, before returning (in milliseconds)
- if true - throttle the rate of command-execution by doing only one per call
- The Ctx context must not already be terminating.
-
-
-
- Process a termination command on this socket, by stopping monitoring and marking this as terminated.
-
-
-
-
- Process a Bind command by attaching the given Pipe.
-
- the Pipe to attach
-
-
-
- Process a termination request.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
-
-
-
- Mark this socket as having been destroyed. Delay actual destruction of the socket.
-
-
-
-
- The default implementation assumes there are no specific socket
- options for the particular socket type. If not so, overload this
- method.
-
- a ZmqSocketOption specifying which option to set
- an Object that is the value to set the option to
-
-
-
- This gets called when outgoing messages are ready to be sent out.
- On SocketBase, this does nothing and simply returns false.
-
- this method on SocketBase only returns false
-
-
-
- Transmit the given message. The
-
- method calls this to do the actual sending.
- This abstract method gets overridden by the different socket types
- to provide their concrete implementation of sending messages.
-
- the message to transmit
- true if the message was sent successfully
-
-
-
- This gets called when incoming messages are ready to be received.
- On SocketBase, this does nothing and simply returns false.
-
- this method on SocketBase only returns false
-
-
-
- Receive a message. The Recv method calls this lower-level method to do the actual receiving.
- This abstract method gets overridden by the different socket types
- to provide their concrete implementation of receiving messages.
-
- the Msg to receive the message into
- true if the message was received successfully, false if there were no messages to receive
-
-
-
- Indicate the given pipe as being ready for reading by this socket.
- This abstract method gets overridden by the different sockets
- to provide their own concrete implementation.
-
- the Pipe that is now becoming available for reading
-
-
-
- Indicate the given pipe as being ready for writing to by this socket.
- This abstract method gets called by the WriteActivated method
- and gets overridden by the different sockets
- to provide their own concrete implementation.
-
- the Pipe that is now becoming available for writing
-
-
-
- Handle input-ready events by receiving and processing any incoming commands.
-
-
-
-
- Handle output-ready events.
-
- This is not supported on instances of the parent class SocketBase.
-
-
-
- In subclasses of SocketBase this is overridden, to handle the expiration of a timer.
-
- an integer used to identify the timer
- You must not call TimerEvent on an instance of class SocketBase.
-
-
-
- To be called after processing commands or invoking any command
- handlers explicitly. If required, it will deallocate the socket.
-
-
-
-
- Indicate that the given pipe is now ready for reading.
- Pipe calls this on it's sink in response to ProcessActivateRead.
- When called upon an instance of SocketBase, this simply calls XReadActivated.
-
- the pipe to indicate is ready for reading
-
-
-
- When called upon an instance of SocketBase, this simply calls XWriteActivated.
-
- the pipe to indicate is ready for writing
-
-
-
- This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
-
- the pipe that was terminated
-
-
-
- Moves the flags from the message to local variables,
- to be later retrieved by getsockopt.
-
-
-
-
- Register the given events to monitor on the given endpoint.
-
- a string denoting the endpoint to monitor. If this is null - monitoring is stopped.
- the SocketEvent to monitor for
- Maximum number of sockets reached.
-
- The protocol of
- is not supported.
-
- The socket has been stopped.
-
-
-
- If there is a monitor-socket, close it and set monitor-events to 0.
-
-
-
-
- Override the ToString method in order to also show the socket-id.
-
- A string that denotes this object type followed by [ socket-id ]
-
-
-
- Get the Socket (Handle) - which is actually the Handle of the contained mailbox.
-
-
-
-
- Return a short bit of text that denotes the SocketType of this socket.
-
- a short type-string such as PAIR, PUB, OR UNKNOWN
-
-
-
- The class ByteArraySegment provides for containing a simple byte-array, an Offset property,
- and a variety of operations that may be performed upon it.
-
-
-
-
- Create a new ByteArraySegment containing the given byte-array buffer.
-
- the byte-array for the new ByteArraySegment to contain
-
-
-
- Create a new ByteArraySegment containing the given byte-array buffer with the given offset.
-
- the byte-array for the new ByteArraySegment to contain
- the value for the Offset property
-
-
-
- Create a new ByteArraySegment that is a shallow-copy of the given ByteArraySegment (with a reference to the same buffer).
-
- the source-ByteArraySegment to make a copy of
-
-
-
- Create a new ByteArraySegment that is a shallow-copy of the given ByteArraySegment (with a reference to the same buffer)
- but with a different offset.
-
- the source-ByteArraySegment to make a copy of
- a value for the Offset property that is distinct from that of the source ByteArraySegment
-
-
-
- Get the number of bytes within the buffer that is past the Offset (ie, buffer-length minus offset).
-
-
-
-
- Add the given value to the offset.
-
- the delta value to add to the offset.
-
-
-
- Get the offset into the buffer.
-
-
-
-
- Write the given 64-bit value into the buffer, at the position marked by the offset plus the given index i.
-
- an Endianness to specify in which order to write the bytes
- the 64-bit value to write into the byte-array buffer
- the index position beyond the offset to start writing the bytes
-
-
-
- Write the given 16-bit value into the buffer, at the position marked by the offset plus the given index i.
-
- an Endianness to specify in which order to write the bytes
- the 16-bit value to write into the byte-array buffer
- the index position beyond the offset to start writing the bytes
-
-
-
- Write the given 32-bit value into the buffer, at the position marked by the offset plus the given index i.
-
- an Endianness to specify in which order to write the bytes
- the 32-bit value to write into the byte-array buffer
- the index position beyond the offset to start writing the bytes
-
-
-
- Encode the given String into a byte-array using the ASCII encoding
- and write that into the buffer.
-
- the String to write to the buffer
- the number of encoded bytes to copy into the buffer
- an index-offset, in addition to the Offset property, that marks where in the buffer to start writing bytes to
-
-
-
- Encode the given String into a byte-array using the ASCII encoding
- and write that into the buffer.
-
- the String to write to the buffer
- an index-offset, in addition to the Offset property, that marks where in the buffer to start writing bytes to
-
-
-
- Return a 64-bit numeric value that is read from the buffer, starting at the position marked by the offset plus the given index i,
- based upon the given byte-ordering.
-
- an Endianness to specify which byte-ordering to use to interpret the source bytes
- the index position beyond the offset to start reading the bytes
- a long that is read from the bytes of the buffer
-
-
-
- Return a 64-bit unsigned numeric value (ulong) that is read from the buffer, starting at the position marked by the offset plus the given index i,
- based upon the given byte-ordering.
-
- an Endianness to specify which byte-ordering to use to interpret the source bytes
- the index position beyond the offset to start reading the bytes
- an unsigned long that is read from the bytes of the buffer
-
-
-
- Return a 32-bit integer that is read from the buffer, starting at the position marked by the offset plus the given index i,
- based upon the given byte-ordering.
-
- an Endianness to specify which byte-ordering to use to interpret the source bytes
- the index position beyond the offset to start reading the bytes
- an integer that is read from the bytes of the buffer
-
-
-
- Return a 16-bit unsigned integer (ushort) value that is read from the buffer, starting at the position marked by the offset plus the given index i,
- based upon the given byte-ordering.
-
- an Endianness to specify which byte-ordering to use to interpret the source bytes
- the index position beyond the offset to start reading the bytes
- a ushort that is read from the bytes of the buffer
-
-
-
- Return a String that is read from the byte-array buffer, decoded using the ASCII encoding,
- starting at the position marked by the offset plus the given index i.
-
- the length of the part of the buffer to read
- the index position beyond the offset to start reading the bytes
- a String decoded from the bytes of the buffer
-
-
-
- Write the bytes of this ByteArraySegment to the specified destination-ByteArraySegment.
-
- the destination-ByteArraySegment
- the number of bytes to copy
-
-
-
- Write the bytes of this ByteArraySegment to the specified destination-ByteArraySegment.
-
- an offset within this source buffer to start copying from
- the destination-ByteArraySegment
- an offset within the destination buffer to start copying to
- the number of bytes to copy
-
-
-
- Return a shallow-copy of this ByteArraySegment.
-
- a new ByteArraySegment that is a shallow-copy of this one
-
-
-
- Get or set the byte of the buffer at the i-th index position (zero-based).
-
- the index of the byte to access
-
-
-
- Set the offset to zero.
-
-
-
-
- Return a new ByteArraySegment that has the data of this one, but with the given offset.
-
- the source-ByteArraySegment
- the offset-value to give the new ByteArraySegment
-
-
-
-
- Return a new ByteArraySegment that contains the given byte-array buffer.
-
- the source byte-array buffer
- a new ByteArraySegment that contains the given buffer
-
-
-
- Return the byte-array buffer of this ByteArraySegment.
-
- the source-ByteArraySegment
- the byte-array that is the buffer of this ByteArraySegment
-
-
-
- Return true if the given Object is a ByteArraySegment and has the same buffer and offset.
-
- an Object to compare for equality to this one
- true only if the otherObject has the same buffer and offset
-
- The given Object is considered to be Equal if it also is a ByteArraySegment,
- and has the same Offset property value
- and it's buffer points to the SAME byte-array as the otherObject does.
-
-
-
-
- Helper base class for decoders that know the amount of data to read
- in advance at any moment.
- This class is the state machine that parses the incoming buffer.
- Derived classes should implement individual state machine actions.
-
-
- Knowing the amount in advance is a property
- of the protocol used. 0MQ framing protocol is based size-prefixed
- paradigm, which qualifies it to be parsed by this class.
-
- On the other hand, XML-based transports (like XMPP or SOAP) don't allow
- for knowing the size of data to read in advance and should use different
- decoding algorithms.
-
-
-
-
- Where to store the read data.
-
-
-
-
- How much data to read before taking next step.
-
-
-
-
- The buffer for data to decode.
-
-
-
-
- Returns true if the decoder has been fed all required data
- but cannot proceed with the next decoding step.
- False is returned if the decoder has encountered an error.
-
-
-
-
- Returns a buffer to be filled with binary data.
-
-
-
-
- Processes the data in the buffer previously allocated using
- get_buffer function. size argument specifies the number of bytes
- actually filled into the buffer. Function returns number of
- bytes actually processed.
-
-
-
-
- Where to get the data to write from.
-
-
-
-
- If true, first byte of the message is being written.
-
-
-
-
- How much data to write before the next step should be executed.
-
-
-
-
- The buffer for encoded data.
-
-
-
-
- The size of the encoded-data buffer
-
-
-
-
- This flag indicates whether there has been an encoder error.
-
-
-
-
- Create a new EncoderBase with a buffer of the given size.
-
- how big of an internal buffer to allocate (in bytes)
- the to set this EncoderBase to
-
-
-
- Get the Endianness (Big or Little) that this EncoderBase uses.
-
-
-
-
- This returns a batch of binary data. The data
- are filled to a supplied buffer. If no buffer is supplied (data_
- points to NULL) decoder object will provide buffer of its own.
-
-
-
-
- Set a flag that indicates that there has been an encoding-error.
-
-
-
-
- Return true if there has been an encoding error.
-
- the state of the error-flag
-
-
-
- Interface IEncoder mandates SetMsgSource and GetData methods.
-
-
-
-
- Set message producer.
-
-
-
-
- Get a ByteArraySegment of binary data. The data
- are filled to a supplied buffer. If no buffer is supplied (data is null)
- encoder will provide buffer of its own.
-
-
-
-
- Abstract interface to be implemented by various engines.
-
-
-
-
- Plug the engine to the session.
-
-
-
-
- Terminate and deallocate the engine. Note that 'detached'
- events are not fired on termination.
-
-
-
-
- This method is called by the session to signal that more
- messages can be written to the pipe.
-
-
-
-
- This method is called by the session to signal that there
- are messages to send available.
-
-
-
-
- IpcConnecter is a subclass of TcpConnector, which provides absolutely nothing beyond what TcpConnector does.
-
-
-
-
- An IpcListener is a TcpListener that also has an Address property and a SetAddress method.
-
-
-
-
- Create a new IpcListener with the given IOThread, socket, and Options.
-
-
- the SocketBase to listen to
- an Options value that dictates the settings for this IpcListener
-
-
-
- Get the bound address for use with wildcards
-
-
-
-
- Set address to listen on.
-
- a string denoting the address to listen to
-
-
- Unable to parse the address's port number, or the IP address could not be parsed.
-
-
- Unable to parse the address's port number, or the IP address could not be parsed.
-
-
- Unable to parse the address's port number, or the IP address could not be parsed.
- Error establishing underlying socket.
-
-
-
- Process a termination request.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
-
-
-
- This method is called when a message receive operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This method would be called when a message Send operation has been completed, although here it only throws a NotSupportedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- This operation is not supported on the PgmListener class.
-
-
-
- This would be called when the a expires, although here it only throws a NotSupportedException.
-
- an integer used to identify the timer (not used here)
- This operation is not supported on the PgmListener class.
-
-
-
- ID of the timer used to delay the reconnection. Value is 1.
-
-
-
-
- This would be called when a timer expires, although here it only throws a NotSupportedException.
-
- an integer used to identify the timer (not used here)
- This method must not be called on instances of PgmSender.
-
-
-
- This method is called when a message Send operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- A non-recoverable socket error occurred.
-
-
-
- Internal function to return a reconnect back-off delay.
- Will modify the current_reconnect_ivl used for next call
- Returns the currently used interval
-
-
-
-
- This method would be called when a message receive operation has been completed, although here it only throws a NotSupportedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- This method must not be called on instances of PgmSender.
-
-
-
- This enum-type is Idle, Receiving, Stuck, or Error.
-
-
-
-
- This method is be called when a message receive operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This method would be called when a message Send operation has been completed, except in this case this method does nothing.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This would be called when a timer expires, although here it does nothing.
-
- an integer used to identify the timer (not used here)
-
-
-
- This enum-type denotes the type of Pragmatic General Multicast (PGM) socket.
- Publisher, Receiver, or Listener.
-
-
-
-
- A PgmSocket utilizes the Pragmatic General Multicast (PGM) multicast protocol, which is also referred to as "reliable multicast".
- This is only supported on Windows when Microsoft Message Queueing (MSMQ) is installed.
- See RFC 3208.
-
-
-
-
- Set/Query rate (Kb/Sec) + window size (Kb and/or MSec) -- described by RM_SEND_WINDOW below
-
-
-
-
- set IP multicast outgoing interface
-
-
-
-
- add IP multicast incoming interface
-
-
-
-
- Set the Time-To-Live (TTL) of the MCast packets -- (ULONG)
-
-
-
-
- Perform initialization of this PgmSocket, including creating the socket handle.
-
-
-
-
- Override the ToString method to produce a more descriptive, useful description.
-
- a useful description of this object's state
-
-
-
- This enum-type denotes the operational state of this StreamEngine - whether Closed, doing Handshaking, Active, or Stalled.
-
-
-
-
- This method is be called when a message receive operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
-
- This method is called when a message Send operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
-
-
- the SocketError that resulted from the write - which could be Success (no error at all)
- this indicates the number of bytes that were transferred in the write
- the number of bytes transferred if successful, -1 otherwise
- If the socketError is not Success then it must be a valid recoverable error or the number of bytes transferred must be zero.
-
- If socketError is SocketError.Success and bytesTransferred is > 0, then this returns bytesTransferred.
- If bytes is zero, or the socketError is one of NetworkDown, NetworkReset, HostUn, Connection Aborted, TimedOut, or ConnectionReset, - then -1 is returned.
- Otherwise, a NetMQException is thrown.
-
-
-
- the SocketError that resulted from the read - which could be Success (no error at all)
- this indicates the number of bytes that were transferred in the read
- the number of bytes transferred if successful, -1 otherwise
- If the socketError is not Success then it must be a valid recoverable error or the number of bytes transferred must be zero.
-
- If socketError is SocketError.Success and bytesTransferred is > 0, then this returns bytesTransferred.
- If bytes is zero, or the socketError is one of NetworkDown, NetworkReset, HostUn, Connection Aborted, TimedOut, or ConnectionReset, - then -1 is returned.
- Otherwise, a NetMQException is thrown.
-
-
-
-
- This would be called when a timer expires, although here it only throws NotSupportedException.
-
- an integer used to identify the timer (not used here)
- TimerEvent is not supported on StreamEngine.
-
-
-
- A TcpAddress implements IZAddress, and contains an IPEndPoint (the Address property)
- and a Protocol property.
-
-
-
-
- Override ToString to provide a detailed description of this object's state
- in the form: Protocol://[AddressFamily]:Port
-
- a string in the form Protocol://[AddressFamily]:Port
-
-
-
- Given a string that should identify an endpoint-address, resolve it to an actual IP address
- and set the Address property to a valid corresponding value.
-
- the endpoint-address to resolve
- whether the address must be only-IPv4
- The name must contain the colon delimiter.
- The specified port must be a valid nonzero integer.
- Must be able to find the IP-address.
-
-
-
- Get the Address implementation - which here is an IPEndPoint,
- which contains Address, AddressFamily, and Port properties.
-
-
-
-
- Get the textual-representation of the communication protocol implied by this TcpAddress,
- which here is simply "tcp".
-
-
-
-
- If 'delay' is true connector first waits for a while, then starts connection process.
-
-
-
-
- ID of the timer used to delay the reconnection. Value is 1.
-
-
-
-
- Address to connect to. Owned by session_base_t.
-
-
-
-
- The underlying AsyncSocket.
-
-
-
-
- If true file descriptor is registered with the poller and 'handle'
- contains valid value.
-
-
-
-
- If true, connector is waiting a while before trying to connect.
-
-
-
-
- True if a timer has been started.
-
-
-
-
- Reference to the session we belong to.
-
-
-
-
- Current reconnect-interval. This gets updated for back-off strategy.
-
-
-
-
- String representation of endpoint to connect to
-
-
-
-
- Socket
-
-
-
-
- Create a new TcpConnector object.
-
- the I/O-thread for this TcpConnector to live on.
- the session that will contain this
- Options that define this new TcpC
- the Address for this Tcp to connect to
- this boolean flag dictates whether to wait before trying to connect
-
-
-
- This does nothing.
-
-
-
-
- Begin connecting. If a delayed-start was specified - then the reconnect-timer is set, otherwise this starts immediately.
-
-
-
-
- Process a termination request.
- This cancels the reconnect-timer, closes the AsyncSocket, and marks the socket-handle as invalid.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
-
-
-
- This method would be called when a message receive operation has been completed, although here it only throws a NotImplementedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- InCompleted must not be called on a TcpConnector.
-
-
-
- Internal function to start the actual connection establishment.
-
-
-
-
- This method is called when a message Send operation has been completed.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- A non-recoverable socket error occurred.
- If the socketError is not Success then it must be a valid recoverable error.
-
-
-
- This is called when the timer expires - to start trying to connect.
-
- The timer-id. This is not used.
-
-
-
- Internal function to add a reconnect timer
-
-
-
-
- Internal function to return a reconnect back-off delay.
- Will modify the current_reconnect_ivl used for next call
- Returns the currently used interval
-
-
-
-
- Close the connecting socket.
-
-
-
-
- Address to listen on.
-
-
-
-
- Underlying socket.
-
-
-
-
- Socket the listener belongs to.
-
-
-
-
- String representation of endpoint to bind to
-
-
-
-
- The port that was bound on
-
-
-
-
- Create a new TcpListener on the given IOThread and socket.
-
- the IOThread for this to live within
- a SocketBase to listen on
- socket-related Options
-
-
-
- Release any contained resources (here - does nothing).
-
-
-
-
- Process a termination request.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
-
-
-
- Set address to listen on.
-
- a string denoting the address to set this to
-
-
-
- This is called when socket input has been completed.
-
- This indicates the status of the input operation - whether Success or some error.
- the number of bytes that were transferred
- A non-recoverable socket-error occurred.
-
-
-
- Close the listening socket.
-
-
-
-
- Get the bound address for use with wildcards
-
-
-
-
- Get the port-number to listen on.
-
-
-
-
- This method would be called when a message Send operation has been completed - except in this case it simply throws a NotImplementedException.
-
- a SocketError value that indicates whether Success or an error occurred
- the number of bytes that were transferred
- OutCompleted is not implemented on TcpListener.
-
-
-
- This would be called when a timer expires, although here it only throws a NotSupportedException.
-
- an integer used to identify the timer (not used here)
- TimerEvent is not supported on TcpListener.
-
-
-
- The maximum message-size. If this is -1 then there is no maximum.
-
-
-
-
- Create a new V1Decoder with the given buffer-size, maximum-message-size and Endian-ness.
-
- the buffer-size to give the contained buffer
- the maximum message size. -1 indicates no limit.
- the Endianness to specify for it - either Big or Little
-
-
-
- Set the receiver of decoded messages.
-
-
-
-
- Set the receiver of decoded messages.
-
-
-
-
- Encoder for 0MQ framing protocol. Converts messages into data stream.
-
-
-
-
- V2Protocol is a class that contains two integer constants: MoreFlag and LargeFlag.
-
-
-
-
- This is a constant-integer with the value 1.
-
-
-
-
- This is a constant-integer with the value 2.
-
-
-
-
- This class simply provides a counter-value, which may be set, increased, and decremented.
- Increase and Decrement are both thread-safe operations.
-
-
-
-
- Create a new AtomicCounter object with an initial counter-value of zero.
-
-
-
-
- Assign the given amount to the counter-value.
-
- the integer value to set the counter to
-
-
-
- Add the given amount to the counter-value, in an atomic thread-safe manner.
-
- the integer amount to add to the counter-value
-
-
-
- Subtract the given amount from the counter-value, in an atomic thread-safe manner.
-
- the integer amount to subtract from to the counter-value (default value is 1)
- the new value of the counter
-
-
-
- Class ByteArrayEqualityComparer is an IEqualityComparer for byte-arrays,
- and provides an Equals methods to compare two byte-arrays for equality in value
- and GetHashCode.
-
-
-
-
- Return true only if the two byte-arrays are equal in length and contain the same values.
-
- one of the two byte-arrays to compare
- the other byte-array to compare against
-
-
-
-
- Return a numeric hashcode of the given byte-array.
-
- the given byte-array to compute the hashcode of
- an integer that contains a hashcode computed over the byte-array
-
-
-
- The Clock class provides properties for getting timer-counts in either milliseconds or microseconds,
- and the CPU's timestamp-counter if available.
-
-
-
-
- TSC timestamp of when last time measurement was made.
-
-
-
-
- Physical time corresponding to the TSC above (in milliseconds).
-
-
-
-
- This flag indicates whether the rdtsc instruction is supported on this platform.
-
-
-
-
- Return the High-Precision timestamp, as a 64-bit integer that denotes microseconds.
-
-
-
-
- Return the Low-Precision timestamp, as a 64-bit integer denoting milliseconds.
- In tight loops generating it can be 10 to 100 times faster than the High-Precision timestamp.
-
-
-
-
- Return the CPU's timestamp counter, or 0 if it's not available.
-
-
-
-
- A PollSet contains a single Socket and an IPollEvents Handler
- that provides methods that signal when that socket is ready for reading or writing.
-
-
-
-
- Get the Socket that this PollSet contains.
-
-
-
-
- Get the IPollEvents object that has methods to signal when ready for reading or writing.
-
-
-
-
- Get or set whether this PollSet is cancelled.
-
-
-
-
- Create a new PollSet object to hold the given Socket and IPollEvents handler.
-
- the Socket to contain
- the IPollEvents to signal when ready for reading or writing
-
-
-
- This is the list of registered descriptors (PollSets).
-
-
-
-
- List of sockets to add at the start of the next loop
-
-
-
-
- If true, there's at least one retired event source.
-
-
-
-
- This flag is used to tell the polling-loop thread to shut down,
- wherein it will stop at the end of it's current loop iteration.
-
-
-
-
- This indicates whether the polling-thread is not presently running. Default is true.
-
-
-
-
- This is the background-thread that performs the polling-loop.
-
-
-
-
- This is the name associated with this Poller.
-
-
-
-
- The set of Sockets to check for read-readiness.
-
-
-
-
- The set of Sockets to check for any errors.
-
-
-
-
- Create a new Poller object with the given name.
-
- a name to assign to this Poller
-
-
-
- Unless the polling-loop is already stopped,
- tell it to stop at the end of the current polling iteration, and wait for that thread to finish.
-
-
-
-
- Add a new PollSet containing the given Socket and IPollEvents at the next iteration through the loop,
- and also add the Socket to the list of those to check for errors.
-
- the Socket to add
- the IPollEvents to include in the new PollSet to add
-
-
-
- Remove the given Socket from this Poller.
-
- the System.Net.Sockets.Socket to remove
-
-
-
- Add the given Socket to the list to be checked for read-readiness at each poll-iteration.
-
- the Socket to add
-
-
-
- Begin running the polling-loop, on a background thread.
-
-
- The name of that background-thread is the same as the name of this Poller object.
-
-
-
-
- Signal that we want to stop the polling-loop.
- This method returns immediately - it does not wait for the polling thread to stop.
-
-
-
-
- This method is the polling-loop that is invoked on a background thread when Start is called.
- As long as Stop hasn't been called: execute the timers, and invoke the handler-methods on each of the saved PollSets.
-
-
-
-
- This serves as the parent-class for Poller and Proactor.
- It provides for managing a list of timers (ITimerEvents) - adding, cancelling, and executing them,
- and a Load property.
-
-
-
-
- Load of the poller. Currently the number of file descriptors registered.
-
-
-
-
- Instances of this class contain a ITimerEvent sink and an integer Id.
-
-
-
-
- Create a new TimerInfo object from the given sink and id.
-
- an ITimerEvent that acts as a sink for when the timer expires
- an integer id that identifies this timer
-
-
-
- Get the ITimerEvent that serves as the event-sink.
-
-
-
-
- Get the integer Id of this TimerInfo.
-
-
-
-
- This is a list of key/value pairs, with the keys being timeout numbers and the corresponding values being a list of TimerInfo objects.
- It is sorted by the keys - which are timeout values. Thus, by walking down the list, you encounter the soonest timeouts first.
-
-
-
-
- Create a new PollerBase object - which simply creates an empty m_timers collection.
-
-
-
-
- Get the load of this poller. Note that this function can be
- invoked from a different thread!
-
-
-
-
- Add the given amount to the load.
- This is called by individual poller implementations to manage the load.
-
-
- This is thread-safe.
-
-
-
-
- Add a to the internal list, created from the given sink and id - to expire in the given number of milliseconds.
- Afterward the expiration method TimerEvent on the sink object will be called with argument set to id.
-
- the timeout-period in milliseconds of the new timer
- the IProactorEvents to add for the sink of the new timer
- the Id to assign to the new TimerInfo
-
-
-
- Cancel the timer that was created with the given sink object with the given Id.
-
- the ITimerEvent that the timer was created with
- the Id of the timer to cancel
-
- The complexity of this operation is O(n). We assume it is rarely used.
-
-
-
-
- Execute any timers that are due. Return the number of milliseconds
- to wait to match the next timer or 0 meaning "no timers".
-
- the time to wait for the next timer, in milliseconds, or zero if there are no more timers
-
-
- The completionStatuses item must have a valid OperationType.
-
-
-
- Close the read and write sockets.
-
-
-
-
- This class exists only to provide a wrapper for the Socket.Select method,
- such that the call may be handled slightly differently on .NET 3.5 as opposed to later versions.
-
-
-
-
- Determine the status of one or more sockets.
- After returning, the lists will be filled with only those sockets that satisfy the conditions.
-
- a list of Sockets to check for readability
- a list of Sockets to check for writability
- a list of Sockets to check for errors
- a timeout value, in microseconds. A value of -1 indicates an infinite timeout.
-
- If you are in a listening state, readability means that a call to Accept will succeed without blocking.
- If you have already accepted the connection, readability means that data is available for reading. In these cases,
- all receive operations will succeed without blocking. Readability can also indicate whether the remote Socket
- has shut down the connection - in which case a call to Receive will return immediately, with zero bytes returned.
-
- Select returns when at least one of the sockets of interest (ie any of the sockets in the checkRead, checkWrite, or checkError
- lists) meets its specified criteria, or the microSeconds parameter is exceeded - whichever comes first.
- Setting microSeconds to -1 specifies an infinite timeout.
-
- If you make a non-blocking call to Connect, writability means that you have connected successfully. If you already
- have a connection established, writability means that all send operations will succeed without blocking.
- If you have made a non-blocking call to Connect, the checkError parameter identifies sockets that have not connected successfully.
-
- See this reference for further details of the operation of the Socket.Select method:
- https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.select(v=vs.110).aspx
-
- This may possibly throw an ArgumentNullException, if all three lists are null or empty,
- and a SocketException if an error occurred when attempting to access a socket.
-
- Use the Poll method if you only want to determine the status of a single Socket.
-
- This method cannot detect certain kinds of connection problems,
- such as a broken network cable, or that the remote host was shut down ungracefully.
- You must attempt to send or receive data to detect these kinds of errors.
-
- none of the three lists of sockets may be null.
- an error occurred when attempting to access the socket.
-
-
-
- StringLib is a static class whose purpose is to provide miscellaneous string-related utility methods
- and extension properties.
-
-
-
-
- Return a string that gives detailed information of the state of the given List of Sockets,
- for debugging purposes.
-
- the List of Sockets to describe
- a string detailing the list contents, including the state of each Socket
-
- This is intended just for debugging purposes, as when adding detailed information to the Message of an
- exception when an error occurs. In DEBUG mode more detail is provided.
-
-
-
-
- Return a detailed textual description of the state of this Socket (if DEBUG is defined).
-
- the System.Net.Sockets.Socket to describe
- a string containing a detailed listing of the properties of the Socket
-
- This is intended just for debugging purposes, as when adding detailed information to the Message of an
- exception when an error occurs. In DEBUG mode more detail is provided.
-
-
-
- A FIFO queue.
-
- The class supports:
-
- - Push-front via
.
- - Pop-back via
.
- - Pop-front via
.
-
- As such it is only one operation short of being a double-ended queue (dequeue or deque).
-
- The internal implementation consists of a doubly-linked list of fixed-size arrays.
-
-
-
-
- Individual memory chunk to hold N elements.
-
-
- Contains global index positions of elements in the chunk.
-
-
- Optional link to the previous .
-
-
- Optional link to the next .
-
-
- the size to give the new YQueue
- should be no less than 2
-
-
- Gets the index of the front element of the queue.
- The index of the front element of the queue.
-
- If the queue is empty, it should be equal to
- .
-
-
-
- Gets the front element of the queue. If the queue is empty, behaviour is undefined.
- The front element of the queue.
-
-
- Gets the index of the back element of the queue.
- The index of the back element of the queue.
-
- If the queue is empty, it should be equal to
- .
-
-
-
- Retrieves the element at the front of the queue.
- The element taken from queue.
-
-
- Adds an element to the back end of the queue.
- The value to be pushed.
-
-
-
- Removes element from the back end of the queue, rolling back the last call to
- .
-
-
- The caller must guarantee that the queue isn't empty when calling this method.
- It cannot be done automatically as the read side of the queue can be managed by different,
- completely unsynchronized threads.
-
- The last item passed to .
-
-
-
- Allocation-efficient queue to store pipe items.
- Front of the queue points to the first prefetched item, back of
- the pipe points to last un-flushed item. Front is used only by
- reader thread, while back is used only by writer thread.
-
-
-
-
- Points to the first un-flushed item. This variable is used
- exclusively by writer thread.
-
-
-
-
- Points to the first un-prefetched item. This variable is used
- exclusively by reader thread.
-
-
-
-
- Points to the first item to be flushed in the future.
-
-
-
-
- The single point of contention between writer and reader thread.
- Points past the last flushed item. If it is NULL,
- reader is asleep. This pointer should be always accessed using
- atomic operations.
-
-
-
-
- Write an item to the pipe. Don't flush it yet. If incomplete is
- set to true the item is assumed to be continued by items
- subsequently written to the pipe. Incomplete items are never
- flushed down the stream.
-
-
-
-
- Pop an incomplete item from the pipe.
-
- the element revoked if such item exists, null otherwise.
-
-
-
- Flush all the completed items into the pipe.
-
-
- Returns false if the reader thread is sleeping. In that case, caller is obliged to
- wake the reader up before using the pipe again.
-
-
-
-
- Check whether item is available for reading.
-
-
-
-
- Attempts to read an item from the pipe.
-
- true if the read succeeded, otherwise false .
-
-
-
- Applies the function fn to the first element in the pipe
- and returns the value returned by the fn.
- The pipe mustn't be empty or the function crashes.
-
-
-
-
- This enum-type serves to identity a particular socket-option.
-
-
-
-
- The I/O-thread affinity.
- 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
- For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
-
-
- The I/O-thread Affinity is a 64-bit value used to specify which threads from the I/O thread-pool
- associated with the socket's context shall handle newly-created connections.
- 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
- For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
-
-
-
-
- The unique identity of the socket, from a message-queueing router's perspective.
-
-
- This is at most 255 bytes long.
-
-
-
-
- Setting this option subscribes a socket to messages that have the given topic. This is valid only for Subscriber and XSubscriber sockets.
-
-
- You subscribe a socket to a given topic when you want that socket to receive messages of that topic.
- A topic is simply a specific prefix (in the form of a byte-array or the equivalent text).
- This is valid only for Subscriber and XSubscriber sockets.
-
-
-
-
- Set this option to un-subscribe a socket from a given topic. Only for Subscriber and XSubscriber sockets.
-
-
- You un-subscribe a socket from the given topic when you no longer want that socket to receive
- messages of that topic. A topic is simply a specific prefix (in the form of a byte-array or the equivalent text).
- This is valid only for Subscriber and XSubscriber sockets.
-
-
-
-
- The maximum send or receive data rate for multicast transports on the specified socket.
-
-
-
-
- The recovery-interval, in milliseconds, for multicast transports using the specified socket.
- Default is 10,000 ms (10 seconds).
-
-
- This option determines the maximum time that a receiver can be absent from a multicast group
- before unrecoverable data loss will occur. Default is 10,000 ms (10 seconds).
-
-
-
-
- The size of the transmit buffer for the specified socket.
-
-
-
-
- The size of the receive buffer for the specified socket.
-
-
-
-
- This indicates more messages are to be received.
-
-
-
-
- The file descriptor associated with the specified socket.
-
-
-
-
- The event state for the specified socket.
- This is a combination of:
- PollIn - at least one message may be received without blocking
- PollOut - at least one messsage may be sent without blocking
-
-
-
-
- This option specifies the linger period for the specified socket,
- which determines how long pending messages which have yet to be sent to a peer
- shall linger in memory after a socket is closed.
-
-
-
-
- The initial reconnection interval for the specified socket.
- -1 means no reconnection.
-
-
- This is the period to wait between attempts to reconnect disconnected peers
- when using connection-oriented transports.
- A value of -1 means no reconnection.
-
-
-
-
- This is the maximum length of the queue of outstanding peer connections
- for the specified socket. This only applies to connection-oriented transports.
- Default is 100.
-
-
-
-
- The maximum reconnection interval for the specified socket.
- The default value of zero means no exponential backoff is performed.
-
-
- This option value denotes the maximum reconnection interval for a socket.
- It is used when a connection drops and NetMQ attempts to reconnect.
- On each attempt to reconnect, the previous interval is doubled
- until this maximum period is reached.
- The default value of zero means no exponential backoff is performed.
-
-
-
-
- The upper limit to the size for inbound messages.
- -1 (the default value) means no limit.
-
-
- If a peer sends a message larger than this it is disconnected.
-
-
-
-
- The high-water mark for message transmission, which is the number of messages that are allowed to queue up
- before mitigative action is taken. The default value is 1000.
-
-
-
-
- The high-water mark for message reception, which is the number of messages that are allowed to queue up
- before mitigative action is taken. The default value is 1000.
-
-
-
-
- The time-to-live (maximum number of hops) that outbound multicast packets
- are allowed to propagate.
- The default value of 1 means that the multicast packets don't leave the local network.
-
-
-
-
- Specifies the amount of time after which a synchronous send call will time out.
- A value of 0 means Send will return immediately, with a EAGAIN error if the message cannot be sent.
- -1 means to block until the message is sent.
-
-
-
-
- This indicates the underlying native socket type.
-
-
- An IPv4 socket will only use IPv4, while an IPv6 socket lets applications
- connect to and accept connections from both IPv4 and IPv6 hosts.
-
-
-
-
- The last endpoint bound for TCP and IPC transports.
- The returned value will be a string in the form of a ZMQ DSN.
-
-
- If the TCP host is ANY, indicated by a *, then the returned address
- will be 0.0.0.0 (for IPv4).
-
-
-
-
- Sets the RouterSocket behavior when an unroutable message is encountered.
- A value of 0 is the default and discards the message silently when it cannot be routed.
- A value of 1 returns an EHOSTUNREACH error code if the message cannot be routed.
-
-
-
-
- Whether to use TCP keep-alive on this socket.
- 0 = no, 1 = yes,
- -1 (the default value) means to skip any overrides and leave it to the OS default.
-
-
-
-
- The keep-alive time - the duration between two keepalive transmissions in idle condition.
-
-
- The TCP keepalive period is required by socket implementers to be configurable and by default is
- set to no less than 2 hours.
- In 0MQ, -1 (the default value) means to just leave it to the OS default.
-
-
-
-
- The TCP keep-alive interval - the duration between two keepalive transmission if no response was received to a previous keepalive probe.
-
-
- By default a keepalive packet is sent every 2 hours or 7,200,000 milliseconds
- if no other data have been carried over the TCP connection.
- If there is no response to a keepalive, it is repeated once every KeepAliveInterval seconds.
- The default is one second.
-
-
-
-
- The list of accept-filters, which denote the addresses that a socket may accept.
- Setting this to null clears the filter.
-
-
- This applies to IPv4 addresses only.
-
-
-
-
- This applies only to XPub sockets.
- If true, send all subscription messages upstream, not just unique ones.
- The default is false.
-
-
-
-
- If true, router socket accepts non-zmq tcp connections
-
-
-
-
- This is an XPublisher-socket welcome-message.
-
-
-
-
- This applies only to XPub sockets.
- If true, enable broadcast option on XPublishers
-
-
-
-
- The low-water mark for message transmission. This is the number of messages that should be processed
- before transmission is unblocked (in case it was blocked by reaching high-watermark). The default value is
- calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
-
-
-
-
- The low-water mark for message reception. This is the number of messages that should be processed
- before reception is unblocked (in case it was blocked by reaching high-watermark). The default value is
- calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
-
-
-
-
- When enabled new router connections with same identity take over old ones
-
-
-
-
- Returns the last peer routing id connect to the PEER socket
-
-
-
-
- Specifies the byte-order: big-endian, vs little-endian.
-
-
-
-
- Specifies the max datagram size for PGM.
-
-
-
-
- This is the base-class for all objects that participate in inter-thread communication.
-
-
-
-
- This Ctx is the context that provides access to the global state.
-
-
-
-
- This is the thread-ID of the thread that this object belongs to.
-
-
-
-
- Create a new ZObject with the given context and thread-id.
-
- the context for the new ZObject to live within
- the integer thread-id for the new ZObject to be associated with
-
-
-
- Create a new ZObject that has the same context and thread-id as the given parent-ZObject.
-
- another ZObject that provides the context and thread-id for this one
-
-
-
- Get the id of the thread that this object belongs to.
-
-
-
-
- Get the context that provides access to the global state.
-
-
-
- The given address was not found in the list of endpoints.
-
-
-
- Returns the that is the least busy at the moment.
-
- Which threads are eligible (0 = all).
- The least busy thread, or null if none is available.
-
-
-
- Send the Stop command.
-
-
-
-
- Send the Plug command, incrementing the destinations sequence-number if incSeqnum is true.
-
- the Own to send the command to
- a flag that dictates whether to increment the sequence-number on the destination (optional - defaults to false)
-
-
-
- Send the Own command, and increment the sequence-number of the destination
-
- the Own to send the command to
- the object to Own
-
-
-
- Send the Attach command
-
- the Own to send the command to
-
-
-
-
-
- Send the Bind command
-
-
-
-
-
-
-
- For owned objects, asks the owner ( ) to terminate
- .
-
-
-
-
-
-
- Send a Done command to the Ctx itself (null destination).
-
-
-
-
- Send the given Command, on that commands Destination thread.
-
- the Command to send
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
-
- Process the bind command with the given pipe.
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
-
- This method would be called to assign the specified pipe as a replacement for the outbound pipe that was being used.
- This, is an abstract method that is to be overridden by subclasses to provide their own concrete implementation.
-
- the pipe to use for writing
-
- A "Hiccup" occurs when an outbound pipe experiences something like a transient disconnect or for whatever other reason
- is no longer available for writing to.
-
- No supported on the ZObject class.
-
-
-
- Process the terminate-pipe command.
-
- Not supported on the ZObject class.
-
-
-
- Process the terminate-pipe acknowledgement command.
-
- Not supported on the ZObject class.
-
-
-
- Process a termination-request command on the Own object.
-
-
- Not supported on the ZObject class.
-
-
-
- Process a termination request.
-
- a time (in milliseconds) for this to linger before actually going away. -1 means infinite.
- Not supported on the ZObject class.
-
-
-
- Process the termination-acknowledgement command.
-
- Not supported on the ZObject class.
-
-
- Not supported on the ZObject class.
-
-
-
- Special handler called after a command that requires a seqnum
- was processed. The implementation should catch up with its counter
- of processed commands here.
-
- Not supported on the ZObject class.
-
-
-
- This enum-type specifies either big-endian (Big) or little-endian (Little),
- which indicate whether the most-significant bits are placed first or last in memory.
-
-
-
-
- Most-significant bits are placed first in memory.
-
-
-
-
- Most-significant bits are placed last in memory.
-
-
-
-
- This enum-type represents the various numeric socket-related error codes.
-
-
-
-
- The provided endpoint is not connected.
-
-
-
-
- The requested address is already in use.
-
-
-
-
- Non-blocking mode was requested and the message cannot be sent at the moment.
-
-
-
-
- Permission denied
-
-
-
-
- The endpoint supplied is invalid.
-
-
-
-
- The connection is still in progress.
-
-
-
-
- The requested transport protocol is not supported.
-
-
-
-
- The provided context is invalid.
-
-
-
-
- The requested address was not available.
- For Bind operations, that can mean the address was not local.
-
-
-
-
- The network appears to be down.
-
-
-
-
- There is not enough buffer space for the requested operation.
-
-
-
-
- The socket is not connected.
-
-
-
-
- The connection was refused.
-
-
-
-
- The host is not reachable.
-
-
-
-
- This is the value chosen for beginning the range of 0MQ error codes.
-
-
-
-
- The message is too long.
-
-
-
-
- The address family is not supported by this protocol.
-
-
-
-
- The network is apparently not reachable.
-
-
-
-
- The connection-attempt has apparently been aborted.
-
-
-
-
- The connection has apparently been reset.
-
-
-
-
- The operation timed-out.
-
-
-
-
- The connection has apparently been reset.
-
-
-
-
- The operation cannot be performed on this socket at the moment due
- to the socket not being in the appropriate state.
-
-
-
-
- The context associated with the specified socket has already been terminated.
-
-
-
-
- No I/O thread is available to accomplish this task.
-
-
-
-
- Too many sockets for this process.
-
-
-
-
- Facilitates a pattern whereby an event may be decorated with logic that transforms its arguments.
-
-
- Use of this class requires providing actions that register and unregister a handler of the source
- event that calls with updated arguments in response.
-
- Argument type of the decorated event.
-
-
-
- Initialises a new instance.
-
- an Action to perform when the first handler is registered for the event
- an Action to perform when the last handler is unregistered from the event
-
-
-
- Raise, or "Fire", the Event.
-
- the sender that the event-handler that gets notified of this event will receive
- the subclass of EventArgs that the event-handler will receive
-
-
-
- class InterfaceItem provides the properties Address and BroadcastAddress (both are an IPAddress).
- This serves to convey information for each of the network interfaces present on a host.
-
-
-
-
- Create a new InterfaceItem from the given address and broadcast-address.
-
- an IPAddress that will comprise the 'Address' of the new InterfaceItem
- an IPAddress that will comprise the 'BroadcastAddress' of the new InterfaceItem
-
-
-
- Get the 'address' of this network interface, as an IPAddress.
-
-
-
-
- Get the 'broadcast-address' of this network interface, as an IPAddress.
-
-
-
-
- This is a list of InterfaceItems, each of which has an Address and BroadcastAddress,
- which is derived from all of the Network Interfaces present on this host at the time an instance of this class is created.
-
-
-
-
- Create a new InterfaceCollection that contains a list of InterfaceItems derived from all of the Network Interfaces present on this host.
-
-
-
-
- Return an IEnumerator over the InterfaceItems that this InterfaceCollection contains,
- which are all of the network interfaces that were not running, nor loopback nor PPP interfaces.
-
- an IEnumerator over the InterfaceItems that this contains
-
-
-
- Interface IOutgoingSocket mandates a Send( Msg, SendReceiveOptions ) method.
-
-
-
-
- Send a message if one is available within .
-
- An object with message's data to send.
-
- The maximum length of time to try and send a message. If
- , no
- wait occurs.
-
- Indicate if another frame is expected after this frame
- true if a message was sent, otherwise false .
-
-
-
- Defines a socket from which message data may be read.
-
-
-
-
- Receive a message if one is available within .
-
- An object to receive the message's data into.
-
- The maximum length of time to wait for a message. If , no
- wait occurs.
-
- true if a message was received, otherwise false .
-
-
-
- Implementations provide a via the
- property.
-
-
-
-
- Gets a instance.
-
-
-
-
- Gets whether the object has been disposed.
-
-
-
-
-
-
-
- This interface provides an abstraction over the legacy Poller and newer
- classes for use in
- .
-
-
-
-
- Monitors a for events, raising them via events.
-
-
- To run a monitor instance, either:
-
- -
- Call
(blocking) and
- , or
-
- -
- Call
-
and
- .
-
-
-
-
-
-
- Initialises a monitor on for a specified
- .
-
-
- This constructor matches the signature used by clrzmq.
-
- The socket to monitor.
- a string denoting the endpoint which will be the monitoring address
-
- A flag indicating whether ownership of is transferred to the monitor.
- If true , disposing the monitor will also dispose .
-
-
-
-
- The monitoring address.
-
-
-
-
- Get whether this monitor is currently running.
-
-
- Start the monitor running via either or
- .
- Stop the monitor via either or
- .
-
-
-
-
- Gets and sets the timeout interval for poll iterations when using
- and
- .
-
-
- The higher the number the longer it may take the to stop the monitor.
- This value has no effect when the monitor is run via
- .
-
-
-
-
- Raised whenever any monitored event fires.
-
-
-
-
- Occurs when a connection is made to a socket.
-
-
-
-
- Occurs when a synchronous connection attempt failed, and its completion is being polled for.
-
-
-
-
- Occurs when an asynchronous connect / reconnection attempt is being handled by a reconnect timer.
-
-
-
-
- Occurs when a socket is bound to an address and is ready to accept connections.
-
-
-
-
- Occurs when a socket could not bind to an address.
-
-
-
-
- Occurs when a connection from a remote peer has been established with a socket's listen address.
-
-
-
-
- Occurs when a connection attempt to a socket's bound address fails.
-
-
-
-
- Occurs when a connection was closed.
-
-
-
-
- Occurs when a connection couldn't be closed.
-
-
-
-
- Occurs when the stream engine (TCP and IPC specific) detects a corrupted / broken session.
-
-
-
-
- Start monitor the socket, the method doesn't start a new thread and will block until the monitor poll is stopped
-
- The Monitor must not have already started nor attached to a poller.
-
-
-
- Start a background task for the monitoring operation.
-
-
-
-
-
- Stop monitoring. Blocks until monitoring completed.
-
- If this monitor is attached to a poller you must detach it first and not use the stop method.
-
-
-
- Release and dispose of any contained resources.
-
-
-
-
- Release and dispose of any contained resources.
-
- true if releasing managed resources
-
-
-
- Base class for all event arguments raised by .
-
-
-
-
- Create a new NetMQMonitorEventArgs that contains the given monitor and address.
-
- The that raised this event.
- The address of the event.
- The type of socket event that occurred.
-
-
-
- Gets the that raised this event.
-
-
-
-
- Gets the address of the event.
-
-
-
-
- Gets the type of socket event that occurred.
-
-
-
-
- A subclass of that also holds a socket.
-
-
-
-
- Create a new NetMQMonitorSocketEventArgs that contains the given monitor, address, and socket.
-
- The that raised this event.
- The address of the event.
- The type of socket event that occurred.
- The socket upon which this event occurred.
-
-
-
- Gets the socket upon which this event occurred.
-
-
-
-
- A subclass of that also holds an error code.
-
-
-
-
- Create a new NetMQMonitorErrorEventArgs that contains the given monitor, address, and error-code.
-
- The that raised this event.
- The address of the event.
- The type of socket event that occurred.
- The error code associated with this event.
-
-
-
- Gets the error code associated with this event.
-
-
-
-
- A subclass of that also holds an interval.
-
-
-
-
- Create a new NetMQMonitorIntervalEventArgs containing the given NetMQMonitor, address, and interval.
-
- the NetMQMonitor
- The a string denoting the address
- The interval, in milliseconds.
- The type of socket event that occurred.
-
-
-
- Gets the interval, in milliseconds.
-
-
-
- Defines a set of flags applicable to a instance: None (default), More, Identity, Shared
-
-
- Indicates no flags are set (the default).
-
-
- Indicates that more frames of the same message follow.
-
-
- Indicates that this frame conveys the identity of a connected peer.
-
-
-
- Indicates that this frame's internal data is shared with other
- objects.
-
-
-
- Enumeration of possible types: Uninitialised, GC, Pool, Delimiter.
-
-
- The has not yet been initialised (default value).
-
-
- The is empty.
-
-
- The data will be garbage collected when no longer needed.
-
-
-
- The data was allocated by , and must be released back
- to this pool when no longer needed. This happens when is called.
-
-
-
- The is a delimiter frame and doesn't contain any data.
- Delimiters are commonly used to mark a boundary between groups frames.
-
-
-
- A Msg struct is the lowest-level interpretation of a ZeroMQ message, and simply contains byte-array data
- and MsgType and MsgFlags properties.
- It supports message buffer pooling.
-
-
- Many users will not use this class directly. However in high-performance situations it
- may be useful. When used correctly it's possible to have zero-copy and zero-allocation
- behaviour.
-
-
-
-
- An atomic reference count for knowing when to release a pooled data buffer back to the
- .
-
-
- Will be null unless equals
- .
-
-
-
-
- Get the number of bytes within the Data property.
-
-
-
-
- Gets the position of the first element in the Data property delimited by the message,
- relative to the start of the original array.
-
-
-
- Get the type of this message, from the MsgType enum.
-
-
-
- Get whether the Delimiter bit is set on the Flags property,
- which would indicate that this message is intended for use simply to mark a boundary
- between other parts of some unit of communication.
-
-
-
- Get whether this is initialised and ready for use.
-
- A newly constructed is uninitialised, and can be initialised via one
- of , ,
- ,
- , or
- .
- Calling will cause the to become uninitialised again.
-
- true if the is initialised, otherwise false .
-
-
-
- Get the flags-enum MsgFlags value, which indicates which of the More, Identity, or Shared bits are set.
-
-
-
-
- Get the "Has-More" flag, which when set on a message-queue frame indicates that there are more frames to follow.
-
-
-
-
- Get whether the buffer of this is shared with another instance.
- Only applies to pooled message types.
-
-
-
-
- Get whether the Identity bit is set on the Flags property.
-
-
-
-
- Set the indicated Flags bits.
-
- which Flags bits to set (More, Identity, or Shared)
-
-
-
- Clear the indicated Flags bits.
-
- which Flags bits to clear (More, Identity, or Shared)
-
-
-
- Get the byte-array that represents the data payload of this .
-
-
- This value will be null if is
- ,
- or .
-
-
-
-
- Clear this Msg to empty - ie, set MsgFlags to None, MsgType to Empty, and clear the Data.
-
-
-
-
- Initialise this Msg to be of MsgType.Pool, with a data-buffer of the given number of bytes.
-
- the number of bytes to allocate in the data-buffer
-
-
-
- Initialise this Msg to be of MsgType.GC with the given data-buffer value.
-
- the byte-array of data to assign to the Msg's Data property
- the number of bytes that are in the data byte-array
-
-
-
- Initialise this Msg to be of MsgType.GC with the given data-buffer value.
-
- the byte-array of data to assign to the Msg's Data property
- first byte in the data array
- the number of bytes that are in the data byte-array
-
-
-
- Set this Msg to be of type MsgType.Delimiter with no bits set within MsgFlags.
-
-
-
-
- Clear the and set the MsgType to Invalid.
- If this is not a shared-data Msg (MsgFlags.Shared is not set), or it is shared but the reference-counter has dropped to zero,
- then return the data back to the BufferPool.
-
- The object is not initialised.
-
-
-
- If this Msg is of MsgType.Pool, then - add the given amount number to the reference-counter
- and set the shared-data Flags bit.
- If this is not a Pool Msg, this does nothing.
-
- the number to add to the internal reference-counter
-
-
-
- If this Msg is of MsgType.Pool and is marked as Shared, then - subtract the given amount number from the reference-counter
- and, if that reaches zero - return the data to the shared-data pool.
- If this is not both a Pool Msg and also marked as Shared, this simply Closes this Msg.
-
- the number to subtract from the internal reference-counter
-
-
-
- Override the Object ToString method to show the object-type, and values of the MsgType, Size, and Flags properties.
-
- a string that provides some detail about this Msg's state
-
-
-
- Copy the given byte-array data to this Msg's Data buffer.
-
- the source byte-array to copy from
- index within the internal Data array to copy that byte to
- the number of bytes to copy
-
-
-
- Copy the given byte-array data to this Msg's Data buffer.
-
- the source byte-array to copy from
- first byte in the source byte-array
- index within the internal Data array to copy that byte to
- the number of bytes to copy
-
-
-
- Copy the given single byte to this Msg's Data buffer.
-
- the source byte to copy from
-
-
-
- Copy the given single byte to this Msg's Data buffer at the given array-index.
-
- the source byte to copy from
- index within the internal Data array to copy that byte to
-
-
-
- Get and set the byte value in the buffer at a specific index.
-
- The index to access
-
-
-
-
- Close this Msg, and effectively make this Msg a copy of the given source Msg
- by simply setting it to point to the given source Msg.
- If this is a Pool Msg, then this also increases the reference-counter and sets the Shared bit.
-
- the source Msg to copy from
- The object is not initialised.
-
-
-
- Increase Offset and decrease Size by the given count.
-
- Number of bytes to remove from a message
-
-
-
- Close this Msg and make it reference the given source Msg, and then clear the Msg to empty.
-
- the source-Msg to become
- The object is not initialised.
-
-
-
- Returns a new array containing the first bytes of
- .
-
-
-
-
- An IShimHandler provides a Run(PairSocket) method.
-
-
-
-
- Execute whatever action this IShimHandler represents against the given shim.
-
-
-
-
-
- This is an EventArgs that provides an Actor property.
-
-
-
-
- Create a new NetMQActorEventArgs with the given NetMQActor.
-
- the NetMQActor for this exception to reference
-
-
-
- Get the NetMQActor that this exception references.
-
-
-
-
- This delegate represents the action for this actor to execute.
-
- the that is the shim to execute this action
-
-
-
- This delegate represents the action for this actor to execute - along with a state-information object.
-
- the type to use for the state-information object
- the that is the shim to execute this action
- the state-information that the action will use
-
-
-
- The Actor represents one end of a two-way pipe between 2 PairSocket(s). Where
- the actor may be passed messages, that are sent to the other end of the pipe
- which is called the "shim"
-
-
-
-
- The terminate-shim command.
- This is just the literal string "endPipe".
-
-
-
-
- Create a new ActionShimHandler with the given type T to serve as the state-information,
- and the given action to operate upon that type.
-
- a ShimAction of type T that comprises the action to perform
- the state-information
-
-
-
- Perform the action upon the given shim, using our state-information.
-
- a that is the shim to perform the action upon
-
-
-
- Create a new ActionShimHandler with a given action to operate upon that type.
-
- a ShimAction that comprises the action to perform
-
-
-
- Perform the action upon the given shim, using our state-information.
-
- a that is the shim to perform the action upon
-
-
-
- Create a new with the given shimHandler.
-
- an IShimHandler that provides the Run method
- the newly-created NetMQActor
-
-
-
- Create a new with the action, and state-information.
-
- a ShimAction - delegate for the action to perform
- the state-information - of the generic type T
- the newly-created NetMQActor
-
-
-
- Create a new with the given
- .
-
- a ShimAction - delegate for the action to perform
- the newly-created NetMQActor
-
-
-
- Execute the shim handler's Run method, signal ok and then dispose of the shim.
-
-
-
-
- Transmit the given Msg over this actor's own socket.
-
- the Msg to transmit
-
- The maximum length of time to try and send a message. If
- , no
- wait occurs.
-
- Indicate if another frame is expected after this frame
- true if a message was sent, otherwise false .
- The socket has been stopped.
- is not initialised.
-
-
-
- Attempt to receive a message for the specified period of time, returning true if successful or false if it times-out.
-
- a Msg to write the received message into
- a TimeSpan specifying how long to block, waiting for a message, before timing out
- true only if a message was indeed received
-
-
-
- This event occurs when at least one message may be received from the socket without blocking.
-
-
-
-
- This event occurs when a message is ready to be transmitted from the socket.
-
-
-
-
-
-
-
- Release any contained resources.
-
- true if managed resources are to be released
-
-
-
-
-
-
- A NetMQBeaconEventArgs is an EventArgs that provides a property that holds a NetMQBeacon.
-
-
-
-
- Create a new NetMQBeaconEventArgs object containing the given NetMQBeacon.
-
- the NetMQBeacon object to hold a reference to
-
-
-
- Get the NetMQBeacon object that this holds.
-
-
-
-
- Create a new NetMQBeacon.
-
-
-
-
- Get the host name this beacon is bound to.
-
-
- This may involve a reverse DNS lookup which can take a second or two.
-
- An empty string is returned if:
-
- - the beacon is not bound,
- - the beacon is bound to all interfaces,
- - an error occurred during reverse DNS lookup.
-
-
-
-
-
- Get the IP address this beacon is bound to.
-
-
-
-
- Get the socket of the contained actor.
-
-
-
-
- This event occurs when at least one message may be received from the socket without blocking.
-
-
-
-
- Configure beacon for the specified port on all interfaces.
-
- Blocks until the bind operation completes.
- The UDP port to bind to.
-
-
-
- Configure beacon for the specified port and, optionally, to a specific interface.
-
- Blocks until the bind operation completes.
- The UDP port to bind to.
- IP address of the interface to bind to. Pass empty string (the default value) to use the default interface.
-
-
-
- Publish beacon immediately and continue to publish when interval elapsed
-
- Beacon to transmit.
- Interval to transmit beacon
-
- Encoding for . Defaults to
- .
-
-
-
-
- Publish beacon immediately and continue to publish when interval elapsed
-
- Beacon to transmit
- Interval to transmit beacon
-
-
-
- Publish beacon immediately and continue to publish every second
-
- Beacon to transmit
-
- Encoding for . Defaults to
- .
-
-
-
-
- Publish beacon immediately and continue to publish every second
-
- Beacon to transmit
-
-
-
- Stop publishing beacons.
-
-
-
-
- Subscribe to beacon messages that match the specified filter.
-
-
- Beacons must prefix-match with .
- Any previous subscription is replaced by this one.
-
- Beacon will be filtered by this
-
-
-
- Unsubscribe to beacon messages
-
-
-
-
- Receives the next beacon message, blocking until it arrives.
-
-
-
-
- Receives the next beacon message if one is available before
- expires.
-
- The maximum amount of time to wait for the next beacon message.
- The received beacon message.
- true if a beacon message was received, otherwise false .
-
-
-
-
-
-
-
-
-
- Contents of a message received from a beacon.
-
-
-
-
- THe beacon content as a byte array.
-
-
-
-
- The address of the peer that sent this message. Includes host name and port number.
-
-
-
-
- The beacon content as a string.
-
-
- Decoded using . Other encodings may be used with
- directly.
-
-
-
-
- The host name of the peer that sent this message.
-
- This is simply the value of without the port number.
-
-
-
- Cleanup library resources, call this method when your process is shutting-down.
-
- Set to true when you want to make sure sockets send all pending messages
-
-
-
- Get or set the default linger period for the all sockets,
- which determines how long pending messages which have yet to be sent to a peer
- shall linger in memory after a socket is closed.
-
-
- This also affects the termination of the socket's context.
-
- -1: Specifies infinite linger period. Pending messages shall not be discarded after the socket is closed;
- attempting to terminate the socket's context shall block until all pending messages have been sent to a peer.
-
- 0: The default value of specifies no linger period. Pending messages shall be discarded immediately when the socket is closed.
- Positive values specify an upper bound for the linger period. Pending messages shall not be discarded after the socket is closed;
- attempting to terminate the socket's context shall block until either all pending messages have been sent to a peer,
- or the linger period expires, after which any pending messages shall be discarded.
-
-
-
-
- Get or set the number of IO Threads NetMQ will create, default is 1.
- 1 is good for most cases.
-
-
-
-
- Get or set the maximum number of sockets.
-
-
-
-
- Method is obsolete, call Cleanup instead
-
-
-
-
- Method is obsolete, call Cleanup instead
-
-
-
-
- Method is obsolete, call Cleanup instead
-
- Should the context block the thread while terminating.
-
-
-
- Method is obsolete, context created automatically
-
-
-
-
- Base class for custom exceptions within the NetMQ library.
-
-
-
- Constructor for serialisation.
-
-
-
- Create a new NetMQException containing the given Exception, Message and ErrorCode.
-
- an Exception that this exception will expose via it's InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
- an ErrorCode that this exception will expose via its ErrorCode property
-
-
-
- Create and return a new NetMQException with no Message containing only the given SocketException.
-
- a SocketException that this exception will expose via its InnerException property
- a new NetMQException
-
-
-
- Create and return a new NetMQException with no Message containing the given SocketError and Exception.
-
- a SocketError that this exception will carry and expose via its ErrorCode property
- an Exception that this exception will expose via its InnerException property
- a new NetMQException
-
-
-
- Create and return a new NetMQException with no Message containing the given ErrorCode and Exception.
-
- an ErrorCode for this exception to contain and expose via its ErrorCode property
- an Exception for this exception to contain and expose via its InnerException property
- a new NetMQException
-
-
-
- Create and return a new NetMQException with no Message containing only the given ErrorCode.
-
- an ErrorCode that this exception will carry and expose via its ErrorCode property
- a new NetMQException
-
-
-
- Create and return a new NetMQException with the given Message and ErrorCode.
-
- the textual description of what gave rise to this exception, to expose via the Message property
- an ErrorCode that this exception will carry and expose via its ErrorCode property
- a new NetMQException
-
-
-
- Create and return a new NetMQException with the given ErrorCode, Message, and Exception.
-
- an ErrorCode that this exception will contain and expose via its ErrorCode property
- the textual description of what gave rise to this exception, to expose via the Message property
- an Exception that this exception will expose via its InnerException property
- a new NetMQException, or subclass of NetMQException that corresponds to the given ErrorCode
-
-
-
- AddressAlreadyInUseException is a NetMQException that is used within SocketBase.Bind to signal an address-conflict.
-
-
-
-
- Create a new AddressAlreadyInUseException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new AddressAlreadyInUseException with a given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
- Constructor for serialisation.
-
-
-
- EndpointNotFoundException is a NetMQException that is used within Ctx.FindEndpoint to signal a failure to find a specified address.
-
-
-
-
- Create a new EndpointNotFoundException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new EndpointNotFoundException with a given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new EndpointNotFoundException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- TerminatingException is a NetMQException that is used within SocketBase and Ctx to signal
- that you're making the mistake of trying to do further work after terminating the message-queueing system.
-
-
-
-
- Create a new TerminatingException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new TerminatingException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- InvalidException is a NetMQException that is used within the message-queueing system to signal invalid value errors.
-
-
-
-
- Create a new InvalidException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new InvalidException with the given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new InvalidException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- FaultException is a NetMQException that is used within the message-queueing system to signal general fault conditions.
-
-
-
-
- Create a new FaultException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new FaultException with the given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new FaultException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- ProtocolNotSupportedException is a NetMQException that is used within the message-queueing system to signal
- mistakes in properly utilizing the communications protocols.
-
-
-
-
- Create a new ProtocolNotSupportedException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new ProtocolNotSupportedException with the given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new ProtocolNotSupportedException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- HostUnreachableException is an Exception that is used within the message-queueing system
- to signal failures to communicate with a host.
-
-
-
-
- Create a new HostUnreachableException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new HostUnreachableException with the given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new HostUnreachableException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- FiniteStateMachineException is an Exception that is used within the message-queueing system
- to signal errors in the send/receive order with request/response sockets.
-
-
-
-
- Create a new FiniteStateMachineException with a given inner-exception and message.
-
- an Exception for this new exception to contain and expose via its InnerException property
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new FiniteStateMachineException with the given message.
-
- the textual description of what gave rise to this exception, to expose via the Message property
-
-
-
- Create a new FiniteStateMachineException with no message nor inner-exception.
-
-
-
- Constructor for serialisation.
-
-
-
- Objects of class NetMQFrame serve to hold a Buffer (that consists of a byte-array containing a unit of a message-queue message)
- and provide methods to construct it given a string and an encoding.
-
-
-
-
- This is the length of the byte-array data buffer.
-
-
-
-
- This holds the computed hash-code for this object.
-
-
-
-
- Create a new NetMQFrame containing the given byte-array data.
-
- a byte-array to hold as the frame's data
-
-
-
- Instantiates a frame from the provided byte array, considering only the specified number of bytes.
-
- This constructor may be useful to avoid copying data into a smaller array when a buffer is oversized.
- The content of the frame.
- The number bytes from to consider as part of the frame.
-
-
-
- Create a new NetMQFrame containing the given string-message,
- using the default ASCII encoding.
-
- a string containing the message-data of the frame
-
-
-
- Create a new NetMQFrame containing the given string-message,
- using the given encoding to convert it into a byte-array.
-
- a string containing the message-data of the frame
- the Encoding to use to convert the given string-message into the internal byte-array
-
-
-
- Create a new NetMQFrame with a data-buffer pre-sized to the given length.
-
- the number of bytes to allocate for the data-buffer
- length must be non-negative (zero or positive).
-
-
-
- Get or set the size of the message data contained in the frame, which here represents the number of bytes.
-
- The value must be between zero and BufferSize.
-
-
-
- Get the underlying frame-data buffer, which is an array of bytes.
-
-
-
-
- Get the maximum size of the frame-data buffer (ie, the number of bytes of the array).
-
-
-
-
- Get a new empty that may be used as message separators.
-
-
-
-
- Get whether this NetMQFrame is empty - that is, has a Buffer of zero-length.
-
-
-
-
- Create and return a new NetMQFrame with a copy of the supplied byte-array buffer.
-
- the byte-array to copy into the new NetMQFrame
- a new containing a copy of the supplied byte-array
- is null.
-
-
-
- Return this frame's data-buffer converted into a string, using the default ASCII encoding.
-
- the data buffer converted to a string
-
-
-
- Return this frame's data-buffer converted into a string using the given encoding.
-
- the Encoding to use to convert the internal byte-array buffer into a string
- the data buffer converted to a string
-
-
-
- Convert the buffer to integer in network byte order (big-endian)
-
-
-
-
-
- Convert the buffer to long in network byte order (big-endian)
-
-
-
-
-
- Create a deep-copy of the supplied .
-
- the to copy
-
- a containing a copy of
-
- is null.
-
-
-
- Create a deep-copy of this NetMQFrame and return it.
-
- a new NetMQFrame containing a copy of this one's buffer data
-
-
-
- Return true if the buffer of this NetMQFrame is equal to the given byte-array.
-
- a byte-array buffer to compare this frame against
-
-
-
-
- Determine whether the specified is equal to the current
- .
-
-
- the to compare with the current
- .
-
- true if the specified NetMQFrame is equal to this one; otherwise, false
-
-
-
- Return true if the given Object is a NetMQFrame which has a Buffer that is identical to that of this one.
-
- the Object to compare this to
- true only if the given Object is a NetMQFrame equal to this one
-
-
-
- Return true if this one and the other NetMQFrame are equal, or both are null.
-
- one frame to compare against the other
- the other frame to compare
- true if both frames are equal
-
-
-
- Return true if this one and the other NetMQFrame NOT are equal.
-
- one frame to compare against the other
- the other frame to compare
- false if both frames are equal
-
-
-
- Override the Object.GetHashCode method to return a hash-code derived from the content of the Buffer.
- That is only computed the first time this method is called.
-
- an integer that represents the computed hash-code
-
-
-
- Return an array of bytes that carries the content of this NetMQFrames Buffer.
-
- if this argument is true - a new copy is made if BufferSize is equal to MessageSize
- the Buffer as a byte-array, either newly-allocated or else (if copy is false) simply a reference to the actual Buffer
-
-
-
- This namespace encompasses the NetMQ message-queueing library
- and attendant utility software.
-
-
-
-
- A NetMQMessage is basically a collection of NetMQFrames, and is the basic message-unit that is sent and received
- across this message-queueing subsystem.
-
-
-
-
- This is the frame-stack that comprises the message-content of this message.
-
-
-
-
- The default-constructor for NetMQMessage: create a new instance of NetMQMessage
- with an empty frame-stack.
-
-
-
-
- Create a new instance of a NetMQMessage that contains the given collection of NetMQFrames as its frame-stack.
-
- a collection of NetMQFrames, to form the frame-stack
- The value of 'frames' cannot be null.
-
-
-
- Create a new instance of a NetMQMessage that contains the given collection of byte-arrays as its frame-stack.
-
- a collection of byte-array buffers, to form the frame-stack
- The value of 'buffers' cannot be null.
-
-
-
- Gets the first frame in the current message.
-
-
-
-
- Gets the last frame in the current message.
-
-
-
-
- Gets a value indicating whether the current message is empty.
-
-
-
-
- Gets the number of objects contained by this message.
-
-
-
-
- Gets the at the specified index.
-
- The zero-based index of the to get.
- The at the specified index.
-
- is less than 0 -or- is equal to or greater than
- .
-
-
-
-
- Add the given NetMQFrame to this NetMQMessage, at the highest-indexed position of the frame-stack.
-
- a NetMQFrame object comprising the frame to be appended onto the frame-stack
-
-
-
- Add the given data (in this case a byte-array) to this NetMQMessage, at the highest-indexed position of the frame-stack.
- Data is not copied.
-
- a byte-array containing the message to append onto the frame-stack of this NetMQMessage
-
-
-
- Add the given string - which gets converted into a NetMQFrame - onto
- the highest-indexed position of the frame-stack of this NetMQMessage.
-
- a string containing the message to append onto the frame-stack of this NetMQMessage
-
-
-
- Add the given string - which gets converted into a NetMQFrame - onto
- the highest-indexed position of the frame-stack of this NetMQMessage.
-
- a string containing the message to append onto the frame-stack of this NetMQMessage
- an Encoding that specifies how to convert the string into bytes
-
-
-
- Convert the given integer value into an array of bytes and add it as a new frame onto this NetMQMessage.
-
- a 32-bit integer value that is to be converted into bytes and added to this message
-
-
-
- Convert the given long value into an array of bytes and add it as a new frame onto this NetMQMessage.
-
- a 64-bit number that is to be converted into bytes and added to this message
-
-
-
- Add an empty frame to this NetMQMessage.
-
-
-
-
- Push the given NetMQFrame into the frame-stack of this NetMQMessage.
-
- the NetMQFrame to be inserted into the frame-stack
-
- The concept is the same as pushing an element onto a stack.
- This inserts the given NetMQFrame into the lowest-indexed position of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push a new frame containing the given byte-array into the frame-stack of this NetMQMessage.
-
- the byte-array to create a new frame from
-
- The concept is the same as pushing an element onto a stack.
- This creates a new frame from the given data (in this case a byte-array) and inserts it into the lowest-indexed position of
- the collection of frames of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push a new frame containing the given string (converted into a byte-array) into the frame-stack of this NetMQMessage.
-
- the string to create a new frame from
-
- The concept is the same as pushing an element onto a stack.
- This creates a new frame from the given data (in this case a string which gets converted into a byte-array using the default ASCII encoding) and inserts it into the lowest-indexed position of
- the collection of frames of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push a new frame containing the given string (converted into a byte-array) into the frame-stack of this NetMQMessage.
-
- the string to create a new frame from
- the Encoding that dictates how to encode the string into bytes
-
- The concept is the same as pushing an element onto a stack.
- This creates a new frame from the given data (in this case a string which gets converted into a byte-array using the given Encoding) and inserts it into the lowest-indexed position of
- the collection of frames of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push a new frame containing the given integer (converted into a byte-array) into the frame-stack of this NetMQMessage.
-
- the integer to create a new frame from
-
- The concept is the same as pushing an element onto a stack.
- This creates a new frame from the given data (in this case a 32-bit integer which gets converted into a byte-array in big-endian order) and inserts it into the lowest-indexed position of
- the collection of frames of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push a new frame containing the given long (converted into a byte-array) into the frame-stack of this NetMQMessage.
-
- the 64-bit number to create a new frame from
-
- The concept is the same as pushing an element onto a stack.
- This creates a new frame from the given data (in this case a 64-bit long which gets converted into a byte-array in big-endian order) and inserts it into the lowest-indexed position of
- the collection of frames of this NetMQMessage,
- pushing all of the other frames upward in index-position.
-
-
-
-
- Push an empty frame (a NetMQFrame.Empty) onto the frame-stack.
-
-
-
-
- Remove and return the first frame.
-
- the first frame, which was popped - which is the frame from the lowest-indexed position
-
-
-
- Delete the given frame from the frame-stack.
-
- the frame to remove
- true if removed, otherwise false .
-
-
-
- Clear (empty) the frame-stack, so that it no longer contains any frames.
-
-
-
-
- Return an enumerator over the frames contained within this message.
-
- an IEnumerator over the frames in this message
-
-
-
- Return an enumerator over the frames contained within this message.
-
- an IEnumerator over the frames in this message
-
-
-
- Returns a string showing the frame contents.
-
-
-
-
-
- Get whether the caller is running on the scheduler's thread.
- If true , the caller can execute tasks directly (inline).
- If false , the caller must start a on this scheduler.
-
-
- This property enables avoiding the creation of a
- object and
- potential delays to its execution due to queueing. In most cases this is just
- an optimisation.
-
-
-
- if (scheduler.CanExecuteTaskInline)
- {
- socket.Send(...);
- }
- else
- {
- var task = new Task(() => socket.Send(...));
- task.Start(scheduler);
- }
-
-
-
-
-
- Returns 1, as runs a single thread and all tasks must execute on that thread.
-
-
-
-
- Not supported.
-
- Always thrown.
-
-
-
- Get whether this object is currently polling its sockets and timers.
-
-
-
-
- Runs the poller in a background thread, returning once the poller has started.
-
-
- The created thread is named "NetMQPollerThread" . Use
- to specify the thread name.
-
-
-
-
- Runs the poller in a background thread, returning once the poller has started.
-
- The thread name to use.
-
-
-
- Runs the poller on the caller's thread. Only returns when
- or are called from another thread.
-
-
-
-
- Stops the poller.
-
-
- If called from a thread other than the poller thread, this method will block until the poller has stopped.
- If called from the poller thread it is not possible to block.
-
-
-
-
- Stops the poller, returning immediately and most likely before the poller has actually stopped.
-
-
-
- This class only implements in order to support collection initialiser syntax.
- An empty enumerator.
-
-
-
- Stops and disposes the poller. The poller may not be used once disposed.
-
-
- Note that you cannot dispose the poller on the poller's thread. Doing so immediately throws an exception.
-
- A socket in the poller has been disposed.
- Dispose called from the poller thread.
-
-
- Dispatches an asynchronous message to a synchronization context.
-
-
- Dispatches a synchronous message to a synchronization context.
-
-
-
- Class to quickly handle incoming messages of socket.
- New thread is created to handle the messages. Call dispose to stop the thread.
- Provided socket will not be disposed by the class.
-
-
-
-
- Create NetMQProactor and start dedicate thread to handle incoming messages.
-
- Socket to handle messages from
- Handler to handle incoming messages
-
-
-
- Stop the proactor. Provided socket will not be disposed.
-
-
-
-
- Multi producer single consumer queue which you can poll on with a Poller.
-
- Type of the item in queue
-
-
-
- Create new NetMQQueue.
-
- The capacity of the queue, use zero for unlimited
-
-
-
- Register for this event for notification when there are items in the queue. Queue must be added to a poller for this to work.
-
-
-
-
- Try to dequeue an item from the queue. Dequeueing and item is not thread safe.
-
- Will be filled with the item upon success
- Timeout to try and dequeue and item
- Will return false if it didn't succeed to dequeue an item after the timeout.
-
-
-
- Dequeue an item from the queue, will block if queue is empty. Dequeueing and item is not thread safe.
-
- Dequeued item
-
-
-
- Enqueue an item to the queue, will block if the queue is full.
-
-
-
-
-
- Dispose the queue.
-
-
-
-
- For selecting on and regular .NET
- objects.
-
-
- This is for advanced scenarios only.
- Most use cases are better served by .
-
-
-
-
- Selector Item used to hold the NetMQSocket/Socket and PollEvents
-
-
-
-
- Select on NetMQSocket or Socket, similar behavior to Socket.Select.
-
- Items to select on (must not be null)
- Number of items in the array to select on
- a time-out period, in milliseconds
-
- The internal select operation failed.
- is null .
- The socket has been stopped.
-
-
-
- Abstract base class for NetMQ's different socket types.
-
-
- Various options are available in this base class, though their affect can vary by socket type.
-
-
-
-
- Create a new NetMQSocket with the given .
-
- Type of socket to create
-
-
-
-
-
- Create a new NetMQSocket with the given .
-
- a SocketBase object to assign to the new socket
-
-
-
- This event occurs when at least one message may be received from the socket without blocking.
-
-
- This event is raised when a is added to a running
- .
-
-
-
-
- This event occurs when at least one message may be sent via the socket without blocking.
-
-
- This event is raised when a is added to a running
- .
-
-
-
-
- Fires when either the or
- event is set.
-
-
-
-
- Raise the event.
-
-
-
-
- Get or set an integer that represents the number of errors that have accumulated.
-
-
-
-
- Get the of this socket.
-
-
-
-
- Get the underlying .
-
-
-
-
- Bind the socket to .
-
- a string representing the address to bind this socket to
- thrown if the socket was already disposed
- The socket has been stopped.
- The specified address is already in use.
-
- No IO thread was found, or the protocol's listener encountered an
- error during initialisation.
-
-
-
- Binds the specified TCP to an available port, assigned by the operating system.
- the chosen port-number
- thrown if the socket was already disposed
- uses a protocol other than TCP.
- The socket has been stopped.
- The specified address is already in use.
-
- No IO thread was found, or the protocol's listener errored during
- initialisation.
-
-
-
-
- Connect the socket to .
-
- a string denoting the address to connect this socket to
- thrown if the socket was already disposed
- The socket has been stopped.
- No IO thread was found.
- The specified address is already in use.
-
-
-
- Disconnect this socket from .
-
- a string denoting the address to disconnect from
- thrown if the socket was already disposed
- The socket has been stopped.
- Endpoint was not found and cannot be disconnected.
-
-
-
- Unbind this socket from .
-
- a string denoting the address to unbind from
- thrown if the socket was already disposed
- The socket has been stopped.
- Endpoint was not found and cannot be disconnected.
-
-
-
- Closes this socket, rendering it unusable. Equivalent to calling
- .
-
-
-
-
- Wait until a message is ready to be received from the socket.
-
-
-
-
- Wait until a message is ready to be received/sent from this socket or until timeout is reached.
- If a message is available, the ReceiveReady/SendReady event is fired.
-
- a TimeSpan that represents the timeout-period
- true if a message was available within the timeout, false otherwise
-
-
-
- Poll this socket, which means wait for an event to happen within the given timeout period.
-
- the poll event(s) to listen for
- the timeout period
-
- PollEvents.None -> no message available
- PollEvents.PollIn -> at least one message has arrived
- PollEvents.PollOut -> at least one message is ready to send
- PollEvents.Error -> an error has occurred
- or any combination thereof
-
- The internal select operation failed.
- The socket has been stopped.
-
-
-
- Return a value that indicates which bit-flags have a corresponding listener,
- with PollError always set,
- and PollOut set based upon m_sendReady
- and PollIn set based upon m_receiveReady.
-
- a PollEvents value that denotes which events have a listener
-
-
-
- Unless this socket is closed,
- based upon the given PollEvents - raise the m_receiveReady event if PollIn is set,
- and m_sendReady if PollOut is set.
-
- what to use as the source of the events
- the given PollEvents that dictates when of the two events to raise
-
-
- Attempt to receive a message for the specified amount of time.
-
- A reference to a instance into which the received message
- data should be placed.
-
- The maximum amount of time the call should wait for a message before returning.
-
- true if a message was received before elapsed,
- otherwise false .
-
-
-
-
- Send a message if one is available within .
-
- An object with message's data to send.
-
- The maximum length of time to try and send a message. If
- , no
- wait occurs.
-
- Indicate if another frame is expected after this frame
- true if a message was sent, otherwise false .
-
-
-
- Listen to the given endpoint for SocketEvent events.
-
- A string denoting the endpoint to monitor
-
- The specific events to report on. Defaults to
- if omitted.
-
- is null .
- cannot be empty or whitespace.
- This object is already disposed.
-
- The protocol of
- is not supported.
-
- The socket has been stopped.
- Maximum number of sockets reached.
-
-
-
- Get whether a message is waiting to be picked up (true if there is, false if there is none).
-
- The socket has been stopped.
-
-
-
- Get whether a message is waiting to be sent.
-
-
- This is true if at least one message is waiting to be sent, false if there is none.
-
- The socket has been stopped.
-
-
-
- Get the integer-value of the specified .
-
- a ZmqSocketOption that specifies what to get
- an integer that is the value of that option
- The socket has been stopped.
- This object is already disposed.
-
-
-
- Get the (generically-typed) value of the specified
- .
-
- a ZmqSocketOption that specifies what to get
- an object of the given type, that is the value of that option
- The socket has been stopped.
- This object is already disposed.
-
-
-
- Get the value of the specified ZmqSocketOption.
-
- a ZmqSocketOption that specifies what to get
- a TimeSpan that is the value of that option
- The socket has been stopped.
-
-
-
- Get the 64-bit integer-value of the specified .
-
- a ZmqSocketOption that specifies what to get
- a long that is the value of that option
- The socket has been stopped.
-
-
-
- Assign the given integer value to the specified .
-
- a ZmqSocketOption that specifies what to set
- an integer that is the value to set that option to
- The socket has been stopped.
- This object is already disposed.
-
-
-
- Assign the given TimeSpan to the specified .
-
- a ZmqSocketOption that specifies what to set
- a TimeSpan that is the value to set that option to
- The socket has been stopped.
-
-
-
- Assign the given Object value to the specified .
-
- a ZmqSocketOption that specifies what to set
- an object that is the value to set that option to
- The socket has been stopped.
- This object is already disposed.
-
-
-
- Closes this socket, rendering it unusable. Equivalent to calling
- .
-
-
-
-
- Closes this socket, rendering it unusable. Equivalent to calling
- .
-
- true if releasing managed resources
-
-
-
-
-
-
- This subclass of EventArgs contains a NetMQSocket,
- and IsReadyToReceive and IsReadyToSend flags to indicate whether ready to receive or send.
-
-
-
-
- Create a new NetMQSocketEventArgs referencing the given socket.
-
- the NetMQSocket that this is in reference to
-
-
-
- Initialise the ReceiveReady and SendReady flags from the given PollEvents value.
-
- a PollEvents value that indicates whether the socket is ready to send or receive without blocking
-
-
-
- Get the NetMQSocket that this references.
-
-
-
-
- Get whether at least one message may be received by the socket without blocking.
-
-
-
-
- Get whether at least one message may be sent by the socket without blocking.
-
-
-
-
- Class NetMQTimerEventArgs is an EventArgs that contains a reference to a NetMQTimer.
-
-
-
-
- Create a new NetMQTimerEventArgs that contains a reference to the given NetMQTimer.
-
- the NetMQTimer to hold a reference to
-
-
-
- Get the NetMQTimer that this has a reference to.
-
-
-
-
- A NetMQTimer instance provides the state-information for a timer function,
- which is periodically checked by a Poller or a NetMQBeacon.
-
-
-
-
- A pre-constructed NetMQTimerEventArgs to use whenever raising the Elapsed event.
-
-
-
-
- This is the timer-interval in milliseconds.
-
-
-
-
- This flag dictates whether this timer is currently enabled.
-
-
-
-
- This event is used to signal when the timer has expired.
-
-
-
-
- Create a new NetMQTimer with the timer-interval specified by the given TimeSpan.
-
- a TimeSpan that denotes the timer-interval
-
- This sets the When property to an initial value of -1, to indicate it no future-time applies as yet.
-
-
-
-
- Create a new NetMQTimer with the given timer-interval in milliseconds.
-
- an integer specifying the timer-interval in milliseconds
-
- This sets the When property to an initial value of -1, to indicate it no future-time applies as yet.
-
-
-
-
- Get or set the timer-interval, in milliseconds.
-
-
- When setting this, When is set to the future point in time from now at which the interval will expire (or -1 if not Enabled).
-
-
-
-
- Get or set whether this NetMQTimer is on.
-
-
- When setting this to true, When is set to the future point in time from now at which the interval will expire.
- When setting this to false, When is set to -1.
-
-
-
-
- Get or set the value of the low-precision timestamp (a value in milliseconds) that signals when the timer is to expire,
- or -1 if not applicable at this time.
-
-
-
-
- Enable the timer and reset the interval
-
-
-
-
- If there are any subscribers - raise the Elapsed event.
-
- the sender to include within the event's event-args
-
-
-
- This static class serves to convert between byte-arrays, and various integer sizes
- - all of which assume the byte-data is in Big-endian, or "Network Byte Order".
-
-
-
-
- Given a byte-array assumed to be in Big-endian order, and an offset into it
- - return a 16-bit integer derived from the 2 bytes starting at that offset.
-
- the byte-array to get the short from
-
-
-
-
- Given a 16-bit integer, return it as a byte-array in Big-endian order.
-
- the short to convert
- a 2-byte array containing that short's bits
-
-
-
- Given a 16-bit integer, and a byte-array buffer and offset,
- - write the 2 bytes of that integer into the buffer starting at that offset, in Big-endian order.
-
- the short to convert into bytes
- the byte-array to write the short's bytes into
-
-
-
- Given a byte-array assumed to be in Big-endian order, and an offset into it
- - return a 32-bit integer derived from the 4 bytes starting at that offset.
-
- the byte-array to get the integer from
-
-
-
-
- Given a 32-bit integer, return it as a byte-array in Big-endian order.
-
- the int to convert
- a 4-byte array containing that integer's bits
-
-
-
- Given a 32-bit integer, and a byte-array buffer and offset,
- - write the 4 bytes of that integer into the buffer starting at that offset, in Big-endian order.
-
- the integer to convert into bytes
- the byte-array to write the integer's bytes into
-
-
-
- Given a byte-array assumed to be in Big-endian order, and an offset into it
- - return a 64-bit integer derived from the 8 bytes starting at that offset.
-
- the byte-array to get the Int64 from
-
-
-
-
- Given a 64-bit integer, return it as a byte-array in Big-endian order.
-
- The long value to convert from.
- The network order presentation of as an 8-byte array.
-
-
-
- Given a 64-bit integer, and a byte-array buffer and offset,
- - write the 8 bytes of that integer into the buffer starting at that offset, in Big-endian order.
-
- the long value to convert into bytes
- the byte-array to write the long value's bytes into
-
-
-
- This static class serves to provide extension methods for IOutgoingSocket.
-
-
-
-
- Block until the message can be sent.
-
-
- The call blocks until the message can be sent and cannot be interrupted.
- Whether the message can be sent depends on the socket type.
-
- The socket to send the message on.
- An object with message's data to send.
- Indicate if another frame is expected after this frame
-
-
-
- Transmit a byte-array of data over this socket, block until frame is sent.
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
-
-
-
- Transmit a byte-array of data over this socket, block until frame is sent.
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- the number of bytes to send from .
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
-
-
-
- Transmit a byte-array of data over this socket, block until frame is sent.
- Send more frame, another frame must be sent after this frame. Use to chain Send methods.
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- a reference to this IOutgoingSocket so that method-calls may be chained together
-
-
-
- Transmit a byte-array of data over this socket, block until frame is sent.
- Send more frame, another frame must be sent after this frame. Use to chain Send methods.
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- the number of bytes to send from .
- a reference to this IOutgoingSocket so that method-calls may be chained together
-
-
-
- Attempt to transmit a single frame on .
- If message cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- the byte-array of data to send
- the number of bytes to send from .
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Attempt to transmit a single frame on .
- If message cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- the byte-array of data to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Attempt to transmit a single frame on .
- If message cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Attempt to transmit a single frame on .
- If message cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- the byte-array of data to send
- the number of bytes to send from .
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Send multiple frames on , blocking until all frames are sent.
-
- the IOutgoingSocket to transmit on
- frames to transmit
-
-
-
- Send multiple frames on , blocking until all frames are sent.
-
- the IOutgoingSocket to transmit on
- frames to transmit
-
-
-
- Attempt to transmit a multiple frames on .
- If frames cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- frames to transmit
-
-
-
- Attempt to transmit a multiple frames on .
- If frames cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- frames to transmit
-
-
-
- Attempt to transmit a multiple frames on .
- If frames cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- frames to transmit
-
-
-
- Attempt to transmit a multiple frames on .
- If frames cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- frames to transmit
-
-
-
- Transmit a string over this socket, block until frame is sent.
-
- the IOutgoingSocket to transmit on
- the string to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
-
-
-
- Transmit a string over this socket, block until frame is sent.
- Send more frame, another frame must be sent after this frame. Use to chain Send methods.
-
- the IOutgoingSocket to transmit on
- the string to send
- a reference to this IOutgoingSocket so that method-calls may be chained together
-
-
-
- Attempt to transmit a single string frame on .
- If message cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- the string to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Attempt to transmit a single string frame on .
- If message cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- the string to send
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Send multiple message on , blocking until all entire message is sent.
-
- the IOutgoingSocket to transmit on
- message to transmit
-
-
-
- Attempt to transmit a multiple message on .
- If message cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- message to transmit
-
-
-
- Attempt to transmit a multiple message on .
- If frames cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- message to transmit
-
-
-
- Transmit an empty frame over this socket, block until frame is sent.
-
- the IOutgoingSocket to transmit on
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
-
-
-
- Transmit an empty frame over this socket, block until frame is sent.
- Send more frame, another frame must be sent after this frame. Use to chain Send methods.
-
- the IOutgoingSocket to transmit on
- a reference to this IOutgoingSocket so that method-calls may be chained together
-
-
-
- Attempt to transmit an empty frame on .
- If message cannot be sent within , return false .
-
- the IOutgoingSocket to transmit on
- The maximum period of time to try to send a message.
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Attempt to transmit an empty frame on .
- If message cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- set this flag to true to signal that you will be immediately sending another frame (optional: default is false)
- true if a message was available, otherwise false .
-
-
-
- Transmit a status-signal over this socket.
-
- the IOutgoingSocket to transmit on
- a byte that contains the status signal to send
-
-
-
- Attempt to transmit a status-signal over this socket.
- If signal cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
- a byte that contains the status signal to send
-
-
-
- Transmit a specific status-signal over this socket that indicates OK.
-
- the IOutgoingSocket to transmit on
-
-
-
- Attempt to transmit a specific status-signal over this socket that indicates OK.
- If signal cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
-
-
-
- Transmit a specific status-signal over this socket that indicates there is an error.
-
- the IOutgoingSocket to transmit on
-
-
-
- Attempt to transmit a specific status-signal over this socket that indicates there is an error.
- If signal cannot be sent immediately, return false .
-
- the IOutgoingSocket to transmit on
-
-
-
- This flags enum-type is simply an indication of the direction of the poll-event,
- and can be None, PollIn, PollOut, or PollError.
-
-
-
-
- Extension methods for the enum.
-
-
-
-
- Test whether has the
- flag set.
-
-
-
-
- Test whether has the
- flag set.
-
-
-
-
- Test whether has the
- flag set.
-
-
-
-
- Forwards messages bidirectionally between two sockets. You can also specify a control socket tn which proxied messages will be sent.
-
-
- This class must be explicitly started by calling . If an external
- has been specified,
- then that call will block until is called.
-
- If using an external , ensure the front and back end sockets have been added to it.
-
- Users of this class must call when messages should no longer be proxied.
-
-
-
-
- Create a new instance of a Proxy (NetMQ.Proxy)
- with the given sockets to serve as a front-end, a back-end, and a control socket.
-
- the socket that messages will be forwarded from
- the socket that messages will be forwarded to
- this socket will have incoming messages also sent to it - you can set this to null if not needed
- this socket will have outgoing messages also sent to it - you can set this to null if not needed
- an optional external poller to use within this proxy
-
-
-
- Create a new instance of a Proxy (NetMQ.Proxy)
- with the given sockets to serve as a front-end, a back-end, and a control socket.
-
- the socket that messages will be forwarded from
- the socket that messages will be forwarded to
- this socket will have messages also sent to it - you can set this to null if not needed
- an optional external poller to use within this proxy
-
- is not
- null and either or are not contained within it.
-
-
-
-
- Start proxying messages between the front and back ends. Blocks, unless using an external
- .
-
- The proxy has already been started.
-
-
-
- Stops the proxy, blocking until the underlying has completed.
-
- The proxy has not been started.
-
-
-
- Provides extension methods for the interface,
- via which messages may be received in several ways.
-
-
-
-
- Block until the next message arrives, then make the message's data available via
- .
-
-
- The call blocks until the next message arrives, and cannot be interrupted. This a convenient and safe when
- you know a message is available, such as for code within a
- callback.
-
- The socket to receive from.
- An object to receive the message's data into.
-
-
-
- Receive a single frame from , blocking until one arrives.
-
- The socket to receive from.
- The content of the received message frame.
-
-
-
- Receive a single frame from , blocking until one arrives.
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
- The content of the received message frame.
-
-
-
- Attempt to receive a single frame from .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The content of the received message frame, or null if no message was available.
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from .
- If no message is immediately available, return false .
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
- The content of the received message frame, or null if no message was available.
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The content of the received message frame, or null if no message was available.
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from .
- If no message is available within , return false .
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
- The maximum period of time to wait for a message to become available.
- The content of the received message frame, or null if no message was available.
- true if a message was available, otherwise false .
-
-
-
- Receive all frames of the next message from , blocking until a message arrives.
-
- The socket to receive from.
-
- Optional initial
- for the returned
- .
-
- All frames of a multipart message as a list having one or more items.
-
-
-
- Receive all frames of the next message from , blocking until a message arrives.
-
- The socket to receive from.
- Reference to a list for return values. If null a new instance will be assigned, otherwise the provided list will be cleared and populated.
-
- Optional initial
- for the returned
- .
-
-
-
-
- Attempt to receive all frames of the next message from .
- If no message is immediately available, return false .
-
- The socket to receive from.
- Reference to a list for return values. If null a new instance will be assigned, otherwise the provided list will be cleared and populated.
-
- Optional initial
- for the returned
- .
-
-
-
-
- Attempt to receive all frames of the next message from .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- Reference to a list for return values. If null a new instance will be assigned, otherwise the provided list will be cleared and populated.
-
- Optional initial
- for the returned
- .
-
-
-
-
- Receive a single frame from , blocking until one arrives, and decode as a string using
- .
-
- The socket to receive from.
- The content of the received message frame as a string.
-
-
-
- Receive a single frame from , blocking until one arrives, and decode as a string using
- .
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
- The content of the received message frame.
-
-
-
- Receive a single frame from , blocking until one arrives, and decode as a string using
- .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
- The content of the received message frame as a string.
-
-
-
- Receive a single frame from , blocking until one arrives, and decode as a string using
- .
- Indicate whether further frames exist via .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
-
- true if another frame of the same message follows, otherwise
- false .
-
- The content of the received message frame as a string.
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The encoding used to convert the frame's data to a string.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive a single frame from , and decode as a string using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The encoding used to convert the frame's data to a string.
-
- The content of the received message frame as a string, or null
- if no message was available.
-
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a message was available, otherwise false .
-
-
-
- Receive all frames of the next message from , blocking until they arrive, and decode as strings using
- .
-
- The socket to receive from.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- The content of the received message frame as a string.
-
-
-
- Receive all frames of the next message from , blocking until they arrive, and decode as strings using
- .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
-
-
-
- Attempt to receive all frames of the next message from , and decode them as strings using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The frames of the received message as strings. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive all frames of the next message from , and decode them as strings using
- .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The encoding used to convert the frame's data to a string.
- The frames of the received message as strings. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive all frames of the next message from , and decode them as strings using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The frames of the received message as strings. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive all frames of the next message from , and decode them as strings using
- .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The encoding used to convert the frame's data to a string.
- The frames of the received message as strings. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Receive all frames of the next message from , blocking until they arrive.
-
- The socket to receive from.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- The content of the received message frame as a string.
-
-
-
- Attempt to receive all frames of the next message from .
- If no message is immediately available, return false .
-
- The socket to receive from.
- The received message. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Attempt to receive all frames of the next message from .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- The received message. Untouched if no message was available.
-
- Specifies the initial capacity of the used
- to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
- an extra allocation will occur, but the result will still be correct.
-
- true if a message was available, otherwise false .
-
-
-
- Receive frames from , blocking until a valid signal arrives.
-
- The socket to receive from.
- true if the received signal was zero, otherwise false .
-
-
-
- Attempt to receive a valid signal from .
- If no message is immediately available, return false .
-
- The socket to receive from.
-
- true if the received signal was zero, otherwise false . If no signal received,
- false .
-
- true if a valid signal was observed, otherwise false .
-
-
-
- Attempt to receive a valid signal from .
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
-
- true if the received signal was zero, otherwise false . If no signal received,
- false .
-
- true if a valid signal was observed, otherwise false .
-
-
-
- Receive a single frame from , blocking until one arrives, then ignore its content.
-
- The socket to receive from.
-
-
-
- Receive a single frame from , blocking until one arrives, then ignore its content.
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
-
-
-
- Attempt to receive a single frame from , then ignore its content.
- If no message is immediately available, return false .
-
- The socket to receive from.
- true if a frame was received and ignored, otherwise false .
-
-
-
- Attempt to receive a single frame from , then ignore its content.
- If no message is immediately available, return false .
- Indicate whether further frames exist via .
-
- The socket to receive from.
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a frame was received and ignored, otherwise false .
-
-
-
- Attempt to receive a single frame from , then ignore its content.
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- true if a frame was received and ignored, otherwise false .
-
-
-
- Attempt to receive a single frame from , then ignore its content.
- If no message is available within , return false .
- Indicate whether further frames exist via .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
-
- true if another frame of the same message follows, otherwise
- false .
-
- true if a frame was received and ignored, otherwise false .
-
-
-
- Receive all frames of the next message from , blocking until a message arrives, then ignore their contents.
-
- The socket to receive from.
-
-
-
- Attempt to receive all frames of the next message from , then ignore their contents.
- If no message is immediately available, return false .
-
- The socket to receive from.
- true if a frame was received and ignored, otherwise false .
-
-
-
- Attempt to receive all frames of the next message from , then ignore their contents.
- If no message is available within , return false .
-
- The socket to receive from.
- The maximum period of time to wait for a message to become available.
- true if a frame was received and ignored, otherwise false .
-
-
-
- The used in string related methods that do
- not explicitly provide an encoding parameter.
-
-
-
- Indicates an infinite timeout for send and receive operations.
-
-
-
- This enum-type specifies socket transport events (TCP and IPC only).
-
-
-
-
- A SocketOptions is simply a convenient way to access the options of a particular socket.
- This class holds a reference to the socket, and it's properties provide a concise way
- to access that socket's option values -- instead of calling GetSocketOption/SetSocketOption.
-
-
-
-
- The NetMQSocket that this SocketOptions is referencing.
-
-
-
-
- Create a new SocketOptions that references the given NetMQSocket.
-
- the NetMQSocket for this SocketOptions to hold a reference to
-
-
-
- Get or set the I/O-thread affinity. This is a 64-bit value used to specify which threads from the I/O thread-pool
- associated with the socket's context shall handle newly-created connections.
- 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
- For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
-
-
-
-
- Get or set unique identity of the socket, from a message-queueing router's perspective.
- This is a byte-array of at most 255 bytes.
-
-
-
-
- Get or set the maximum send or receive data rate for multicast transports on the specified socket.
-
-
-
-
- Get or set the recovery-interval for multicast transports using the specified socket.
- This option determines the maximum time that a receiver can be absent from a multicast group
- before unrecoverable data loss will occur. Default is 10,000 ms (10 seconds).
-
-
-
-
- Get or set the size of the transmit buffer for the specified socket.
-
-
-
-
- Get or set the size of the receive buffer for the specified socket.
- A value of zero means that the OS default is in effect.
-
-
-
-
- Gets whether the last frame received on the socket had the more flag set or not.
-
- true if receive more; otherwise, false .
-
-
-
- Get or set the linger period for the specified socket,
- which determines how long pending messages which have yet to be sent to a peer
- shall linger in memory after a socket is closed.
-
-
- If socket created with Context default is -1 if socket created without socket (using new keyword) default is zero.
- If context is used this also affects the termination of context, otherwise this affects the exit of the process.
- -1: Specifies an infinite linger period. Pending messages shall not be discarded after the socket is closed;
- attempting to terminate the socket's context shall block until all pending messages have been sent to a peer.
- 0: Specifies no linger period. Pending messages shall be discarded immediately when the socket is closed.
- Positive values specify an upper bound for the linger period. Pending messages shall not be discarded after the socket is closed;
- attempting to terminate the socket's context shall block until either all pending messages have been sent to a peer,
- or the linger period expires, after which any pending messages shall be discarded.
-
-
-
-
- Get or set the initial reconnection interval for the specified socket.
- This is the period to wait between attempts to reconnect disconnected peers
- when using connection-oriented transports. The default is 100 ms.
- -1 means no reconnection.
-
-
- With ZeroMQ, the reconnection interval may be randomized to prevent reconnection storms
- in topologies with a large number of peers per socket.
-
-
-
-
- Get or set the maximum reconnection interval for the specified socket.
- This is the maximum period to shall wait between attempts
- to reconnect. On each reconnect attempt, the previous interval shall be doubled
- until this maximum period is reached.
- The default value of zero means no exponential backoff is performed.
-
-
- This is the maximum period NetMQ shall wait between attempts
- to reconnect. On each reconnect attempt, the previous interval shall be doubled
- until this maximum period is reached.
- This allows for an exponential backoff strategy.
- The default value of zero means no exponential backoff is performed
- and reconnect interval calculations are only based on ReconnectIvl.
-
-
-
-
- Get or set the maximum length of the queue of outstanding peer connections
- for the specified socket. This only applies to connection-oriented transports.
- Default is 100.
-
-
-
-
- Get or set the upper limit to the size for inbound messages.
- If a peer sends a message larger than this it is disconnected.
- The default value is -1, which means no limit.
-
-
-
-
- Get or set the high-water-mark for transmission.
- This is a hard limit on the number of messages that are allowed to queue up
- before mitigative action is taken.
- The default is 1000.
-
-
-
-
- Get or set the high-water-mark for reception.
- This is a hard limit on the number of messages that are allowed to queue up
- before mitigative action is taken.
- The default is 1000.
-
-
-
-
- The low-water mark for message transmission.
- This is the number of messages that should be processed before transmission is
- unblocked (in case it was blocked by reaching high-watermark). The default value is
- calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
-
-
-
-
- The low-water mark for message reception.
- This is the number of messages that should be processed before reception is
- unblocked (in case it was blocked by reaching high-watermark). The default value is
- calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
-
-
-
-
- Get or set the time-to-live (maximum number of hops) that outbound multicast packets
- are allowed to propagate.
- The default value of 1 means that the multicast packets don't leave the local network.
-
-
-
-
- Get or set whether the underlying socket is for IPv4 only (not IPv6),
- as opposed to one that allows connections with either IPv4 or IPv6.
-
-
-
-
- Get the last endpoint bound for TCP and IPC transports.
- The returned value will be a string in the form of a ZMQ DSN.
-
-
- If the TCP host is ANY, indicated by a *, then the returned address
- will be 0.0.0.0 (for IPv4).
-
-
-
-
- Set the RouterSocket behavior when an unroutable message is encountered.
- A value of false is the default and discards the message silently when it cannot be routed.
- A value of true causes throw of HostUnreachableException if the message cannot be routed.
-
-
-
-
- Get or set whether to use TCP keepalive.
-
-
- When Keepalive is enabled, then your socket will periodically send an empty keepalive probe packet
- with the ACK flag on. The remote endpoint does not need to support keepalive at all, just TCP/IP.
- If you receive a reply to your keepalive probe, you can assume that the connection is still up and running.
- This procedure is useful because if the other peers lose their connection (for example, by rebooting)
- you will notice that the connection is broken, even if you don't have traffic on it.
- If the keepalive probes are not replied to by your peer, you can assert that the connection
- cannot be considered valid and then take the corrective action.
-
-
-
-
- Get or set the keep-alive time - the duration between two keepalive transmissions in idle condition.
- The TCP keepalive period is required by socket implementers to be configurable and by default is
- set to no less than 2 hours.
-
-
-
-
- Get or set the TCP keep-alive interval - the duration between two keepalive transmission if no response was received to a previous keepalive probe.
-
-
- By default a keepalive packet is sent every 2 hours or 7,200,000 milliseconds
- (TODO: Check these comments concerning default values! jh)
- if no other data have been carried over the TCP connection.
- If there is no response to a keepalive, it is repeated once every KeepAliveInterval seconds.
- The default is one second.
-
-
-
-
- Get or set the attach-on-connect value.
- If set to true, this will delay the attachment of a pipe on connect until
- the underlying connection has completed. This will cause the socket
- to block if there are no other connections, but will prevent queues
- from filling on pipes awaiting connection.
- Default is false.
-
-
-
-
- This applies only to publisher sockets.
- Set whether to send all subscription messages upstream, not just unique ones.
- The default is false.
-
-
-
-
- This applies only to publisher sockets.
- Set whether to support broadcast functionality
-
-
-
-
- This applies only to router sockets.
- Set whether RouterSocket allows non-zmq tcp connects.
- If true, router socket accepts non-zmq tcp connections
-
-
-
-
- When enabled new router connections with same identity take over old ones
-
-
-
-
- Get or set the byte-order: big-endian, vs little-endian.
-
-
-
-
- Get the last PEER allocated routing id
-
-
-
-
- Controls the maximum datagram size for PGM.
-
-
-
-
- A DealerSocket is a NetMQSocket, whereby the dealer sends messages in a way intended to achieve load-balancing
- - which are received in a fair queueing manner.
-
-
-
-
- Create a new DealerSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new DealerSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new DealerSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- A PairSocket is a NetMQSocket, usually used to synchronize two threads - using only one socket on each side.
-
-
-
-
- Create a new PairSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new PairSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new PairSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Create and return an inproc pipe where socket1 is bound and socket2 is connected.
-
- the Bind socket
- the Connect socket
-
-
-
- Peer socket, the first message is always the identity of the sender
-
-
-
-
- Create a new PeerSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new PeerSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new PeerSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Connect the peer socket to .
-
- a string denoting the address to connect this socket to
- The peer allocated routing id
- thrown if the socket was already disposed
- The socket has been stopped.
- No IO thread was found.
- The specified address is already in use.
-
-
-
- A PublisherSocket is a NetMQSocket intended to be used as the Pub in the PubSub pattern.
- The intended usage is for publishing messages to all subscribers which are subscribed to a given topic.
-
-
-
-
- Create a new PublisherSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is bind (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new PublisherSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new PublisherSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- doesn't support sending, so this override throws
- .
-
- Receive is not supported.
-
-
-
- A PullSocket is a NetMQSocket intended to be used as the "Pull" part of the Push-Pull pattern.
- This will "pull" messages that have been pushed from the "push" socket.
-
-
-
-
- Create a new PullSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is bind (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new PullSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new PullSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- A PushSocket is a NetMQSocket intended to be used as the "Push" part of the Push-Pull pattern.
- This will "push" messages to be pulled by the "pull" socket.
-
-
-
-
- Create a new PushSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new PushSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new PushSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- doesn't support sending, so this override throws
- .
-
- Receive is not supported.
-
-
-
- A RequestSocket is a NetMQSocket intended to be used as the Request part of the Request-Response pattern.
- This is generally paired with a ResponseSocket.
-
-
-
-
- Create a new RequestSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new RequestSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new RequestSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Try to send request message and return the response as a message, or return null if not successful
-
- a string denoting the address to connect to
- The request message
- The number of times to try
- The timeout for each request
- Report topics: Failure, Retry, Send, Success
- the response message, or null if not successful
-
-
-
- Try to send request string and return the response string, or return null if not successful
-
- a string denoting the address to connect to
- The request string
- The number of times to try
- The timeout for each request
- Report topics: Failure, Retry, Send, Success
- the response message, or null if not successful
-
-
-
- A ResponseSocket is a NetMQSocket intended to be used as the Response part of the Request-Response pattern.
- This is generally paired with a RequestSocket.
-
-
-
-
- Create a new ResponseSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is bind (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new ResponseSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new ResponseSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Router socket, the first message is always the identity of the sender
-
-
-
-
- Create a new RouterSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is bind (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new RouterSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new RouterSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- This is a NetMQSocket but provides no additional functionality.
- You can use it when you need an instance that is a NetMQSocket
- but with none of the distinguishing behavior of any of the other socket types.
-
-
- This is provided because NetMQSocket is an abstract class, so you cannot instantiate it directly.
-
-
-
-
- Create a new StreamSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new StreamSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new StreamSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- A SubscriberSocket is a NetMQSocket intended to be used as the "Sub" in the PubSub pattern.
- The intended usage is to receive messages from the publisher socket.
-
-
-
-
- Create a new SubscriberSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new SubscriberSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new SubscriberSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this string prefix.
- You can set topic to an empty string to subscribe to everything.
-
- this specifies what text-prefix to subscribe to, or may be an empty-string to specify ALL
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this string prefix, using the given Encoding.
- You can set topic to an empty string to subscribe to everything.
-
- this specifies what text-prefix to subscribe to, or may be an empty-string to specify ALL
- the character-Encoding to use when converting the topic string internally into a byte-array
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this array of bytes.
-
- this specifies what byte-array prefix to subscribe to
-
-
-
- Subscribe this socket to all topics - which means enable this socket to receive
- all messages regardless of what the string prefix is.
- This is the same as calling Subscribe with an empty-string for the topic.
-
-
-
-
- Remove this socket's subscription to the given topic.
-
- a string denoting which the topic to stop receiving
-
-
-
- Remove this socket's subscription to the given topic.
-
- a string denoting which the topic to stop receiving
- the Encoding to use when converting the topic string internally into a byte-array
-
-
-
- Remove this socket's subscription to the given topic.
-
- a byte-array denoting which the topic to stop receiving
-
-
-
- An XPublisherSocket is a NetMQSocket intended to be used as the XPub in the XPub/XSub pattern.
- The intended usage is for serving, together with a matching XSubscriberSocket,
- as a stable intermediary between a PublisherSocket and it's SubscriberSockets.
-
-
-
-
- Create a new XPublisherSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is bind (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new XPublisherSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
-
-
-
-
- Create a new XPublisherSocket based upon the given .
-
- the SocketBase to create the new socket from
-
-
-
- In case of socket set to manual mode will subscribe the last subscriber to the topic
-
- a string specifying the Topic to subscribe to
-
-
-
- In case of socket set to manual mode will subscribe the last subscriber to the topic
-
- a string specifying the Topic to subscribe to
- the character-Encoding to use when converting the topic string internally into a byte-array
-
-
-
- In case of socket set to manual mode will subscribe the last subscriber to the topic
-
- a byte-array specifying the Topic to subscribe to
-
-
-
- In case of socket set to manual mode will unsubscribe the last subscriber from a topic
-
- a string specifying the Topic to unsubscribe from
-
-
-
- In case of socket set to manual mode will unsubscribe the last subscriber from a topic
-
- a string specifying the Topic to unsubscribe from
- the character-Encoding to use when converting the topic string internally into a byte-array
-
-
-
- In case of socket set to manual mode will unsubscribe the last subscriber from a topic
-
- a byte-array specifying the Topic to unsubscribe from
-
-
-
- Publisher sockets generally send a welcome-message to subscribers to give an indication that they have successful subscribed.
- This method clears that message, such that none is sent.
-
-
-
-
- Publisher sockets send a welcome-message to subscribers to give an indication that they have successful subscribed.
- This method is how you set the text of that welcome-message.
-
- a string denoting the new value for the welcome-message
- the character-Encoding to use when converting the topic string internally into a byte-array
-
-
-
- Publisher sockets send a welcome-message to subscribers to give an indication that they have successful subscribed.
- This method is how you set the text of that welcome-message. The Encoding is assumed to be ASCII.
-
- a string denoting the new value for the welcome-message
-
-
-
- Publisher sockets send a welcome-message to subscribers to give an indication that they have successful subscribed.
- This method is how you set the text of that welcome-message. The Encoding is assumed to be ASCII.
-
- a byte-array denoting the new value for the welcome-message
-
-
-
- An XSubscriberSocket is a NetMQSocket intended to be used as the XSub in the XPub/XSub pattern.
- The intended usage is for serving, together with a matching XPublisherSocket,
- as a stable intermediary between a PublisherSocket and it's SubscriberSockets.
-
-
-
-
- Create a new XSubscriberSocket and attach socket to zero or more endpoints.
-
-
- List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to connect the socket).
- Default action is connect (if endpoint doesn't start with '@' or '>')
-
-
- var socket = new XSubscriberSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
-
-
-
-
- Create a new XSubscriberSocket based upon the given SocketBase.
-
- the SocketBase to create the new socket from
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this string prefix.
- You can set topic to an empty string to subscribe to everything.
-
- this specifies what text-prefix to subscribe to, or may be an empty-string to specify ALL
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this string prefix, using the given Encoding.
- You can set topic to an empty string to subscribe to everything.
-
- this specifies what text-prefix to subscribe to, or may be an empty-string to specify ALL
- the Encoding to use when converting the topic string internally into a byte-array
-
-
-
- Subscribe this socket to the given 'topic' - which means enable this socket to receive
- messages that begin with this array of bytes.
-
- this specifies what byte-array prefix to subscribe to
-
-
-
- Subscribe this socket to all topics - which means enable this socket to receive
- all messages regardless of what the string prefix is.
- This is the same as calling Subscribe with an empty-string for the topic.
-
-
-
-
- Remove this socket's subscription to the given topic.
-
- a string denoting which the topic to stop receiving
-
-
-
- Remove this socket's subscription to the given topic.
-
- a string denoting which the topic to stop receiving
- the Encoding to use when converting the topic string internally into a byte-array
-
-
-
- Remove this socket's subscription to the given topic.
-
- a byte-array denoting which the topic to stop receiving
-
-
-
- This enum-type is used to specify the basic type of message-queue socket
- based upon the intended pattern, such as Pub,Sub, Req,Rep, Dealer,Router, Pull,Push, Xpub,Xsub.
-
-
-
-
- No socket-type is specified
-
-
-
-
- This denotes a Pair socket (usually paired with another Pair socket).
-
-
-
-
- This denotes a Publisher socket (usually paired with a Subscriber socket).
-
-
-
-
- This denotes a Subscriber socket (usually paired with a Publisher socket).
-
-
-
-
- This denotes a Request socket (usually paired with a Response socket).
-
-
-
-
- This denotes a Response socket (usually paired with a Request socket).
-
-
-
-
- This denotes an Dealer socket.
-
-
-
-
- This denotes an Router socket.
-
-
-
-
- This denotes a Pull socket (usually paired with a PUsh socket).
-
-
-
-
- This denotes a Push socket (usually paired with a Pull socket).
-
-
-
-
- This denotes an XPublisher socket.
-
-
-
-
- This denotes an XSubscriber socket.
-
-
-
-
- This denotes a Stream socket - which is a parent-class to the other socket types.
-
-
-
-
\ No newline at end of file
+
+
+
+
+ NetMQ
+
+
+
+
+ The IBufferPool interface specifies two methods: Take, and Return.
+ These provide for taking byte-array data from a common pool, and returning it.
+
+
+
+
+ Take byte-array storage from the buffer-pool.
+
+ the number of bytes to take
+ a byte-array that comes from the buffer-pool
+
+
+
+ Return the given byte-array buffer to the common buffer-pool.
+
+ the byte-array to return to the buffer-pool
+
+
+
+ This implementation of
+
+ uses WCF's
+
+ class to manage a pool of buffers.
+
+
+
+
+ Create a new BufferManagerBufferPool with the specified maximum buffer pool size
+ and a maximum size for each individual buffer in the pool.
+
+ the maximum size to allow for the buffer pool
+ the maximum size to allow for each individual buffer in the pool
+
+ There was insufficient memory to create the
+ requested buffer pool.
+
+
+ Either maxBufferPoolSize or maxBufferSize was
+ less than zero.
+
+
+
+
+ Return a byte-array buffer of at least the specified size from the pool.
+
+ the size in bytes of the requested buffer
+ a byte-array that is the requested size
+ size cannot be less than zero
+
+
+
+ Return the given buffer to this manager pool.
+
+ a reference to the buffer being returned
+
+ the Length of buffer does not match the pool's buffer
+ length property
+
+ the buffer reference cannot be null
+
+
+
+ Release the buffers currently cached in this manager.
+
+
+
+
+ Release the buffers currently cached in this manager.
+
+ true if managed resources are to be disposed
+
+
+
+ This simple implementation of
+
+ does no buffer pooling. Instead, it uses regular
+ .NET memory management to allocate a buffer each time
+
+ is called. Unused buffers
+ passed to
+
+ are simply left for the .NET garbage collector to deal with.
+
+
+
+
+ Return a newly-allocated byte-array buffer of at least the specified size from the pool.
+
+ the size in bytes of the requested buffer
+ a byte-array that is the requested size
+
+ there is not sufficient memory to allocate the requested
+ memory
+
+
+
+
+ The expectation of an actual buffer-manager is that this method returns the given buffer to the
+ manager pool.
+ This particular implementation does nothing.
+
+ a reference to the buffer being returned
+
+
+
+ The expectation of an actual buffer-manager is that the Dispose method will release the buffers
+ currently cached in this manager.
+ This particular implementation does nothing.
+
+
+
+
+ Release the buffers currently cached in this manager (however in this case, this does nothing).
+
+ true if managed resources are to be disposed
+
+
+
+ Contains a singleton instance of
+
+ used for allocating byte arrays
+ for
+
+ instances with type .
+
+
+ Sending and receiving message frames requires the use of buffers (byte arrays), which are expensive to
+ create and destroy.
+ You can use the BufferPool class to pool buffers for reuse, reducing allocation, deallocation and
+ garbage collection.
+
+ The default implementation is .
+
+ -
+ Call
+
+ to replace it with a .
+
+ -
+ Call
+
+ to reinstate the default
+ .
+
+ -
+ Call
+
+ to substitute a custom implementation for the allocation and
+ deallocation of message buffers.
+
+
+
+
+
+
+ Set BufferPool to use the
+
+ (which it does by default).
+
+
+
+
+ Set BufferPool to use the
+
+ to manage the buffer-pool.
+
+ the maximum size to allow for the buffer pool
+ the maximum size to allow for each individual buffer in the pool
+
+ There was insufficient memory to create the
+ requested buffer pool.
+
+
+ Either maxBufferPoolSize or maxBufferSize was
+ less than zero.
+
+
+
+
+ Set BufferPool to use the specified IBufferPool implementation to manage the buffer-pool.
+
+
+ the implementation of
+
+ to use
+
+
+
+
+ Allocate a buffer of at least
+
+ bytes from the current
+ .
+
+ The minimum size required, in bytes.
+
+ A byte array having at least
+
+ bytes.
+
+
+
+
+ Returns
+
+ to the .
+
+ The byte array to be returned to the pool.
+
+
+
+ Class Address contains a specification of a protocol and an MqEndPoint.
+
+
+
+
+ The string-literal "inproc"
+ - this denotes in-process, or inter-thread, communication.
+
+
+
+
+ The string-literal "tcp"
+ - this denotes TCP communication over the network.
+
+
+
+
+ The string-literal "ipc"
+ - this denotes inter-process communication, which on NetMQ is exactly the same as TCP.
+
+
+
+
+ The string-literal "pgm"
+ - this denotes the Pragmatic General Multicast (PGM) reliable multicast protocol.
+
+
+
+
+ The string-literal "epgm"
+ - this denotes the Encapsulated PGM protocol.
+
+
+
+
+ Interface IZAddress specifies that Resolve and property Address must be implemented.
+
+
+
+
+ Create a new Address instance with the given protocol and text expression of an address.
+
+ the protocol of this Address - as in tcp, ipc, pgm
+ a text representation of the address
+
+
+
+ Create a new Address instance based upon the given endpoint, assuming a protocol of tcp.
+
+ the subclass of EndPoint to base this Address upon
+
+
+
+ Defines a command sent between threads.
+
+
+
+
+ Create a new Command object for the given destination, type, and optional argument.
+
+ a ZObject that denotes the destination for this command
+ the CommandType of the new command
+ an Object to comprise the argument for the command (optional)
+
+
+ The destination to which the command should be applied.
+
+
+ The type of this command.
+
+
+
+ Get the argument to this command.
+
+
+
+
+ Override of ToString, which returns a string in the form [ command-type, destination ].
+
+ a string that denotes the command-type and destination
+
+
+
+ Enumeration of possible
+
+ types.
+
+
+ The value of
+
+ denotes what action
+ the command will perform.
+
+
+
+
+ Sent to I/O thread to let it know that it should
+ terminate itself.
+
+
+
+
+ Sent to I/O object to make it register with its I/O thread
+
+
+
+
+ Sent to socket to let it know about the newly created object.
+
+
+
+
+ Attach the engine to the session. If engine is NULL, it informs
+ session that the connection has failed.
+
+
+
+
+ Sent from session to socket to establish pipe(s) between them.
+ Caller must have used inc_seqnum before sending the command.
+
+
+
+
+ Sent by pipe writer to inform dormant pipe reader that there
+ are messages in the pipe.
+
+
+
+
+ Sent by pipe reader to inform pipe writer how many
+ messages it has read so far.
+
+
+
+
+ Sent by pipe reader to writer after creating a new inpipe.
+ The parameter is actually of type pipe_t::upipe_t, however,
+ its definition is private so we'll have to do with void*.
+
+
+
+
+ Sent by pipe reader to pipe writer to ask it to terminate
+ its end of the pipe.
+
+
+
+
+ Pipe writer acknowledges pipe_term command.
+
+
+
+
+ Sent by I/O object to the socket to request the shutdown of
+ the I/O object.
+
+
+
+
+ Sent by socket to I/O object to start its shutdown.
+
+
+
+
+ Sent by I/O object to the socket to acknowledge it has
+ shut down.
+
+
+
+
+ Transfers the ownership of the closed socket
+ to the reaper thread.
+
+
+
+
+ Closed socket notifies the reaper that it's already deallocated.
+
+
+
+
+ Sent by reaper thread to the term thread when all the sockets
+ have successfully been deallocated.
+
+
+
+
+ Send to reaper to stop the reaper immediatly
+
+
+
+
+ This class exists to hold constant values that comprise the internal configuration of the messaging
+ system.
+
+
+
+
+ Number of new messages in message pipe needed to trigger new memory
+ allocation. Setting this parameter to 256 decreases the impact of
+ memory allocation by approximately 99.6%
+
+
+
+
+ Commands in pipe per allocation event.
+
+
+
+
+ Determines how often does socket poll for new commands when it
+ still has unprocessed messages to handle. Thus, if it is set to 100,
+ socket will process 100 inbound messages before doing the poll.
+ If there are no unprocessed messages available, poll is done
+ immediately. Decreasing the value trades overall latency for more
+ real-time behaviour (less latency peaks).
+
+
+
+
+ Maximal batching size for engines with receiving functionality.
+ So, if there are 10 messages that fit into the batch size, all of
+ them may be read by a single 'recv' system call, thus avoiding
+ unnecessary network stack traversals.
+
+
+
+
+ Maximal batching size for engines with sending functionality.
+ So, if there are 10 messages that fit into the batch size, all of
+ them may be written by a single 'send' system call, thus avoiding
+ unnecessary network stack traversals.
+
+
+
+
+ Maximal delta between high and low watermark.
+
+
+
+
+ Maximum number of events the I/O thread can process in one go.
+
+
+
+
+ Maximal delay to process command in API thread (in CPU ticks).
+ 3,000,000 ticks equals to 1 - 2 milliseconds on current CPUs.
+ Note that delay is only applied when there is continuous stream of
+ messages to process. If not so, commands are processed immediately.
+
+
+
+
+ Low-precision clock precision in CPU ticks. 1ms. Value of 1000000
+ should be OK for CPU frequencies above 1GHz. If should work
+ reasonably well for CPU frequencies above 500MHz. For lower CPU
+ frequencies you may consider lowering this value to get best
+ possible latencies.
+
+
+
+
+ Maximum transport data unit size for PGM (TPDU).
+
+
+
+
+ On some OSes the signaler has to be emulated using a TCP
+ connection. In such cases following port is used.
+
+
+
+
+ Objects of class Ctx are intended to encapsulate all of the global state
+ associated with the NetMQ library. This contains the sockets, and manages interaction
+ between them.
+
+
+
+
+ Information associated with inproc endpoint. Note that endpoint options
+ are registered as well so that the peer can access them without a need
+ for synchronisation, handshaking or similar.
+
+
+
+
+ Create a new Endpoint with the given socket.
+
+ the socket for this new Endpoint
+ the Options to assign to this new Endpoint
+
+
+
+ Get the socket associated with this Endpoint.
+
+
+
+
+ Get the Options of this Endpoint.
+
+
+
+
+ Sockets belonging to this context. We need the list so that
+ we can notify the sockets when zmq_term() is called. The sockets
+ will return ETERM then.
+
+
+
+
+ List of unused thread slots.
+
+
+
+
+ If true, zmq_init has been called but no socket has been created
+ yet. Launching of I/O threads is delayed.
+
+
+
+
+ If true, zmq_term was already called.
+
+
+
+
+ This object is for synchronisation of accesses to global slot-related data:
+ sockets, empty_slots, terminating. It also synchronises
+ access to zombie sockets as such (as opposed to slots) and provides
+ a memory barrier to ensure that all CPU cores see the same data.
+
+
+
+
+ The reaper thread.
+
+
+
+
+ List of I/O threads.
+
+
+
+
+ Length of the mailbox-array.
+
+
+
+
+ Array of pointers to mailboxes for both application and I/O threads.
+
+
+
+
+ Mailbox for zmq_term thread.
+
+
+
+
+ Dictionary containing the inproc endpoints within this context.
+
+
+
+
+ This object provides synchronisation of access to the list of inproc endpoints.
+
+
+
+
+ The highest socket-id that has been assigned thus far.
+
+
+
+
+ The maximum number of sockets that can be opened at the same time.
+
+
+
+
+ The number of I/O threads to launch.
+
+
+
+
+ This object is used to synchronize access to context options.
+
+
+
+
+ The thread-id for the termination (the equivalent of the zmq_term) thread.
+
+
+
+
+ This is the thread-id to assign to the Reaper (value is 1).
+
+
+
+
+ This function is called when user invokes zmq_term. If there are
+ no more sockets open it'll cause all the infrastructure to be shut
+ down. If there are open sockets still, the deallocation happens
+ after the last one is closed.
+
+
+
+
+ Create and return a new socket of the given type, and initialize this Ctx if this is the first one.
+
+ the type of socket to create
+ the newly-created socket
+ Cannot create new socket while terminating.
+ Maximum number of sockets reached.
+
+ The context (Ctx) must not be already terminating.
+
+
+
+
+ Destroy the given socket - which means to remove it from the list of active sockets,
+ and add it to the list of unused sockets to be terminated.
+
+ the socket to destroy
+
+ If this was the last socket, then stop the reaper.
+
+
+
+
+ Returns reaper thread object.
+
+
+
+
+ Send a command to the given destination thread.
+
+
+
+
+ Returns the
+
+ that is the least busy at the moment.
+
+ Which threads are eligible (0 = all).
+
+ The least busy thread, or null if none is available.
+
+
+
+
+ Save the given address and Endpoint within our internal list.
+ This is used for management of inproc endpoints.
+
+ the textual name to give this endpoint
+ the Endpoint to remember
+ true if the given address was NOT already registered
+
+
+
+ Un-register the given address/socket, by removing it from the contained list of endpoints.
+
+ the (string) address denoting the endpoint to unregister
+ the socket associated with that endpoint
+ true if the endpoint having this address and socket is found, false otherwise
+
+
+
+ Remove from the list of endpoints, all endpoints that reference the given socket.
+
+ the socket to remove all references to
+
+
+
+ Return the EndPoint that has the given address, and increments the seqnum of the associated socket.
+
+ the (string) address to match against the endpoints
+ the Endpoint that was found
+
+ The given address was not found in the list of
+ endpoints.
+
+
+ By calling this method, the socket associated with that returned EndPoint has it's Seqnum incremented,
+ in order to prevent it from being de-allocated before a command can be sent to it.
+
+
+
+
+ Class ErrorHelper provides one static method - ToErrorCode, for converting a SocketError to the
+ equivalent ErrorCode.
+
+
+
+
+ Return the ErrorCode that is the closest equivalent to the given SocketError.
+
+ the SocketError to convert from
+ an ErrorCode that corresponds to the given SocketError
+
+
+
+ Interface IMsgSink mandates a PushMsg( Msg ) method.
+
+
+
+
+ Deliver a message. Return true if successful; false otherwise.
+ This function takes ownership of the passed message.
+
+ the message (of type Msg) to deliver
+
+
+
+ Classes that implement IMsgSource are able to fetch a message, with the method: PullMsg.
+
+
+
+
+ Fetch a message.
+ If successful - returns true and writes the message instance to the msg argument.
+ If not successful - return false and write null to the msg argument.
+
+ the Msg to write the fetched message into
+ true if successful - and writes the message to the msg argument
+
+
+
+ Simple base class for objects that live in I/O threads.
+ It makes communication with the poller object easier and
+ makes defining unneeded event handlers unnecessary.
+
+
+
+
+ Create a new IOObject object and plug it into the given IOThread.
+
+ the IOThread to plug this new IOObject into.
+
+
+
+ "Plug in" this IOObject to the given IOThread, - ie associate this with the specified IOThread.
+
+ the IOThread for this object to live in
+
+ When migrating an object from one I/O thread to another, first
+ unplug it, then migrate it, then plug it to the new thread.
+
+
+
+
+ "Un-Plug" this IOObject from its current IOThread, and set its handler to null.
+
+
+ When migrating an object from one I/O thread to another, first
+ unplug it, then migrate it, then plug it to the new thread.
+
+
+
+
+ Add the given socket to the Proactor.
+
+ the AsyncSocket to add
+
+
+
+ Remove the given socket from the Proactor.
+
+ the AsyncSocket to remove
+
+
+
+ This method is called when a message receive operation has been completed. This forwards it on to the
+ handler's InCompleted method.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This method is called when a message Send operation has been completed. This forwards it on to the
+ handler's OutCompleted method.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This is called when the timer expires.
+
+ an integer used to identify the timer
+
+
+
+ I/O thread accesses incoming commands via this mailbox.
+
+
+
+
+ I/O multiplexing is performed using a poller object.
+
+
+
+
+ Create a new IOThread object within the given context (Ctx) and thread.
+
+ the Ctx (context) for this thread to live within
+ the integer thread-id for this new IOThread
+
+
+
+ Classes that implement IPollEvents provide two methods (InEvent and OutEvent) that are invoked when
+ ready for reading or writing.
+
+
+
+
+ Called by the I/O thread when the file descriptor is ready for reading.
+
+
+
+
+ Called by the I/O thread when the file descriptor is ready for writing.
+
+
+
+
+ This is an ITimerEvent, with InCompleted and OutCompleted callback-methods,
+ used for implementing a Proactor pattern.
+
+
+
+
+ This is the "Input-Completed" method - called by the I/O-thread when the file descriptor is ready for
+ reading.
+
+ this is set to any socket-error that has occurred
+ the number of bytes that are now ready to be read
+
+
+
+ This is the "Output-Completed" method - called by the I/O thread when the file descriptor is ready for
+ writing.
+
+ this is set to any socket-error that has occurred
+ the number of bytes that are now ready to be written
+
+
+
+ The ITimerEvent interface mandates a TimerEvent( int id ) method,
+ that is called with an id-value when the timer expires.
+
+
+
+
+ This is called when the timer expires.
+
+ an integer used to identify the timer
+
+
+
+ There's only one thread receiving from the mailbox, but there
+ is arbitrary number of threads sending. Given that ypipe requires
+ synchronised access on both of its endpoints, we have to synchronize
+ the sending side.
+
+
+
+
+ The pipe to store actual commands.
+
+
+
+
+ Signaler to pass signals from writer thread to reader thread.
+
+
+
+
+ There's only one thread receiving from the mailbox, but there
+ is an arbitrary number of threads sending. Given that
+
+ requires
+ synchronised access on both of its endpoints, we have to synchronize
+ the sending side.
+
+
+
+
+ True if the underlying pipe is active, ie. when we are allowed to
+ read commands from it.
+
+
+
+
+ Create a new Mailbox with the given name.
+
+ the name to give this new Mailbox
+
+
+
+ Get the socket-handle contained by the Signaler.
+
+
+
+
+ Send the given Command out across the command-pipe.
+
+ the Command to send
+
+
+
+ Receive and return a Command from the command-pipe.
+
+ how long to wait for a command (in milliseconds) before returning
+
+
+
+
+ Close the contained Signaler.
+
+
+
+
+ Class Options is essentially a container for socket-related option-settings.
+
+
+
+
+ Create a new Options object with all default values.
+
+
+
+
+ Get or set the I/O-thread affinity.
+ The default value is 0.
+
+
+
+
+ Maximum backlog for pending connections.
+ The default value is 100.
+
+
+
+
+ Get or set whether connecting pipes are not attached immediately, meaning a send()
+ on a socket with only connecting pipes would block.
+ The default value is false.
+
+
+
+
+ If true, session reads all the pending messages from the pipe and
+ sends them to the network when socket is closed.
+ The default value is true.
+
+
+
+
+ If true, socket reads all the messages from the pipe and delivers
+ them to the user when the peer terminates.
+ The default value is true.
+
+
+
+
+ Get or set the Endian-ness, which indicates whether the most-significant bits are placed higher or
+ lower in memory.
+ The default value is Endianness.Big.
+
+
+
+
+ If true, (X)SUB socket should filter the messages. If false (which is the default), it should not.
+
+
+
+
+ Get or set the byte-array that represents the Identity.
+ The initial value is null.
+
+
+
+
+ Get or set the size of the socket-identity byte-array.
+ The initial value is 0, until the Identity property is set.
+
+
+
+
+ Get or set whether this allows the use of IPv4 sockets only.
+ If true (the default), it will not be possible to communicate with IPv6-only hosts.
+ If false, the socket can connect to and accept connections from both IPv4 and IPv6 hosts.
+
+
+
+
+ Get or set the last socket endpoint resolved URI
+ The initial value is null.
+
+
+
+
+ Get or set the Linger time, in milliseconds.
+ The default value is -1; The XSub ctor sets this to 0.
+
+
+
+
+ Get or set the maximum size of message to handle.
+ The default value is -1, which indicates no limit.
+
+
+
+
+ Sets the time-to-live field in every multicast packet sent.
+ The default value is 1.
+
+
+
+
+ Get or set the maximum transfer rate [Kb/s]. The default is 100 Kb/s.
+
+
+
+
+ If true, router socket accepts non-zmq tcp connections
+ The default value is false, except the Stream ctor initialises this to true.
+ Setting this to true changes RecvIdentity to false.
+
+
+
+
+ If true, the identity message is forwarded to the socket.
+ The default value is false.
+
+
+
+
+ Get or set the minimum interval between attempts to reconnect, in milliseconds.
+ The default is 100 ms
+
+
+
+
+ Get or set the maximum interval between attempts to reconnect, in milliseconds.
+ The default is 0 (unused).
+
+
+
+
+ Get or set the recovery time interval [ms]. The default is 10 seconds.
+
+
+
+
+ SO_SNDBUF and SO_RCVBUF to be passed to underlying transport sockets.
+ The initial value is 0.
+
+
+
+
+ Get or set the size of the receive-buffer.
+ The initial value is 0.
+
+
+
+
+ Get or set the high-water marks for message pipes.
+ The default value is 1000.
+
+
+
+
+ Get or set the high-water mark for message reception.
+ The default value is 1000.
+
+
+
+
+ The low-water mark for message transmission.
+
+
+
+
+ The low-water mark for message reception.
+
+
+
+
+ Get or set the timeout for send operations for this socket.
+ The default value is -1, which means no timeout.
+
+
+
+
+ Get or set the ID of the socket.
+ The default value is 0.
+
+
+
+
+ Get or set the type of socket (ZmqSocketType).
+ The default value is ZmqSocketType.None.
+
+
+
+
+ TCP keep-alive settings.
+ Defaults to -1 = do not change socket options
+
+
+
+
+ Get or set the TCP Keep-Alive Count.
+ The default value is -1.
+
+
+
+
+ Get or set the TCP Keep-Alive interval to use when at idle.
+ The default value is -1.
+
+
+
+
+ Get or set the TCP Keep-Alive Interval
+ The default value is -1.
+
+
+
+
+ Disable TIME_WAIT tcp state when client disconnect.
+ The default value is false.
+
+
+
+
+ Controls the maximum datagram size for PGM.
+
+
+
+
+ Assign the given optionValue to the specified option.
+
+ a ZmqSocketOption that specifies what to set
+ an Object that is the value to set that option to
+ The option and optionValue must be valid.
+
+
+
+ Get the value of the specified option.
+
+ a ZmqSocketOption that specifies what to get
+ an Object that is the value of that option
+ A valid option must be specified.
+
+
+
+ Base class for objects forming a part of ownership hierarchy.
+ It handles initialisation and destruction of such objects.
+
+
+
+
+ The Options of this Own.
+
+
+
+
+ True if termination was already initiated. If so, we can destroy
+ the object if there are no more child objects or pending term acks.
+
+
+
+
+ Sequence number of the last command sent to this object.
+
+
+
+
+ Sequence number of the last command processed by this object.
+
+
+
+
+ Socket owning this object. It's responsible for shutting down
+ this object.
+
+
+
+
+ List of all objects owned by this socket. We are responsible
+ for deallocating them before we quit.
+
+
+
+
+ Number of events we have to get before we can destroy the object.
+
+
+
+
+ Initializes a new instance of the
+
+ class that is running on a thread outside of 0MQ infrastructure.
+
+ The parent context.
+ The thread id.
+
+ Note that the owner is unspecified in the constructor. It'll be assigned later on using
+
+ when the object is plugged in.
+
+
+
+
+ Initializes a new instance of the
+
+ class that is running within I/O thread.
+
+ The I/O thread.
+ The options.
+
+ Note that the owner is unspecified in the constructor. It'll be assigned later on using
+
+ when the object is plugged in.
+
+
+
+
+ Eliminate any contained resources that need to have this explicitly done.
+
+
+
+
+ A place to hook in when physical destruction of the object is to be delayed.
+ Unless overridden, this simply calls Destroy.
+
+
+
+
+ Set the owner of *this* Own object, to be the given owner.
+
+ the Own object to be our new owner
+
+
+
+ When another owned object wants to send a command to this object it calls this function
+ to let it know it should not shut down before the command is delivered.
+
+
+ This function may be called from a different thread!
+
+
+
+
+ Launch the supplied object and become its owner.
+
+ The object to be launched.
+
+
+
+ Terminate owned object.
+
+
+
+
+ Process a termination-request for the given Own obj,
+ removing it from the listed of owned things.
+
+ the Own object to remove and terminate
+
+
+
+ Add the given Own object to the list of owned things.
+
+ the Own object to add to our list
+
+ If *this* Own is already terminating, then send a request to the given Own obj
+ to terminate itself.
+
+
+
+
+ Ask owner object to terminate this object. It may take a while actual termination is started.
+
+
+ This function should not be called more than once.
+
+
+
+
+ Returns true if the object is in process of termination.
+
+
+
+
+ Send termination requests to all of the owned objects, and then runs the termination process.
+
+ the linger time, in milliseconds
+
+ Termination handler is protected rather than private so that it can be intercepted by the derived
+ class.
+ This is useful to add custom steps to the beginning of the termination process.
+
+
+
+
+ Add the given number to the termination-acknowledgement count.
+
+
+ The methods RegisterTermAcks and
+
+ are used to wait for arbitrary events before
+ terminating. Just add the number of events to wait for, and when the event occurs - call
+ .
+ When the number of pending termination-acknowledgements reaches zero, this object will be deallocated.
+
+
+
+
+ Decrement the termination-acknowledgement count, and if it reaches zero
+ then send a termination-ack to the owner.
+
+
+ The methods
+
+ and UnregisterTermAck are used to wait for arbitrary events before
+ terminating. Just add the number of events to wait for, and when the event occurs - call
+ UnregisterTermAck.
+ When the number of pending termination-acknowledgements reaches zero, this object will be deallocated.
+
+
+
+
+ Process the first termination-acknowledgement.
+ Unless this is overridden, it simply calls .
+
+
+
+
+ If terminating, and we've already worked through the Seq-nums that were sent,
+ then send a termination-ack to the owner (if there is one) and destroy itself.
+
+
+
+
+ A Dealer socket is a SocketBase that is used as the parent-class of the Req socket.
+ It provides for a pre-fetched Msg, and skips identity-messages.
+
+
+
+
+ A DealerSession is a SessionBase subclass that is contained within the Dealer class.
+
+
+
+
+ Create a new DealerSession (which is just a SessionBase).
+
+ the I/O-thread to associate this with
+
+
+
+
+
+
+
+ Messages are fair-queued from inbound pipes. And load-balanced to
+ the outbound pipes.
+
+
+
+
+ Have we prefetched a message.
+
+
+
+
+ The Msg that we have pre-fetched.
+
+
+
+
+ Create a new Dealer socket that holds the prefetched message.
+
+
+
+
+ Destroy this Dealer-socket and close out any pre-fetched Msg.
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ For a Dealer socket: If there's a pre-fetched message, snatch that.
+ Otherwise, dump any identity messages and get the first non-identity message,
+ or return false if there are no messages available.
+
+ a Msg to receive the message into
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ If there's a pre-fetched message, snatch that.
+ Otherwise, dump any identity messages and get the first non-identity message,
+ or return false if there are no messages available.
+
+ a Msg to receive the message into
+ false if there were no messages to receive
+
+
+
+ If there is a message available and one has not been pre-fetched yet,
+ preserve that message as our pre-fetched one.
+
+
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method
+ and gets overridden by the different sockets
+ to provide their own concrete implementation.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Indicate the given pipe as being ready for reading by this socket
+ - however in the case of Pair, this does nothing.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket,
+ however in the case of this Pair socket - this does nothing.
+ This method gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ A Router is a subclass of SocketBase
+
+
+
+
+ An instance of class Outpipe contains a Pipe and a boolean property Active.
+
+
+
+
+ Fair queueing object for inbound pipes.
+
+
+
+
+ Holds the prefetched message.
+
+
+
+
+ Outbound pipes indexed by the peer IDs.
+
+
+
+
+ The pipe we are currently writing to.
+
+
+
+
+ State of the recv operation
+
+
+
+
+ State of the sending operation
+
+
+
+
+ Peer ID are generated. It's a simple increment and wrap-over
+ algorithm. This value is the next ID to use (if not used already).
+
+
+
+
+ Create a new Router instance with the given parent-Ctx, thread-id, and socket-id.
+
+ the Ctx that will contain this Router
+ the integer thread-id value
+ the integer socket-id value
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+ The receiving host must be identifiable.
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ This override of the abstract XRecv method, simply throws a NotSupportedException because XRecv is not
+ supported on a Pub socket.
+
+
+ the Msg to receive the message into
+
+ Messages cannot be received from PUB socket
+
+
+
+ Fair queueing object for inbound pipes.
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ Load balancer managing the outbound pipes.
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ If true, we are in process of sending the reply. If false we are
+ in process of receiving a request.
+
+
+
+
+ If true, we are starting to receive a request. The beginning
+ of the request is the backtrace stack.
+
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+ XSend must only be called on Rep when in the state
+ of sending a reply.
+
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+ XRecv must not be called on Rep while in the state
+ of sending a reply.
+
+
+
+
+ A Req is a Dealer socket that serves as the Request in a Request/Response pattern.
+
+
+
+
+ If true, request was already sent and reply wasn't received yet or
+ was received partially.
+
+
+
+
+ If true, we are starting to send/receive a message. The first part
+ of the message must be empty message part (backtrace stack bottom).
+
+
+
+
+ Create a new Req (Request) socket with the given parent Ctx, thread and socket id.
+
+ the Ctx to contain this socket
+ an integer thread-id for this socket to execute on
+ the socket-id for this socket
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+ Cannot XSend on a Req while awaiting reply.
+
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+ Req.XRecv expecting send, not receive.
+
+
+
+ ReqSession must be in a valid state when PushMsg is called.
+
+
+
+
+ A Router is a subclass of SocketBase
+
+
+
+
+ An instance of class Outpipe contains a Pipe and a boolean property Active.
+
+
+
+
+ Fair queueing object for inbound pipes.
+
+
+
+
+ True if there is a message held in the pre-fetch buffer.
+
+
+
+
+ If true, the receiver got the message part with
+ the peer's identity.
+
+
+
+
+ Holds the prefetched identity.
+
+
+
+
+ Holds the prefetched message.
+
+
+
+
+ If true, more incoming message parts are expected.
+
+
+
+
+ We keep a set of pipes that have not been identified yet.
+
+
+
+
+ Outbound pipes indexed by the peer IDs.
+
+
+
+
+ The pipe we are currently writing to.
+
+
+
+
+ The pipe we are currently reading from.
+
+
+
+
+ If true, more outgoing message parts are expected.
+
+
+
+
+ Peer ID are generated. It's a simple increment and wrap-over
+ algorithm. This value is the next ID to use (if not used already).
+
+
+
+
+ If true, report EHOSTUNREACH to the caller instead of silently dropping
+ the message targeting an unknown peer.
+
+
+
+
+ If true, router socket accepts non-zmq tcp connections
+
+
+
+
+ When enabled new router connections with same identity take over old ones
+
+
+
+
+ Create a new Router instance with the given parent-Ctx, thread-id, and socket-id.
+
+ the Ctx that will contain this Router
+ the integer thread-id value
+ the integer socket-id value
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+ The receiving host must be identifiable.
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ Fair queueing object for inbound pipes.
+
+
+
+
+ True if there is a message held in the pre-fetch buffer.
+
+
+
+
+ If true, the receiver got the message part with
+ the peer's identity.
+
+
+
+
+ Holds the prefetched identity.
+
+
+
+
+ Holds the prefetched message.
+
+
+
+
+ Outbound pipes indexed by the peer IDs.
+
+
+
+
+ The pipe we are currently writing to.
+
+
+
+
+ If true, more outgoing message parts are expected.
+
+
+
+
+ Peer ID are generated. It's a simple increment and wrap-over
+ algorithm. This value is the next ID to use (if not used already).
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+ In Stream.XSend
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ Set the specified option on this socket - which must be either a SubScribe or an Unsubscribe.
+
+ which option to set
+ the value to set the option to
+
+ true
+ if successful
+
+ optionValue must be a String or a byte-array.
+
+
+
+ XSend transmits a given message. The Send method calls this to do the actual sending.
+ This override of that abstract method simply throws NotSupportedException because XSend is not
+ supported on a Sub socket.
+
+ the message to transmit
+ XSend not supported on Sub socket
+
+
+
+ Return false to indicate that XHasOut is not applicable on a Sub socket.
+
+
+
+
+
+ Make resize operation on array.
+
+ Type of containing data.
+ Source array.
+ New size of array.
+ If grow/shrink operation should be applied to the end of array.
+ Resized array.
+
+
+
+ List of outbound pipes.
+
+
+
+
+ Number of all the pipes to send the next message to.
+
+
+
+
+ Number of active pipes. All the active pipes are located at the
+ beginning of the pipes array. These are the pipes the messages
+ can be sent to at the moment.
+
+
+
+
+ Number of pipes eligible for sending messages to. This includes all
+ the active pipes plus all the pipes that we can in theory send
+ messages to (the HWM is not yet reached), but sending a message
+ to them would result in partial message being delivered, ie. message
+ with initial parts missing.
+
+
+
+
+ True if last we are in the middle of a multipart message.
+
+
+
+
+ Create a new, empty Distribution object.
+
+
+
+
+ Adds the pipe to the distributor object.
+
+
+
+
+
+ Mark the pipe as matching. Subsequent call to send_to_matching
+ will send message also to this pipe.
+
+
+
+
+
+ Mark all pipes as non-matching.
+
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe
+ from the distributor.
+
+ the pipe that was terminated
+
+
+
+ Activates pipe that have previously reached high watermark.
+
+
+
+
+
+ Send the message to all the outbound pipes.
+
+
+
+
+
+ Send the message to the matching outbound pipes.
+
+
+
+
+
+ Put the message to all active pipes.
+
+
+
+
+ Write the message to the pipe. Make the pipe inactive if writing
+ fails. In such a case false is returned.
+
+
+
+
+ This class manages a set of inbound pipes. On receive it performs fair
+ queueing so that senders gone berserk won't cause denial of
+ service for decent senders.
+
+
+
+
+ Inbound pipes.
+
+
+
+
+ Number of active pipes. All the active pipes are located at the
+ beginning of the pipes array.
+
+
+
+
+ Index of the next bound pipe to read a message from.
+
+
+
+
+ If true, part of a multipart message was already received, but
+ there are following parts still waiting in the current pipe.
+
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
+
+ the pipe that was terminated
+
+
+
+ List of outbound pipes.
+
+
+
+
+ Number of active pipes. All the active pipes are located at the
+ beginning of the pipes array.
+
+
+
+
+ Points to the last pipe that the most recent message was sent to.
+
+
+
+
+ True if last we are in the middle of a multipart message.
+
+
+
+
+ True if we are dropping current message.
+
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
+
+ the pipe that was terminated
+
+
+
+ Multi-trie. Each node in the trie is a set of pointers to pipes.
+
+
+
+
+ Add key to the trie. Returns true if it's a new subscription
+ rather than a duplicate.
+
+
+
+
+ Remove all subscriptions for a specific peer from the trie.
+ If there are no subscriptions left on some topics, invoke the
+ supplied callback function.
+
+
+
+
+
+
+
+
+ Remove specific subscription from the trie. Return true is it was
+ actually removed rather than de-duplicated.
+
+
+
+
+
+
+
+
+
+ Signal all the matching pipes.
+
+
+
+
+ Add key to the trie. Returns true if this is a new item in the trie
+ rather than a duplicate.
+
+
+
+
+
+
+
+
+ Remove key from the trie. Returns true if the item is actually
+ removed from the trie.
+
+
+
+
+
+
+
+
+ Check whether particular key is in the trie.
+
+
+
+
+
+
+
+
+ List of all subscriptions mapped to corresponding pipes.
+
+
+
+
+ Distributor of messages holding the list of outbound pipes.
+
+
+
+
+ If true, send all subscription messages upstream, not just
+ unique ones. The default is false.
+
+
+
+
+
+ The default value is false.
+
+
+
+
+ True if we are in the middle of sending a multipart message.
+
+
+
+
+ True if we are in the middle of receiving a multipart message.
+
+
+
+
+ List of pending (un)subscriptions, ie. those that were already
+ applied to the trie, but not yet received by the user.
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ if true - subscribe to all data on the pipe
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Set the specified option on this socket.
+
+ which option to set
+ the value to set the option to
+
+ true
+ if successful
+
+ optionValue must be a byte-array.
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ An XSubSession is a subclass of SessionBase that provides nothing more.
+
+
+
+
+ Fair queueing object for inbound pipes.
+
+
+
+
+ Object for distributing the subscriptions upstream.
+
+
+
+
+ The repository of subscriptions.
+
+
+
+
+ If true, 'message' contains a matching message to return on the
+ next recv call.
+
+
+
+
+ If true, part of a multipart message was already received, but
+ there are following parts still waiting.
+
+
+
+
+ Register the pipe with this socket.
+
+ the Pipe to attach
+ not used
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This gets called by the WriteActivated method.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ This is an override of the abstract method that gets called to signal that the given pipe is to be
+ removed from this socket.
+
+ the Pipe that is being removed
+
+
+
+ Transmit the given message. The Send method calls this to do the actual sending.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ A pipe is a ZObject with ..
+
+
+ Note that pipe can be stored in three different arrays.
+ The array of inbound pipes (1), the array of outbound pipes (2) and
+ the generic array of pipes to deallocate (3).
+
+
+
+
+ Indicate that the given pipe is now ready for reading.
+ Pipe calls this on it's sink in response to ProcessActivateRead.
+ When called upon an instance of SocketBase, this simply calls XReadActivated.
+
+ the pipe to indicate is ready for reading
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
+
+ the pipe that was terminated
+
+
+
+ The underlying pipe for reading from.
+
+
+
+
+ The underlying pipe for writing to.
+
+
+
+
+ This indicates whether this pipe can be read from.
+
+
+
+
+ This indicates whether this pipe be written to.
+
+
+
+
+ High watermark for the outbound pipe.
+
+
+
+
+ Low watermark for the inbound pipe.
+
+
+
+
+ Number of messages read so far.
+
+
+
+
+ Number of messages written so far.
+
+
+
+
+ Last received peer's msgs_read. The actual number in the peer
+ can be higher at the moment.
+
+
+
+
+ The pipe object on the other side of the pipe-pair.
+
+
+
+
+ Sink to send events to.
+
+
+
+
+ Specifies the state of the pipe endpoint.
+
+
+
+ Active is common state before any termination begins.
+
+
+ Delimited means that delimiter was read from pipe before term command was received.
+
+
+
+ Pending means that term command was already received from the peer but there are still pending
+ messages to read.
+
+
+
+
+ Terminating means that all pending messages were already read and all we are waiting for is ack
+ from the peer.
+
+
+
+ Terminated means that 'terminate' was explicitly called by the user.
+
+
+
+ Double_terminated means that user called 'terminate' and then we've got term command from the
+ peer as well.
+
+
+
+
+ If true , we receive all the pending inbound messages before terminating.
+ If false , we terminate immediately when the peer asks us to.
+
+
+
+
+ Identity of the writer. Used uniquely by the reader side.
+
+
+
+
+ Create a new Pipe object with the given parent, and inbound and outbound YPipes.
+
+
+ Constructor is private as pipe can only be created using
+
+ method.
+
+
+
+
+ Create a pipe pair for bi-directional transfer of messages.
+
+ The parents.
+
+ First HWM is for messages passed from first pipe to the second pipe.
+ Second HWM is for messages passed from second pipe to the first pipe.
+
+
+ First LWM is for messages passed from first pipe to the second pipe.
+ Second LWM is for messages passed from second pipe to the first pipe.
+
+
+ Delay specifies how the pipe behaves when the peer terminates. If true
+ pipe receives all the pending messages before terminating, otherwise it
+ terminates straight away.
+
+ A pipe pair for bi-directional transfer of messages.
+
+
+
+
+ uses this function to let us know about the peer pipe object.
+
+ The peer to be assigned.
+
+
+
+ Specifies the object to send events to.
+
+ The receiver of the events.
+
+
+
+ Get or set the byte-array that comprises the identity of this Pipe.
+
+
+
+
+ Get or set the byte-array that comprises the routing id of this Pipe.
+
+
+
+
+ Checks if there is at least one message to read in the pipe.
+
+
+ Returns true if there is at least one message to read in the pipe;
+ false
+ otherwise.
+
+
+
+
+ Read a message from the underlying inbound pipe, and write it to the provided Msg argument.
+
+
+ true if a message is read from the pipe, false if pipe is terminated or no messages are
+ available
+
+
+
+
+ Check whether messages can be written to the pipe. If writing
+ the message would cause high watermark the function returns false.
+
+
+ true
+ if message can be written to the pipe; false otherwise.
+
+
+
+
+ Write a message to the underlying pipe.
+
+ The message to write.
+ false if the message cannot be written because high watermark was reached.
+
+
+
+ Remove unfinished parts of the outbound message from the pipe.
+
+
+
+
+ Flush the messages downstream.
+
+
+
+
+ This method is called to assign the specified pipe as a replacement for the outbound pipe that was
+ being used.
+
+ the pipe to use for writing
+
+ A "Hiccup" occurs when an outbound pipe experiences something like a transient disconnect or for
+ whatever other reason
+ is no longer available for writing to.
+
+
+
+
+ Process the pipe-termination ack.
+
+
+
+
+ Ask pipe to terminate. The termination will happen asynchronously
+ and user will be notified about actual deallocation by 'terminated'
+ event.
+
+
+ if set to true , the pending messages will be processed
+ before actual shutdown.
+
+
+
+
+ Compute an appropriate low watermark from the given high-watermark.
+
+ the given high-watermark value to compute it from
+ predefined low watermark value coming from configuration
+ the computed low-watermark
+
+
+
+ Handles the delimiter read from the pipe.
+
+
+
+
+ Temporarily disconnects the inbound message stream and drops
+ all the messages on the fly. Causes 'hiccuped' event to be generated in the peer.
+
+
+
+
+ Override the ToString method to return a string denoting the type and the parent.
+
+ a string containing this type and also the value of the parent-property
+
+
+
+ Class Reaper is a ZObject and implements IPollEvents.
+ The Reaper is dedicated toward handling socket shutdown asynchronously and cleanly.
+ By passing this task off to the Reaper, the message-queueing subsystem can terminate immediately.
+
+
+
+
+ Reaper thread accesses incoming commands via this mailbox.
+
+
+
+
+ This is a Socket, used as the handle associated with the mailbox's file descriptor.
+
+
+
+
+ I/O multiplexing is performed using a poller object.
+
+
+
+
+ Number of sockets being reaped at the moment.
+ These are the reason for having a reaper: to take over the task of terminating these sockets.
+
+
+
+
+ If true, we were already asked to terminate.
+
+
+
+
+ Create a new Reaper with the given thread-id.
+ This will have a new Poller with the name "reaper-" + thread-id, and a Mailbox of that same name.
+
+ the Ctx for this to be in
+ an integer id to give to the thread this will live on
+
+
+
+ Release any contained resources - by destroying the poller and closing the mailbox.
+
+
+
+
+ Get the Mailbox that this Reaper uses for communication with the rest of the message-queueing
+ subsystem.
+
+
+
+
+ Start the contained Poller to begin polling.
+
+
+
+
+ Issue the Stop command to this Reaper object.
+
+
+
+
+ Handle input-ready events, by receiving and processing any commands
+ that are waiting in the mailbox.
+
+
+
+
+ This method normally is for handling output-ready events, which don't apply here.
+
+ You must not call OutEvent on a Reaper.
+
+
+
+ This would be called when a timer expires - however in this event NotSupportedException would be
+ thrown.
+
+ an integer used to identify the timer
+ You must not call TimerEvent on a Reaper.
+
+
+
+ Respond to the Stop command by signaling the polling-loop to terminate,
+ and if there're no sockets left to reap - stop the poller.
+
+
+
+
+ Add the given socket to the list to be reaped (terminated).
+
+ the socket to add to the list for termination
+
+
+
+ Respond to having one of the sockets that are marked for reaping, - finished being reaped,
+ and if there are none left - send the Done command and stop the poller.
+
+
+
+
+ If true, this session (re)connects to the peer. Otherwise, it's
+ a transient session created by the listener.
+
+
+
+
+ Pipe connecting the session to its socket.
+
+
+
+
+ This set is added to with pipes we are disconnecting, but haven't yet completed
+
+
+
+
+ This flag is true if the remainder of the message being processed
+ is still in the pipe.
+
+
+
+
+ True if termination have been suspended to push the pending
+ messages to the network.
+
+
+
+
+ The protocol I/O engine connected to the session.
+
+
+
+
+ The socket the session belongs to.
+
+
+
+
+ I/O thread the session is living in. It will be used to plug in
+ the engines into the same thread.
+
+
+
+
+ ID of the linger timer (0x20)
+
+
+
+
+ True is linger timer is running.
+
+
+
+
+ If true, identity has been sent to the network.
+
+
+
+
+ If true, identity has been received from the network.
+
+
+
+
+ Protocol and address to use when connecting.
+
+
+
+
+ Create a return a new session.
+ The specific subclass of SessionBase that is created is dictated by the SocketType specified by the
+ options argument.
+
+
+ the IOThread for this session to run in
+
+ whether to immediately connect
+ the socket to connect
+
+ an Options that provides the SocketType that dictates which type of session
+ to create
+
+
+ an Address object that specifies the protocol and address to connect to
+
+
+ the newly-created instance of whichever subclass of SessionBase is specified by the options
+
+ The socket must be of the correct type.
+
+
+
+ Create a new SessionBase object from the given IOThread, socket, and Address.
+
+ the IOThread for this session to run on
+ this flag dictates whether to connect
+ the socket to contain
+ Options that dictate the settings of this session
+ an Address that dictates the protocol and IP-address to use when connecting
+
+
+
+ Terminate and release any contained resources.
+ This cancels the linger-timer if that exists, and terminates the protocol-engine if that exists.
+
+
+
+
+ Attach the given pipe to this session.
+
+
+ This is to be used once only, when creating the session.
+
+
+
+
+ Read a message from the pipe.
+
+ a reference to a Msg to put the message into
+ true if the Msg is successfully sent
+
+
+
+ Write the given Msg to the pipe.
+
+ the Msg to push to the pipe
+ true if the Msg was successfully sent
+
+
+
+ Set the identity-sent and identity-received flags to false.
+
+
+
+
+ Flush any messages that are in the pipe downstream.
+
+
+
+
+ Remove any half processed messages. Flush unflushed messages.
+ Call this function when engine disconnect to get rid of leftovers.
+
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
+
+ the pipe that was terminated
+
+
+
+ Indicate that the given pipe is now ready for reading.
+ Pipe calls this on it's sink in response to ProcessActivateRead.
+
+ the pipe to indicate is ready for reading
+
+
+
+ Get the contained socket.
+
+
+
+
+ Process the Plug-request by setting this SessionBase as the handler for the io-object
+ and starting connecting (without waiting).
+
+
+
+
+ Process the Attach-request by hooking up the pipes
+ and plugging in the given engine.
+
+ the IEngine to plug in
+
+
+
+ Flush out any leftover messages and call Detached.
+
+
+
+
+ Process a termination request.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+
+
+
+ Call this function to move on with the delayed process-termination request.
+
+
+
+
+ This is called when the timer expires.
+
+ an integer used to identify the timer
+
+
+
+ The parent SessionBase class calls this when the Detach method finishes detaching.
+
+
+
+
+ Begin connecting.
+
+ Whether to wait a bit before actually attempting to connect
+
+
+
+ Override the ToString method to also show the socket-id.
+
+ the type of this object and [ socket-id ]
+
+
+
+ This method would be called when a message receive operation has been completed, although here it only
+ throws a NotSupportedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ This operation is not supported on the SessionBase
+ class.
+
+
+
+
+ This method would be called when a message Send operation has been completed, although here it only
+ throws a NotSupportedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ This operation is not supported on the SessionBase
+ class.
+
+
+
+ If true, associated context was already terminated.
+
+
+
+ If true, object should have been already destroyed. However,
+ destruction is delayed while we unwind the stack to the point
+ where it doesn't intersect the object being destroyed.
+
+
+
+ Socket's mailbox object.
+
+
+ List of attached pipes.
+
+
+ Reaper's poller.
+
+
+ The handle of this socket within the reaper's poller.
+
+
+ Timestamp of when commands were processed the last time.
+
+
+ Number of messages received since last command processing.
+
+
+ True if the last message received had MORE flag set.
+
+
+ Monitor socket.
+
+
+ Bitmask of events being monitored.
+
+
+ The tcp port that was bound to, if any.
+
+
+
+ Create a new SocketBase within the given Ctx, with the specified thread-id and socket-id.
+
+ the Ctx context that this socket will live within
+ the id of the thread upon which this socket will execute
+ the integer id for the new socket
+
+
+
+ Abstract method for attaching a given pipe to this socket.
+ The concrete implementations are defined by the individual socket types.
+
+ the Pipe to attach
+ if true - subscribe to all data on the pipe
+
+
+
+ Abstract method that gets called to signal that the given pipe is to be removed from this socket.
+ The concrete implementations of SocketBase override this to provide their own implementation
+ of how to terminate the pipe.
+
+ the Pipe that is being removed
+
+
+
+ Throw
+
+ if this socket is already disposed.
+
+ This object is already disposed.
+
+
+
+ Throw
+
+ if the message-queueing system has started terminating.
+
+ The socket has been stopped.
+
+
+
+ Create a socket of a specified type.
+
+ a ZmqSocketType specifying the type of socket to create
+ the parent context
+ the thread for this new socket to run on
+ an integer id for this socket
+ The socket type must be valid.
+
+
+
+ Destroy this socket - which means to stop monitoring the queue for messages.
+ This simply calls StopMonitor, and then verifies that the destroyed-flag is set.
+
+
+
+
+ Return the Mailbox associated with this socket.
+
+
+
+
+ Interrupt a blocking call if the socket is stuck in one.
+ This function can be called from a different thread!
+
+
+
+
+ Check whether the transport protocol, as specified in connect or
+ bind, is available and compatible with the socket type.
+
+
+ the specified protocol is not supported
+
+
+ the socket type and protocol do not match
+
+
+ The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
+ If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
+
+
+
+
+ Register the given pipe with this socket.
+
+ the Pipe to attach
+
+ if true - subscribe to all data on the pipe (optional - default is false)
+
+
+
+
+ Set the specified socket option.
+
+ which option to set
+ the value to set the option to
+ The socket has been stopped.
+
+
+
+ Return the integer-value of the specified option.
+
+ which option to get
+ the value of the specified option, or -1 if error
+ The socket has been stopped.
+
+ If the ReceiveMore option is specified, then 1 is returned if it is true, 0 if it is false.
+ If the Events option is specified, then process any outstanding commands, and return -1 if that throws
+ a TerminatingException.
+ then return an integer that is the bitwise-OR of the PollEvents.PollOut and PollEvents.PollIn flags.
+ Otherwise, cast the specified option value to an integer and return it.
+
+
+
+
+ Return the value of the specified option as an Object.
+
+ which option to get
+ the value of the option
+ The socket has already been stopped.
+
+ If the Handle option is specified, then return the handle of the contained mailbox.
+ If the Events option is specified, then process any outstanding commands, and return -1 if that throws
+ a TerminatingException.
+ then return a PollEvents that is the bitwise-OR of the PollEvents.PollOut and PollEvents.PollIn flags.
+
+
+
+
+ Bind this socket to the given address.
+
+ a string denoting the endpoint-address to bind to
+
+ the address specified to bind to must not be
+ already in use
+
+ The requested protocol is not supported.
+ the socket bind failed
+
+ No IO thread was found, or the protocol's listener encountered an
+ error during initialisation.
+
+
+ the specified protocol is not supported
+
+
+ the socket type and protocol do not match
+
+ The socket has been stopped.
+
+ The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
+ If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
+ If the protocol is "inproc", you cannot bind to the same address more than once.
+
+
+
+
+ Bind the specified TCP address to an available port, assigned by the operating system.
+
+ a string denoting the endpoint to bind to
+ the port-number that was bound to
+
+
+ uses a protocol other than TCP.
+
+ The socket has been stopped.
+
+ The specified address is already in use.
+
+
+ No IO thread was found, or the protocol's listener errored during
+ initialisation.
+
+ the socket bind failed
+
+
+
+ Connect this socket to the given address.
+
+ a string denoting the endpoint to connect to
+
+ The specified address is already in use.
+
+ No IO thread was found.
+
+ the specified protocol is not supported
+
+
+ the socket type and protocol do not match
+
+ The socket has been stopped.
+
+ The supported protocols are "inproc", "ipc", "tcp", "pgm", and "epgm".
+ If the protocol is either "pgm" or "epgm", then this socket must be of type Pub, Sub, XPub, or XSub.
+
+
+ The given address was not found in the list of
+ endpoints.
+
+
+
+
+ Given a string containing an endpoint address like "tcp://127.0.0.1:5555,
+ break-it-down into the address part ("127.0.0.1:5555") and the protocol part ("tcp").
+
+ a string denoting the endpoint, to take the parts from
+ the IP-address portion of the end-point address
+ the protocol portion of the end-point address (such as "tcp")
+
+
+
+ Take ownership of the given
+
+ and register it against the given
+ .
+
+
+
+
+ Disconnect from the given endpoint.
+
+ the endpoint to disconnect from
+
+
+ is null .
+
+
+ Endpoint was not found and cannot be disconnected.
+
+
+ The specified protocol must be valid.
+
+ The socket has been stopped.
+
+
+
+ Transmit the given Msg across the message-queueing system.
+
+
+ The
+
+ to send.
+
+
+ The timeout to wait before returning false . Pass
+
+ to disable timeout.
+
+ Whether this message will contain another frame after this one.
+ The socket has been stopped.
+
+
+ is not initialised.
+
+
+
+
+ Receive a frame into the given
+
+ and return true if successful,
+ false
+ if it timed out.
+
+
+ the Msg to read the received message into
+
+ this controls whether the call blocks, and for how long.
+
+ true
+ if successful, false if it timed out
+
+
+ For , there are three categories of value:
+
+ -
+
+ - return false immediately if no message is available
+
+ -
+
+ (or a negative value) - wait indefinitely, always returning
+ true
+
+ -
+ Any positive value - return
false after the corresponding duration if no message has
+ become available
+
+
+
+ the Msg must already have been uninitialised
+ The socket must not already be stopped.
+
+
+
+ Close this socket. Mark it as disposed, and send ownership of it to the reaper thread to
+ attend to the rest of it's shutdown process.
+
+
+
+
+ These functions are used by the polling mechanism to determine
+ which events are to be reported from this socket.
+
+
+
+
+ These functions are used by the polling mechanism to determine
+ which events are to be reported from this socket.
+
+
+
+
+ Using this function reaper thread ask the socket to register with
+ its poller.
+
+
+
+
+ Processes commands sent to this socket (if any).
+ If
+
+ is -1 , the call blocks until at least one command was processed.
+ If
+
+ is true , commands are processed at most once in a predefined time period.
+
+
+ how much time to allow to wait for a command, before returning (in milliseconds)
+
+
+ if true - throttle the rate of command-execution by doing only one per call
+
+
+ The Ctx context must not already be terminating.
+
+
+
+
+ Process a termination command on this socket, by stopping monitoring and marking this as terminated.
+
+
+
+
+ Process a Bind command by attaching the given Pipe.
+
+ the Pipe to attach
+
+
+
+ Process a termination request.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+
+
+
+ Mark this socket as having been destroyed. Delay actual destruction of the socket.
+
+
+
+
+ The default implementation assumes there are no specific socket
+ options for the particular socket type. If not so, overload this
+ method.
+
+ a ZmqSocketOption specifying which option to set
+ an Object that is the value to set the option to
+
+
+
+ This gets called when outgoing messages are ready to be sent out.
+ On SocketBase, this does nothing and simply returns false.
+
+ this method on SocketBase only returns false
+
+
+
+ Transmit the given message. The
+
+ method calls this to do the actual sending.
+ This abstract method gets overridden by the different socket types
+ to provide their concrete implementation of sending messages.
+
+ the message to transmit
+
+ true
+ if the message was sent successfully
+
+
+
+
+ This gets called when incoming messages are ready to be received.
+ On SocketBase, this does nothing and simply returns false.
+
+ this method on SocketBase only returns false
+
+
+
+ Receive a message. The Recv method calls this lower-level method to do the actual receiving.
+ This abstract method gets overridden by the different socket types
+ to provide their concrete implementation of receiving messages.
+
+
+ the Msg to receive the message into
+
+
+ true
+ if the message was received successfully, false if there were no messages to receive
+
+
+
+
+ Indicate the given pipe as being ready for reading by this socket.
+ This abstract method gets overridden by the different sockets
+ to provide their own concrete implementation.
+
+
+ the Pipe that is now becoming available for reading
+
+
+
+
+ Indicate the given pipe as being ready for writing to by this socket.
+ This abstract method gets called by the WriteActivated method
+ and gets overridden by the different sockets
+ to provide their own concrete implementation.
+
+
+ the Pipe that is now becoming available for writing
+
+
+
+
+ Handle input-ready events by receiving and processing any incoming commands.
+
+
+
+
+ Handle output-ready events.
+
+
+ This is not supported on instances of the parent class
+ SocketBase.
+
+
+
+
+ In subclasses of SocketBase this is overridden, to handle the expiration of a timer.
+
+ an integer used to identify the timer
+
+ You must not call TimerEvent on an instance of class
+ SocketBase.
+
+
+
+
+ To be called after processing commands or invoking any command
+ handlers explicitly. If required, it will deallocate the socket.
+
+
+
+
+ Indicate that the given pipe is now ready for reading.
+ Pipe calls this on it's sink in response to ProcessActivateRead.
+ When called upon an instance of SocketBase, this simply calls XReadActivated.
+
+ the pipe to indicate is ready for reading
+
+
+
+ When called upon an instance of SocketBase, this simply calls XWriteActivated.
+
+ the pipe to indicate is ready for writing
+
+
+
+ This gets called by ProcessPipeTermAck or XTerminated to respond to the termination of the given pipe.
+
+ the pipe that was terminated
+
+
+
+ Moves the flags from the message to local variables,
+ to be later retrieved by getsockopt.
+
+
+
+
+ Register the given events to monitor on the given endpoint.
+
+
+ a string denoting the endpoint to monitor. If this is null - monitoring is stopped.
+
+ the SocketEvent to monitor for
+ Maximum number of sockets reached.
+
+ The protocol of
+
+ is not supported.
+
+ The socket has been stopped.
+
+
+
+ If there is a monitor-socket, close it and set monitor-events to 0.
+
+
+
+
+ Override the ToString method in order to also show the socket-id.
+
+ A string that denotes this object type followed by [ socket-id ]
+
+
+
+ Get the Socket (Handle) - which is actually the Handle of the contained mailbox.
+
+
+
+
+ Return a short bit of text that denotes the SocketType of this socket.
+
+ a short type-string such as PAIR, PUB, OR UNKNOWN
+
+
+
+ The class ByteArraySegment provides for containing a simple byte-array, an Offset property,
+ and a variety of operations that may be performed upon it.
+
+
+
+
+ Create a new ByteArraySegment containing the given byte-array buffer.
+
+ the byte-array for the new ByteArraySegment to contain
+
+
+
+ Create a new ByteArraySegment containing the given byte-array buffer with the given offset.
+
+ the byte-array for the new ByteArraySegment to contain
+ the value for the Offset property
+
+
+
+ Create a new ByteArraySegment that is a shallow-copy of the given ByteArraySegment (with a reference
+ to the same buffer).
+
+ the source-ByteArraySegment to make a copy of
+
+
+
+ Create a new ByteArraySegment that is a shallow-copy of the given ByteArraySegment (with a reference
+ to the same buffer)
+ but with a different offset.
+
+ the source-ByteArraySegment to make a copy of
+
+ a value for the Offset property that is distinct from that of the source
+ ByteArraySegment
+
+
+
+
+ Get the number of bytes within the buffer that is past the Offset (ie, buffer-length minus offset).
+
+
+
+
+ Add the given value to the offset.
+
+ the delta value to add to the offset.
+
+
+
+ Get the offset into the buffer.
+
+
+
+
+ Write the given 64-bit value into the buffer, at the position marked by the offset plus the given
+ index i.
+
+ an Endianness to specify in which order to write the bytes
+ the 64-bit value to write into the byte-array buffer
+ the index position beyond the offset to start writing the bytes
+
+
+
+ Write the given 16-bit value into the buffer, at the position marked by the offset plus the given
+ index i.
+
+ an Endianness to specify in which order to write the bytes
+ the 16-bit value to write into the byte-array buffer
+ the index position beyond the offset to start writing the bytes
+
+
+
+ Write the given 32-bit value into the buffer, at the position marked by the offset plus the given
+ index i.
+
+ an Endianness to specify in which order to write the bytes
+ the 32-bit value to write into the byte-array buffer
+ the index position beyond the offset to start writing the bytes
+
+
+
+ Encode the given String into a byte-array using the ASCII encoding
+ and write that into the buffer.
+
+ the String to write to the buffer
+ the number of encoded bytes to copy into the buffer
+
+ an index-offset, in addition to the Offset property, that marks where in the buffer to
+ start writing bytes to
+
+
+
+
+ Encode the given String into a byte-array using the ASCII encoding
+ and write that into the buffer.
+
+ the String to write to the buffer
+
+ an index-offset, in addition to the Offset property, that marks where in the buffer to
+ start writing bytes to
+
+
+
+
+ Return a 64-bit numeric value that is read from the buffer, starting at the position marked by the
+ offset plus the given index i,
+ based upon the given byte-ordering.
+
+
+ an Endianness to specify which byte-ordering to use to interpret the source bytes
+
+ the index position beyond the offset to start reading the bytes
+ a long that is read from the bytes of the buffer
+
+
+
+ Return a 64-bit unsigned numeric value (ulong) that is read from the buffer, starting at the position
+ marked by the offset plus the given index i,
+ based upon the given byte-ordering.
+
+
+ an Endianness to specify which byte-ordering to use to interpret the source bytes
+
+ the index position beyond the offset to start reading the bytes
+ an unsigned long that is read from the bytes of the buffer
+
+
+
+ Return a 32-bit integer that is read from the buffer, starting at the position marked by the offset
+ plus the given index i,
+ based upon the given byte-ordering.
+
+
+ an Endianness to specify which byte-ordering to use to interpret the source bytes
+
+ the index position beyond the offset to start reading the bytes
+ an integer that is read from the bytes of the buffer
+
+
+
+ Return a 16-bit unsigned integer (ushort) value that is read from the buffer, starting at the position
+ marked by the offset plus the given index i,
+ based upon the given byte-ordering.
+
+
+ an Endianness to specify which byte-ordering to use to interpret the source bytes
+
+ the index position beyond the offset to start reading the bytes
+ a ushort that is read from the bytes of the buffer
+
+
+
+ Return a String that is read from the byte-array buffer, decoded using the ASCII encoding,
+ starting at the position marked by the offset plus the given index i.
+
+ the length of the part of the buffer to read
+ the index position beyond the offset to start reading the bytes
+ a String decoded from the bytes of the buffer
+
+
+
+ Write the bytes of this ByteArraySegment to the specified destination-ByteArraySegment.
+
+ the destination-ByteArraySegment
+ the number of bytes to copy
+
+
+
+ Write the bytes of this ByteArraySegment to the specified destination-ByteArraySegment.
+
+ an offset within this source buffer to start copying from
+ the destination-ByteArraySegment
+ an offset within the destination buffer to start copying to
+ the number of bytes to copy
+
+
+
+ Return a shallow-copy of this ByteArraySegment.
+
+ a new ByteArraySegment that is a shallow-copy of this one
+
+
+
+ Get or set the byte of the buffer at the i-th index position (zero-based).
+
+ the index of the byte to access
+
+
+
+ Set the offset to zero.
+
+
+
+
+ Return a new ByteArraySegment that has the data of this one, but with the given offset.
+
+ the source-ByteArraySegment
+ the offset-value to give the new ByteArraySegment
+
+
+
+
+ Return a new ByteArraySegment that contains the given byte-array buffer.
+
+ the source byte-array buffer
+ a new ByteArraySegment that contains the given buffer
+
+
+
+ Return the byte-array buffer of this ByteArraySegment.
+
+ the source-ByteArraySegment
+ the byte-array that is the buffer of this ByteArraySegment
+
+
+
+ Return true if the given Object is a ByteArraySegment and has the same buffer and offset.
+
+ an Object to compare for equality to this one
+ true only if the otherObject has the same buffer and offset
+
+ The given Object is considered to be Equal if it also is a ByteArraySegment,
+ and has the same Offset property value
+ and it's buffer points to the SAME byte-array as the otherObject does.
+
+
+
+
+ Helper base class for decoders that know the amount of data to read
+ in advance at any moment.
+ This class is the state machine that parses the incoming buffer.
+ Derived classes should implement individual state machine actions.
+
+
+ Knowing the amount in advance is a property
+ of the protocol used. 0MQ framing protocol is based size-prefixed
+ paradigm, which qualifies it to be parsed by this class.
+
+ On the other hand, XML-based transports (like XMPP or SOAP) don't allow
+ for knowing the size of data to read in advance and should use different
+ decoding algorithms.
+
+
+
+
+ Where to store the read data.
+
+
+
+
+ How much data to read before taking next step.
+
+
+
+
+ The buffer for data to decode.
+
+
+
+
+ Returns true if the decoder has been fed all required data
+ but cannot proceed with the next decoding step.
+ False is returned if the decoder has encountered an error.
+
+
+
+
+ Returns a buffer to be filled with binary data.
+
+
+
+
+ Processes the data in the buffer previously allocated using
+ get_buffer function. size argument specifies the number of bytes
+ actually filled into the buffer. Function returns number of
+ bytes actually processed.
+
+
+
+
+ Where to get the data to write from.
+
+
+
+
+ If true, first byte of the message is being written.
+
+
+
+
+ How much data to write before the next step should be executed.
+
+
+
+
+ The buffer for encoded data.
+
+
+
+
+ The size of the encoded-data buffer
+
+
+
+
+ This flag indicates whether there has been an encoder error.
+
+
+
+
+ Create a new EncoderBase with a buffer of the given size.
+
+ how big of an internal buffer to allocate (in bytes)
+
+ the
+
+ to set this EncoderBase to
+
+
+
+
+ Get the Endianness (Big or Little) that this EncoderBase uses.
+
+
+
+
+ This returns a batch of binary data. The data
+ are filled to a supplied buffer. If no buffer is supplied (data_
+ points to NULL) decoder object will provide buffer of its own.
+
+
+
+
+ Set a flag that indicates that there has been an encoding-error.
+
+
+
+
+ Return true if there has been an encoding error.
+
+ the state of the error-flag
+
+
+
+ Interface IEncoder mandates SetMsgSource and GetData methods.
+
+
+
+
+ Set message producer.
+
+
+
+
+ Get a ByteArraySegment of binary data. The data
+ are filled to a supplied buffer. If no buffer is supplied (data is null)
+ encoder will provide buffer of its own.
+
+
+
+
+ Abstract interface to be implemented by various engines.
+
+
+
+
+ Plug the engine to the session.
+
+
+
+
+ Terminate and deallocate the engine. Note that 'detached'
+ events are not fired on termination.
+
+
+
+
+ This method is called by the session to signal that more
+ messages can be written to the pipe.
+
+
+
+
+ This method is called by the session to signal that there
+ are messages to send available.
+
+
+
+
+ IpcConnecter is a subclass of TcpConnector, which provides absolutely nothing beyond what TcpConnector
+ does.
+
+
+
+
+ An IpcListener is a TcpListener that also has an Address property and a SetAddress method.
+
+
+
+
+ Create a new IpcListener with the given IOThread, socket, and Options.
+
+
+ the SocketBase to listen to
+ an Options value that dictates the settings for this IpcListener
+
+
+
+ Get the bound address for use with wildcards
+
+
+
+
+ Set address to listen on.
+
+ a string denoting the address to listen to
+
+
+
+ Unable to parse the address's port number, or the IP address
+ could not be parsed.
+
+
+
+
+ Unable to parse the address's port number, or the IP address
+ could not be parsed.
+
+
+
+
+ Unable to parse the address's port number, or the IP address
+ could not be parsed.
+
+ Error establishing underlying socket.
+
+
+
+ Process a termination request.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+
+
+
+ This method is called when a message receive operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This method would be called when a message Send operation has been completed, although here it only
+ throws a NotSupportedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ This operation is not supported on the PgmListener
+ class.
+
+
+
+
+ This would be called when the a expires, although here it only throws a NotSupportedException.
+
+ an integer used to identify the timer (not used here)
+
+ This operation is not supported on the PgmListener
+ class.
+
+
+
+
+ ID of the timer used to delay the reconnection. Value is 1.
+
+
+
+
+ This would be called when a timer expires, although here it only throws a NotSupportedException.
+
+ an integer used to identify the timer (not used here)
+
+ This method must not be called on instances of
+ PgmSender.
+
+
+
+
+ This method is called when a message Send operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+ A non-recoverable socket error occurred.
+
+
+
+ Internal function to return a reconnect back-off delay.
+ Will modify the current_reconnect_ivl used for next call
+ Returns the currently used interval
+
+
+
+
+ This method would be called when a message receive operation has been completed, although here it only
+ throws a NotSupportedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ This method must not be called on instances of
+ PgmSender.
+
+
+
+
+ This enum-type is Idle, Receiving, Stuck, or Error.
+
+
+
+
+ This method is be called when a message receive operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This method would be called when a message Send operation has been completed, except in this case this
+ method does nothing.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This would be called when a timer expires, although here it does nothing.
+
+ an integer used to identify the timer (not used here)
+
+
+
+ This enum-type denotes the type of Pragmatic General Multicast (PGM) socket.
+ Publisher, Receiver, or Listener.
+
+
+
+
+ A PgmSocket utilizes the Pragmatic General Multicast (PGM) multicast protocol, which is also referred
+ to as "reliable multicast".
+ This is only supported on Windows when Microsoft Message Queueing (MSMQ) is installed.
+ See RFC 3208.
+
+
+
+
+ Set/Query rate (Kb/Sec) + window size (Kb and/or MSec) -- described by RM_SEND_WINDOW below
+
+
+
+
+ set IP multicast outgoing interface
+
+
+
+
+ add IP multicast incoming interface
+
+
+
+
+ Set the Time-To-Live (TTL) of the MCast packets -- (ULONG)
+
+
+
+
+ Perform initialization of this PgmSocket, including creating the socket handle.
+
+
+
+
+ Override the ToString method to produce a more descriptive, useful description.
+
+ a useful description of this object's state
+
+
+
+ This enum-type denotes the operational state of this StreamEngine - whether Closed, doing Handshaking,
+ Active, or Stalled.
+
+
+
+
+ This method is be called when a message receive operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ This method is called when a message Send operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+
+
+ the SocketError that resulted from the write - which could be Success (no
+ error at all)
+
+
+ this indicates the number of bytes that were transferred in the write
+
+ the number of bytes transferred if successful, -1 otherwise
+
+ If the socketError is not Success then it must be a valid
+ recoverable error or the number of bytes transferred must be zero.
+
+
+ If socketError is SocketError.Success and bytesTransferred is > 0, then this returns bytesTransferred.
+ If bytes is zero, or the socketError is one of NetworkDown, NetworkReset, HostUn, Connection Aborted,
+ TimedOut, or ConnectionReset, - then -1 is returned.
+ Otherwise, a NetMQException is thrown.
+
+
+
+
+ the SocketError that resulted from the read - which could be Success (no error
+ at all)
+
+
+ this indicates the number of bytes that were transferred in the read
+
+ the number of bytes transferred if successful, -1 otherwise
+
+ If the socketError is not Success then it must be a valid
+ recoverable error or the number of bytes transferred must be zero.
+
+
+ If socketError is SocketError.Success and bytesTransferred is > 0, then this returns bytesTransferred.
+ If bytes is zero, or the socketError is one of NetworkDown, NetworkReset, HostUn, Connection Aborted,
+ TimedOut, or ConnectionReset, - then -1 is returned.
+ Otherwise, a NetMQException is thrown.
+
+
+
+
+ This would be called when a timer expires, although here it only throws NotSupportedException.
+
+ an integer used to identify the timer (not used here)
+
+ TimerEvent is not supported on StreamEngine.
+
+
+
+
+ A TcpAddress implements IZAddress, and contains an IPEndPoint (the Address property)
+ and a Protocol property.
+
+
+
+
+ Override ToString to provide a detailed description of this object's state
+ in the form: Protocol://[AddressFamily]:Port
+
+ a string in the form Protocol://[AddressFamily]:Port
+
+
+
+ Given a string that should identify an endpoint-address, resolve it to an actual IP address
+ and set the Address property to a valid corresponding value.
+
+ the endpoint-address to resolve
+ whether the address must be only-IPv4
+ The name must contain the colon delimiter.
+
+ The specified port must be a valid nonzero integer.
+
+ Must be able to find the IP-address.
+
+
+
+ Get the Address implementation - which here is an IPEndPoint,
+ which contains Address, AddressFamily, and Port properties.
+
+
+
+
+ Get the textual-representation of the communication protocol implied by this TcpAddress,
+ which here is simply "tcp".
+
+
+
+
+ If 'delay' is true connector first waits for a while, then starts connection process.
+
+
+
+
+ ID of the timer used to delay the reconnection. Value is 1.
+
+
+
+
+ Address to connect to. Owned by session_base_t.
+
+
+
+
+ The underlying AsyncSocket.
+
+
+
+
+ If true file descriptor is registered with the poller and 'handle'
+ contains valid value.
+
+
+
+
+ If true, connector is waiting a while before trying to connect.
+
+
+
+
+ True if a timer has been started.
+
+
+
+
+ Reference to the session we belong to.
+
+
+
+
+ Current reconnect-interval. This gets updated for back-off strategy.
+
+
+
+
+ String representation of endpoint to connect to
+
+
+
+
+ Socket
+
+
+
+
+ Create a new TcpConnector object.
+
+ the I/O-thread for this TcpConnector to live on.
+ the session that will contain this
+ Options that define this new TcpC
+ the Address for this Tcp to connect to
+ this boolean flag dictates whether to wait before trying to connect
+
+
+
+ This does nothing.
+
+
+
+
+ Begin connecting. If a delayed-start was specified - then the reconnect-timer is set, otherwise this
+ starts immediately.
+
+
+
+
+ Process a termination request.
+ This cancels the reconnect-timer, closes the AsyncSocket, and marks the socket-handle as invalid.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+
+
+
+ This method would be called when a message receive operation has been completed, although here it only
+ throws a NotImplementedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ InCompleted must not be called on a TcpConnector.
+
+
+
+
+ Internal function to start the actual connection establishment.
+
+
+
+
+ This method is called when a message Send operation has been completed.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+ A non-recoverable socket error occurred.
+
+ If the socketError is not Success then it must be a valid
+ recoverable error.
+
+
+
+
+ This is called when the timer expires - to start trying to connect.
+
+ The timer-id. This is not used.
+
+
+
+ Internal function to add a reconnect timer
+
+
+
+
+ Internal function to return a reconnect back-off delay.
+ Will modify the current_reconnect_ivl used for next call
+ Returns the currently used interval
+
+
+
+
+ Close the connecting socket.
+
+
+
+
+ Address to listen on.
+
+
+
+
+ Underlying socket.
+
+
+
+
+ Socket the listener belongs to.
+
+
+
+
+ String representation of endpoint to bind to
+
+
+
+
+ The port that was bound on
+
+
+
+
+ Create a new TcpListener on the given IOThread and socket.
+
+ the IOThread for this to live within
+ a SocketBase to listen on
+ socket-related Options
+
+
+
+ Release any contained resources (here - does nothing).
+
+
+
+
+ Process a termination request.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+
+
+
+ Set address to listen on.
+
+ a string denoting the address to set this to
+
+
+
+ This is called when socket input has been completed.
+
+
+ This indicates the status of the input operation - whether Success or some
+ error.
+
+ the number of bytes that were transferred
+ A non-recoverable socket-error occurred.
+
+
+
+ Close the listening socket.
+
+
+
+
+ Get the bound address for use with wildcards
+
+
+
+
+ Get the port-number to listen on.
+
+
+
+
+ This method would be called when a message Send operation has been completed - except in this case it
+ simply throws a NotImplementedException.
+
+
+ a SocketError value that indicates whether Success or an error occurred
+
+ the number of bytes that were transferred
+
+ OutCompleted is not implemented on TcpListener.
+
+
+
+
+ This would be called when a timer expires, although here it only throws a NotSupportedException.
+
+ an integer used to identify the timer (not used here)
+ TimerEvent is not supported on TcpListener.
+
+
+
+ The maximum message-size. If this is -1 then there is no maximum.
+
+
+
+
+ Create a new V1Decoder with the given buffer-size, maximum-message-size and Endian-ness.
+
+ the buffer-size to give the contained buffer
+ the maximum message size. -1 indicates no limit.
+ the Endianness to specify for it - either Big or Little
+
+
+
+ Set the receiver of decoded messages.
+
+
+
+
+ Set the receiver of decoded messages.
+
+
+
+
+ Encoder for 0MQ framing protocol. Converts messages into data stream.
+
+
+
+
+ V2Protocol is a class that contains two integer constants: MoreFlag and LargeFlag.
+
+
+
+
+ This is a constant-integer with the value 1.
+
+
+
+
+ This is a constant-integer with the value 2.
+
+
+
+
+ This class simply provides a counter-value, which may be set, increased, and decremented.
+ Increase and Decrement are both thread-safe operations.
+
+
+
+
+ Create a new AtomicCounter object with an initial counter-value of zero.
+
+
+
+
+ Assign the given amount to the counter-value.
+
+ the integer value to set the counter to
+
+
+
+ Add the given amount to the counter-value, in an atomic thread-safe manner.
+
+ the integer amount to add to the counter-value
+
+
+
+ Subtract the given amount from the counter-value, in an atomic thread-safe manner.
+
+
+ the integer amount to subtract from to the counter-value (default value is 1)
+
+ the new value of the counter
+
+
+
+ Class ByteArrayEqualityComparer is an IEqualityComparer for byte-arrays,
+ and provides an Equals methods to compare two byte-arrays for equality in value
+ and GetHashCode.
+
+
+
+
+ Return true only if the two byte-arrays are equal in length and contain the same values.
+
+ one of the two byte-arrays to compare
+ the other byte-array to compare against
+
+
+
+
+ Return a numeric hashcode of the given byte-array.
+
+ the given byte-array to compute the hashcode of
+ an integer that contains a hashcode computed over the byte-array
+
+
+
+ The Clock class provides properties for getting timer-counts in either milliseconds or microseconds,
+ and the CPU's timestamp-counter if available.
+
+
+
+
+ TSC timestamp of when last time measurement was made.
+
+
+
+
+ Physical time corresponding to the TSC above (in milliseconds).
+
+
+
+
+ This flag indicates whether the rdtsc instruction is supported on this platform.
+
+
+
+
+ Return the High-Precision timestamp, as a 64-bit integer that denotes microseconds.
+
+
+
+
+ Return the Low-Precision timestamp, as a 64-bit integer denoting milliseconds.
+ In tight loops generating it can be 10 to 100 times faster than the High-Precision timestamp.
+
+
+
+
+ Return the CPU's timestamp counter, or 0 if it's not available.
+
+
+
+
+ A PollSet contains a single Socket and an IPollEvents Handler
+ that provides methods that signal when that socket is ready for reading or writing.
+
+
+
+
+ Get the Socket that this PollSet contains.
+
+
+
+
+ Get the IPollEvents object that has methods to signal when ready for reading or writing.
+
+
+
+
+ Get or set whether this PollSet is cancelled.
+
+
+
+
+ Create a new PollSet object to hold the given Socket and IPollEvents handler.
+
+ the Socket to contain
+ the IPollEvents to signal when ready for reading or writing
+
+
+
+ This is the list of registered descriptors (PollSets).
+
+
+
+
+ List of sockets to add at the start of the next loop
+
+
+
+
+ If true, there's at least one retired event source.
+
+
+
+
+ This flag is used to tell the polling-loop thread to shut down,
+ wherein it will stop at the end of it's current loop iteration.
+
+
+
+
+ This indicates whether the polling-thread is not presently running. Default is true.
+
+
+
+
+ This is the background-thread that performs the polling-loop.
+
+
+
+
+ This is the name associated with this Poller.
+
+
+
+
+ The set of Sockets to check for read-readiness.
+
+
+
+
+ The set of Sockets to check for any errors.
+
+
+
+
+ Create a new Poller object with the given name.
+
+ a name to assign to this Poller
+
+
+
+ Unless the polling-loop is already stopped,
+ tell it to stop at the end of the current polling iteration, and wait for that thread to finish.
+
+
+
+
+ Add a new PollSet containing the given Socket and IPollEvents at the next iteration through the loop,
+ and also add the Socket to the list of those to check for errors.
+
+ the Socket to add
+ the IPollEvents to include in the new PollSet to add
+
+
+
+ Remove the given Socket from this Poller.
+
+ the System.Net.Sockets.Socket to remove
+
+
+
+ Add the given Socket to the list to be checked for read-readiness at each poll-iteration.
+
+ the Socket to add
+
+
+
+ Begin running the polling-loop, on a background thread.
+
+
+ The name of that background-thread is the same as the name of this Poller object.
+
+
+
+
+ Signal that we want to stop the polling-loop.
+ This method returns immediately - it does not wait for the polling thread to stop.
+
+
+
+
+ This method is the polling-loop that is invoked on a background thread when Start is called.
+ As long as Stop hasn't been called: execute the timers, and invoke the handler-methods on each of the
+ saved PollSets.
+
+
+
+
+ This serves as the parent-class for Poller and Proactor.
+ It provides for managing a list of timers (ITimerEvents) - adding, cancelling, and executing them,
+ and a Load property.
+
+
+
+
+ Load of the poller. Currently the number of file descriptors registered.
+
+
+
+
+ Instances of this class contain a ITimerEvent sink and an integer Id.
+
+
+
+
+ Create a new TimerInfo object from the given sink and id.
+
+ an ITimerEvent that acts as a sink for when the timer expires
+ an integer id that identifies this timer
+
+
+
+ Get the ITimerEvent that serves as the event-sink.
+
+
+
+
+ Get the integer Id of this TimerInfo.
+
+
+
+
+ This is a list of key/value pairs, with the keys being timeout numbers and the corresponding values
+ being a list of TimerInfo objects.
+ It is sorted by the keys - which are timeout values. Thus, by walking down the list, you encounter the
+ soonest timeouts first.
+
+
+
+
+ Create a new PollerBase object - which simply creates an empty m_timers collection.
+
+
+
+
+ Get the load of this poller. Note that this function can be
+ invoked from a different thread!
+
+
+
+
+ Add the given amount to the load.
+ This is called by individual poller implementations to manage the load.
+
+
+ This is thread-safe.
+
+
+
+
+ Add a
+
+ to the internal list, created from the given sink and id - to expire in the given number of
+ milliseconds.
+ Afterward the expiration method TimerEvent on the sink object will be called with argument set to id.
+
+ the timeout-period in milliseconds of the new timer
+ the IProactorEvents to add for the sink of the new timer
+ the Id to assign to the new TimerInfo
+
+
+
+ Cancel the timer that was created with the given sink object with the given Id.
+
+ the ITimerEvent that the timer was created with
+ the Id of the timer to cancel
+
+ The complexity of this operation is O(n). We assume it is rarely used.
+
+
+
+
+ Execute any timers that are due. Return the number of milliseconds
+ to wait to match the next timer or 0 meaning "no timers".
+
+
+ the time to wait for the next timer, in milliseconds, or zero if there are no more timers
+
+
+
+
+ The completionStatuses item must have a valid
+ OperationType.
+
+
+
+
+ Close the read and write sockets.
+
+
+
+
+ This class exists only to provide a wrapper for the Socket.Select method,
+ such that the call may be handled slightly differently on .NET 3.5 as opposed to later versions.
+
+
+
+
+ Determine the status of one or more sockets.
+ After returning, the lists will be filled with only those sockets that satisfy the conditions.
+
+ a list of Sockets to check for readability
+ a list of Sockets to check for writability
+ a list of Sockets to check for errors
+
+ a timeout value, in microseconds. A value of -1 indicates an infinite
+ timeout.
+
+
+ If you are in a listening state, readability means that a call to Accept will succeed without
+ blocking.
+ If you have already accepted the connection, readability means that data is available for reading. In
+ these cases,
+ all receive operations will succeed without blocking. Readability can also indicate whether the remote
+ Socket
+ has shut down the connection - in which case a call to Receive will return immediately, with zero
+ bytes returned.
+
+ Select returns when at least one of the sockets of interest (ie any of the sockets in the checkRead,
+ checkWrite, or checkError
+ lists) meets its specified criteria, or the microSeconds parameter is exceeded - whichever comes
+ first.
+ Setting microSeconds to -1 specifies an infinite timeout.
+
+ If you make a non-blocking call to Connect, writability means that you have connected successfully. If
+ you already
+ have a connection established, writability means that all send operations will succeed without
+ blocking.
+ If you have made a non-blocking call to Connect, the checkError parameter identifies sockets that have
+ not connected successfully.
+
+ See this reference for further details of the operation of the Socket.Select method:
+ https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.select(v=vs.110).aspx
+
+ This may possibly throw an ArgumentNullException, if all three lists are null or empty,
+ and a SocketException if an error occurred when attempting to access a socket.
+
+ Use the Poll method if you only want to determine the status of a single Socket.
+
+ This method cannot detect certain kinds of connection problems,
+ such as a broken network cable, or that the remote host was shut down ungracefully.
+ You must attempt to send or receive data to detect these kinds of errors.
+
+
+ none of the three lists of sockets may be null.
+
+
+ an error occurred when attempting to access the
+ socket.
+
+
+
+
+ StringLib is a static class whose purpose is to provide miscellaneous string-related utility methods
+ and extension properties.
+
+
+
+
+ Return a string that gives detailed information of the state of the given List of Sockets,
+ for debugging purposes.
+
+ the List of Sockets to describe
+ a string detailing the list contents, including the state of each Socket
+
+ This is intended just for debugging purposes, as when adding detailed information to the Message of an
+ exception when an error occurs. In DEBUG mode more detail is provided.
+
+
+
+
+ Return a detailed textual description of the state of this Socket (if DEBUG is defined).
+
+ the System.Net.Sockets.Socket to describe
+ a string containing a detailed listing of the properties of the Socket
+
+ This is intended just for debugging purposes, as when adding detailed information to the Message of an
+ exception when an error occurs. In DEBUG mode more detail is provided.
+
+
+
+ A FIFO queue.
+
+ The class supports:
+
+ -
+ Push-front via
.
+
+ -
+ Pop-back via
.
+
+ -
+ Pop-front via
.
+
+
+ As such it is only one operation short of being a double-ended queue (dequeue or deque).
+
+ The internal implementation consists of a doubly-linked list of fixed-size arrays.
+
+
+
+
+ Individual memory chunk to hold N elements.
+
+
+ Contains global index positions of elements in the chunk.
+
+
+
+ Optional link to the previous .
+
+
+
+
+ Optional link to the next .
+
+
+
+ the size to give the new YQueue
+
+
+ should be no less than 2
+
+
+
+ Gets the index of the front element of the queue.
+ The index of the front element of the queue.
+
+ If the queue is empty, it should be equal to
+ .
+
+
+
+ Gets the front element of the queue. If the queue is empty, behaviour is undefined.
+ The front element of the queue.
+
+
+ Gets the index of the back element of the queue.
+ The index of the back element of the queue.
+
+ If the queue is empty, it should be equal to
+ .
+
+
+
+ Retrieves the element at the front of the queue.
+ The element taken from queue.
+
+
+ Adds an element to the back end of the queue.
+ The value to be pushed.
+
+
+
+ Removes element from the back end of the queue, rolling back the last call to
+ .
+
+
+ The caller must guarantee that the queue isn't empty when calling this method.
+ It cannot be done automatically as the read side of the queue can be managed by different,
+ completely unsynchronized threads.
+
+
+ The last item passed to .
+
+
+
+
+ Allocation-efficient queue to store pipe items.
+ Front of the queue points to the first prefetched item, back of
+ the pipe points to last un-flushed item. Front is used only by
+ reader thread, while back is used only by writer thread.
+
+
+
+
+ Points to the first un-flushed item. This variable is used
+ exclusively by writer thread.
+
+
+
+
+ Points to the first un-prefetched item. This variable is used
+ exclusively by reader thread.
+
+
+
+
+ Points to the first item to be flushed in the future.
+
+
+
+
+ The single point of contention between writer and reader thread.
+ Points past the last flushed item. If it is NULL,
+ reader is asleep. This pointer should be always accessed using
+ atomic operations.
+
+
+
+
+ Write an item to the pipe. Don't flush it yet. If incomplete is
+ set to true the item is assumed to be continued by items
+ subsequently written to the pipe. Incomplete items are never
+ flushed down the stream.
+
+
+
+
+ Pop an incomplete item from the pipe.
+
+
+ the element revoked if such item exists, null otherwise.
+
+
+
+
+ Flush all the completed items into the pipe.
+
+
+ Returns false if the reader thread is sleeping. In that case, caller is obliged to
+ wake the reader up before using the pipe again.
+
+
+
+
+ Check whether item is available for reading.
+
+
+
+
+ Attempts to read an item from the pipe.
+
+
+ true
+ if the read succeeded, otherwise false .
+
+
+
+
+ Applies the function fn to the first element in the pipe
+ and returns the value returned by the fn.
+ The pipe mustn't be empty or the function crashes.
+
+
+
+
+ This enum-type serves to identity a particular socket-option.
+
+
+
+
+ The I/O-thread affinity.
+ 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
+ For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
+
+
+ The I/O-thread Affinity is a 64-bit value used to specify which threads from the I/O
+ thread-pool
+ associated with the socket's context shall handle newly-created connections.
+ 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
+ For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
+
+
+
+
+ The unique identity of the socket, from a message-queueing router's perspective.
+
+
+ This is at most 255 bytes long.
+
+
+
+
+ Setting this option subscribes a socket to messages that have the given topic. This is valid only for
+ Subscriber and XSubscriber sockets.
+
+
+ You subscribe a socket to a given topic when you want that socket to receive messages of that topic.
+ A topic is simply a specific prefix (in the form of a byte-array or the equivalent text).
+ This is valid only for Subscriber and XSubscriber sockets.
+
+
+
+
+ Set this option to un-subscribe a socket from a given topic. Only for Subscriber and XSubscriber
+ sockets.
+
+
+ You un-subscribe a socket from the given topic when you no longer want that socket to receive
+ messages of that topic. A topic is simply a specific prefix (in the form of a byte-array or the
+ equivalent text).
+ This is valid only for Subscriber and XSubscriber sockets.
+
+
+
+
+ The maximum send or receive data rate for multicast transports on the specified socket.
+
+
+
+
+ The recovery-interval, in milliseconds, for multicast transports using the specified socket.
+ Default is 10,000 ms (10 seconds).
+
+
+ This option determines the maximum time that a receiver can be absent from a multicast group
+ before unrecoverable data loss will occur. Default is 10,000 ms (10 seconds).
+
+
+
+
+ The size of the transmit buffer for the specified socket.
+
+
+
+
+ The size of the receive buffer for the specified socket.
+
+
+
+
+ This indicates more messages are to be received.
+
+
+
+
+ The file descriptor associated with the specified socket.
+
+
+
+
+ The event state for the specified socket.
+ This is a combination of:
+ PollIn - at least one message may be received without blocking
+ PollOut - at least one messsage may be sent without blocking
+
+
+
+
+ This option specifies the linger period for the specified socket,
+ which determines how long pending messages which have yet to be sent to a peer
+ shall linger in memory after a socket is closed.
+
+
+
+
+ The initial reconnection interval for the specified socket.
+ -1 means no reconnection.
+
+
+ This is the period to wait between attempts to reconnect disconnected peers
+ when using connection-oriented transports.
+ A value of -1 means no reconnection.
+
+
+
+
+ This is the maximum length of the queue of outstanding peer connections
+ for the specified socket. This only applies to connection-oriented transports.
+ Default is 100.
+
+
+
+
+ The maximum reconnection interval for the specified socket.
+ The default value of zero means no exponential backoff is performed.
+
+
+ This option value denotes the maximum reconnection interval for a socket.
+ It is used when a connection drops and NetMQ attempts to reconnect.
+ On each attempt to reconnect, the previous interval is doubled
+ until this maximum period is reached.
+ The default value of zero means no exponential backoff is performed.
+
+
+
+
+ The upper limit to the size for inbound messages.
+ -1 (the default value) means no limit.
+
+
+ If a peer sends a message larger than this it is disconnected.
+
+
+
+
+ The high-water mark for message transmission, which is the number of messages that are allowed to
+ queue up
+ before mitigative action is taken. The default value is 1000.
+
+
+
+
+ The high-water mark for message reception, which is the number of messages that are allowed to queue
+ up
+ before mitigative action is taken. The default value is 1000.
+
+
+
+
+ The time-to-live (maximum number of hops) that outbound multicast packets
+ are allowed to propagate.
+ The default value of 1 means that the multicast packets don't leave the local network.
+
+
+
+
+ Specifies the amount of time after which a synchronous send call will time out.
+ A value of 0 means Send will return immediately, with a EAGAIN error if the message cannot be sent.
+ -1 means to block until the message is sent.
+
+
+
+
+ This indicates the underlying native socket type.
+
+
+ An IPv4 socket will only use IPv4, while an IPv6 socket lets applications
+ connect to and accept connections from both IPv4 and IPv6 hosts.
+
+
+
+
+ The last endpoint bound for TCP and IPC transports.
+ The returned value will be a string in the form of a ZMQ DSN.
+
+
+ If the TCP host is ANY, indicated by a *, then the returned address
+ will be 0.0.0.0 (for IPv4).
+
+
+
+
+ Sets the RouterSocket behavior when an unroutable message is encountered.
+ A value of 0 is the default and discards the message silently when it cannot be routed.
+ A value of 1 returns an EHOSTUNREACH error code if the message cannot be routed.
+
+
+
+
+ Whether to use TCP keep-alive on this socket.
+ 0 = no, 1 = yes,
+ -1 (the default value) means to skip any overrides and leave it to the OS default.
+
+
+
+
+ The keep-alive time - the duration between two keepalive transmissions in idle condition.
+
+
+ The TCP keepalive period is required by socket implementers to be configurable and by default is
+ set to no less than 2 hours.
+ In 0MQ, -1 (the default value) means to just leave it to the OS default.
+
+
+
+
+ The TCP keep-alive interval - the duration between two keepalive transmission if no response was
+ received to a previous keepalive probe.
+
+
+ By default a keepalive packet is sent every 2 hours or 7,200,000 milliseconds
+ if no other data have been carried over the TCP connection.
+ If there is no response to a keepalive, it is repeated once every KeepAliveInterval seconds.
+ The default is one second.
+
+
+
+
+ The list of accept-filters, which denote the addresses that a socket may accept.
+ Setting this to null clears the filter.
+
+
+ This applies to IPv4 addresses only.
+
+
+
+
+ This applies only to XPub sockets.
+ If true, send all subscription messages upstream, not just unique ones.
+ The default is false.
+
+
+
+
+ If true, router socket accepts non-zmq tcp connections
+
+
+
+
+ This is an XPublisher-socket welcome-message.
+
+
+
+
+ This applies only to XPub sockets.
+ If true, enable broadcast option on XPublishers
+
+
+
+
+ The low-water mark for message transmission. This is the number of messages that should be processed
+ before transmission is unblocked (in case it was blocked by reaching high-watermark). The default
+ value is
+ calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
+
+
+
+
+ The low-water mark for message reception. This is the number of messages that should be processed
+ before reception is unblocked (in case it was blocked by reaching high-watermark). The default value
+ is
+ calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
+
+
+
+
+ When enabled new router connections with same identity take over old ones
+
+
+
+
+ Returns the last peer routing id connect to the PEER socket
+
+
+
+
+ Specifies the byte-order: big-endian, vs little-endian.
+
+
+
+
+ Specifies the max datagram size for PGM.
+
+
+
+
+ This is the base-class for all objects that participate in inter-thread communication.
+
+
+
+
+ This Ctx is the context that provides access to the global state.
+
+
+
+
+ This is the thread-ID of the thread that this object belongs to.
+
+
+
+
+ Create a new ZObject with the given context and thread-id.
+
+ the context for the new ZObject to live within
+ the integer thread-id for the new ZObject to be associated with
+
+
+
+ Create a new ZObject that has the same context and thread-id as the given parent-ZObject.
+
+ another ZObject that provides the context and thread-id for this one
+
+
+
+ Get the id of the thread that this object belongs to.
+
+
+
+
+ Get the context that provides access to the global state.
+
+
+
+
+ The given address was not found in the list of
+ endpoints.
+
+
+
+
+ Returns the
+
+ that is the least busy at the moment.
+
+ Which threads are eligible (0 = all).
+
+ The least busy thread, or null if none is available.
+
+
+
+
+ Send the Stop command.
+
+
+
+
+ Send the Plug command, incrementing the destinations sequence-number if incSeqnum is true.
+
+ the Own to send the command to
+
+ a flag that dictates whether to increment the sequence-number on the destination
+ (optional - defaults to false)
+
+
+
+
+ Send the Own command, and increment the sequence-number of the destination
+
+ the Own to send the command to
+ the object to Own
+
+
+
+ Send the Attach command
+
+ the Own to send the command to
+
+
+
+
+
+ Send the Bind command
+
+
+
+
+
+
+
+ For owned objects, asks the owner ( ) to terminate
+ .
+
+
+
+
+
+
+ Send a Done command to the Ctx itself (null destination).
+
+
+
+
+ Send the given Command, on that commands Destination thread.
+
+ the Command to send
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+
+ Process the bind command with the given pipe.
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+
+ This method would be called to assign the specified pipe as a replacement for the outbound pipe that
+ was being used.
+ This, is an abstract method that is to be overridden by subclasses to provide their own concrete
+ implementation.
+
+ the pipe to use for writing
+
+ A "Hiccup" occurs when an outbound pipe experiences something like a transient disconnect or for
+ whatever other reason
+ is no longer available for writing to.
+
+ No supported on the ZObject class.
+
+
+
+ Process the terminate-pipe command.
+
+ Not supported on the ZObject class.
+
+
+
+ Process the terminate-pipe acknowledgement command.
+
+ Not supported on the ZObject class.
+
+
+
+ Process a termination-request command on the Own object.
+
+
+ Not supported on the ZObject class.
+
+
+
+ Process a termination request.
+
+
+ a time (in milliseconds) for this to linger before actually going away. -1 means
+ infinite.
+
+ Not supported on the ZObject class.
+
+
+
+ Process the termination-acknowledgement command.
+
+ Not supported on the ZObject class.
+
+
+ Not supported on the ZObject class.
+
+
+
+ Special handler called after a command that requires a seqnum
+ was processed. The implementation should catch up with its counter
+ of processed commands here.
+
+ Not supported on the ZObject class.
+
+
+
+ This enum-type specifies either big-endian (Big) or little-endian (Little),
+ which indicate whether the most-significant bits are placed first or last in memory.
+
+
+
+
+ Most-significant bits are placed first in memory.
+
+
+
+
+ Most-significant bits are placed last in memory.
+
+
+
+
+ This enum-type represents the various numeric socket-related error codes.
+
+
+
+
+ The provided endpoint is not connected.
+
+
+
+
+ The requested address is already in use.
+
+
+
+
+ Non-blocking mode was requested and the message cannot be sent at the moment.
+
+
+
+
+ Permission denied
+
+
+
+
+ The endpoint supplied is invalid.
+
+
+
+
+ The connection is still in progress.
+
+
+
+
+ The requested transport protocol is not supported.
+
+
+
+
+ The provided context is invalid.
+
+
+
+
+ The requested address was not available.
+ For Bind operations, that can mean the address was not local.
+
+
+
+
+ The network appears to be down.
+
+
+
+
+ There is not enough buffer space for the requested operation.
+
+
+
+
+ The socket is not connected.
+
+
+
+
+ The connection was refused.
+
+
+
+
+ The host is not reachable.
+
+
+
+
+ This is the value chosen for beginning the range of 0MQ error codes.
+
+
+
+
+ The message is too long.
+
+
+
+
+ The address family is not supported by this protocol.
+
+
+
+
+ The network is apparently not reachable.
+
+
+
+
+ The connection-attempt has apparently been aborted.
+
+
+
+
+ The connection has apparently been reset.
+
+
+
+
+ The operation timed-out.
+
+
+
+
+ The connection has apparently been reset.
+
+
+
+
+ The operation cannot be performed on this socket at the moment due
+ to the socket not being in the appropriate state.
+
+
+
+
+ The context associated with the specified socket has already been terminated.
+
+
+
+
+ No I/O thread is available to accomplish this task.
+
+
+
+
+ Too many sockets for this process.
+
+
+
+
+ Facilitates a pattern whereby an event may be decorated with logic that transforms its arguments.
+
+
+ Use of this class requires providing actions that register and unregister a handler of the source
+ event that calls
+
+ with updated arguments in response.
+
+ Argument type of the decorated event.
+
+
+
+ Initialises a new instance.
+
+
+ an Action to perform when the first handler is registered for the event
+
+
+ an Action to perform when the last handler is unregistered from the
+ event
+
+
+
+
+ Raise, or "Fire", the Event.
+
+
+ the sender that the event-handler that gets notified of this event will receive
+
+ the subclass of EventArgs that the event-handler will receive
+
+
+
+ class InterfaceItem provides the properties Address and BroadcastAddress (both are an IPAddress).
+ This serves to convey information for each of the network interfaces present on a host.
+
+
+
+
+ Create a new InterfaceItem from the given address and broadcast-address.
+
+ an IPAddress that will comprise the 'Address' of the new InterfaceItem
+
+ an IPAddress that will comprise the 'BroadcastAddress' of the new
+ InterfaceItem
+
+
+
+
+ Get the 'address' of this network interface, as an IPAddress.
+
+
+
+
+ Get the 'broadcast-address' of this network interface, as an IPAddress.
+
+
+
+
+ This is a list of InterfaceItems, each of which has an Address and BroadcastAddress,
+ which is derived from all of the Network Interfaces present on this host at the time an instance of
+ this class is created.
+
+
+
+
+ Create a new InterfaceCollection that contains a list of InterfaceItems derived from all of the
+ Network Interfaces present on this host.
+
+
+
+
+ Return an IEnumerator over the InterfaceItems that this InterfaceCollection contains,
+ which are all of the network interfaces that were not running, nor loopback nor PPP interfaces.
+
+ an IEnumerator over the InterfaceItems that this contains
+
+
+
+ Interface IOutgoingSocket mandates a Send( Msg, SendReceiveOptions ) method.
+
+
+
+
+ Send a message if one is available within .
+
+ An object with message's data to send.
+
+ The maximum length of time to try and send a message. If
+ , no
+ wait occurs.
+
+ Indicate if another frame is expected after this frame
+
+ true
+ if a message was sent, otherwise false .
+
+
+
+
+ Defines a socket from which message data may be read.
+
+
+
+
+ Receive a message if one is available within .
+
+ An object to receive the message's data into.
+
+ The maximum length of time to wait for a message. If , no
+ wait occurs.
+
+
+ true
+ if a message was received, otherwise false .
+
+
+
+
+ Implementations provide a
+
+ via the
+
+ property.
+
+
+
+
+ Gets a
+
+ instance.
+
+
+
+
+ Gets whether the object has been disposed.
+
+
+
+
+
+
+
+ This interface provides an abstraction over the legacy Poller and newer
+
+ classes for use in
+ .
+
+
+
+
+ Monitors a
+
+ for events, raising them via events.
+
+
+ To run a monitor instance, either:
+
+ -
+ Call
+
+ (blocking) and
+ , or
+
+ -
+ Call
+
+ and
+ .
+
+
+
+
+
+
+ Initialises a monitor on
+
+ for a specified
+ .
+
+
+ This constructor matches the signature used by clrzmq.
+
+ The socket to monitor.
+ a string denoting the endpoint which will be the monitoring address
+
+ A flag indicating whether ownership of
+
+ is transferred to the monitor.
+ If true , disposing the monitor will also dispose .
+
+
+
+
+ The monitoring address.
+
+
+
+
+ Get whether this monitor is currently running.
+
+
+ Start the monitor running via either
+
+ or
+ .
+ Stop the monitor via either
+
+ or
+ .
+
+
+
+
+ Gets and sets the timeout interval for poll iterations when using
+
+ and
+ .
+
+
+ The higher the number the longer it may take the to stop the monitor.
+ This value has no effect when the monitor is run via
+ .
+
+
+
+
+ Raised whenever any monitored event fires.
+
+
+
+
+ Occurs when a connection is made to a socket.
+
+
+
+
+ Occurs when a synchronous connection attempt failed, and its completion is being polled for.
+
+
+
+
+ Occurs when an asynchronous connect / reconnection attempt is being handled by a reconnect timer.
+
+
+
+
+ Occurs when a socket is bound to an address and is ready to accept connections.
+
+
+
+
+ Occurs when a socket could not bind to an address.
+
+
+
+
+ Occurs when a connection from a remote peer has been established with a socket's listen address.
+
+
+
+
+ Occurs when a connection attempt to a socket's bound address fails.
+
+
+
+
+ Occurs when a connection was closed.
+
+
+
+
+ Occurs when a connection couldn't be closed.
+
+
+
+
+ Occurs when the stream engine (TCP and IPC specific) detects a corrupted / broken session.
+
+
+
+
+ Start monitor the socket, the method doesn't start a new thread and will block until the monitor poll
+ is stopped
+
+
+ The Monitor must not have already started nor
+ attached to a poller.
+
+
+
+
+ Start a background task for the monitoring operation.
+
+
+
+
+
+ Stop monitoring. Blocks until monitoring completed.
+
+
+ If this monitor is attached to a poller you must
+ detach it first and not use the stop method.
+
+
+
+
+ Release and dispose of any contained resources.
+
+
+
+
+ Release and dispose of any contained resources.
+
+ true if releasing managed resources
+
+
+
+ Base class for all event arguments raised by .
+
+
+
+
+ Create a new NetMQMonitorEventArgs that contains the given monitor and address.
+
+
+ The
+
+ that raised this event.
+
+ The address of the event.
+ The type of socket event that occurred.
+
+
+
+ Gets the
+
+ that raised this event.
+
+
+
+
+ Gets the address of the event.
+
+
+
+
+ Gets the type of socket event that occurred.
+
+
+
+
+ A subclass of
+
+ that also holds a socket.
+
+
+
+
+ Create a new NetMQMonitorSocketEventArgs that contains the given monitor, address, and socket.
+
+
+ The
+
+ that raised this event.
+
+ The address of the event.
+ The type of socket event that occurred.
+ The socket upon which this event occurred.
+
+
+
+ Gets the socket upon which this event occurred.
+
+
+
+
+ A subclass of
+
+ that also holds an error code.
+
+
+
+
+ Create a new NetMQMonitorErrorEventArgs that contains the given monitor, address, and error-code.
+
+
+ The
+
+ that raised this event.
+
+ The address of the event.
+ The type of socket event that occurred.
+ The error code associated with this event.
+
+
+
+ Gets the error code associated with this event.
+
+
+
+
+ A subclass of
+
+ that also holds an interval.
+
+
+
+
+ Create a new NetMQMonitorIntervalEventArgs containing the given NetMQMonitor, address, and interval.
+
+ the NetMQMonitor
+ The a string denoting the address
+ The interval, in milliseconds.
+ The type of socket event that occurred.
+
+
+
+ Gets the interval, in milliseconds.
+
+
+
+
+ Defines a set of flags applicable to a
+
+ instance: None (default), More, Identity, Shared
+
+
+
+ Indicates no flags are set (the default).
+
+
+ Indicates that more frames of the same message follow.
+
+
+ Indicates that this frame conveys the identity of a connected peer.
+
+
+
+ Indicates that this frame's internal data is shared with other
+
+ objects.
+
+
+
+
+ Enumeration of possible
+
+ types: Uninitialised, GC, Pool, Delimiter.
+
+
+
+
+ The
+
+ has not yet been initialised (default value).
+
+
+
+
+ The
+
+ is empty.
+
+
+
+
+ The
+
+ data will be garbage collected when no longer needed.
+
+
+
+
+ The
+
+ data was allocated by , and must be released back
+ to this pool when no longer needed. This happens when
+
+ is called.
+
+
+
+
+ The
+
+ is a delimiter frame and doesn't contain any data.
+
+ Delimiters are commonly used to mark a boundary between groups frames.
+
+
+
+ A Msg struct is the lowest-level interpretation of a ZeroMQ message, and simply contains byte-array
+ data
+ and MsgType and MsgFlags properties.
+ It supports message buffer pooling.
+
+
+ Many users will not use this class directly. However in high-performance situations it
+ may be useful. When used correctly it's possible to have zero-copy and zero-allocation
+ behaviour.
+
+
+
+
+ An atomic reference count for knowing when to release a pooled data buffer back to the
+ .
+
+
+ Will be null unless
+
+ equals
+ .
+
+
+
+
+ Get the number of bytes within the Data property.
+
+
+
+
+ Gets the position of the first element in the Data property delimited by the message,
+ relative to the start of the original array.
+
+
+
+ Get the type of this message, from the MsgType enum.
+
+
+
+ Get whether the Delimiter bit is set on the Flags property,
+ which would indicate that this message is intended for use simply to mark a boundary
+ between other parts of some unit of communication.
+
+
+
+
+ Get whether this
+
+ is initialised and ready for use.
+
+
+ A newly constructed
+
+ is uninitialised, and can be initialised via one
+ of , ,
+ ,
+ , or
+ .
+ Calling
+
+ will cause the
+
+ to become uninitialised again.
+
+
+ true
+ if the
+
+ is initialised, otherwise false .
+
+
+
+
+ Get the flags-enum MsgFlags value, which indicates which of the More, Identity, or Shared bits are
+ set.
+
+
+
+
+ Get the "Has-More" flag, which when set on a message-queue frame indicates that there are more frames
+ to follow.
+
+
+
+
+ Get whether the
+
+ buffer of this
+
+ is shared with another instance.
+ Only applies to pooled message types.
+
+
+
+
+ Get whether the Identity bit is set on the Flags property.
+
+
+
+
+ Set the indicated Flags bits.
+
+ which Flags bits to set (More, Identity, or Shared)
+
+
+
+ Clear the indicated Flags bits.
+
+ which Flags bits to clear (More, Identity, or Shared)
+
+
+
+ Get the byte-array that represents the data payload of this .
+
+
+ This value will be null if
+
+ is
+ ,
+
+ or .
+
+
+
+
+ Clear this Msg to empty - ie, set MsgFlags to None, MsgType to Empty, and clear the Data.
+
+
+
+
+ Initialise this Msg to be of MsgType.Pool, with a data-buffer of the given number of bytes.
+
+ the number of bytes to allocate in the data-buffer
+
+
+
+ Initialise this Msg to be of MsgType.GC with the given data-buffer value.
+
+ the byte-array of data to assign to the Msg's Data property
+ the number of bytes that are in the data byte-array
+
+
+
+ Initialise this Msg to be of MsgType.GC with the given data-buffer value.
+
+ the byte-array of data to assign to the Msg's Data property
+ first byte in the data array
+ the number of bytes that are in the data byte-array
+
+
+
+ Set this Msg to be of type MsgType.Delimiter with no bits set within MsgFlags.
+
+
+
+
+ Clear the
+
+ and set the MsgType to Invalid.
+ If this is not a shared-data Msg (MsgFlags.Shared is not set), or it is shared but the
+ reference-counter has dropped to zero,
+ then return the data back to the BufferPool.
+
+ The object is not initialised.
+
+
+
+ If this Msg is of MsgType.Pool, then - add the given amount number to the reference-counter
+ and set the shared-data Flags bit.
+ If this is not a Pool Msg, this does nothing.
+
+ the number to add to the internal reference-counter
+
+
+
+ If this Msg is of MsgType.Pool and is marked as Shared, then - subtract the given amount number from
+ the reference-counter
+ and, if that reaches zero - return the data to the shared-data pool.
+ If this is not both a Pool Msg and also marked as Shared, this simply Closes this Msg.
+
+ the number to subtract from the internal reference-counter
+
+
+
+ Override the Object ToString method to show the object-type, and values of the MsgType, Size, and
+ Flags properties.
+
+ a string that provides some detail about this Msg's state
+
+
+
+ Copy the given byte-array data to this Msg's Data buffer.
+
+ the source byte-array to copy from
+ index within the internal Data array to copy that byte to
+ the number of bytes to copy
+
+
+
+ Copy the given byte-array data to this Msg's Data buffer.
+
+ the source byte-array to copy from
+ first byte in the source byte-array
+ index within the internal Data array to copy that byte to
+ the number of bytes to copy
+
+
+
+ Copy the given single byte to this Msg's Data buffer.
+
+ the source byte to copy from
+
+
+
+ Copy the given single byte to this Msg's Data buffer at the given array-index.
+
+ the source byte to copy from
+ index within the internal Data array to copy that byte to
+
+
+
+ Get and set the byte value in the
+
+ buffer at a specific index.
+
+ The index to access
+
+
+
+
+ Close this Msg, and effectively make this Msg a copy of the given source Msg
+ by simply setting it to point to the given source Msg.
+ If this is a Pool Msg, then this also increases the reference-counter and sets the Shared bit.
+
+ the source Msg to copy from
+ The object is not initialised.
+
+
+
+ Increase Offset and decrease Size by the given count.
+
+ Number of bytes to remove from a message
+
+
+
+ Close this Msg and make it reference the given source Msg, and then clear the Msg to empty.
+
+ the source-Msg to become
+ The object is not initialised.
+
+
+
+ Returns a new array containing the first
+
+ bytes of
+ .
+
+
+
+
+ An IShimHandler provides a Run(PairSocket) method.
+
+
+
+
+ Execute whatever action this IShimHandler represents against the given shim.
+
+
+
+
+
+ This is an EventArgs that provides an Actor property.
+
+
+
+
+ Create a new NetMQActorEventArgs with the given NetMQActor.
+
+ the NetMQActor for this exception to reference
+
+
+
+ Get the NetMQActor that this exception references.
+
+
+
+
+ This delegate represents the action for this actor to execute.
+
+
+ the
+
+ that is the shim to execute this action
+
+
+
+
+ This delegate represents the action for this actor to execute - along with a state-information object.
+
+ the type to use for the state-information object
+
+ the
+
+ that is the shim to execute this action
+
+ the state-information that the action will use
+
+
+
+ The Actor represents one end of a two-way pipe between 2 PairSocket(s). Where
+ the actor may be passed messages, that are sent to the other end of the pipe
+ which is called the "shim"
+
+
+
+
+ The terminate-shim command.
+ This is just the literal string "endPipe".
+
+
+
+
+ Create a new ActionShimHandler with the given type T to serve as the state-information,
+ and the given action to operate upon that type.
+
+ a ShimAction of type T that comprises the action to perform
+ the state-information
+
+
+
+ Perform the action upon the given shim, using our state-information.
+
+
+ a
+
+ that is the shim to perform the action upon
+
+
+
+
+ Create a new ActionShimHandler with a given action to operate upon that type.
+
+ a ShimAction that comprises the action to perform
+
+
+
+ Perform the action upon the given shim, using our state-information.
+
+
+ a
+
+ that is the shim to perform the action upon
+
+
+
+
+ Create a new
+
+ with the given shimHandler.
+
+
+ an IShimHandler that provides the Run method
+
+
+ the newly-created
+ NetMQActor
+
+
+
+
+ Create a new
+
+ with the action, and state-information.
+
+
+ a ShimAction - delegate for the action to perform
+
+ the state-information - of the generic type T
+
+ the newly-created
+ NetMQActor
+
+
+
+
+ Create a new
+
+ with the given
+ .
+
+
+ a ShimAction - delegate for the action to perform
+
+
+ the newly-created
+ NetMQActor
+
+
+
+
+ Execute the shim handler's Run method, signal ok and then dispose of the shim.
+
+
+
+
+ Transmit the given Msg over this actor's own socket.
+
+
+ the Msg to transmit
+
+
+ The maximum length of time to try and send a message. If
+ , no
+ wait occurs.
+
+ Indicate if another frame is expected after this frame
+
+ true
+ if a message was sent, otherwise false .
+
+ The socket has been stopped.
+
+
+ is not initialised.
+
+
+
+
+ Attempt to receive a message for the specified period of time, returning true if successful or false
+ if it times-out.
+
+
+ a Msg to write the received message into
+
+
+ a TimeSpan specifying how long to block, waiting for a message, before
+ timing out
+
+ true only if a message was indeed received
+
+
+
+ This event occurs when at least one message may be received from the socket without blocking.
+
+
+
+
+ This event occurs when a message is ready to be transmitted from the socket.
+
+
+
+
+
+
+
+ Release any contained resources.
+
+ true if managed resources are to be released
+
+
+
+
+
+
+ A NetMQBeaconEventArgs is an EventArgs that provides a property that holds a NetMQBeacon.
+
+
+
+
+ Create a new NetMQBeaconEventArgs object containing the given NetMQBeacon.
+
+ the NetMQBeacon object to hold a reference to
+
+
+
+ Get the NetMQBeacon object that this holds.
+
+
+
+
+ Create a new NetMQBeacon.
+
+
+
+
+ Get the host name this beacon is bound to.
+
+
+ This may involve a reverse DNS lookup which can take a second or two.
+
+ An empty string is returned if:
+
+ - the beacon is not bound,
+ - the beacon is bound to all interfaces,
+ - an error occurred during reverse DNS lookup.
+
+
+
+
+
+ Get the IP address this beacon is bound to.
+
+
+
+
+ Get the socket of the contained actor.
+
+
+
+
+ This event occurs when at least one message may be received from the socket without blocking.
+
+
+
+
+ Configure beacon for the specified port on all interfaces.
+
+ Blocks until the bind operation completes.
+ The UDP port to bind to.
+
+
+
+ Configure beacon for the specified port and, optionally, to a specific interface.
+
+ Blocks until the bind operation completes.
+ The UDP port to bind to.
+
+ IP address of the interface to bind to. Pass empty string (the default
+ value) to use the default interface.
+
+
+
+
+ Publish beacon immediately and continue to publish when interval elapsed
+
+ Beacon to transmit.
+ Interval to transmit beacon
+
+ Encoding for . Defaults to
+ .
+
+
+
+
+ Publish beacon immediately and continue to publish when interval elapsed
+
+ Beacon to transmit
+ Interval to transmit beacon
+
+
+
+ Publish beacon immediately and continue to publish every second
+
+ Beacon to transmit
+
+ Encoding for . Defaults to
+ .
+
+
+
+
+ Publish beacon immediately and continue to publish every second
+
+ Beacon to transmit
+
+
+
+ Stop publishing beacons.
+
+
+
+
+ Subscribe to beacon messages that match the specified filter.
+
+
+ Beacons must prefix-match with .
+ Any previous subscription is replaced by this one.
+
+ Beacon will be filtered by this
+
+
+
+ Unsubscribe to beacon messages
+
+
+
+
+ Receives the next beacon message, blocking until it arrives.
+
+
+
+
+ Receives the next beacon message if one is available before
+
+ expires.
+
+ The maximum amount of time to wait for the next beacon message.
+ The received beacon message.
+
+ true
+ if a beacon message was received, otherwise false .
+
+
+
+
+
+
+
+
+
+
+ Contents of a message received from a beacon.
+
+
+
+
+ THe beacon content as a byte array.
+
+
+
+
+ The address of the peer that sent this message. Includes host name and port number.
+
+
+
+
+ The beacon content as a string.
+
+
+ Decoded using . Other encodings may be used with
+
+ directly.
+
+
+
+
+ The host name of the peer that sent this message.
+
+
+ This is simply the value of
+
+ without the port number.
+
+
+
+
+ Cleanup library resources, call this method when your process is shutting-down.
+
+ Set to true when you want to make sure sockets send all pending messages
+
+
+
+ Get or set the default linger period for the all sockets,
+ which determines how long pending messages which have yet to be sent to a peer
+ shall linger in memory after a socket is closed.
+
+
+ This also affects the termination of the socket's context.
+
+ -1: Specifies infinite linger period. Pending messages shall not be discarded after the socket is
+ closed;
+ attempting to terminate the socket's context shall block until all pending messages have been sent to
+ a peer.
+
+ 0: The default value of
+
+ specifies no linger period. Pending messages shall be discarded immediately when the socket is closed.
+ Positive values specify an upper bound for the linger period. Pending messages shall not be discarded
+ after the socket is closed;
+ attempting to terminate the socket's context shall block until either all pending messages have been
+ sent to a peer,
+ or the linger period expires, after which any pending messages shall be discarded.
+
+
+
+
+ Get or set the number of IO Threads NetMQ will create, default is 1.
+ 1 is good for most cases.
+
+
+
+
+ Get or set the maximum number of sockets.
+
+
+
+
+ Method is obsolete, call Cleanup instead
+
+
+
+
+ Method is obsolete, call Cleanup instead
+
+
+
+
+ Method is obsolete, call Cleanup instead
+
+ Should the context block the thread while terminating.
+
+
+
+ Method is obsolete, context created automatically
+
+
+
+
+ Base class for custom exceptions within the NetMQ library.
+
+
+
+ Constructor for serialisation.
+
+
+
+ Create a new NetMQException containing the given Exception, Message and ErrorCode.
+
+
+ an Exception that this exception will expose via it's InnerException
+ property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+ an ErrorCode that this exception will expose via its ErrorCode property
+
+
+
+ Create and return a new NetMQException with no Message containing only the given SocketException.
+
+
+ a SocketException that this exception will expose via its InnerException
+ property
+
+ a new NetMQException
+
+
+
+ Create and return a new NetMQException with no Message containing the given SocketError and Exception.
+
+
+ a SocketError that this exception will carry and expose via its ErrorCode property
+
+
+ an Exception that this exception will expose via its InnerException
+ property
+
+ a new NetMQException
+
+
+
+ Create and return a new NetMQException with no Message containing the given ErrorCode and Exception.
+
+
+ an ErrorCode for this exception to contain and expose via its ErrorCode
+ property
+
+
+ an Exception for this exception to contain and expose via its
+ InnerException property
+
+ a new NetMQException
+
+
+
+ Create and return a new NetMQException with no Message containing only the given ErrorCode.
+
+
+ an ErrorCode that this exception will carry and expose via its ErrorCode
+ property
+
+ a new NetMQException
+
+
+
+ Create and return a new NetMQException with the given Message and ErrorCode.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+ an ErrorCode that this exception will carry and expose via its ErrorCode
+ property
+
+ a new NetMQException
+
+
+
+ Create and return a new NetMQException with the given ErrorCode, Message, and Exception.
+
+
+ an ErrorCode that this exception will contain and expose via its ErrorCode
+ property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+ an Exception that this exception will expose via its InnerException
+ property
+
+
+ a new NetMQException, or subclass of NetMQException that corresponds to the given ErrorCode
+
+
+
+
+ AddressAlreadyInUseException is a NetMQException that is used within SocketBase.Bind to signal an
+ address-conflict.
+
+
+
+
+ Create a new AddressAlreadyInUseException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new AddressAlreadyInUseException with a given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+ Constructor for serialisation.
+
+
+
+ EndpointNotFoundException is a NetMQException that is used within Ctx.FindEndpoint to signal a failure
+ to find a specified address.
+
+
+
+
+ Create a new EndpointNotFoundException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new EndpointNotFoundException with a given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new EndpointNotFoundException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ TerminatingException is a NetMQException that is used within SocketBase and Ctx to signal
+ that you're making the mistake of trying to do further work after terminating the message-queueing
+ system.
+
+
+
+
+ Create a new TerminatingException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new TerminatingException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ InvalidException is a NetMQException that is used within the message-queueing system to signal invalid
+ value errors.
+
+
+
+
+ Create a new InvalidException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new InvalidException with the given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new InvalidException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ FaultException is a NetMQException that is used within the message-queueing system to signal general
+ fault conditions.
+
+
+
+
+ Create a new FaultException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new FaultException with the given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new FaultException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ ProtocolNotSupportedException is a NetMQException that is used within the message-queueing system to
+ signal
+ mistakes in properly utilizing the communications protocols.
+
+
+
+
+ Create a new ProtocolNotSupportedException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new ProtocolNotSupportedException with the given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new ProtocolNotSupportedException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ HostUnreachableException is an Exception that is used within the message-queueing system
+ to signal failures to communicate with a host.
+
+
+
+
+ Create a new HostUnreachableException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new HostUnreachableException with the given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new HostUnreachableException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ FiniteStateMachineException is an Exception that is used within the message-queueing system
+ to signal errors in the send/receive order with request/response sockets.
+
+
+
+
+ Create a new FiniteStateMachineException with a given inner-exception and message.
+
+
+ an Exception for this new exception to contain and expose via its
+ InnerException property
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new FiniteStateMachineException with the given message.
+
+
+ the textual description of what gave rise to this exception, to expose via the
+ Message property
+
+
+
+
+ Create a new FiniteStateMachineException with no message nor inner-exception.
+
+
+
+ Constructor for serialisation.
+
+
+
+ Objects of class NetMQFrame serve to hold a Buffer (that consists of a byte-array containing a unit of
+ a message-queue message)
+ and provide methods to construct it given a string and an encoding.
+
+
+
+
+ This is the length of the byte-array data buffer.
+
+
+
+
+ This holds the computed hash-code for this object.
+
+
+
+
+ Create a new NetMQFrame containing the given byte-array data.
+
+ a byte-array to hold as the frame's data
+
+
+
+ Instantiates a frame from the provided byte array, considering only the specified number of bytes.
+
+
+ This constructor may be useful to avoid copying data into a smaller array when a buffer is
+ oversized.
+
+ The content of the frame.
+
+ The number bytes from
+
+ to consider as part of the frame.
+
+
+
+
+ Create a new NetMQFrame containing the given string-message,
+ using the default ASCII encoding.
+
+ a string containing the message-data of the frame
+
+
+
+ Create a new NetMQFrame containing the given string-message,
+ using the given encoding to convert it into a byte-array.
+
+ a string containing the message-data of the frame
+
+ the Encoding to use to convert the given string-message into the internal
+ byte-array
+
+
+
+
+ Create a new NetMQFrame with a data-buffer pre-sized to the given length.
+
+ the number of bytes to allocate for the data-buffer
+
+ length must be non-negative (zero or positive).
+
+
+
+
+ Get or set the size of the message data contained in the frame, which here represents the number of
+ bytes.
+
+
+ The value must be between zero and BufferSize.
+
+
+
+
+ Get the underlying frame-data buffer, which is an array of bytes.
+
+
+
+
+ Get the maximum size of the frame-data buffer (ie, the number of bytes of the array).
+
+
+
+
+ Get a new empty
+
+ that may be used as message separators.
+
+
+
+
+ Get whether this NetMQFrame is empty - that is, has a Buffer of zero-length.
+
+
+
+
+ Create and return a new NetMQFrame with a copy of the supplied byte-array buffer.
+
+ the byte-array to copy into the new NetMQFrame
+
+ a new
+
+ containing a copy of the supplied byte-array
+
+
+
+ is null.
+
+
+
+
+ Return this frame's data-buffer converted into a string, using the default ASCII encoding.
+
+ the data buffer converted to a string
+
+
+
+ Return this frame's data-buffer converted into a string using the given encoding.
+
+
+ the Encoding to use to convert the internal byte-array buffer into a string
+
+ the data buffer converted to a string
+
+
+
+ Convert the buffer to integer in network byte order (big-endian)
+
+
+
+
+
+ Convert the buffer to long in network byte order (big-endian)
+
+
+
+
+
+ Create a deep-copy of the supplied .
+
+
+ the
+
+ to copy
+
+
+ a
+
+ containing a copy of
+
+
+
+
+ is null.
+
+
+
+
+ Create a deep-copy of this NetMQFrame and return it.
+
+ a new NetMQFrame containing a copy of this one's buffer data
+
+
+
+ Return true if the buffer of this NetMQFrame is equal to the given byte-array.
+
+ a byte-array buffer to compare this frame against
+
+
+
+
+ Determine whether the specified
+
+ is equal to the current
+ .
+
+
+ the
+
+ to compare with the current
+ .
+
+ true if the specified NetMQFrame is equal to this one; otherwise, false
+
+
+
+ Return true if the given Object is a NetMQFrame which has a Buffer that is identical to that of this
+ one.
+
+ the Object to compare this to
+ true only if the given Object is a NetMQFrame equal to this one
+
+
+
+ Return true if this one and the other NetMQFrame are equal, or both are null.
+
+ one frame to compare against the other
+ the other frame to compare
+ true if both frames are equal
+
+
+
+ Return true if this one and the other NetMQFrame NOT are equal.
+
+ one frame to compare against the other
+ the other frame to compare
+ false if both frames are equal
+
+
+
+ Override the Object.GetHashCode method to return a hash-code derived from the content of the Buffer.
+ That is only computed the first time this method is called.
+
+ an integer that represents the computed hash-code
+
+
+
+ Return an array of bytes that carries the content of this NetMQFrames Buffer.
+
+
+ if this argument is true - a new copy is made if BufferSize is equal to MessageSize
+
+
+ the Buffer as a byte-array, either newly-allocated or else (if copy is false) simply a
+ reference to the actual Buffer
+
+
+
+
+ This namespace encompasses the NetMQ message-queueing library
+ and attendant utility software.
+
+
+
+
+ A NetMQMessage is basically a collection of NetMQFrames, and is the basic message-unit that is sent
+ and received
+ across this message-queueing subsystem.
+
+
+
+
+ This is the frame-stack that comprises the message-content of this message.
+
+
+
+
+ The default-constructor for NetMQMessage: create a new instance of NetMQMessage
+ with an empty frame-stack.
+
+
+
+
+ Create a new instance of a NetMQMessage that contains the given collection of NetMQFrames as its
+ frame-stack.
+
+ a collection of NetMQFrames, to form the frame-stack
+ The value of 'frames' cannot be null.
+
+
+
+ Create a new instance of a NetMQMessage that contains the given collection of byte-arrays as its
+ frame-stack.
+
+ a collection of byte-array buffers, to form the frame-stack
+ The value of 'buffers' cannot be null.
+
+
+
+ Gets the first frame in the current message.
+
+
+
+
+ Gets the last frame in the current message.
+
+
+
+
+ Gets a value indicating whether the current message is empty.
+
+
+
+
+ Gets the number of
+
+ objects contained by this message.
+
+
+
+
+ Gets the
+
+ at the specified index.
+
+
+ The zero-based index of the
+
+ to get.
+
+
+ The
+
+ at the specified index.
+
+
+ is less than 0 -or-
+
+ is equal to or greater than
+ .
+
+
+
+
+ Add the given NetMQFrame to this NetMQMessage, at the highest-indexed position of the frame-stack.
+
+ a NetMQFrame object comprising the frame to be appended onto the frame-stack
+
+
+
+ Add the given data (in this case a byte-array) to this NetMQMessage, at the highest-indexed position
+ of the frame-stack.
+ Data is not copied.
+
+
+ a byte-array containing the message to append onto the frame-stack of this
+ NetMQMessage
+
+
+
+
+ Add the given string - which gets converted into a NetMQFrame - onto
+ the highest-indexed position of the frame-stack of this NetMQMessage.
+
+
+ a string containing the message to append onto the frame-stack of this
+ NetMQMessage
+
+
+
+
+ Add the given string - which gets converted into a NetMQFrame - onto
+ the highest-indexed position of the frame-stack of this NetMQMessage.
+
+
+ a string containing the message to append onto the frame-stack of this
+ NetMQMessage
+
+ an Encoding that specifies how to convert the string into bytes
+
+
+
+ Convert the given integer value into an array of bytes and add it as a new frame onto this
+ NetMQMessage.
+
+
+ a 32-bit integer value that is to be converted into bytes and added to this
+ message
+
+
+
+
+ Convert the given long value into an array of bytes and add it as a new frame onto this NetMQMessage.
+
+ a 64-bit number that is to be converted into bytes and added to this message
+
+
+
+ Add an empty frame to this NetMQMessage.
+
+
+
+
+ Push the given NetMQFrame into the frame-stack of this NetMQMessage.
+
+ the NetMQFrame to be inserted into the frame-stack
+
+ The concept is the same as pushing an element onto a stack.
+ This inserts the given NetMQFrame into the lowest-indexed position of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push a new frame containing the given byte-array into the frame-stack of this NetMQMessage.
+
+ the byte-array to create a new frame from
+
+ The concept is the same as pushing an element onto a stack.
+ This creates a new frame from the given data (in this case a byte-array) and inserts it into the
+ lowest-indexed position of
+ the collection of frames of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push a new frame containing the given string (converted into a byte-array) into the frame-stack of
+ this NetMQMessage.
+
+ the string to create a new frame from
+
+ The concept is the same as pushing an element onto a stack.
+ This creates a new frame from the given data (in this case a string which gets converted into a
+ byte-array using the default ASCII encoding) and inserts it into the lowest-indexed position of
+ the collection of frames of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push a new frame containing the given string (converted into a byte-array) into the frame-stack of
+ this NetMQMessage.
+
+ the string to create a new frame from
+ the Encoding that dictates how to encode the string into bytes
+
+ The concept is the same as pushing an element onto a stack.
+ This creates a new frame from the given data (in this case a string which gets converted into a
+ byte-array using the given Encoding) and inserts it into the lowest-indexed position of
+ the collection of frames of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push a new frame containing the given integer (converted into a byte-array) into the frame-stack of
+ this NetMQMessage.
+
+ the integer to create a new frame from
+
+ The concept is the same as pushing an element onto a stack.
+ This creates a new frame from the given data (in this case a 32-bit integer which gets converted into
+ a byte-array in big-endian order) and inserts it into the lowest-indexed position of
+ the collection of frames of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push a new frame containing the given long (converted into a byte-array) into the frame-stack of this
+ NetMQMessage.
+
+ the 64-bit number to create a new frame from
+
+ The concept is the same as pushing an element onto a stack.
+ This creates a new frame from the given data (in this case a 64-bit long which gets converted into a
+ byte-array in big-endian order) and inserts it into the lowest-indexed position of
+ the collection of frames of this NetMQMessage,
+ pushing all of the other frames upward in index-position.
+
+
+
+
+ Push an empty frame (a NetMQFrame.Empty) onto the frame-stack.
+
+
+
+
+ Remove and return the first frame.
+
+
+ the first frame, which was popped - which is the frame from the lowest-indexed position
+
+
+
+
+ Delete the given frame from the frame-stack.
+
+ the frame to remove
+
+ true
+ if removed, otherwise false .
+
+
+
+
+ Clear (empty) the frame-stack, so that it no longer contains any frames.
+
+
+
+
+ Return an enumerator over the frames contained within this message.
+
+ an IEnumerator over the frames in this message
+
+
+
+ Return an enumerator over the frames contained within this message.
+
+ an IEnumerator over the frames in this message
+
+
+
+ Returns a string showing the frame contents.
+
+
+
+
+
+ Get whether the caller is running on the scheduler's thread.
+ If true , the caller can execute tasks directly (inline).
+ If false , the caller must start a
+
+ on this scheduler.
+
+
+ This property enables avoiding the creation of a
+
+ object and
+ potential delays to its execution due to queueing. In most cases this is just
+ an optimisation.
+
+
+
+ if (scheduler.CanExecuteTaskInline)
+ {
+ socket.Send(...);
+ }
+ else
+ {
+ var task = new Task(() => socket.Send(...));
+ task.Start(scheduler);
+ }
+
+
+
+
+
+ Returns 1, as
+
+ runs a single thread and all tasks must execute on that thread.
+
+
+
+
+ Not supported.
+
+ Always thrown.
+
+
+
+ Get whether this object is currently polling its sockets and timers.
+
+
+
+
+ Runs the poller in a background thread, returning once the poller has started.
+
+
+ The created thread is named "NetMQPollerThread" . Use
+
+ to specify the thread name.
+
+
+
+
+ Runs the poller in a background thread, returning once the poller has started.
+
+ The thread name to use.
+
+
+
+ Runs the poller on the caller's thread. Only returns when
+
+ or
+
+ are called from another thread.
+
+
+
+
+ Stops the poller.
+
+
+ If called from a thread other than the poller thread, this method will block until the poller has
+ stopped.
+ If called from the poller thread it is not possible to block.
+
+
+
+
+ Stops the poller, returning immediately and most likely before the poller has actually stopped.
+
+
+
+
+ This class only implements
+
+ in order to support collection initialiser syntax.
+
+ An empty enumerator.
+
+
+
+ Stops and disposes the poller. The poller may not be used once disposed.
+
+
+ Note that you cannot dispose the poller on the poller's thread. Doing so immediately throws an
+ exception.
+
+ A socket in the poller has been disposed.
+ Dispose called from the poller thread.
+
+
+ Dispatches an asynchronous message to a synchronization context.
+
+
+ Dispatches a synchronous message to a synchronization context.
+
+
+
+ Class to quickly handle incoming messages of socket.
+ New thread is created to handle the messages. Call dispose to stop the thread.
+ Provided socket will not be disposed by the class.
+
+
+
+
+ Create NetMQProactor and start dedicate thread to handle incoming messages.
+
+ Socket to handle messages from
+ Handler to handle incoming messages
+
+
+
+ Stop the proactor. Provided socket will not be disposed.
+
+
+
+
+ Multi producer single consumer queue which you can poll on with a Poller.
+
+ Type of the item in queue
+
+
+
+ Create new NetMQQueue.
+
+ The capacity of the queue, use zero for unlimited
+
+
+
+ Register for this event for notification when there are items in the queue. Queue must be added to a
+ poller for this to work.
+
+
+
+
+ Try to dequeue an item from the queue. Dequeueing and item is not thread safe.
+
+ Will be filled with the item upon success
+ Timeout to try and dequeue and item
+ Will return false if it didn't succeed to dequeue an item after the timeout.
+
+
+
+ Dequeue an item from the queue, will block if queue is empty. Dequeueing and item is not thread safe.
+
+ Dequeued item
+
+
+
+ Enqueue an item to the queue, will block if the queue is full.
+
+
+
+
+
+ Dispose the queue.
+
+
+
+
+ For selecting on
+
+ and regular .NET
+
+ objects.
+
+
+ This is for advanced scenarios only.
+ Most use cases are better served by .
+
+
+
+
+ Selector Item used to hold the NetMQSocket/Socket and PollEvents
+
+
+
+
+ Select on NetMQSocket or Socket, similar behavior to Socket.Select.
+
+ Items to select on (must not be null)
+ Number of items in the array to select on
+ a time-out period, in milliseconds
+
+ The internal select operation failed.
+
+
+ is null .
+
+ The socket has been stopped.
+
+
+
+ Abstract base class for NetMQ's different socket types.
+
+
+ Various options are available in this base class, though their affect can vary by socket type.
+
+
+
+
+ Create a new NetMQSocket with the given .
+
+ Type of socket to create
+
+
+
+
+
+ Create a new NetMQSocket with the given .
+
+ a SocketBase object to assign to the new socket
+
+
+
+ This event occurs when at least one message may be received from the socket without blocking.
+
+
+ This event is raised when a
+
+ is added to a running
+ .
+
+
+
+
+ This event occurs when at least one message may be sent via the socket without blocking.
+
+
+ This event is raised when a
+
+ is added to a running
+ .
+
+
+
+
+ Fires when either the
+
+ or
+
+ event is set.
+
+
+
+
+ Raise the
+
+ event.
+
+
+
+
+ Get or set an integer that represents the number of errors that have accumulated.
+
+
+
+
+ Get the
+
+ of this socket.
+
+
+
+
+ Get the underlying .
+
+
+
+
+ Bind the socket to .
+
+ a string representing the address to bind this socket to
+ thrown if the socket was already disposed
+ The socket has been stopped.
+
+ The specified address is already in use.
+
+
+ No IO thread was found, or the protocol's listener encountered an
+ error during initialisation.
+
+
+
+
+ Binds the specified TCP
+
+ to an available port, assigned by the operating system.
+
+ the chosen port-number
+ thrown if the socket was already disposed
+
+
+ uses a protocol other than TCP.
+
+ The socket has been stopped.
+
+ The specified address is already in use.
+
+
+ No IO thread was found, or the protocol's listener errored during
+ initialisation.
+
+
+
+
+ Connect the socket to .
+
+ a string denoting the address to connect this socket to
+ thrown if the socket was already disposed
+ The socket has been stopped.
+ No IO thread was found.
+
+ The specified address is already in use.
+
+
+
+
+ Disconnect this socket from .
+
+ a string denoting the address to disconnect from
+ thrown if the socket was already disposed
+ The socket has been stopped.
+
+ Endpoint was not found and cannot be disconnected.
+
+
+
+
+ Unbind this socket from .
+
+ a string denoting the address to unbind from
+ thrown if the socket was already disposed
+ The socket has been stopped.
+
+ Endpoint was not found and cannot be disconnected.
+
+
+
+
+ Closes this socket, rendering it unusable. Equivalent to calling
+ .
+
+
+
+
+ Wait until a message is ready to be received from the socket.
+
+
+
+
+ Wait until a message is ready to be received/sent from this socket or until timeout is reached.
+ If a message is available, the ReceiveReady/SendReady event is fired.
+
+ a TimeSpan that represents the timeout-period
+ true if a message was available within the timeout, false otherwise
+
+
+
+ Poll this socket, which means wait for an event to happen within the given timeout period.
+
+ the poll event(s) to listen for
+ the timeout period
+
+ PollEvents.None -> no message available
+ PollEvents.PollIn -> at least one message has arrived
+ PollEvents.PollOut -> at least one message is ready to send
+ PollEvents.Error -> an error has occurred
+ or any combination thereof
+
+ The internal select operation failed.
+ The socket has been stopped.
+
+
+
+ Return a
+
+ value that indicates which bit-flags have a corresponding listener,
+ with PollError always set,
+ and PollOut set based upon m_sendReady
+ and PollIn set based upon m_receiveReady.
+
+ a PollEvents value that denotes which events have a listener
+
+
+
+ Unless this socket is closed,
+ based upon the given PollEvents - raise the m_receiveReady event if PollIn is set,
+ and m_sendReady if PollOut is set.
+
+ what to use as the source of the events
+ the given PollEvents that dictates when of the two events to raise
+
+
+ Attempt to receive a message for the specified amount of time.
+
+ A reference to a
+
+ instance into which the received message
+ data should be placed.
+
+
+ The maximum amount of time the call should wait for a message before returning.
+
+
+ true
+ if a message was received before
+
+ elapsed,
+ otherwise false .
+
+
+
+
+ Send a message if one is available within .
+
+ An object with message's data to send.
+
+ The maximum length of time to try and send a message. If
+ , no
+ wait occurs.
+
+ Indicate if another frame is expected after this frame
+
+ true
+ if a message was sent, otherwise false .
+
+
+
+
+ Listen to the given endpoint for SocketEvent events.
+
+ A string denoting the endpoint to monitor
+
+ The specific
+
+ events to report on. Defaults to
+
+ if omitted.
+
+
+
+ is null .
+
+
+
+ cannot be empty or whitespace.
+
+ This object is already disposed.
+
+ The protocol of
+
+ is not supported.
+
+ The socket has been stopped.
+ Maximum number of sockets reached.
+
+
+
+ Get whether a message is waiting to be picked up (true if there is, false if there is
+ none).
+
+ The socket has been stopped.
+
+
+
+ Get whether a message is waiting to be sent.
+
+
+ This is true if at least one message is waiting to be sent, false if there is none.
+
+ The socket has been stopped.
+
+
+
+ Get the integer-value of the specified .
+
+ a ZmqSocketOption that specifies what to get
+ an integer that is the value of that option
+ The socket has been stopped.
+ This object is already disposed.
+
+
+
+ Get the (generically-typed) value of the specified
+ .
+
+ a ZmqSocketOption that specifies what to get
+ an object of the given type, that is the value of that option
+ The socket has been stopped.
+ This object is already disposed.
+
+
+
+ Get the
+
+ value of the specified ZmqSocketOption.
+
+ a ZmqSocketOption that specifies what to get
+ a TimeSpan that is the value of that option
+ The socket has been stopped.
+
+
+
+ Get the 64-bit integer-value of the specified .
+
+ a ZmqSocketOption that specifies what to get
+ a long that is the value of that option
+ The socket has been stopped.
+
+
+
+ Assign the given integer value to the specified .
+
+ a ZmqSocketOption that specifies what to set
+ an integer that is the value to set that option to
+ The socket has been stopped.
+ This object is already disposed.
+
+
+
+ Assign the given TimeSpan to the specified .
+
+ a ZmqSocketOption that specifies what to set
+ a TimeSpan that is the value to set that option to
+ The socket has been stopped.
+
+
+
+ Assign the given Object value to the specified .
+
+ a ZmqSocketOption that specifies what to set
+ an object that is the value to set that option to
+ The socket has been stopped.
+ This object is already disposed.
+
+
+
+ Closes this socket, rendering it unusable. Equivalent to calling
+ .
+
+
+
+
+ Closes this socket, rendering it unusable. Equivalent to calling
+ .
+
+ true if releasing managed resources
+
+
+
+
+
+
+ This subclass of EventArgs contains a NetMQSocket,
+ and IsReadyToReceive and IsReadyToSend flags to indicate whether ready to receive or send.
+
+
+
+
+ Create a new NetMQSocketEventArgs referencing the given socket.
+
+ the NetMQSocket that this is in reference to
+
+
+
+ Initialise the ReceiveReady and SendReady flags from the given PollEvents value.
+
+
+ a PollEvents value that indicates whether the socket is ready to send or receive
+ without blocking
+
+
+
+
+ Get the NetMQSocket that this references.
+
+
+
+
+ Get whether at least one message may be received by the socket without blocking.
+
+
+
+
+ Get whether at least one message may be sent by the socket without blocking.
+
+
+
+
+ Class NetMQTimerEventArgs is an EventArgs that contains a reference to a NetMQTimer.
+
+
+
+
+ Create a new NetMQTimerEventArgs that contains a reference to the given NetMQTimer.
+
+ the NetMQTimer to hold a reference to
+
+
+
+ Get the NetMQTimer that this has a reference to.
+
+
+
+
+ A NetMQTimer instance provides the state-information for a timer function,
+ which is periodically checked by a Poller or a NetMQBeacon.
+
+
+
+
+ A pre-constructed NetMQTimerEventArgs to use whenever raising the Elapsed event.
+
+
+
+
+ This is the timer-interval in milliseconds.
+
+
+
+
+ This flag dictates whether this timer is currently enabled.
+
+
+
+
+ This event is used to signal when the timer has expired.
+
+
+
+
+ Create a new NetMQTimer with the timer-interval specified by the given TimeSpan.
+
+ a TimeSpan that denotes the timer-interval
+
+ This sets the When property to an initial value of -1, to indicate it no future-time applies as yet.
+
+
+
+
+ Create a new NetMQTimer with the given timer-interval in milliseconds.
+
+ an integer specifying the timer-interval in milliseconds
+
+ This sets the When property to an initial value of -1, to indicate it no future-time applies as yet.
+
+
+
+
+ Get or set the timer-interval, in milliseconds.
+
+
+ When setting this, When is set to the future point in time from now at which the interval will expire
+ (or -1 if not Enabled).
+
+
+
+
+ Get or set whether this NetMQTimer is on.
+
+
+ When setting this to true, When is set to the future point in time from now at which the interval will
+ expire.
+ When setting this to false, When is set to -1.
+
+
+
+
+ Get or set the value of the low-precision timestamp (a value in milliseconds) that signals when the
+ timer is to expire,
+ or -1 if not applicable at this time.
+
+
+
+
+ Enable the timer and reset the interval
+
+
+
+
+ If there are any subscribers - raise the Elapsed event.
+
+ the sender to include within the event's event-args
+
+
+
+ This static class serves to convert between byte-arrays, and various integer sizes
+ - all of which assume the byte-data is in Big-endian, or "Network Byte Order".
+
+
+
+
+ Given a byte-array assumed to be in Big-endian order, and an offset into it
+ - return a 16-bit integer derived from the 2 bytes starting at that offset.
+
+ the byte-array to get the short from
+
+
+
+
+ Given a 16-bit integer, return it as a byte-array in Big-endian order.
+
+ the short to convert
+ a 2-byte array containing that short's bits
+
+
+
+ Given a 16-bit integer, and a byte-array buffer and offset,
+ - write the 2 bytes of that integer into the buffer starting at that offset, in Big-endian order.
+
+ the short to convert into bytes
+ the byte-array to write the short's bytes into
+
+
+
+ Given a byte-array assumed to be in Big-endian order, and an offset into it
+ - return a 32-bit integer derived from the 4 bytes starting at that offset.
+
+ the byte-array to get the integer from
+
+
+
+
+ Given a 32-bit integer, return it as a byte-array in Big-endian order.
+
+ the int to convert
+ a 4-byte array containing that integer's bits
+
+
+
+ Given a 32-bit integer, and a byte-array buffer and offset,
+ - write the 4 bytes of that integer into the buffer starting at that offset, in Big-endian order.
+
+ the integer to convert into bytes
+ the byte-array to write the integer's bytes into
+
+
+
+ Given a byte-array assumed to be in Big-endian order, and an offset into it
+ - return a 64-bit integer derived from the 8 bytes starting at that offset.
+
+ the byte-array to get the Int64 from
+
+
+
+
+ Given a 64-bit integer, return it as a byte-array in Big-endian order.
+
+
+ The long value to convert from.
+
+
+ The network order presentation of
+
+ as an 8-byte array.
+
+
+
+
+ Given a 64-bit integer, and a byte-array buffer and offset,
+ - write the 8 bytes of that integer into the buffer starting at that offset, in Big-endian order.
+
+ the long value to convert into bytes
+ the byte-array to write the long value's bytes into
+
+
+
+ This static class serves to provide extension methods for IOutgoingSocket.
+
+
+
+
+ Block until the message can be sent.
+
+
+ The call blocks until the message can be sent and cannot be interrupted.
+ Whether the message can be sent depends on the socket type.
+
+ The socket to send the message on.
+ An object with message's data to send.
+ Indicate if another frame is expected after this frame
+
+
+
+ Transmit a byte-array of data over this socket, block until frame is sent.
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+
+
+ Transmit a byte-array of data over this socket, block until frame is sent.
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+
+ the number of bytes to send from .
+
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+
+
+ Transmit a byte-array of data over this socket, block until frame is sent.
+ Send more frame, another frame must be sent after this frame. Use to chain Send methods.
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+ a reference to this IOutgoingSocket so that method-calls may be chained together
+
+
+
+ Transmit a byte-array of data over this socket, block until frame is sent.
+ Send more frame, another frame must be sent after this frame. Use to chain Send methods.
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+
+ the number of bytes to send from .
+
+ a reference to this IOutgoingSocket so that method-calls may be chained together
+
+
+
+ Attempt to transmit a single frame on .
+ If message cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ the byte-array of data to send
+
+ the number of bytes to send from .
+
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to transmit a single frame on .
+ If message cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ the byte-array of data to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to transmit a single frame on .
+ If message cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to transmit a single frame on .
+ If message cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ the byte-array of data to send
+
+ the number of bytes to send from .
+
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Send multiple frames on , blocking until all frames are sent.
+
+ the IOutgoingSocket to transmit on
+ frames to transmit
+
+
+
+ Send multiple frames on , blocking until all frames are sent.
+
+ the IOutgoingSocket to transmit on
+ frames to transmit
+
+
+
+ Attempt to transmit a multiple frames on .
+ If frames cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ frames to transmit
+
+
+
+ Attempt to transmit a multiple frames on .
+ If frames cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ frames to transmit
+
+
+
+ Attempt to transmit a multiple frames on .
+ If frames cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ frames to transmit
+
+
+
+ Attempt to transmit a multiple frames on .
+ If frames cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ frames to transmit
+
+
+
+ Transmit a string over this socket, block until frame is sent.
+
+ the IOutgoingSocket to transmit on
+ the string to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+
+
+ Transmit a string over this socket, block until frame is sent.
+ Send more frame, another frame must be sent after this frame. Use to chain Send methods.
+
+ the IOutgoingSocket to transmit on
+ the string to send
+ a reference to this IOutgoingSocket so that method-calls may be chained together
+
+
+
+ Attempt to transmit a single string frame on .
+ If message cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ the string to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to transmit a single string frame on .
+ If message cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ the string to send
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Send multiple message on , blocking until all entire message is sent.
+
+ the IOutgoingSocket to transmit on
+ message to transmit
+
+
+
+ Attempt to transmit a multiple message on .
+ If message cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+ message to transmit
+
+
+
+ Attempt to transmit a multiple message on .
+ If frames cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ message to transmit
+
+
+
+ Transmit an empty frame over this socket, block until frame is sent.
+
+ the IOutgoingSocket to transmit on
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+
+
+ Transmit an empty frame over this socket, block until frame is sent.
+ Send more frame, another frame must be sent after this frame. Use to chain Send methods.
+
+ the IOutgoingSocket to transmit on
+ a reference to this IOutgoingSocket so that method-calls may be chained together
+
+
+
+ Attempt to transmit an empty frame on .
+ If message cannot be sent within , return false .
+
+ the IOutgoingSocket to transmit on
+ The maximum period of time to try to send a message.
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to transmit an empty frame on .
+ If message cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+
+ set this flag to true to signal that you will be immediately sending another frame
+ (optional: default is false)
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Transmit a status-signal over this socket.
+
+ the IOutgoingSocket to transmit on
+ a byte that contains the status signal to send
+
+
+
+ Attempt to transmit a status-signal over this socket.
+ If signal cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+ a byte that contains the status signal to send
+
+
+
+ Transmit a specific status-signal over this socket that indicates OK.
+
+ the IOutgoingSocket to transmit on
+
+
+
+ Attempt to transmit a specific status-signal over this socket that indicates OK.
+ If signal cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+
+
+
+ Transmit a specific status-signal over this socket that indicates there is an error.
+
+ the IOutgoingSocket to transmit on
+
+
+
+ Attempt to transmit a specific status-signal over this socket that indicates there is an error.
+ If signal cannot be sent immediately, return false .
+
+ the IOutgoingSocket to transmit on
+
+
+
+ This flags enum-type is simply an indication of the direction of the poll-event,
+ and can be None, PollIn, PollOut, or PollError.
+
+
+
+
+ Extension methods for the
+
+ enum.
+
+
+
+
+ Test whether
+
+ has the
+
+ flag set.
+
+
+
+
+ Test whether
+
+ has the
+
+ flag set.
+
+
+
+
+ Test whether
+
+ has the
+
+ flag set.
+
+
+
+
+ Forwards messages bidirectionally between two sockets. You can also specify a control socket tn which
+ proxied messages will be sent.
+
+
+ This class must be explicitly started by calling . If an external
+
+ has been specified,
+ then that call will block until
+
+ is called.
+
+ If using an external , ensure the front and back end sockets have been
+ added to it.
+
+ Users of this class must call
+
+ when messages should no longer be proxied.
+
+
+
+
+ Create a new instance of a Proxy (NetMQ.Proxy)
+ with the given sockets to serve as a front-end, a back-end, and a control socket.
+
+ the socket that messages will be forwarded from
+ the socket that messages will be forwarded to
+
+ this socket will have incoming messages also sent to it - you can set this to
+ null if not needed
+
+
+ this socket will have outgoing messages also sent to it - you can set this to
+ null if not needed
+
+ an optional external poller to use within this proxy
+
+
+
+ Create a new instance of a Proxy (NetMQ.Proxy)
+ with the given sockets to serve as a front-end, a back-end, and a control socket.
+
+ the socket that messages will be forwarded from
+ the socket that messages will be forwarded to
+
+ this socket will have messages also sent to it - you can set this to null if not
+ needed
+
+ an optional external poller to use within this proxy
+
+
+ is not
+ null
+ and either
+
+ or
+
+ are not contained within it.
+
+
+
+
+ Start proxying messages between the front and back ends. Blocks, unless using an external
+ .
+
+ The proxy has already been started.
+
+
+
+ Stops the proxy, blocking until the underlying
+
+ has completed.
+
+ The proxy has not been started.
+
+
+
+ Provides extension methods for the
+
+ interface,
+ via which messages may be received in several ways.
+
+
+
+
+ Block until the next message arrives, then make the message's data available via
+ .
+
+
+ The call blocks until the next message arrives, and cannot be interrupted. This a convenient and safe
+ when
+ you know a message is available, such as for code within a
+
+ callback.
+
+ The socket to receive from.
+ An object to receive the message's data into.
+
+
+
+ Receive a single frame from , blocking until one arrives.
+
+ The socket to receive from.
+ The content of the received message frame.
+
+
+
+ Receive a single frame from , blocking until one arrives.
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+ The content of the received message frame.
+
+
+
+ Attempt to receive a single frame from .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ The content of the received message frame, or null if no message was
+ available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from .
+ If no message is immediately available, return false .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ The content of the received message frame, or null if no message was
+ available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ The content of the received message frame, or null if no message was
+ available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from .
+ If no message is available within , return false .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+ The maximum period of time to wait for a message to become available.
+
+ The content of the received message frame, or null if no message was
+ available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Receive all frames of the next message from , blocking until a message
+ arrives.
+
+ The socket to receive from.
+
+ Optional initial
+
+ for the returned
+ .
+
+ All frames of a multipart message as a list having one or more items.
+
+
+
+ Receive all frames of the next message from , blocking until a message
+ arrives.
+
+ The socket to receive from.
+
+ Reference to a list for return values. If null a new instance will be
+ assigned, otherwise the provided list will be cleared and populated.
+
+
+ Optional initial
+
+ for the returned
+ .
+
+
+
+
+ Attempt to receive all frames of the next message from .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ Reference to a list for return values. If null a new instance will be
+ assigned, otherwise the provided list will be cleared and populated.
+
+
+ Optional initial
+
+ for the returned
+ .
+
+
+
+
+ Attempt to receive all frames of the next message from .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ Reference to a list for return values. If null a new instance will be
+ assigned, otherwise the provided list will be cleared and populated.
+
+
+ Optional initial
+
+ for the returned
+ .
+
+
+
+
+ Receive a single frame from , blocking until one arrives, and decode as a
+ string using
+ .
+
+ The socket to receive from.
+ The content of the received message frame as a string.
+
+
+
+ Receive a single frame from , blocking until one arrives, and decode as a
+ string using
+ .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+ The content of the received message frame.
+
+
+
+ Receive a single frame from , blocking until one arrives, and decode as a
+ string using
+ .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+ The content of the received message frame as a string.
+
+
+
+ Receive a single frame from , blocking until one arrives, and decode as a
+ string using
+ .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+ The content of the received message frame as a string.
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+ The encoding used to convert the frame's data to a string.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , and decode as a string using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+ The encoding used to convert the frame's data to a string.
+
+ The content of the received message frame as a string, or
+ null
+ if no message was available.
+
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Receive all frames of the next message from , blocking until they arrive, and
+ decode as strings using
+ .
+
+ The socket to receive from.
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+ The content of the received message frame as a string.
+
+
+
+ Receive all frames of the next message from , blocking until they arrive, and
+ decode as strings using
+ .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+
+
+ Attempt to receive all frames of the next message from , and decode them as
+ strings using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ The frames of the received message as strings. Untouched if no message was
+ available.
+
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive all frames of the next message from , and decode them as
+ strings using
+ .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+ The encoding used to convert the frame's data to a string.
+
+ The frames of the received message as strings. Untouched if no message was
+ available.
+
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive all frames of the next message from , and decode them as
+ strings using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ The frames of the received message as strings. Untouched if no message was
+ available.
+
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive all frames of the next message from , and decode them as
+ strings using
+ .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+ The encoding used to convert the frame's data to a string.
+
+ The frames of the received message as strings. Untouched if no message was
+ available.
+
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Receive all frames of the next message from , blocking until they arrive.
+
+ The socket to receive from.
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+ The content of the received message frame as a string.
+
+
+
+ Attempt to receive all frames of the next message from .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+ The received message. Untouched if no message was available.
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Attempt to receive all frames of the next message from .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+ The received message. Untouched if no message was available.
+
+ Specifies the initial capacity of the
+
+ used
+ to buffer results. If the number of frames is known, set it here. If more frames arrive than expected,
+ an extra allocation will occur, but the result will still be correct.
+
+
+ true
+ if a message was available, otherwise false .
+
+
+
+
+ Receive frames from , blocking until a valid signal arrives.
+
+ The socket to receive from.
+
+ true
+ if the received signal was zero, otherwise false .
+
+
+
+
+ Attempt to receive a valid signal from .
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ true
+ if the received signal was zero, otherwise false . If no signal received,
+ false .
+
+
+ true
+ if a valid signal was observed, otherwise false .
+
+
+
+
+ Attempt to receive a valid signal from .
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ true
+ if the received signal was zero, otherwise false . If no signal received,
+ false .
+
+
+ true
+ if a valid signal was observed, otherwise false .
+
+
+
+
+ Receive a single frame from , blocking until one arrives, then ignore its
+ content.
+
+ The socket to receive from.
+
+
+
+ Receive a single frame from , blocking until one arrives, then ignore its
+ content.
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+
+
+ Attempt to receive a single frame from , then ignore its content.
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , then ignore its content.
+ If no message is immediately available, return false .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , then ignore its content.
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ Attempt to receive a single frame from , then ignore its content.
+ If no message is available within , return false .
+ Indicate whether further frames exist via .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ true
+ if another frame of the same message follows, otherwise
+ false .
+
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ Receive all frames of the next message from , blocking until a message
+ arrives, then ignore their contents.
+
+ The socket to receive from.
+
+
+
+ Attempt to receive all frames of the next message from , then ignore their
+ contents.
+ If no message is immediately available, return false .
+
+ The socket to receive from.
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ Attempt to receive all frames of the next message from , then ignore their
+ contents.
+ If no message is available within , return false .
+
+ The socket to receive from.
+ The maximum period of time to wait for a message to become available.
+
+ true
+ if a frame was received and ignored, otherwise false .
+
+
+
+
+ The
+
+ used in string related methods that do
+ not explicitly provide an encoding parameter.
+
+
+
+ Indicates an infinite timeout for send and receive operations.
+
+
+
+ This enum-type specifies socket transport events (TCP and IPC only).
+
+
+
+
+ A SocketOptions is simply a convenient way to access the options of a particular socket.
+ This class holds a reference to the socket, and it's properties provide a concise way
+ to access that socket's option values -- instead of calling GetSocketOption/SetSocketOption.
+
+
+
+
+ The NetMQSocket that this SocketOptions is referencing.
+
+
+
+
+ Create a new SocketOptions that references the given NetMQSocket.
+
+ the NetMQSocket for this SocketOptions to hold a reference to
+
+
+
+ Get or set the I/O-thread affinity. This is a 64-bit value used to specify which threads from the I/O
+ thread-pool
+ associated with the socket's context shall handle newly-created connections.
+ 0 means no affinity, meaning that work shall be distributed fairly among all I/O threads.
+ For non-zero values, the lowest bit corresponds to thread 1, second lowest bit to thread 2, and so on.
+
+
+
+
+ Get or set unique identity of the socket, from a message-queueing router's perspective.
+ This is a byte-array of at most 255 bytes.
+
+
+
+
+ Get or set the maximum send or receive data rate for multicast transports on the specified socket.
+
+
+
+
+ Get or set the recovery-interval for multicast transports using the specified socket.
+ This option determines the maximum time that a receiver can be absent from a multicast group
+ before unrecoverable data loss will occur. Default is 10,000 ms (10 seconds).
+
+
+
+
+ Get or set the size of the transmit buffer for the specified socket.
+
+
+
+
+ Get or set the size of the receive buffer for the specified socket.
+ A value of zero means that the OS default is in effect.
+
+
+
+
+ Gets whether the last frame received on the socket had the more flag set or not.
+
+
+ true
+ if receive more; otherwise, false .
+
+
+
+
+ Get or set the linger period for the specified socket,
+ which determines how long pending messages which have yet to be sent to a peer
+ shall linger in memory after a socket is closed.
+
+
+ If socket created with Context default is -1 if socket created without socket (using new keyword)
+ default is zero.
+ If context is used this also affects the termination of context, otherwise this affects the exit of
+ the process.
+ -1: Specifies an infinite linger period. Pending messages shall not be discarded after the socket is
+ closed;
+ attempting to terminate the socket's context shall block until all pending messages have been sent to
+ a peer.
+ 0: Specifies no linger period. Pending messages shall be discarded immediately when the socket is
+ closed.
+ Positive values specify an upper bound for the linger period. Pending messages shall not be discarded
+ after the socket is closed;
+ attempting to terminate the socket's context shall block until either all pending messages have been
+ sent to a peer,
+ or the linger period expires, after which any pending messages shall be discarded.
+
+
+
+
+ Get or set the initial reconnection interval for the specified socket.
+ This is the period to wait between attempts to reconnect disconnected peers
+ when using connection-oriented transports. The default is 100 ms.
+ -1 means no reconnection.
+
+
+ With ZeroMQ, the reconnection interval may be randomized to prevent reconnection storms
+ in topologies with a large number of peers per socket.
+
+
+
+
+ Get or set the maximum reconnection interval for the specified socket.
+ This is the maximum period to shall wait between attempts
+ to reconnect. On each reconnect attempt, the previous interval shall be doubled
+ until this maximum period is reached.
+ The default value of zero means no exponential backoff is performed.
+
+
+ This is the maximum period NetMQ shall wait between attempts
+ to reconnect. On each reconnect attempt, the previous interval shall be doubled
+ until this maximum period is reached.
+ This allows for an exponential backoff strategy.
+ The default value of zero means no exponential backoff is performed
+ and reconnect interval calculations are only based on ReconnectIvl.
+
+
+
+
+ Get or set the maximum length of the queue of outstanding peer connections
+ for the specified socket. This only applies to connection-oriented transports.
+ Default is 100.
+
+
+
+
+ Get or set the upper limit to the size for inbound messages.
+ If a peer sends a message larger than this it is disconnected.
+ The default value is -1, which means no limit.
+
+
+
+
+ Get or set the high-water-mark for transmission.
+ This is a hard limit on the number of messages that are allowed to queue up
+ before mitigative action is taken.
+ The default is 1000.
+
+
+
+
+ Get or set the high-water-mark for reception.
+ This is a hard limit on the number of messages that are allowed to queue up
+ before mitigative action is taken.
+ The default is 1000.
+
+
+
+
+ The low-water mark for message transmission.
+ This is the number of messages that should be processed before transmission is
+ unblocked (in case it was blocked by reaching high-watermark). The default value is
+ calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
+
+
+
+
+ The low-water mark for message reception.
+ This is the number of messages that should be processed before reception is
+ unblocked (in case it was blocked by reaching high-watermark). The default value is
+ calculated using relevant high-watermark (HWM): HWM > 2048 ? HWM - 1024 : (HWM + 1) / 2
+
+
+
+
+ Get or set the time-to-live (maximum number of hops) that outbound multicast packets
+ are allowed to propagate.
+ The default value of 1 means that the multicast packets don't leave the local network.
+
+
+
+
+ Get or set whether the underlying socket is for IPv4 only (not IPv6),
+ as opposed to one that allows connections with either IPv4 or IPv6.
+
+
+
+
+ Get the last endpoint bound for TCP and IPC transports.
+ The returned value will be a string in the form of a ZMQ DSN.
+
+
+ If the TCP host is ANY, indicated by a *, then the returned address
+ will be 0.0.0.0 (for IPv4).
+
+
+
+
+ Set the RouterSocket behavior when an unroutable message is encountered.
+ A value of false is the default and discards the message silently when it cannot be routed.
+ A value of true causes throw of HostUnreachableException if the message cannot be routed.
+
+
+
+
+ Get or set whether to use TCP keepalive.
+
+
+ When Keepalive is enabled, then your socket will periodically send an empty keepalive probe packet
+ with the ACK flag on. The remote endpoint does not need to support keepalive at all, just TCP/IP.
+ If you receive a reply to your keepalive probe, you can assume that the connection is still up and
+ running.
+ This procedure is useful because if the other peers lose their connection (for example, by rebooting)
+ you will notice that the connection is broken, even if you don't have traffic on it.
+ If the keepalive probes are not replied to by your peer, you can assert that the connection
+ cannot be considered valid and then take the corrective action.
+
+
+
+
+ Get or set the keep-alive time - the duration between two keepalive transmissions in idle condition.
+ The TCP keepalive period is required by socket implementers to be configurable and by default is
+ set to no less than 2 hours.
+
+
+
+
+ Get or set the TCP keep-alive interval - the duration between two keepalive transmission if no
+ response was received to a previous keepalive probe.
+
+
+ By default a keepalive packet is sent every 2 hours or 7,200,000 milliseconds
+ (TODO: Check these comments concerning default values! jh)
+ if no other data have been carried over the TCP connection.
+ If there is no response to a keepalive, it is repeated once every KeepAliveInterval seconds.
+ The default is one second.
+
+
+
+
+ Get or set the attach-on-connect value.
+ If set to true, this will delay the attachment of a pipe on connect until
+ the underlying connection has completed. This will cause the socket
+ to block if there are no other connections, but will prevent queues
+ from filling on pipes awaiting connection.
+ Default is false.
+
+
+
+
+ This applies only to publisher sockets.
+ Set whether to send all subscription messages upstream, not just unique ones.
+ The default is false.
+
+
+
+
+ This applies only to publisher sockets.
+ Set whether to support broadcast functionality
+
+
+
+
+ This applies only to router sockets.
+ Set whether RouterSocket allows non-zmq tcp connects.
+ If true, router socket accepts non-zmq tcp connections
+
+
+
+
+ When enabled new router connections with same identity take over old ones
+
+
+
+
+ Get or set the byte-order: big-endian, vs little-endian.
+
+
+
+
+ Get the last PEER allocated routing id
+
+
+
+
+ Controls the maximum datagram size for PGM.
+
+
+
+
+ A DealerSocket is a NetMQSocket, whereby the dealer sends messages in a way intended to achieve
+ load-balancing
+ - which are received in a fair queueing manner.
+
+
+
+
+ Create a new DealerSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new DealerSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new DealerSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ A PairSocket is a NetMQSocket, usually used to synchronize two threads - using only one socket on each
+ side.
+
+
+
+
+ Create a new PairSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new PairSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new PairSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Create and return an inproc pipe where socket1 is bound and socket2 is connected.
+
+ the Bind socket
+ the Connect socket
+
+
+
+ Peer socket, the first message is always the identity of the sender
+
+
+
+
+ Create a new PeerSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new PeerSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new PeerSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Connect the peer socket to .
+
+ a string denoting the address to connect this socket to
+ The peer allocated routing id
+ thrown if the socket was already disposed
+ The socket has been stopped.
+ No IO thread was found.
+
+ The specified address is already in use.
+
+
+
+
+ A PublisherSocket is a NetMQSocket intended to be used as the Pub in the PubSub pattern.
+ The intended usage is for publishing messages to all subscribers which are subscribed to a given
+ topic.
+
+
+
+
+ Create a new PublisherSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is bind (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new PublisherSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new PublisherSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+
+ doesn't support sending, so this override throws
+ .
+
+ Receive is not supported.
+
+
+
+ A PullSocket is a NetMQSocket intended to be used as the "Pull" part of the Push-Pull pattern.
+ This will "pull" messages that have been pushed from the "push" socket.
+
+
+
+
+ Create a new PullSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is bind (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new PullSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new PullSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ A PushSocket is a NetMQSocket intended to be used as the "Push" part of the Push-Pull pattern.
+ This will "push" messages to be pulled by the "pull" socket.
+
+
+
+
+ Create a new PushSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new PushSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new PushSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+
+ doesn't support sending, so this override throws
+ .
+
+ Receive is not supported.
+
+
+
+ A RequestSocket is a NetMQSocket intended to be used as the Request part of the Request-Response
+ pattern.
+ This is generally paired with a ResponseSocket.
+
+
+
+
+ Create a new RequestSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new RequestSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new RequestSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Try to send request message and return the response as a message, or return null if not successful
+
+ a string denoting the address to connect to
+ The request message
+ The number of times to try
+ The timeout for each request
+ Report topics: Failure, Retry, Send, Success
+ the response message, or null if not successful
+
+
+
+ Try to send request string and return the response string, or return null if not successful
+
+ a string denoting the address to connect to
+ The request string
+ The number of times to try
+ The timeout for each request
+ Report topics: Failure, Retry, Send, Success
+ the response message, or null if not successful
+
+
+
+ A ResponseSocket is a NetMQSocket intended to be used as the Response part of the Request-Response
+ pattern.
+ This is generally paired with a RequestSocket.
+
+
+
+
+ Create a new ResponseSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is bind (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new ResponseSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new ResponseSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Router socket, the first message is always the identity of the sender
+
+
+
+
+ Create a new RouterSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is bind (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new RouterSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new RouterSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ This is a NetMQSocket but provides no additional functionality.
+ You can use it when you need an instance that is a NetMQSocket
+ but with none of the distinguishing behavior of any of the other socket types.
+
+
+ This is provided because NetMQSocket is an abstract class, so you cannot instantiate it directly.
+
+
+
+
+ Create a new StreamSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new StreamSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new StreamSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ A SubscriberSocket is a NetMQSocket intended to be used as the "Sub" in the PubSub pattern.
+ The intended usage is to receive messages from the publisher socket.
+
+
+
+
+ Create a new SubscriberSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new SubscriberSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new SubscriberSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this string prefix.
+ You can set topic to an empty string to subscribe to everything.
+
+
+ this specifies what text-prefix to subscribe to, or may be an empty-string to
+ specify ALL
+
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this string prefix, using the given Encoding.
+ You can set topic to an empty string to subscribe to everything.
+
+
+ this specifies what text-prefix to subscribe to, or may be an empty-string to
+ specify ALL
+
+
+ the character-Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this array of bytes.
+
+ this specifies what byte-array prefix to subscribe to
+
+
+
+ Subscribe this socket to all topics - which means enable this socket to receive
+ all messages regardless of what the string prefix is.
+ This is the same as calling Subscribe with an empty-string for the topic.
+
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a string denoting which the topic to stop receiving
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a string denoting which the topic to stop receiving
+
+ the Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a byte-array denoting which the topic to stop receiving
+
+
+
+ An XPublisherSocket is a NetMQSocket intended to be used as the XPub in the XPub/XSub pattern.
+ The intended usage is for serving, together with a matching XSubscriberSocket,
+ as a stable intermediary between a PublisherSocket and it's SubscriberSockets.
+
+
+
+
+ Create a new XPublisherSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is bind (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new XPublisherSocket(">tcp://127.0.0.1:5555,>127.0.0.1:55556");
+
+
+
+
+ Create a new XPublisherSocket based upon the given .
+
+ the SocketBase to create the new socket from
+
+
+
+ In case of socket set to manual mode will subscribe the last subscriber to the topic
+
+ a string specifying the Topic to subscribe to
+
+
+
+ In case of socket set to manual mode will subscribe the last subscriber to the topic
+
+ a string specifying the Topic to subscribe to
+
+ the character-Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ In case of socket set to manual mode will subscribe the last subscriber to the topic
+
+ a byte-array specifying the Topic to subscribe to
+
+
+
+ In case of socket set to manual mode will unsubscribe the last subscriber from a topic
+
+ a string specifying the Topic to unsubscribe from
+
+
+
+ In case of socket set to manual mode will unsubscribe the last subscriber from a topic
+
+ a string specifying the Topic to unsubscribe from
+
+ the character-Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ In case of socket set to manual mode will unsubscribe the last subscriber from a topic
+
+ a byte-array specifying the Topic to unsubscribe from
+
+
+
+ Publisher sockets generally send a welcome-message to subscribers to give an indication that they have
+ successful subscribed.
+ This method clears that message, such that none is sent.
+
+
+
+
+ Publisher sockets send a welcome-message to subscribers to give an indication that they have
+ successful subscribed.
+ This method is how you set the text of that welcome-message.
+
+ a string denoting the new value for the welcome-message
+
+ the character-Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ Publisher sockets send a welcome-message to subscribers to give an indication that they have
+ successful subscribed.
+ This method is how you set the text of that welcome-message. The Encoding is assumed to be ASCII.
+
+ a string denoting the new value for the welcome-message
+
+
+
+ Publisher sockets send a welcome-message to subscribers to give an indication that they have
+ successful subscribed.
+ This method is how you set the text of that welcome-message. The Encoding is assumed to be ASCII.
+
+ a byte-array denoting the new value for the welcome-message
+
+
+
+ An XSubscriberSocket is a NetMQSocket intended to be used as the XSub in the XPub/XSub pattern.
+ The intended usage is for serving, together with a matching XPublisherSocket,
+ as a stable intermediary between a PublisherSocket and it's SubscriberSockets.
+
+
+
+
+ Create a new XSubscriberSocket and attach socket to zero or more endpoints.
+
+
+ List of NetMQ endpoints, separated by commas and prefixed by '@' (to bind the socket) or '>' (to
+ connect the socket).
+ Default action is connect (if endpoint doesn't start with '@' or '>')
+
+
+ var socket = new XSubscriberSocket(">tcp://127.0.0.1:5555,@127.0.0.1:55556");
+
+
+
+
+ Create a new XSubscriberSocket based upon the given SocketBase.
+
+ the SocketBase to create the new socket from
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this string prefix.
+ You can set topic to an empty string to subscribe to everything.
+
+
+ this specifies what text-prefix to subscribe to, or may be an empty-string to
+ specify ALL
+
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this string prefix, using the given Encoding.
+ You can set topic to an empty string to subscribe to everything.
+
+
+ this specifies what text-prefix to subscribe to, or may be an empty-string to
+ specify ALL
+
+
+ the Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ Subscribe this socket to the given 'topic' - which means enable this socket to receive
+ messages that begin with this array of bytes.
+
+ this specifies what byte-array prefix to subscribe to
+
+
+
+ Subscribe this socket to all topics - which means enable this socket to receive
+ all messages regardless of what the string prefix is.
+ This is the same as calling Subscribe with an empty-string for the topic.
+
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a string denoting which the topic to stop receiving
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a string denoting which the topic to stop receiving
+
+ the Encoding to use when converting the topic string internally into a
+ byte-array
+
+
+
+
+ Remove this socket's subscription to the given topic.
+
+ a byte-array denoting which the topic to stop receiving
+
+
+
+ This enum-type is used to specify the basic type of message-queue socket
+ based upon the intended pattern, such as Pub,Sub, Req,Rep, Dealer,Router, Pull,Push, Xpub,Xsub.
+
+
+
+
+ No socket-type is specified
+
+
+
+
+ This denotes a Pair socket (usually paired with another Pair socket).
+
+
+
+
+ This denotes a Publisher socket (usually paired with a Subscriber socket).
+
+
+
+
+ This denotes a Subscriber socket (usually paired with a Publisher socket).
+
+
+
+
+ This denotes a Request socket (usually paired with a Response socket).
+
+
+
+
+ This denotes a Response socket (usually paired with a Request socket).
+
+
+
+
+ This denotes an Dealer socket.
+
+
+
+
+ This denotes an Router socket.
+
+
+
+
+ This denotes a Pull socket (usually paired with a PUsh socket).
+
+
+
+
+ This denotes a Push socket (usually paired with a Pull socket).
+
+
+
+
+ This denotes an XPublisher socket.
+
+
+
+
+ This denotes an XSubscriber socket.
+
+
+
+
+ This denotes a Stream socket - which is a parent-class to the other socket types.
+
+
+
+
diff --git a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta
similarity index 75%
rename from Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta
rename to Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta
index 2fc13dada..40a8c5366 100644
--- a/Libaries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta
+++ b/Libraries/NetMQ.4.0.0.175-pre/lib/net40/NetMQ.xml.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 8084802c45f29af419dc07cdfb7fa7f4
+guid: caf212a4b9162ee02b82faaa6f2daa24
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/Libaries/Newtonsoft.Json.11.0.2.meta b/Libraries/Newtonsoft.Json.11.0.2.meta
similarity index 77%
rename from Libaries/Newtonsoft.Json.11.0.2.meta
rename to Libraries/Newtonsoft.Json.11.0.2.meta
index ffd2ced13..489a259bd 100644
--- a/Libaries/Newtonsoft.Json.11.0.2.meta
+++ b/Libraries/Newtonsoft.Json.11.0.2.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: c672f7bcab05947f6a3a84fc03146ad2
+guid: 049c5b1045e964c169bcb7fcd2d825bd
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Libaries/Newtonsoft.Json.11.0.2/LICENSE.md b/Libraries/Newtonsoft.Json.11.0.2/LICENSE.md
similarity index 98%
rename from Libaries/Newtonsoft.Json.11.0.2/LICENSE.md
rename to Libraries/Newtonsoft.Json.11.0.2/LICENSE.md
index 6cc88f29b..dfaadbe49 100644
--- a/Libaries/Newtonsoft.Json.11.0.2/LICENSE.md
+++ b/Libraries/Newtonsoft.Json.11.0.2/LICENSE.md
@@ -1,20 +1,20 @@
-The MIT License (MIT)
-
-Copyright (c) 2007 James Newton-King
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+The MIT License (MIT)
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Libaries/Newtonsoft.Json.11.0.2/LICENSE.md.meta b/Libraries/Newtonsoft.Json.11.0.2/LICENSE.md.meta
similarity index 75%
rename from Libaries/Newtonsoft.Json.11.0.2/LICENSE.md.meta
rename to Libraries/Newtonsoft.Json.11.0.2/LICENSE.md.meta
index ace90b94f..1e22a9ec7 100644
--- a/Libaries/Newtonsoft.Json.11.0.2/LICENSE.md.meta
+++ b/Libraries/Newtonsoft.Json.11.0.2/LICENSE.md.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: fe949066e52d046059800c7d5be28102
+guid: ec0a20474242e9c5a957ead47e2aad20
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg b/Libraries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg
similarity index 100%
rename from Libaries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg
rename to Libraries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg
diff --git a/Libraries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta b/Libraries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta
new file mode 100644
index 000000000..30e044d8f
--- /dev/null
+++ b/Libraries/Newtonsoft.Json.11.0.2/Newtonsoft.Json.11.0.2.nupkg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2a67fb365f1cdaecf9f7190f0763b872
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Newtonsoft.Json.11.0.2/lib.meta b/Libraries/Newtonsoft.Json.11.0.2/lib.meta
new file mode 100644
index 000000000..27158ebca
--- /dev/null
+++ b/Libraries/Newtonsoft.Json.11.0.2/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 54e591fba328b1f118f6904660def4a1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/Newtonsoft.Json.11.0.2/lib/net45.meta b/Libraries/Newtonsoft.Json.11.0.2/lib/net45.meta
new file mode 100644
index 000000000..989fd1221
--- /dev/null
+++ b/Libraries/Newtonsoft.Json.11.0.2/lib/net45.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c7371df6ee6281cab87244388fdc606e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll
similarity index 100%
rename from Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll
rename to Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta
similarity index 93%
rename from Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta
rename to Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta
index f1b101010..e27a90942 100644
--- a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta
+++ b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: b0fefeab916fc406eb3577b75def1920
+guid: 7d808a20a317aef63bd763dc0a00f8d1
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml
new file mode 100644
index 000000000..2ea4f66f5
--- /dev/null
+++ b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml
@@ -0,0 +1,18363 @@
+
+
+
+
+ Newtonsoft.Json
+
+
+
+
+ Represents a BSON Oid (object id).
+
+
+
+
+ Gets or sets the value of the Oid.
+
+ The value of the Oid.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The Oid value.
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data.
+
+
+
+
+ Gets or sets a value indicating whether binary data reading should be compatible with incorrect
+ Json.NET 3.5 written binary.
+
+
+ true
+ if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise,
+ false .
+
+
+
+
+ Gets or sets a value indicating whether the root object will be read as a JSON array.
+
+
+ true
+ if the root object will be read as a JSON array; otherwise, false .
+
+
+
+
+ Gets or sets the
+
+ used when reading
+
+ values from BSON.
+
+
+ The
+
+ used when reading
+
+ values from BSON.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ containing the BSON data to read.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ containing the BSON data to read.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ containing the BSON data to read.
+
+
+ if set to true the root object will be read as a JSON array.
+
+
+ The
+
+ used when reading
+
+ values from BSON.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ containing the BSON data to read.
+
+
+ if set to true the root object will be read as a JSON array.
+
+
+ The
+
+ used when reading
+
+ values from BSON.
+
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true
+ if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Changes the reader's state to .
+ If
+
+ is set to true , the underlying
+
+ is also closed.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data.
+
+
+
+
+ Gets or sets the
+
+ used when writing
+
+ values to BSON.
+ When set to
+
+ no conversion will occur.
+
+
+ The
+
+ used when writing
+
+ values to BSON.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ to write to.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ to write to.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying
+
+ and also flushes the underlying stream.
+
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Closes this writer.
+ If
+
+ is set to true , the underlying
+
+ is also closed.
+ If
+
+ is set to true , the JSON is auto-completed.
+
+
+
+
+ Writes a
+
+ value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a [] value.
+
+
+ The [] value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a [] value that represents a BSON object id.
+
+ The Object ID value to write.
+
+
+
+ Writes a BSON regex.
+
+ The regex pattern.
+ The regex options.
+
+
+
+ Specifies how constructors are used when initializing objects during deserialization by the
+ .
+
+
+
+
+ First attempt to use the public default constructor, then fall back to a single parameterized
+ constructor, then to the non-public default constructor.
+
+
+
+
+ Json.NET will use a non-public default constructor before falling back to a parameterized constructor.
+
+
+
+
+ Converts a binary value to and from a base 64 string value.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts a
+
+ to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Creates a custom object.
+
+ The object type to convert.
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Creates an object which will then be populated by the serializer.
+
+ Type of the object.
+ The created object.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Gets a value indicating whether this
+
+ can write JSON.
+
+
+ true
+ if this
+
+ can write JSON; otherwise,
+ false .
+
+
+
+
+ Converts a
+
+ to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true
+ if this instance can convert the specified value type; otherwise, false .
+
+
+
+
+ Converts a
+
+ to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true
+ if this instance can convert the specified value type; otherwise, false .
+
+
+
+
+ Provides a base class for converting a
+
+ to and from JSON.
+
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts a F# discriminated union type to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts an Entity Framework
+
+ to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts an
+
+ to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Gets a value indicating whether this
+
+ can write JSON.
+
+
+ true
+ if this
+
+ can write JSON; otherwise,
+ false .
+
+
+
+
+ Converts a
+
+ to and from the ISO 8601 date format (e.g.
+ "2008-04-12T12:53Z" ).
+
+
+
+
+ Gets or sets the date time styles used when converting a date to and from JSON.
+
+ The date time styles used when converting a date to and from JSON.
+
+
+
+ Gets or sets the date time format used when converting a date to and from JSON.
+
+ The date time format used when converting a date to and from JSON.
+
+
+
+ Gets or sets the culture used when converting a date to and from JSON.
+
+ The culture used when converting a date to and from JSON.
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a
+
+ to and from a JavaScript Date constructor (e.g.
+ new Date(52231943) ).
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a
+
+ to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts a
+
+ to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts an
+
+ to and from its name string value.
+
+
+
+
+ Gets or sets a value indicating whether the written enum text should be camel case.
+ The default value is false .
+
+
+ true
+ if the written enum text will be camel case; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether integer values are allowed when deserializing.
+ The default value is true .
+
+
+ true
+ if integers are allowed when deserializing; otherwise, false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ true
+ if the written enum text will be camel case; otherwise,
+ false .
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts a
+
+ to and from Unix epoch time
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a
+
+ to and from a string (e.g. "1.2.3.4" ).
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Converts XML to and from JSON.
+
+
+
+
+ Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure
+ has produced multiple root elements.
+
+ The name of the deserialized root element.
+
+
+
+ Gets or sets a flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+
+ true
+ if the array attribute is written to the XML; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether to write the root JSON object.
+
+
+ true
+ if the JSON root object is omitted; otherwise, false .
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The calling serializer.
+ The value.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Checks if the
+
+ is a namespace attribute.
+
+ Attribute name to test.
+ The attribute name prefix if it has one, otherwise an empty string.
+
+ true
+ if attribute name is for a namespace attribute, otherwise false .
+
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true
+ if this instance can convert the specified value type; otherwise, false .
+
+
+
+
+ Specifies how dates are formatted when writing JSON text.
+
+
+
+
+ Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z" .
+
+
+
+
+ Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/" .
+
+
+
+
+ Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and
+ "2012-03-21T05:40Z" , are parsed when reading JSON text.
+
+
+
+
+ Date formatted strings are not parsed to a date type and are read as strings.
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z" , are
+ parsed to
+ .
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z" , are
+ parsed to
+ .
+
+
+
+
+ Specifies how to treat the time value when converting between string and
+ .
+
+
+
+
+ Treat as local time. If the
+
+ object represents a Coordinated Universal Time (UTC), it is converted to the local time.
+
+
+
+
+ Treat as a UTC. If the
+
+ object represents a local time, it is converted to a UTC.
+
+
+
+
+ Treat as a local time if a
+
+ is being converted to a string.
+ If a string is being converted to , convert to a local time if a time
+ zone is specified.
+
+
+
+
+ Time zone information should be preserved when converting.
+
+
+
+
+ Specifies default value handling options for the
+ .
+
+
+
+
+
+
+
+
+ Include members where the member value is the same as the member's default value when serializing
+ objects.
+ Included members are written to JSON. Has no effect when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing
+ objects
+ so that it is not written to JSON.
+ This option will ignore all default values (e.g. null for objects and nullable types;
+ 0
+ for integers,
+ decimals and floating point numbers; and false for booleans). The default value ignored can be
+ changed by
+ placing the
+
+ on the property.
+
+
+
+
+ Members with a default value but no JSON will be set to their default value when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing
+ objects
+ and set members to their default value when deserializing.
+
+
+
+
+ Specifies float format handling options when writing special floating point numbers, e.g.
+ ,
+
+ and
+
+ with
+ .
+
+
+
+
+ Write special floating point values as strings in JSON, e.g. "NaN" , "Infinity" ,
+ "-Infinity" .
+
+
+
+
+ Write special floating point values as symbols in JSON, e.g. NaN , Infinity ,
+ -Infinity .
+ Note that this will produce non-valid JSON.
+
+
+
+
+ Write special floating point values as the property's default value in JSON, e.g. 0.0 for a
+
+ property, null for a
+
+ of
+
+ property.
+
+
+
+
+ Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Floating point numbers are parsed to
+ .
+
+
+
+
+ Floating point numbers are parsed to
+ .
+
+
+
+
+ Specifies formatting options for the .
+
+
+
+
+ No special formatting is applied. This is the default.
+
+
+
+
+ Causes child objects to be indented according to the
+
+ and
+
+ settings.
+
+
+
+
+ Provides an interface for using pooled arrays.
+
+ The array type content.
+
+
+
+ Rent an array from the pool. This array must be returned when it is no longer needed.
+
+
+ The minimum required length of the array. The returned array may be
+ longer.
+
+
+ The rented array from the pool. This array must be returned when it is no longer needed.
+
+
+
+
+ Return an array to the pool.
+
+ The array that is being returned.
+
+
+
+ Provides an interface to enable a class to return line and position information.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true
+ if
+
+ and
+
+ can be provided; otherwise,
+ false .
+
+
+
+
+ Gets the current line number.
+
+
+ The current line number or 0 if no line information is available (for example, when
+
+ returns false ).
+
+
+
+
+ Gets the current line position.
+
+
+ The current line position or 0 if no line information is available (for example, when
+
+ returns false ).
+
+
+
+
+ Instructs the
+
+ how to serialize the collection.
+
+
+
+
+ Gets or sets a value indicating whether null items are allowed in the collection.
+
+
+ true
+ if null items are allowed in the collection; otherwise, false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class with a flag indicating whether the array can contain null items.
+
+ A flag indicating whether the array can contain null items.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified container Id.
+
+ The container Id.
+
+
+
+ Instructs the
+
+ to use the specified constructor when deserializing that object.
+
+
+
+
+ Instructs the
+
+ how to serialize the object.
+
+
+
+
+ Gets or sets the id.
+
+ The id.
+
+
+
+ Gets or sets the title.
+
+ The title.
+
+
+
+ Gets or sets the description.
+
+ The description.
+
+
+
+ Gets or sets the collection's items converter.
+
+ The collection's items converter.
+
+
+
+ The parameter list to use when constructing the
+
+ described by
+ .
+ If null , the default constructor is used.
+ When non-null , there must be a constructor defined in the
+
+ that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new
+ object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the
+
+ of the
+ .
+
+
+ The
+
+ of the
+ .
+
+
+
+
+ The parameter list to use when constructing the
+
+ described by
+ .
+ If null , the default constructor is used.
+ When non-null , there must be a constructor defined in the
+
+ that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new
+ object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets a value that indicates whether to preserve object references.
+
+
+ true
+ to keep object reference; otherwise, false . The default is false .
+
+
+
+
+ Gets or sets a value that indicates whether to preserve collection's items references.
+
+
+ true
+ to keep collection's items object references; otherwise, false . The default is
+ false .
+
+
+
+
+ Gets or sets the reference loop handling used when serializing the collection's items.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the type name handling used when serializing the collection's items.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified container Id.
+
+ The container Id.
+
+
+
+ Provides methods for converting between .NET types and JSON types.
+
+
+
+
+
+
+
+ Gets or sets a function that creates default
+ .
+ Default settings are automatically used by serialization methods on
+ ,
+ and
+
+ and
+
+ on
+ .
+ To serialize without using any default settings create a
+
+ with
+ .
+
+
+
+
+ Represents JavaScript's boolean value true as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's boolean value false as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's null as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's undefined as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's positive infinity as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's negative infinity as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's NaN as a string. This field is read-only.
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation using the
+
+ specified.
+
+ The value to convert.
+ The format the date will be converted to.
+ The time zone handling when the date is converted to a string.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation using the
+
+ specified.
+
+ The value to convert.
+ The format the date will be converted to.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+ The string escape handling.
+
+ A JSON string representation of the .
+
+
+
+
+ Converts the
+
+ to its JSON string representation.
+
+ The value to convert.
+
+ A JSON string representation of the .
+
+
+
+
+ Serializes the specified object to a JSON string.
+
+ The object to serialize.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting.
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a collection of
+ .
+
+ The object to serialize.
+ A collection of converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting and a collection of
+ .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+ A collection of converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using
+ .
+
+ The object to serialize.
+
+ The
+
+ used to serialize the object.
+ If this is null , default serialization settings will be used.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and
+ .
+
+ The object to serialize.
+
+ The
+
+ used to serialize the object.
+ If this is null , default serialization settings will be used.
+
+
+ The type of the value being serialized.
+ This parameter is used when
+
+ is
+
+ to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using formatting and
+ .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+
+ The
+
+ used to serialize the object.
+ If this is null , default serialization settings will be used.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and
+ .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+
+ The
+
+ used to serialize the object.
+ If this is null , default serialization settings will be used.
+
+
+ The type of the value being serialized.
+ This parameter is used when
+
+ is
+
+ to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Deserializes the JSON to a .NET object.
+
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to a .NET object using
+ .
+
+ The JSON to deserialize.
+
+ The
+
+ used to deserialize the object.
+ If this is null , default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The JSON to deserialize.
+
+ The
+
+ of object being deserialized.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type.
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type using
+ .
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+
+ The
+
+ used to deserialize the object.
+ If this is null , default serialization settings will be used.
+
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of
+ .
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using
+ .
+
+ The type of the object to deserialize to.
+ The object to deserialize.
+
+ The
+
+ used to deserialize the object.
+ If this is null , default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of
+ .
+
+ The JSON to deserialize.
+ The type of the object to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using
+ .
+
+ The JSON to deserialize.
+ The type of the object to deserialize to.
+
+ The
+
+ used to deserialize the object.
+ If this is null , default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Populates the object with values from the JSON string.
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+
+
+ Populates the object with values from the JSON string using
+ .
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+ The
+
+ used to deserialize the object.
+ If this is null , default serialization settings will be used.
+
+
+
+
+ Serializes the
+
+ to a JSON string.
+
+ The node to serialize.
+
+ A JSON string of the .
+
+
+
+
+ Serializes the
+
+ to a JSON string using formatting.
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+
+ A JSON string of the .
+
+
+
+
+ Serializes the
+
+ to a JSON string using formatting and omits the root object if
+
+ is true .
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+ Omits writing the root object.
+
+ A JSON string of the .
+
+
+
+
+ Deserializes the
+
+ from a JSON string.
+
+ The JSON string.
+
+ The deserialized .
+
+
+
+
+ Deserializes the
+
+ from a JSON string nested in a root element specified by
+ .
+
+ The JSON string.
+
+ The name of the root element to append when deserializing.
+
+
+ The deserialized .
+
+
+
+
+ Deserializes the
+
+ from a JSON string nested in a root element specified by
+
+ and writes a Json.NET array attribute for collections.
+
+ The JSON string.
+
+ The name of the root element to append when deserializing.
+
+
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+
+ The deserialized .
+
+
+
+
+ Serializes the
+
+ to a JSON string.
+
+ The node to convert to JSON.
+
+ A JSON string of the .
+
+
+
+
+ Serializes the
+
+ to a JSON string using formatting.
+
+ The node to convert to JSON.
+ Indicates how the output should be formatted.
+
+ A JSON string of the .
+
+
+
+
+ Serializes the
+
+ to a JSON string using formatting and omits the root object if
+
+ is true .
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+ Omits writing the root object.
+
+ A JSON string of the .
+
+
+
+
+ Deserializes the
+
+ from a JSON string.
+
+ The JSON string.
+
+ The deserialized .
+
+
+
+
+ Deserializes the
+
+ from a JSON string nested in a root element specified by
+ .
+
+ The JSON string.
+
+ The name of the root element to append when deserializing.
+
+
+ The deserialized .
+
+
+
+
+ Deserializes the
+
+ from a JSON string nested in a root element specified by
+
+ and writes a Json.NET array attribute for collections.
+
+ The JSON string.
+
+ The name of the root element to append when deserializing.
+
+
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+
+ The deserialized .
+
+
+
+
+ Converts an object to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Gets a value indicating whether this
+
+ can read JSON.
+
+
+ true
+ if this
+
+ can read JSON; otherwise,
+ false .
+
+
+
+
+ Gets a value indicating whether this
+
+ can write JSON.
+
+
+ true
+ if this
+
+ can write JSON; otherwise,
+ false .
+
+
+
+
+ Converts an object to and from JSON.
+
+ The object type to convert.
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Writes the JSON representation of the object.
+
+
+ The
+
+ to write to.
+
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Reads the JSON representation of the object.
+
+
+ The
+
+ to read from.
+
+ Type of the object.
+
+ The existing value of object being read. If there is no existing value then
+ null
+ will be used.
+
+ The existing value has a value.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true
+ if this instance can convert the specified object type; otherwise, false .
+
+
+
+
+ Instructs the
+
+ to use the specified
+
+ when serializing the member or class.
+
+
+
+
+ Gets the
+
+ of the .
+
+
+ The
+
+ of the .
+
+
+
+
+ The parameter list to use when constructing the
+
+ described by
+ .
+ If null , the default constructor is used.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ Type of the .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ Type of the .
+
+
+ Parameter list to use when constructing the
+ . Can be null .
+
+
+
+
+ Represents a collection of .
+
+
+
+
+ Instructs the
+
+ how to serialize the collection.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified container Id.
+
+ The container Id.
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message and a reference to the inner exception that is the cause of this
+ exception.
+
+ The error message that explains the reason for the exception.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ that holds the serialized object data about the exception being thrown.
+
+
+ The
+
+ that contains contextual information about the source or destination.
+
+
+ The
+
+ parameter is
+ null .
+
+
+ The class name is
+ null
+ or
+
+ is zero (0).
+
+
+
+
+ Instructs the
+
+ to deserialize properties with no matching class member into the specified collection
+ and write values during serialization.
+
+
+
+
+ Gets or sets a value that indicates whether to write extension data when serializing the object.
+
+
+ true
+ to write extension data when serializing the object; otherwise, false . The default is
+ true .
+
+
+
+
+ Gets or sets a value that indicates whether to read extension data when deserializing the object.
+
+
+ true
+ to read extension data when deserializing the object; otherwise, false . The default is
+ true .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Instructs the
+
+ not to serialize the public field or public read/write property value.
+
+
+
+
+ Instructs the
+
+ how to serialize the object.
+
+
+
+
+ Gets or sets the member serialization.
+
+ The member serialization.
+
+
+
+ Gets or sets how the object's properties with null values are handled during serialization and
+ deserialization.
+
+
+ How the object's properties with null values are handled during serialization and
+ deserialization.
+
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified member serialization.
+
+ The member serialization.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified container Id.
+
+ The container Id.
+
+
+
+ Instructs the
+
+ to always serialize the member with the specified name.
+
+
+
+
+ Gets or sets the
+
+ used when serializing the property's collection items.
+
+
+ The collection's items .
+
+
+
+
+ The parameter list to use when constructing the
+
+ described by
+ .
+ If null , the default constructor is used.
+ When non-null , there must be a constructor defined in the
+
+ that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new
+ object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the
+
+ of the
+ .
+
+
+ The
+
+ of the
+ .
+
+
+
+
+ The parameter list to use when constructing the
+
+ described by
+ .
+ If null , the default constructor is used.
+ When non-null , there must be a constructor defined in the
+
+ that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[]
+ { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the null value handling used when serializing this property.
+
+ The null value handling.
+
+
+
+ Gets or sets the default value handling used when serializing this property.
+
+ The default value handling.
+
+
+
+ Gets or sets the reference loop handling used when serializing this property.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the object creation handling used when deserializing this property.
+
+ The object creation handling.
+
+
+
+ Gets or sets the type name handling used when serializing this property.
+
+ The type name handling.
+
+
+
+ Gets or sets whether this property's value is serialized as a reference.
+
+ Whether this property's value is serialized as a reference.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets a value indicating whether this property is required.
+
+
+ A value indicating whether this property is required.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ Gets or sets the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified name.
+
+ Name of the property.
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Asynchronously reads the next JSON token from the source.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns true if the next token was read successfully; false if there are no
+ more tokens to read.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously skips the children of the current token.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a [].
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the []. This result will be null at the end of an
+ array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of
+ . This result will be null at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the . This result will be null at the end of an
+ array.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Specifies the state of the reader.
+
+
+
+
+ A
+
+ read method has not been called.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Reader is at a property.
+
+
+
+
+ Reader is at the start of an object.
+
+
+
+
+ Reader is in an object.
+
+
+
+
+ Reader is at the start of an array.
+
+
+
+
+ Reader is in an array.
+
+
+
+
+ The
+
+ method has been called.
+
+
+
+
+ Reader has just read a value.
+
+
+
+
+ Reader is at the start of a constructor.
+
+
+
+
+ Reader is in a constructor.
+
+
+
+
+ An error occurred that prevents the read operation from continuing.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Gets the current reader state.
+
+ The current reader state.
+
+
+
+ Gets or sets a value indicating whether the source should be closed when this reader is closed.
+
+
+ true
+ to close the source when this reader is closed; otherwise false . The default is
+ true .
+
+
+
+
+ Gets or sets a value indicating whether multiple pieces of JSON content can
+ be read from a continuous stream without erroring.
+
+
+ true
+ to support reading multiple pieces of JSON content; otherwise false .
+ The default is false .
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+ Gets or sets how
+
+ time zones are handled when reading JSON.
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are
+ parsed when reading JSON.
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Gets or sets how custom date formatted strings are parsed when reading JSON.
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
+ .
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+ Gets the .NET type for the current JSON token.
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets or sets the culture used when reading JSON. Defaults to
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Reads the next JSON token from the source.
+
+
+ true
+ if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a .
+
+
+ A . This method will return null at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a [].
+
+
+ A [] or null if the next JSON token is null. This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the source as a
+
+ of
+ .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Skips the children of the current token.
+
+
+
+
+ Sets the current token.
+
+ The new token.
+
+
+
+ Sets the current token and value.
+
+ The new token.
+ The value.
+
+
+
+ Sets the current token and value.
+
+ The new token.
+ The value.
+
+ A flag indicating whether the position index inside an array should be
+ updated.
+
+
+
+
+ Sets the state based on current token type.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true
+ to release both managed and unmanaged resources;
+ false
+ to release only unmanaged resources.
+
+
+
+
+ Changes the reader's state to .
+ If
+
+ is set to true , the source is also closed.
+
+
+
+
+ The exception thrown when an error occurs while reading JSON text.
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message and a reference to the inner exception that is the cause of this
+ exception.
+
+ The error message that explains the reason for the exception.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ that holds the serialized object data about the exception being thrown.
+
+
+ The
+
+ that contains contextual information about the source or destination.
+
+
+ The
+
+ parameter is
+ null .
+
+
+ The class name is
+ null
+ or
+
+ is zero (0).
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message, JSON path, line number, line position, and a reference to the inner
+ exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The path to the JSON where the error occurred.
+ The line number indicating where the error occurred.
+ The line position indicating where the error occurred.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Instructs the
+
+ to always serialize the member, and to require that the member has a value.
+
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message and a reference to the inner exception that is the cause of this
+ exception.
+
+ The error message that explains the reason for the exception.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ that holds the serialized object data about the exception being thrown.
+
+
+ The
+
+ that contains contextual information about the source or destination.
+
+
+ The
+
+ parameter is
+ null .
+
+
+ The class name is
+ null
+ or
+
+ is zero (0).
+
+
+
+
+ Serializes and deserializes objects into and from the JSON format.
+ The
+
+ enables you to control how objects are encoded into JSON.
+
+
+
+
+ Occurs when the
+
+ errors during serialization and deserialization.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving references.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving type names.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving type names.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+ The default value is .
+
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+
+ when deserializing with a value other than
+ .
+
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is
+ .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+ The default value is .
+
+
+
+
+ Gets or sets how reference loops (e.g. a class referencing itself) is handled.
+ The default value is .
+
+
+
+
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are
+ handled during deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how null values are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how default values are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how objects are created during deserialization.
+ The default value is .
+
+ The object creation handling.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+ The default value is .
+
+ The constructor handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+ The default value is .
+
+ The metadata properties handling.
+
+
+
+ Gets a collection
+
+ that will be used during serialization.
+
+
+ Collection
+
+ that will be used during serialization.
+
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Indicates how JSON text output is formatted.
+ The default value is .
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how
+
+ time zones are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and
+ "2012-03-21T05:40Z" , are parsed when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+
+ and
+ ,
+ are written as JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how
+
+ and
+
+ values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" .
+
+
+
+
+ Gets or sets the culture used when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
+ .
+ A null value means there is no maximum.
+ The default value is null .
+
+
+
+
+ Gets a value indicating whether there will be a check for additional JSON content after deserializing
+ an object.
+ The default value is false .
+
+
+ true
+ if there will be a check for additional JSON content after deserializing an object; otherwise,
+ false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Creates a new
+
+ instance.
+ The
+
+ will not use default settings
+ from .
+
+
+ A new
+
+ instance.
+ The
+
+ will not use default settings
+ from .
+
+
+
+
+ Creates a new
+
+ instance using the specified
+ .
+ The
+
+ will not use default settings
+ from .
+
+
+ The settings to be applied to the
+ .
+
+
+ A new
+
+ instance using the specified
+ .
+ The
+
+ will not use default settings
+ from .
+
+
+
+
+ Creates a new
+
+ instance.
+ The
+
+ will use default settings
+ from .
+
+
+ A new
+
+ instance.
+ The
+
+ will use default settings
+ from .
+
+
+
+
+ Creates a new
+
+ instance using the specified
+ .
+ The
+
+ will use default settings
+ from
+
+ as well as the specified
+ .
+
+
+ The settings to be applied to the
+ .
+
+
+ A new
+
+ instance using the specified
+ .
+ The
+
+ will use default settings
+ from
+
+ as well as the specified
+ .
+
+
+
+
+ Populates the JSON values onto the target object.
+
+
+ The
+
+ that contains the JSON structure to reader values from.
+
+ The target object to populate values onto.
+
+
+
+ Populates the JSON values onto the target object.
+
+
+ The
+
+ that contains the JSON structure to reader values from.
+
+ The target object to populate values onto.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ .
+
+
+ The
+
+ that contains the JSON structure to deserialize.
+
+
+ The
+
+ being deserialized.
+
+
+
+
+ Deserializes the JSON structure contained by the specified
+
+ into an instance of the specified type.
+
+
+ The
+
+ containing the object.
+
+
+ The
+
+ of object being deserialized.
+
+
+ The instance of
+
+ being deserialized.
+
+
+
+
+ Deserializes the JSON structure contained by the specified
+
+ into an instance of the specified type.
+
+
+ The
+
+ containing the object.
+
+ The type of the object to deserialize.
+
+ The instance of
+
+ being deserialized.
+
+
+
+
+ Deserializes the JSON structure contained by the specified
+
+ into an instance of the specified type.
+
+
+ The
+
+ containing the object.
+
+
+ The
+
+ of object being deserialized.
+
+
+ The instance of
+
+ being deserialized.
+
+
+
+
+ Serializes the specified
+
+ and writes the JSON structure
+ using the specified .
+
+
+ The
+
+ used to write the JSON structure.
+
+
+ The
+
+ to serialize.
+
+
+
+
+ Serializes the specified
+
+ and writes the JSON structure
+ using the specified .
+
+
+ The
+
+ used to write the JSON structure.
+
+
+ The
+
+ to serialize.
+
+
+ The type of the value being serialized.
+ This parameter is used when
+
+ is
+
+ to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+
+
+ Serializes the specified
+
+ and writes the JSON structure
+ using the specified .
+
+
+ The
+
+ used to write the JSON structure.
+
+
+ The
+
+ to serialize.
+
+
+ The type of the value being serialized.
+ This parameter is used when
+
+ is Auto to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+
+
+ Serializes the specified
+
+ and writes the JSON structure
+ using the specified .
+
+
+ The
+
+ used to write the JSON structure.
+
+
+ The
+
+ to serialize.
+
+
+
+
+ Specifies the settings on a
+
+ object.
+
+
+
+
+ Gets or sets how reference loops (e.g. a class referencing itself) are handled.
+ The default value is .
+
+ Reference loop handling.
+
+
+
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are
+ handled during deserialization.
+ The default value is .
+
+ Missing member handling.
+
+
+
+ Gets or sets how objects are created during deserialization.
+ The default value is .
+
+ The object creation handling.
+
+
+
+ Gets or sets how null values are handled during serialization and deserialization.
+ The default value is .
+
+ Null value handling.
+
+
+
+ Gets or sets how default values are handled during serialization and deserialization.
+ The default value is .
+
+ The default value handling.
+
+
+
+ Gets or sets a
+
+ collection that will be used during serialization.
+
+ The converters.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+ The default value is .
+
+ The preserve references handling.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+ The default value is .
+
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+
+ when deserializing with a value other than
+ .
+
+ The type name handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+ The default value is .
+
+ The metadata properties handling.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is
+ .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+ The default value is .
+
+ The constructor handling.
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+ The contract resolver.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving references.
+
+ The reference resolver.
+
+
+
+ Gets or sets a function that creates the
+
+ used by the serializer when resolving references.
+
+
+ A function that creates the
+
+ used by the serializer when resolving references.
+
+
+
+
+ Gets or sets the
+
+ used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving type names.
+
+ The binder.
+
+
+
+ Gets or sets the
+
+ used by the serializer when resolving type names.
+
+ The binder.
+
+
+
+ Gets or sets the error handler called during serialization and deserialization.
+
+ The error handler called during serialization and deserialization.
+
+
+
+ Gets or sets the
+
+ used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Gets or sets how
+
+ and
+
+ values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" .
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a
+ .
+ A null value means there is no maximum.
+ The default value is null .
+
+
+
+
+ Indicates how JSON text output is formatted.
+ The default value is .
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how
+
+ time zones are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and
+ "2012-03-21T05:40Z" , are parsed when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+
+ and
+ ,
+ are written as JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets the culture used when reading JSON.
+ The default value is .
+
+
+
+
+ Gets a value indicating whether there will be a check for additional content after deserializing an
+ object.
+ The default value is false .
+
+
+ true
+ if there will be a check for additional content after deserializing an object; otherwise,
+ false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
+
+
+
+
+ Asynchronously reads the next JSON token from the source.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns true if the next token was read successfully; false if there are no
+ more tokens to read.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a [].
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the []. This result will be null at the end of an
+ array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of
+ . This result will be null at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a
+
+ of .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the
+
+ of . This result will be
+ null
+ at the end of an array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously reads the next JSON token from the source as a .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous read. The
+
+ property returns the . This result will be null at the end of an
+ array.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified
+ .
+
+
+ The
+
+ containing the JSON data to read.
+
+
+
+
+ Gets or sets the reader's character buffer pool.
+
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true
+ if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+ .
+
+
+ A . This method will return null at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+ [].
+
+
+ A [] or null if the next JSON token is null. This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Changes the reader's state to .
+ If
+
+ is set to true , the underlying
+
+ is also closed.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true
+ if
+
+ and
+
+ can be provided; otherwise,
+ false .
+
+
+
+
+ Gets the current line number.
+
+
+ The current line number or 0 if no line information is available (for example,
+
+ returns false ).
+
+
+
+
+ Gets the current line position.
+
+
+ The current line position or 0 if no line information is available (for example,
+
+ returns false ).
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the JSON value delimiter.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the specified end token.
+
+ The end token to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously closes this writer.
+ If
+
+ is set to true , the destination is also closed.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the end of the current JSON object or array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes indent characters.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes an indent space.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a null value.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+ A flag to indicate whether the text should be escaped when it is written as a JSON
+ property name.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the beginning of a JSON array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the beginning of a JSON object.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes an undefined value.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the given white space.
+
+ The string of white space characters.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a [] value.
+
+
+ The [] value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the end of an array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the end of a constructor.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes the end of a JSON object.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+
+ Gets or sets the writer's character array pool.
+
+
+
+
+ Gets or sets how many s to write for each
+ level in the hierarchy when
+
+ is set to
+ .
+
+
+
+
+ Gets or sets which character to use to quote attribute values.
+
+
+
+
+ Gets or sets which character to use for indenting when
+
+ is set to
+ .
+
+
+
+
+ Gets or sets a value indicating whether object names will be surrounded with quotes.
+
+
+
+
+ Initializes a new instance of the
+
+ class using the specified
+ .
+
+
+ The
+
+ to write to.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying
+
+ and also flushes the underlying
+ .
+
+
+
+
+ Closes this writer.
+ If
+
+ is set to true , the underlying
+
+ is also closed.
+ If
+
+ is set to true , the JSON is auto-completed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+ A flag to indicate whether the text should be escaped when it is written as a JSON
+ property name.
+
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a
+
+ value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a [] value.
+
+
+ The [] value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the given white space.
+
+ The string of white space characters.
+
+
+
+ Specifies the type of JSON token.
+
+
+
+
+ This is returned by the
+
+ if a read method has not been called.
+
+
+
+
+ An object start token.
+
+
+
+
+ An array start token.
+
+
+
+
+ A constructor start token.
+
+
+
+
+ An object property name.
+
+
+
+
+ A comment.
+
+
+
+
+ Raw JSON.
+
+
+
+
+ An integer.
+
+
+
+
+ A float.
+
+
+
+
+ A string.
+
+
+
+
+ A boolean.
+
+
+
+
+ A null token.
+
+
+
+
+ An undefined token.
+
+
+
+
+ An object end token.
+
+
+
+
+ An array end token.
+
+
+
+
+ A constructor end token.
+
+
+
+
+ A Date.
+
+
+
+
+ Byte data.
+
+
+
+
+
+ Represents a reader that provides
+
+ validation.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Sets an event handler for receiving schema validation errors.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+
+ Gets the .NET type for the current JSON token.
+
+
+
+
+
+ Initializes a new instance of the
+
+ class that
+ validates the content returned from the given .
+
+
+ The
+
+ to read from while validating.
+
+
+
+
+ Gets or sets the schema.
+
+ The schema.
+
+
+
+ Gets the
+
+ used to construct this
+ .
+
+
+ The
+
+ specified in the constructor.
+
+
+
+
+ Changes the reader's state to .
+ If
+
+ is set to true , the underlying
+
+ is also closed.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of .
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+ [].
+
+
+ A [] or null if the next JSON token is null.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of .
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of .
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of .
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+ .
+
+
+ A . This method will return null at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of . This method will return
+ null
+ at the end of an array.
+
+
+
+
+ Reads the next JSON token from the underlying
+
+ as a
+
+ of .
+
+
+ A
+
+ of .
+
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true
+ if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Asynchronously closes this writer.
+ If
+
+ is set to true , the destination is also closed.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the specified end token.
+
+ The end token to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes indent characters.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the JSON value delimiter.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes an indent space.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the end of the current JSON object or array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the end of an array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the end of a constructor.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the end of a JSON object.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a null value.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+ A flag to indicate whether the text should be escaped when it is written as a JSON
+ property name.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the beginning of a JSON array.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the beginning of a JSON object.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the current
+
+ token.
+
+
+ The
+
+ to read the token from.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the current
+
+ token.
+
+
+ The
+
+ to read the token from.
+
+
+ A flag indicating whether the current token's children should be written.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the
+
+ token and its value.
+
+
+ The
+
+ to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the
+
+ token and its value.
+
+
+ The
+
+ to write.
+
+
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the
+
+ property name for
+ .
+ null
+ can be passed to the method for tokens that don't have a value, e.g.
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a [] value.
+
+
+ The [] value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes an undefined value.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously writes the given white space.
+
+ The string of white space characters.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Asynchronously ets the state of the .
+
+
+ The
+
+ being written.
+
+ The value being written.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous operation.
+
+
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+
+ Gets or sets a value indicating whether the destination should be closed when this writer is closed.
+
+
+ true
+ to close the destination when this writer is closed; otherwise false . The default is
+ true .
+
+
+
+
+ Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed.
+
+
+ true
+ to auto-complete the JSON when this writer is closed; otherwise false . The default is
+ true .
+
+
+
+
+ Gets the top.
+
+ The top.
+
+
+
+ Gets the state of the writer.
+
+
+
+
+ Gets the path of the writer.
+
+
+
+
+ Gets or sets a value indicating how JSON text output should be formatted.
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+
+
+
+
+ Gets or sets how
+
+ time zones are handled when writing JSON text.
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+
+ and
+ ,
+ are written to JSON text.
+
+
+
+
+ Gets or sets how
+
+ and
+
+ values are formatted when writing JSON text.
+
+
+
+
+ Gets or sets the culture used when writing JSON. Defaults to
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Flushes whatever is in the buffer to the destination and also flushes the destination.
+
+
+
+
+ Closes this writer.
+ If
+
+ is set to true , the destination is also closed.
+ If
+
+ is set to true , the JSON is auto-completed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the end of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the end of an array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end constructor.
+
+
+
+
+ Writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+ A flag to indicate whether the text should be escaped when it is written as a JSON
+ property name.
+
+
+
+
+ Writes the end of the current JSON object or array.
+
+
+
+
+ Writes the current
+
+ token and its children.
+
+
+ The
+
+ to read the token from.
+
+
+
+
+ Writes the current
+
+ token.
+
+
+ The
+
+ to read the token from.
+
+
+ A flag indicating whether the current token's children should be written.
+
+
+
+
+ Writes the
+
+ token and its value.
+
+
+ The
+
+ to write.
+
+
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the
+
+ property name for
+ .
+ null
+ can be passed to the method for tokens that don't have a value, e.g.
+ .
+
+
+
+
+ Writes the
+
+ token.
+
+
+ The
+
+ to write.
+
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a
+
+ of
+
+ value.
+
+
+ The
+
+ of
+
+ value to write.
+
+
+
+
+ Writes a [] value.
+
+
+ The [] value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the given white space.
+
+ The string of white space characters.
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+
+ true
+ to release both managed and unmanaged resources;
+ false
+ to release only unmanaged resources.
+
+
+
+
+ Sets the state of the .
+
+
+ The
+
+ being written.
+
+ The value being written.
+
+
+
+ The exception thrown when an error occurs while writing JSON text.
+
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message and a reference to the inner exception that is the cause of this
+ exception.
+
+ The error message that explains the reason for the exception.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ that holds the serialized object data about the exception being thrown.
+
+
+ The
+
+ that contains contextual information about the source or destination.
+
+
+ The
+
+ parameter is
+ null .
+
+
+ The class name is
+ null
+ or
+
+ is zero (0).
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message, JSON path and a reference to the inner exception that is the cause of
+ this exception.
+
+ The error message that explains the reason for the exception.
+ The path to the JSON where the error occurred.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Specifies how JSON comments are handled when loading JSON.
+
+
+
+
+ Ignore comments.
+
+
+
+
+ Load comments as a
+
+ with type
+ .
+
+
+
+
+ Contains the LINQ to JSON extension methods.
+
+
+
+
+ Returns a collection of tokens that contains the ancestors of every token in the source collection.
+
+
+ The type of the objects in source, constrained to
+ .
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains the ancestors of every token in the source collection.
+
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the ancestors
+ of every token in the source collection.
+
+
+ The type of the objects in source, constrained to
+ .
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains every token in the source collection, the ancestors of every token in the source
+ collection.
+
+
+
+
+ Returns a collection of tokens that contains the descendants of every token in the source collection.
+
+
+ The type of the objects in source, constrained to
+ .
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains the descendants of every token in the source collection.
+
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the descendants
+ of every token in the source collection.
+
+
+ The type of the objects in source, constrained to
+ .
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains every token in the source collection, and the descendants of every token in the source
+ collection.
+
+
+
+
+ Returns a collection of child properties of every object in the source collection.
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains the properties of every object in the source collection.
+
+
+
+
+ Returns a collection of child values of every object in the source collection with the given key.
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+ The token key.
+
+ An
+
+ of
+
+ that contains the values of every token in the source collection with the given key.
+
+
+
+
+ Returns a collection of child values of every object in the source collection.
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains the values of every token in the source collection.
+
+
+
+
+ Returns a collection of converted child values of every object in the source collection with the given
+ key.
+
+ The type to convert the values to.
+
+ An
+
+ of
+
+ that contains the source collection.
+
+ The token key.
+
+ An
+
+ that contains the converted values of every token in the source collection with the given key.
+
+
+
+
+ Returns a collection of converted child values of every object in the source collection.
+
+ The type to convert the values to.
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ that contains the converted values of every token in the source collection.
+
+
+
+
+ Converts the value.
+
+ The type to convert the value to.
+
+ A
+
+ cast as a
+
+ of
+ .
+
+ A converted value.
+
+
+
+ Converts the value.
+
+ The source collection type.
+ The type to convert the value to.
+
+ A
+
+ cast as a
+
+ of
+ .
+
+ A converted value.
+
+
+
+ Returns a collection of child tokens of every array in the source collection.
+
+ The source collection type.
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ An
+
+ of
+
+ that contains the values of every token in the source collection.
+
+
+
+
+ Returns a collection of converted child tokens of every array in the source collection.
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+ The type to convert the values to.
+ The source collection type.
+
+ An
+
+ that contains the converted values of every token in the source collection.
+
+
+
+
+ Returns the input typed as .
+
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ The input typed as .
+
+
+
+
+ Returns the input typed as .
+
+ The source collection type.
+
+ An
+
+ of
+
+ that contains the source collection.
+
+
+ The input typed as .
+
+
+
+
+ Represents a collection of
+
+ objects.
+
+ The type of token.
+
+
+
+ Gets the
+
+ of
+
+ with the specified key.
+
+
+
+
+
+ Represents a JSON array.
+
+
+
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ representing the asynchronous load. The
+
+ property contains the JSON that was read from the specified
+ .
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ representing the asynchronous load. The
+
+ property contains the JSON that was read from the specified
+ .
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified content.
+
+ The contents of the array.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified content.
+
+ The contents of the array.
+
+
+
+ Loads an
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Loads an
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+
+
+
+
+ Creates a
+
+ from an object.
+
+
+ The object that will be used to create
+ .
+
+
+ A
+
+ with the values of the specified object.
+
+
+
+
+ Creates a
+
+ from an object.
+
+
+ The object that will be used to create
+ .
+
+
+ The
+
+ that will be used to read the object.
+
+
+ A
+
+ with the values of the specified object.
+
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+
+
+ Gets the
+
+ with the specified key.
+
+
+ The
+
+ with the specified key.
+
+
+
+
+ Gets or sets the
+
+ at the specified index.
+
+
+
+
+
+ Determines the index of a specific item in the .
+
+
+ The object to locate in the .
+
+
+ The index of
+
+ if found in the list; otherwise, -1.
+
+
+
+
+ Inserts an item to the
+
+ at the specified index.
+
+
+ The zero-based index at which
+
+ should be inserted.
+
+
+ The object to insert into the .
+
+
+
+ is not a valid index in the
+ .
+
+
+
+
+ Removes the
+
+ item at the specified index.
+
+ The zero-based index of the item to remove.
+
+
+ is not a valid index in the
+ .
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A
+
+ of
+
+ that can be used to iterate through the collection.
+
+
+
+
+ Adds an item to the .
+
+
+ The object to add to the .
+
+
+
+
+ Removes all items from the .
+
+
+
+
+ Determines whether the
+
+ contains a specific value.
+
+
+ The object to locate in the .
+
+
+ true
+ if
+
+ is found in the
+ ; otherwise, false .
+
+
+
+
+ Copies the elements of the
+
+ to an array, starting at a particular array index.
+
+ The array.
+ Index of the array.
+
+
+
+ Gets a value indicating whether the
+
+ is read-only.
+
+
+ true
+ if the
+
+ is read-only; otherwise,
+ false .
+
+
+
+
+ Removes the first occurrence of a specific object from the
+ .
+
+
+ The object to remove from the .
+
+
+ true
+ if
+
+ was successfully removed from the
+ ; otherwise, false . This method also returns
+ false
+ if
+
+ is not found in the original
+ .
+
+
+
+
+ Represents a JSON constructor.
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous load. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous load. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets or sets the name of this constructor.
+
+ The constructor name.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified name.
+
+ The constructor name.
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+
+
+ Gets the
+
+ with the specified key.
+
+
+ The
+
+ with the specified key.
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Represents a token that can contain other tokens.
+
+
+
+
+ Occurs when the list changes or an item in the list changes.
+
+
+
+
+ Occurs before an item is added to the collection.
+
+
+
+
+ Occurs when the items list of the collection has changed, or the collection is reset.
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Raises the
+
+ event.
+
+
+ The
+
+ instance containing the event data.
+
+
+
+
+ Raises the
+
+ event.
+
+
+ The
+
+ instance containing the event data.
+
+
+
+
+ Raises the
+
+ event.
+
+
+ The
+
+ instance containing the event data.
+
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true
+ if this token has child values; otherwise, false .
+
+
+
+
+ Get the first child token of this token.
+
+
+ A
+
+ containing the first child token of the
+ .
+
+
+
+
+ Get the last child token of this token.
+
+
+ A
+
+ containing the last child token of the
+ .
+
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+
+ An
+
+ of
+
+ containing the child tokens of this
+ , in document order.
+
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+
+ A
+
+ containing the child values of this
+ , in document order.
+
+
+
+
+ Returns a collection of the descendant tokens for this token in document order.
+
+
+ An
+
+ of
+
+ containing the descendant tokens of the
+ .
+
+
+
+
+ Returns a collection of the tokens that contain this token, and all descendant tokens of this token,
+ in document order.
+
+
+ An
+
+ of
+
+ containing this token, and all the descendant tokens of the
+ .
+
+
+
+
+ Adds the specified content as children of this .
+
+ The content to be added.
+
+
+
+ Adds the specified content as the first children of this
+ .
+
+ The content to be added.
+
+
+
+ Creates a
+
+ that can be used to add tokens to the
+ .
+
+
+ A
+
+ that is ready to have content written to it.
+
+
+
+
+ Replaces the child nodes of this token with the specified content.
+
+ The content.
+
+
+
+ Removes the child nodes from this token.
+
+
+
+
+ Merge the specified content into this .
+
+ The content to be merged.
+
+
+
+ Merge the specified content into this
+
+ using
+ .
+
+ The content to be merged.
+
+ The
+
+ used to merge the content.
+
+
+
+
+ Gets the count of child JSON tokens.
+
+ The count of child JSON tokens.
+
+
+
+ Represents a collection of
+
+ objects.
+
+ The type of token.
+
+
+
+ An empty collection of
+
+ objects.
+
+
+
+
+ Initializes a new instance of the
+
+ struct.
+
+ The enumerable.
+
+
+
+ Returns an enumerator that can be used to iterate through the collection.
+
+
+ A
+
+ that can be used to iterate through the collection.
+
+
+
+
+ Gets the
+
+ of
+
+ with the specified key.
+
+
+
+
+
+ Determines whether the specified
+
+ is equal to this instance.
+
+
+ The
+
+ to compare with this instance.
+
+
+ true
+ if the specified
+
+ is equal to this instance; otherwise,
+ false .
+
+
+
+
+ Determines whether the specified
+
+ is equal to this instance.
+
+
+ The
+
+ to compare with this instance.
+
+
+ true
+ if the specified
+
+ is equal to this instance; otherwise,
+ false .
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash
+ table.
+
+
+
+
+ Represents a JSON object.
+
+
+
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous load. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous load. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Occurs when a property value changes.
+
+
+
+
+ Occurs when a property value is changing.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the specified content.
+
+ The contents of the object.
+
+
+
+ Initializes a new instance of the
+
+ class with the specified content.
+
+ The contents of the object.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets an
+
+ of
+
+ of this object's properties.
+
+
+ An
+
+ of
+
+ of this object's properties.
+
+
+
+
+ Gets a
+
+ the specified name.
+
+ The property name.
+
+ A
+
+ with the specified name or
+ null
+ .
+
+
+
+
+ Gets a
+
+ of
+
+ of this object's property values.
+
+
+ A
+
+ of
+
+ of this object's property values.
+
+
+
+
+ Gets the
+
+ with the specified key.
+
+
+ The
+
+ with the specified key.
+
+
+
+
+ Gets or sets the
+
+ with the specified property name.
+
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+ is not valid JSON.
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+ is not valid JSON.
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+ is not valid JSON.
+
+
+
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+ is not valid JSON.
+
+
+
+
+
+
+
+ Creates a
+
+ from an object.
+
+
+ The object that will be used to create
+ .
+
+
+ A
+
+ with the values of the specified object.
+
+
+
+
+ Creates a
+
+ from an object.
+
+
+ The object that will be used to create
+ .
+
+
+ The
+
+ that will be used to read the object.
+
+
+ A
+
+ with the values of the specified object.
+
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+
+
+ Gets the
+
+ with the specified property name.
+
+ Name of the property.
+
+ The
+
+ with the specified property name.
+
+
+
+
+ Gets the
+
+ with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the
+
+ will be used to match a property.
+
+ Name of the property.
+
+ One of the enumeration values that specifies how the strings will be
+ compared.
+
+
+ The
+
+ with the specified property name.
+
+
+
+
+ Tries to get the
+
+ with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the
+
+ will be used to match a property.
+
+ Name of the property.
+ The value.
+
+ One of the enumeration values that specifies how the strings will be
+ compared.
+
+
+ true
+ if a value was successfully retrieved; otherwise, false .
+
+
+
+
+ Adds the specified property name.
+
+ Name of the property.
+ The value.
+
+
+
+ Determines whether the JSON object has the specified property name.
+
+ Name of the property.
+
+ true
+ if the JSON object has the specified property name; otherwise, false .
+
+
+
+
+ Removes the property with the specified name.
+
+ Name of the property.
+
+ true
+ if item was successfully removed; otherwise, false .
+
+
+
+
+ Tries to get the
+
+ with the specified property name.
+
+ Name of the property.
+ The value.
+
+ true
+ if a value was successfully retrieved; otherwise, false .
+
+
+
+
+ Returns an enumerator that can be used to iterate through the collection.
+
+
+ A
+
+ that can be used to iterate through the collection.
+
+
+
+
+ Raises the
+
+ event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Raises the
+
+ event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Returns the
+
+ responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The
+
+ to bind this object.
+
+
+
+
+ Represents a JSON property.
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ representing the asynchronous creation. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Asynchronously loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ representing the asynchronous creation. The
+
+ property returns a
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the property name.
+
+ The property name.
+
+
+
+ Gets or sets the property value.
+
+ The property value.
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The property name.
+ The property content.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The property name.
+ The property content.
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Loads a
+
+ from a
+ .
+
+
+ A
+
+ that will be read for the content of the
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the JSON that was read from the specified
+ .
+
+
+
+
+ Represents a view of a .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The name.
+
+
+
+ When overridden in a derived class, returns whether resetting an object changes its value.
+
+
+ true
+ if resetting the component changes its value; otherwise, false .
+
+ The component to test for reset capability.
+
+
+
+ When overridden in a derived class, gets the current value of the property on a component.
+
+
+ The value of a property for a given component.
+
+ The component with the property for which to retrieve the value.
+
+
+
+ When overridden in a derived class, resets the value for this property of the component to the default
+ value.
+
+
+ The component with the property value that is to be reset to the default
+ value.
+
+
+
+
+ When overridden in a derived class, sets the value of the component to a different value.
+
+ The component with the property value that is to be set.
+ The new value.
+
+
+
+ When overridden in a derived class, determines a value indicating whether the value of this property
+ needs to be persisted.
+
+
+ true
+ if the property should be persisted; otherwise, false .
+
+ The component with the property to be examined for persistence.
+
+
+
+ When overridden in a derived class, gets the type of the component this property is bound to.
+
+
+ A
+
+ that represents the type of component this property is bound to.
+ When the
+
+ or
+
+ methods are invoked, the object specified might be an instance of this type.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether this property is read-only.
+
+
+ true
+ if the property is read-only; otherwise, false .
+
+
+
+
+ When overridden in a derived class, gets the type of the property.
+
+
+ A
+
+ that represents the type of the property.
+
+
+
+
+ Gets the hash code for the name of the member.
+
+
+
+ The hash code for the name of the member.
+
+
+
+
+ Represents a raw JSON string.
+
+
+
+
+ Asynchronously creates an instance of
+
+ with the content of the reader's current token.
+
+ The reader.
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ representing the asynchronous creation. The
+
+ property returns an instance of
+
+ with the content of the reader's current token.
+
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The raw json.
+
+
+
+ Creates an instance of
+
+ with the content of the reader's current token.
+
+ The reader.
+
+ An instance of
+
+ with the content of the reader's current token.
+
+
+
+
+ Specifies the settings used when loading JSON.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Gets or sets how JSON comments are handled when loading JSON.
+
+ The JSON comment handling.
+
+
+
+ Gets or sets how JSON line info is handled when loading JSON.
+
+ The JSON line info handling.
+
+
+
+ Specifies the settings used when merging JSON.
+
+
+
+
+ Gets or sets the method used when merging JSON arrays.
+
+ The method used when merging JSON arrays.
+
+
+
+ Gets or sets how null value properties are merged.
+
+ How null value properties are merged.
+
+
+
+ Represents an abstract JSON token.
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Asynchronously creates a
+
+ from a
+ .
+
+
+ An
+
+ positioned at the token to read into this
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous creation. The
+
+ property returns a
+
+ that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a
+
+ from a
+ .
+
+
+ An
+
+ positioned at the token to read into this
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous creation. The
+
+ property returns a
+
+ that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a
+
+ from a
+ .
+
+
+ A
+
+ positioned at the token to read into this
+ .
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous creation. The
+
+ property returns a
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a
+
+ from a
+ .
+
+
+ A
+
+ positioned at the token to read into this
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ The token to monitor for cancellation requests. The default value is
+ .
+
+
+ A
+
+ that represents the asynchronous creation. The
+
+ property returns a
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Gets a comparer that can compare two tokens for value equality.
+
+
+ A
+
+ that can compare two nodes for value equality.
+
+
+
+
+ Gets or sets the parent.
+
+ The parent.
+
+
+
+ Gets the root
+
+ of this
+ .
+
+
+ The root
+
+ of this
+ .
+
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true
+ if this token has child values; otherwise, false .
+
+
+
+
+ Compares the values of two tokens, including the values of all descendant tokens.
+
+
+ The first
+
+ to compare.
+
+
+ The second
+
+ to compare.
+
+
+ true
+ if the tokens are equal; otherwise false .
+
+
+
+
+ Gets the next sibling token of this node.
+
+
+ The
+
+ that contains the next sibling token.
+
+
+
+
+ Gets the previous sibling token of this node.
+
+
+ The
+
+ that contains the previous sibling token.
+
+
+
+
+ Gets the path of the JSON token.
+
+
+
+
+ Adds the specified content immediately after this token.
+
+
+ A content object that contains simple content or a collection of content objects
+ to be added after this token.
+
+
+
+
+ Adds the specified content immediately before this token.
+
+
+ A content object that contains simple content or a collection of content objects
+ to be added before this token.
+
+
+
+
+ Returns a collection of the ancestor tokens of this token.
+
+ A collection of the ancestor tokens of this token.
+
+
+
+ Returns a collection of tokens that contain this token, and the ancestors of this token.
+
+ A collection of tokens that contain this token, and the ancestors of this token.
+
+
+
+ Returns a collection of the sibling tokens after this token, in document order.
+
+ A collection of the sibling tokens after this tokens, in document order.
+
+
+
+ Returns a collection of the sibling tokens before this token, in document order.
+
+ A collection of the sibling tokens before this token, in document order.
+
+
+
+ Gets the
+
+ with the specified key.
+
+
+ The
+
+ with the specified key.
+
+
+
+
+ Gets the
+
+ with the specified key converted to the specified type.
+
+ The type to convert the token to.
+ The token key.
+ The converted token value.
+
+
+
+ Get the first child token of this token.
+
+
+ A
+
+ containing the first child token of the
+ .
+
+
+
+
+ Get the last child token of this token.
+
+
+ A
+
+ containing the last child token of the
+ .
+
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+
+ An
+
+ of
+
+ containing the child tokens of this
+ , in document order.
+
+
+
+
+ Returns a collection of the child tokens of this token, in document order, filtered by the specified
+ type.
+
+ The type to filter the child tokens on.
+
+ A
+
+ containing the child tokens of this
+ , in document order.
+
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+
+ A
+
+ containing the child values of this
+ , in document order.
+
+
+
+
+ Removes this token from its parent.
+
+
+
+
+ Replaces this token with the specified token.
+
+ The value.
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+
+
+ Returns the indented JSON for this token.
+
+
+ The indented JSON for this token.
+
+
+
+
+ Returns the JSON for this token using the given formatting and converters.
+
+ Indicates how the output should be formatted.
+
+ A collection of s which will be
+ used when writing the token.
+
+ The JSON for this token using the given formatting and converters.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of
+
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ [].
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of
+
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+
+ of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from
+
+ to
+ .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from [] to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ to
+ .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Performs an implicit conversion from
+
+ of
+
+ to .
+
+
+ The value to create a
+
+ from.
+
+
+ The
+
+ initialized with the specified value.
+
+
+
+
+ Creates a
+
+ for this token.
+
+
+ A
+
+ that can be used to read this token and its descendants.
+
+
+
+
+ Creates a
+
+ from an object.
+
+
+ The object that will be used to create
+ .
+
+
+ A
+
+ with the value of the specified object.
+
+
+
+
+ Creates a
+
+ from an object using the specified
+ .
+
+
+ The object that will be used to create
+ .
+
+
+ The
+
+ that will be used when reading the object.
+
+
+ A
+
+ with the value of the specified object.
+
+
+
+
+ Creates an instance of the specified .NET type from the
+ .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the
+ .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the
+
+ using the specified
+ .
+
+ The object type that the token will be deserialized to.
+
+ The
+
+ that will be used when creating the object.
+
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the
+
+ using the specified
+ .
+
+ The object type that the token will be deserialized to.
+
+ The
+
+ that will be used when creating the object.
+
+ The new object created from the JSON value.
+
+
+
+ Creates a
+
+ from a
+ .
+
+
+ A
+
+ positioned at the token to read into this
+ .
+
+
+ A
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a
+
+ from a
+ .
+
+
+ An
+
+ positioned at the token to read into this
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+
+ Load a
+
+ from a string that contains JSON.
+
+
+ A
+
+ that contains JSON.
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ populated from the string that contains JSON.
+
+
+
+
+ Creates a
+
+ from a
+ .
+
+
+ A
+
+ positioned at the token to read into this
+ .
+
+
+ The
+
+ used to load the JSON.
+ If this is null , default load settings will be used.
+
+
+ A
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a
+
+ from a
+ .
+
+
+ A
+
+ positioned at the token to read into this
+ .
+
+
+ A
+
+ that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Selects a
+
+ using a JPath expression. Selects the token that matches the object path.
+
+
+ A
+
+ that contains a JPath expression.
+
+
+ A , or null .
+
+
+
+
+ Selects a
+
+ using a JPath expression. Selects the token that matches the object path.
+
+
+ A
+
+ that contains a JPath expression.
+
+
+ A flag to indicate whether an error should be thrown if no tokens are
+ found when evaluating part of the expression.
+
+
+ A .
+
+
+
+
+ Selects a collection of elements using a JPath expression.
+
+
+ A
+
+ that contains a JPath expression.
+
+
+ An
+
+ of
+
+ that contains the selected elements.
+
+
+
+
+ Selects a collection of elements using a JPath expression.
+
+
+ A
+
+ that contains a JPath expression.
+
+
+ A flag to indicate whether an error should be thrown if no tokens are
+ found when evaluating part of the expression.
+
+
+ An
+
+ of
+
+ that contains the selected elements.
+
+
+
+
+ Returns the
+
+ responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The
+
+ to bind this object.
+
+
+
+
+ Returns the
+
+ responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The
+
+ to bind this object.
+
+
+
+
+ Creates a new instance of the . All child tokens are
+ recursively cloned.
+
+
+ A new instance of the .
+
+
+
+
+ Adds an object to the annotation list of this .
+
+ The annotation to add.
+
+
+
+ Get the first annotation object of the specified type from this
+ .
+
+ The type of the annotation to retrieve.
+
+ The first annotation object that matches the specified type, or null if no annotation is
+ of the specified type.
+
+
+
+
+ Gets the first annotation object of the specified type from this
+ .
+
+
+ The
+
+ of the annotation to retrieve.
+
+
+ The first annotation object that matches the specified type, or null if no annotation is
+ of the specified type.
+
+
+
+
+ Gets a collection of annotations of the specified type for this
+ .
+
+ The type of the annotations to retrieve.
+
+ An
+
+ that contains the annotations for this
+ .
+
+
+
+
+ Gets a collection of annotations of the specified type for this
+ .
+
+
+ The
+
+ of the annotations to retrieve.
+
+
+ An
+
+ of
+
+ that contains the annotations that match the specified type for this
+ .
+
+
+
+
+ Removes the annotations of the specified type from this
+ .
+
+ The type of annotations to remove.
+
+
+
+ Removes the annotations of the specified type from this
+ .
+
+
+ The
+
+ of annotations to remove.
+
+
+
+
+ Compares tokens to determine whether they are equal.
+
+
+
+
+ Determines whether the specified objects are equal.
+
+
+ The first object of type
+
+ to compare.
+
+
+ The second object of type
+
+ to compare.
+
+
+ true
+ if the specified objects are equal; otherwise, false .
+
+
+
+
+ Returns a hash code for the specified object.
+
+
+ The
+
+ for which a hash code is to be returned.
+
+ A hash code for the specified object.
+
+ The type of
+
+ is a reference type and
+
+ is null .
+
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Gets the
+
+ at the reader's current position.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The token to read from.
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true
+ if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Specifies the type of token.
+
+
+
+
+ No token type has been set.
+
+
+
+
+ A JSON object.
+
+
+
+
+ A JSON array.
+
+
+
+
+ A JSON constructor.
+
+
+
+
+ A JSON object property.
+
+
+
+
+ A comment.
+
+
+
+
+ An integer value.
+
+
+
+
+ A float value.
+
+
+
+
+ A string value.
+
+
+
+
+ A boolean value.
+
+
+
+
+ A null value.
+
+
+
+
+ An undefined value.
+
+
+
+
+ A date value.
+
+
+
+
+ A raw JSON value.
+
+
+
+
+ A collection of bytes value.
+
+
+
+
+ A Guid value.
+
+
+
+
+ A Uri value.
+
+
+
+
+ A TimeSpan value.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets the
+
+ at the writer's current position.
+
+
+
+
+ Gets the token being written.
+
+ The token being written.
+
+
+
+ Initializes a new instance of the
+
+ class writing to the given
+ .
+
+ The container being written to.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying
+ .
+
+
+
+
+ Closes this writer.
+ If
+
+ is set to true , the JSON is auto-completed.
+
+
+ Setting
+
+ to true has no additional effect, since the underlying
+
+ is a type that cannot be closed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes a
+
+ value.
+ An error will be raised if the value cannot be written as a single JSON token.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a [] value.
+
+
+ The [] value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Writes a
+
+ value.
+
+
+ The
+
+ value to write.
+
+
+
+
+ Represents a value in JSON (string, integer, date, etc).
+
+
+
+
+ Writes this token to a
+
+ asynchronously.
+
+
+ A
+
+ into which this method will write.
+
+ The token to monitor for cancellation requests.
+
+ A collection of
+
+ which will be used when writing the token.
+
+
+ A
+
+ that represents the asynchronous write operation.
+
+
+
+
+ Initializes a new instance of the
+
+ class from another
+
+ object.
+
+
+ A
+
+ object to copy from.
+
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the
+
+ class with the given value.
+
+ The value.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true
+ if this token has child values; otherwise, false .
+
+
+
+
+ Creates a
+
+ comment with the given value.
+
+ The value.
+
+ A
+
+ comment with the given value.
+
+
+
+
+ Creates a
+
+ string with the given value.
+
+ The value.
+
+ A
+
+ string with the given value.
+
+
+
+
+ Creates a
+
+ null value.
+
+
+ A
+
+ null value.
+
+
+
+
+ Creates a
+
+ undefined value.
+
+
+ A
+
+ undefined value.
+
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets or sets the underlying token value.
+
+ The underlying token value.
+
+
+
+ Writes this token to a .
+
+
+ A
+
+ into which this method will write.
+
+
+ A collection of s which will be
+ used when writing the token.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ true
+ if the current object is equal to the
+
+ parameter; otherwise,
+ false .
+
+ An object to compare with this object.
+
+
+
+ Determines whether the specified
+
+ is equal to the current
+ .
+
+
+ The
+
+ to compare with the current
+ .
+
+
+ true
+ if the specified
+
+ is equal to the current
+ ; otherwise, false .
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a
+
+ that represents this instance.
+
+
+ A
+
+ that represents this instance.
+
+
+
+
+ Returns a
+
+ that represents this instance.
+
+ The format.
+
+ A
+
+ that represents this instance.
+
+
+
+
+ Returns a
+
+ that represents this instance.
+
+ The format provider.
+
+ A
+
+ that represents this instance.
+
+
+
+
+ Returns a
+
+ that represents this instance.
+
+ The format.
+ The format provider.
+
+ A
+
+ that represents this instance.
+
+
+
+
+ Returns the
+
+ responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The
+
+ to bind this object.
+
+
+
+
+ Compares the current instance with another object of the same type and returns an integer that
+ indicates whether the current instance precedes, follows, or occurs in the same position in the sort
+ order as the other object.
+
+ An object to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return
+ value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than .
+ Zero
+ This instance is equal to .
+ Greater than zero
+ This instance is greater than .
+
+
+
+ is not of the same type as this instance.
+
+
+
+
+ Specifies how line information is handled when loading JSON.
+
+
+
+
+ Ignore line information.
+
+
+
+
+ Load line information.
+
+
+
+
+ Specifies how JSON arrays are merged together.
+
+
+
+ Concatenate arrays.
+
+
+ Union arrays, skipping items that already exist.
+
+
+ Replace all array items.
+
+
+ Merge array items together, matched by index.
+
+
+
+ Specifies how null value properties are merged.
+
+
+
+
+ The content's null value properties will be ignored during merging.
+
+
+
+
+ The content's null value properties will be merged.
+
+
+
+
+ Specifies the member serialization options for the
+ .
+
+
+
+
+ All public members are serialized by default. Members can be excluded using
+
+ or
+ .
+ This is the default member serialization mode.
+
+
+
+
+ Only members marked with
+
+ or
+
+ are serialized.
+ This member serialization mode can also be set by marking the class with
+ .
+
+
+
+
+ All public and private fields are serialized. Members can be excluded using
+
+ or
+ .
+ This member serialization mode can also be set by marking the class with
+
+ and setting IgnoreSerializableAttribute on
+
+ to false .
+
+
+
+
+ Specifies metadata property handling options for the
+ .
+
+
+
+
+ Read metadata properties located at the start of a JSON object.
+
+
+
+
+ Read metadata properties located anywhere in a JSON object. Note that this setting will impact
+ performance.
+
+
+
+
+ Do not try to read metadata properties.
+
+
+
+
+ Specifies missing member handling options for the
+ .
+
+
+
+
+ Ignore a missing member and do not attempt to deserialize it.
+
+
+
+
+ Throw a
+
+ when a missing member is encountered during deserialization.
+
+
+
+
+ Specifies null value handling options for the
+
+ .
+
+
+
+
+
+
+
+
+ Include null values when serializing and deserializing objects.
+
+
+
+
+ Ignore null values when serializing and deserializing objects.
+
+
+
+
+ Specifies how object creation is handled by the
+ .
+
+
+
+
+ Reuse existing objects, create new objects when needed.
+
+
+
+
+ Only reuse existing objects.
+
+
+
+
+ Always create new objects.
+
+
+
+
+ Specifies reference handling options for the .
+ Note that references cannot be preserved when a value is set via a non-default constructor such as
+ types that implement
+ .
+
+
+
+
+
+
+
+ Do not preserve references when serializing types.
+
+
+
+
+ Preserve references when serializing into a JSON object structure.
+
+
+
+
+ Preserve references when serializing into a JSON array structure.
+
+
+
+
+ Preserve references when serializing.
+
+
+
+
+ Specifies reference loop handling options for the
+ .
+
+
+
+
+ Throw a
+
+ when a loop is encountered.
+
+
+
+
+ Ignore loop references and do not serialize.
+
+
+
+
+ Serialize loop references.
+
+
+
+
+ Indicating whether a property is required.
+
+
+
+
+ The property is not required. The default state.
+
+
+
+
+ The property must be defined in JSON but can be a null value.
+
+
+
+
+ The property must be defined in JSON and cannot be a null value.
+
+
+
+
+ The property is not required but it cannot be a null value.
+
+
+
+
+
+ Contains the JSON schema extension methods.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+
+ Determines whether the
+
+ is valid.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+ The source
+
+ to test.
+
+ The schema to test with.
+
+ true
+ if the specified
+
+ is valid; otherwise,
+ false .
+
+
+
+
+
+ Determines whether the
+
+ is valid.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+ The source
+
+ to test.
+
+ The schema to test with.
+
+ When this method returns, contains any error messages generated while
+ validating.
+
+
+ true
+ if the specified
+
+ is valid; otherwise,
+ false .
+
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+ The source
+
+ to test.
+
+ The schema to test with.
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+ The source
+
+ to test.
+
+ The schema to test with.
+ The validation event handler.
+
+
+
+
+ An in-memory representation of a JSON Schema.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Gets or sets the id.
+
+
+
+
+ Gets or sets the title.
+
+
+
+
+ Gets or sets whether the object is required.
+
+
+
+
+ Gets or sets whether the object is read-only.
+
+
+
+
+ Gets or sets whether the object is visible to users.
+
+
+
+
+ Gets or sets whether the object is transient.
+
+
+
+
+ Gets or sets the description of the object.
+
+
+
+
+ Gets or sets the types of values allowed by the object.
+
+ The type.
+
+
+
+ Gets or sets the pattern.
+
+ The pattern.
+
+
+
+ Gets or sets the minimum length.
+
+ The minimum length.
+
+
+
+ Gets or sets the maximum length.
+
+ The maximum length.
+
+
+
+ Gets or sets a number that the value should be divisible by.
+
+ A number that the value should be divisible by.
+
+
+
+ Gets or sets the minimum.
+
+ The minimum.
+
+
+
+ Gets or sets the maximum.
+
+ The maximum.
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the
+ minimum
+ attribute ( ).
+
+
+ A flag indicating whether the value can not equal the number defined by the
+ minimum
+ attribute ( ).
+
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the
+ maximum
+ attribute ( ).
+
+
+ A flag indicating whether the value can not equal the number defined by the
+ maximum
+ attribute ( ).
+
+
+
+
+ Gets or sets the minimum number of items.
+
+ The minimum number of items.
+
+
+
+ Gets or sets the maximum number of items.
+
+ The maximum number of items.
+
+
+
+ Gets or sets the
+
+ of items.
+
+
+ The
+
+ of items.
+
+
+
+
+ Gets or sets a value indicating whether items in an array are validated using the
+
+ instance at their array position from
+ .
+
+
+ true
+ if items are validated using their array position; otherwise, false .
+
+
+
+
+ Gets or sets the
+
+ of additional items.
+
+
+ The
+
+ of additional items.
+
+
+
+
+ Gets or sets a value indicating whether additional items are allowed.
+
+
+ true
+ if additional items are allowed; otherwise, false .
+
+
+
+
+ Gets or sets whether the array items must be unique.
+
+
+
+
+ Gets or sets the
+
+ of properties.
+
+
+ The
+
+ of properties.
+
+
+
+
+ Gets or sets the
+
+ of additional properties.
+
+
+ The
+
+ of additional properties.
+
+
+
+
+ Gets or sets the pattern properties.
+
+ The pattern properties.
+
+
+
+ Gets or sets a value indicating whether additional properties are allowed.
+
+
+ true
+ if additional properties are allowed; otherwise, false .
+
+
+
+
+ Gets or sets the required property if this property is present.
+
+ The required property if this property is present.
+
+
+
+ Gets or sets the a collection of valid enum values allowed.
+
+ A collection of valid enum values allowed.
+
+
+
+ Gets or sets disallowed types.
+
+ The disallowed types.
+
+
+
+ Gets or sets the default value.
+
+ The default value.
+
+
+
+ Gets or sets the collection of
+
+ that this schema extends.
+
+
+ The collection of
+
+ that this schema extends.
+
+
+
+
+ Gets or sets the format.
+
+ The format.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Reads a
+
+ from the specified
+ .
+
+
+ The
+
+ containing the JSON Schema to read.
+
+
+ The
+
+ object representing the JSON Schema.
+
+
+
+
+ Reads a
+
+ from the specified
+ .
+
+
+ The
+
+ containing the JSON Schema to read.
+
+
+ The
+
+ to use when resolving schema references.
+
+
+ The
+
+ object representing the JSON Schema.
+
+
+
+
+ Load a
+
+ from a string that contains JSON Schema.
+
+
+ A
+
+ that contains JSON Schema.
+
+
+ A
+
+ populated from the string that contains JSON Schema.
+
+
+
+
+ Load a
+
+ from a string that contains JSON Schema using the specified
+ .
+
+
+ A
+
+ that contains JSON Schema.
+
+ The resolver.
+
+ A
+
+ populated from the string that contains JSON Schema.
+
+
+
+
+ Writes this schema to a .
+
+
+ A
+
+ into which this method will write.
+
+
+
+
+ Writes this schema to a
+
+ using the specified
+ .
+
+
+ A
+
+ into which this method will write.
+
+ The resolver used.
+
+
+
+ Returns a
+
+ that represents the current
+ .
+
+
+ A
+
+ that represents the current .
+
+
+
+
+
+ Returns detailed information about the schema exception.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the
+
+ class
+ with a specified error message and a reference to the inner exception that is the cause of this
+ exception.
+
+ The error message that explains the reason for the exception.
+
+ The exception that is the cause of the current exception, or
+ null
+ if no inner exception is specified.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The
+
+ that holds the serialized object data about the exception being thrown.
+
+
+ The
+
+ that contains contextual information about the source or destination.
+
+
+ The
+
+ parameter is
+ null .
+
+
+ The class name is
+ null
+ or
+
+ is zero (0).
+
+
+
+
+
+ Generates a
+
+ from a specified
+ .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Gets or sets how undefined schemas are handled by the serializer.
+
+
+
+
+ Gets or sets the contract resolver.
+
+ The contract resolver.
+
+
+
+ Generate a
+
+ from the specified type.
+
+
+ The type to generate a
+
+ from.
+
+
+ A
+
+ generated from the specified type.
+
+
+
+
+ Generate a
+
+ from the specified type.
+
+
+ The type to generate a
+
+ from.
+
+
+ The
+
+ used to resolve schema references.
+
+
+ A
+
+ generated from the specified type.
+
+
+
+
+ Generate a
+
+ from the specified type.
+
+
+ The type to generate a
+
+ from.
+
+
+ Specify whether the generated root
+
+ will be nullable.
+
+
+ A
+
+ generated from the specified type.
+
+
+
+
+ Generate a
+
+ from the specified type.
+
+
+ The type to generate a
+
+ from.
+
+
+ The
+
+ used to resolve schema references.
+
+
+ Specify whether the generated root
+
+ will be nullable.
+
+
+ A
+
+ generated from the specified type.
+
+
+
+
+
+ Resolves
+
+ from an id.
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Gets or sets the loaded schemas.
+
+ The loaded schemas.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Gets a
+
+ for the specified reference.
+
+ The id.
+
+ A
+
+ for the specified reference.
+
+
+
+
+
+ The value types allowed by the .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ No type specified.
+
+
+
+
+ String type.
+
+
+
+
+ Float type.
+
+
+
+
+ Integer type.
+
+
+
+
+ Boolean type.
+
+
+
+
+ Object type.
+
+
+
+
+ Array type.
+
+
+
+
+ Null type.
+
+
+
+
+ Any type.
+
+
+
+
+
+ Specifies undefined schema Id handling options for the
+ .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Do not infer a schema Id.
+
+
+
+
+ Use the .NET type name as the schema Id.
+
+
+
+
+ Use the assembly qualified .NET type name as the schema Id.
+
+
+
+
+
+ Returns detailed information related to the
+ .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ Gets the
+
+ associated with the validation error.
+
+ The JsonSchemaException associated with the validation error.
+
+
+
+ Gets the path of the JSON location where the validation error occurred.
+
+ The path of the JSON location where the validation error occurred.
+
+
+
+ Gets the text description corresponding to the validation error.
+
+ The text description.
+
+
+
+
+ Represents the callback method that will handle JSON schema validation events and the
+ .
+
+
+ JSON Schema validation has been moved to its own package. See
+ http://www.newtonsoft.com/jsonschema
+ for more details.
+
+
+
+
+
+ A camel case naming strategy.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a
+
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a
+
+ .
+
+
+ A flag indicating whether extension data names should be processed.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Resolves member mappings for a type, camel casing property names.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Used by
+
+ to resolve a
+
+ for a given
+ .
+
+
+
+
+ Gets a value indicating whether members are being get and set using dynamic code generation.
+ This value is determined by the runtime permissions available.
+
+
+ true
+ if using dynamic code generation; otherwise, false .
+
+
+
+
+ Gets or sets the default members search flags.
+
+ The default members search flags.
+
+
+
+ Gets or sets a value indicating whether compiler generated members should be serialized.
+
+
+ true
+ if serialized compiler generated members; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether to ignore the
+
+ interface when serializing and deserializing types.
+
+
+ true
+ if the
+
+ interface will be ignored when serializing and deserializing types; otherwise,
+ false .
+
+
+
+
+ Gets or sets a value indicating whether to ignore the
+
+ attribute when serializing and deserializing types.
+
+
+ true
+ if the
+
+ attribute will be ignored when serializing and deserializing types; otherwise,
+ false .
+
+
+
+
+ Gets or sets a value indicating whether to ignore IsSpecified members when serializing and
+ deserializing types.
+
+
+ true
+ if the IsSpecified members will be ignored when serializing and deserializing types; otherwise,
+ false .
+
+
+
+
+ Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and
+ deserializing types.
+
+
+ true
+ if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise,
+ false .
+
+
+
+
+ Gets or sets the naming strategy used to resolve how property names and dictionary keys are
+ serialized.
+
+
+ The naming strategy used to resolve how property names and dictionary keys are serialized.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Gets the serializable members for the type.
+
+ The type to get serializable members for.
+ The serializable members for the type.
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates the constructor parameters.
+
+ The constructor to create properties for.
+ The type's member properties.
+
+ Properties for the given .
+
+
+
+
+ Creates a
+
+ for the given
+ .
+
+ The matching member property.
+ The constructor parameter.
+
+ A created
+
+ for the given
+ .
+
+
+
+
+ Resolves the default
+
+ for the contract.
+
+ Type of the object.
+
+ The contract's default .
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates a
+
+ for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Determines which contract type is created for the given type.
+
+ Type of the object.
+
+ A
+
+ for the given type.
+
+
+
+
+ Creates properties for the given .
+
+ The type to create properties for.
+ ///
+ The member serialization mode for the type.
+
+ Properties for the given .
+
+
+
+
+ Creates the
+
+ used by the serializer to get and set values from a member.
+
+ The member.
+
+ The
+
+ used by the serializer to get and set values from a member.
+
+
+
+
+ Creates a
+
+ for the given
+ .
+
+
+ The member's parent
+ .
+
+
+ The member to create a
+
+ for.
+
+
+ A created
+
+ for the given
+ .
+
+
+
+
+ Resolves the name of the property.
+
+ Name of the property.
+ Resolved name of the property.
+
+
+
+ Resolves the name of the extension data. By default no changes are made to extension data names.
+
+ Name of the extension data.
+ Resolved name of the extension data.
+
+
+
+ Resolves the key of the dictionary. By default
+
+ is used to resolve dictionary keys.
+
+ Key of the dictionary.
+ Resolved key of the dictionary.
+
+
+
+ Gets the resolved name of the property.
+
+ Name of the property.
+ Name of the property.
+
+
+
+ The default naming strategy. Property names and dictionary keys are unchanged.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ The default serialization binder used when resolving and loading classes from type names.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+
+
+ Specifies the
+
+ name of the serialized object.
+
+
+ Specifies the
+
+ name of the serialized object.
+
+
+ The type of the object the formatter creates a new instance of.
+
+
+
+
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+
+ The type of the object the formatter creates a new instance of.
+
+ Specifies the
+
+ name of the serialized object.
+
+
+ Specifies the
+
+ name of the serialized object.
+
+
+
+
+ Represents a trace writer that writes to the application's
+
+ instances.
+
+
+
+
+ Gets the
+
+ that will be used to filter the trace messages passed to the writer.
+ For example a filter level of
+
+ will exclude
+
+ messages and include
+ ,
+
+ and
+
+ messages.
+
+
+ The
+
+ that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+
+ The
+
+ at which to write this trace.
+
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Get and set values for a
+
+ using dynamic methods.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Provides information surrounding an error.
+
+
+
+
+ Gets the error.
+
+ The error.
+
+
+
+ Gets the original object that caused the error.
+
+ The original object that caused the error.
+
+
+
+ Gets the member that caused the error.
+
+ The member that caused the error.
+
+
+
+ Gets the path of the JSON location where the error occurred.
+
+ The path of the JSON location where the error occurred.
+
+
+
+ Gets or sets a value indicating whether this
+
+ is handled.
+
+
+ true
+ if handled; otherwise, false .
+
+
+
+
+ Provides data for the Error event.
+
+
+
+
+ Gets the current object the error event is being raised against.
+
+ The current object the error event is being raised against.
+
+
+
+ Gets the error context.
+
+ The error context.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The current object.
+ The error context.
+
+
+
+ Get and set values for a
+
+ using dynamic methods.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Provides methods to get attributes.
+
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+
+ When true , look up the hierarchy chain for the inherited custom attribute.
+
+
+ A collection of s, or an empty collection.
+
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no
+ attributes.
+
+ The type of the attributes.
+
+ When true , look up the hierarchy chain for the inherited custom attribute.
+
+
+ A collection of s, or an empty collection.
+
+
+
+
+ Used by
+
+ to resolve a
+
+ for a given
+ .
+
+
+
+
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Used to resolve references when serializing and deserializing JSON by the
+ .
+
+
+
+
+ Resolves a reference to its object.
+
+ The serialization context.
+ The reference to resolve.
+ The object that was resolved from the reference.
+
+
+
+ Gets the reference for the specified object.
+
+ The serialization context.
+ The object to get a reference for.
+ The reference to the object.
+
+
+
+ Determines whether the specified object is referenced.
+
+ The serialization context.
+ The object to test for a reference.
+
+ true
+ if the specified object is referenced; otherwise, false .
+
+
+
+
+ Adds a reference to the specified object.
+
+ The serialization context.
+ The reference.
+ The object to reference.
+
+
+
+ Allows users to control class loading and mandate what class to load.
+
+
+
+
+ When implemented, controls the binding of a serialized object to a type.
+
+
+ Specifies the
+
+ name of the serialized object.
+
+
+ Specifies the
+
+ name of the serialized object
+
+ The type of the object the formatter creates a new instance of.
+
+
+
+ When implemented, controls the binding of a serialized object to a type.
+
+ The type of the object the formatter creates a new instance of.
+
+ Specifies the
+
+ name of the serialized object.
+
+
+ Specifies the
+
+ name of the serialized object.
+
+
+
+
+ Represents a trace writer.
+
+
+
+
+ Gets the
+
+ that will be used to filter the trace messages passed to the writer.
+ For example a filter level of
+
+ will exclude
+
+ messages and include
+ ,
+
+ and
+
+ messages.
+
+
+ The
+
+ that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+
+ The
+
+ at which to write this trace.
+
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Provides methods to get and set values.
+
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets the
+
+ of the collection items.
+
+
+ The
+
+ of the collection items.
+
+
+
+
+ Gets a value indicating whether the collection type is a multidimensional array.
+
+
+ true
+ if the collection type is a multidimensional array; otherwise, false .
+
+
+
+
+ Gets or sets the function used to create the object. When set this function will override
+ .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the collection values.
+
+
+ true
+ if the creator has a parameter with the collection values; otherwise,
+ false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets or sets the default collection items .
+
+ The converter.
+
+
+
+ Gets or sets a value indicating whether the collection items preserve object references.
+
+
+ true
+ if collection items preserve object references; otherwise, false .
+
+
+
+
+ Gets or sets the collection item reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the collection item type name handling.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Handles
+
+ serialization callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+
+
+
+ Handles
+
+ serialization error callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+ The error context.
+
+
+
+ Sets extension data for an object during deserialization.
+
+ The object to set extension data on.
+ The extension data key.
+ The extension data value.
+
+
+
+ Gets extension data for an object during serialization.
+
+ The object to set extension data on.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets the underlying type for the contract.
+
+ The underlying type for the contract.
+
+
+
+ Gets or sets the type created during deserialization.
+
+ The type created during deserialization.
+
+
+
+ Gets or sets whether this type contract is serialized as a reference.
+
+ Whether this type contract is serialized as a reference.
+
+
+
+ Gets or sets the default
+
+ for this contract.
+
+ The converter.
+
+
+
+ Gets or sets all methods called immediately after deserialization of the object.
+
+ The methods called immediately after deserialization of the object.
+
+
+
+ Gets or sets all methods called during deserialization of the object.
+
+ The methods called during deserialization of the object.
+
+
+
+ Gets or sets all methods called after serialization of the object graph.
+
+ The methods called after serialization of the object graph.
+
+
+
+ Gets or sets all methods called before serialization of the object.
+
+ The methods called before serialization of the object.
+
+
+
+ Gets or sets all method called when an error is thrown during the serialization of the object.
+
+ The methods called when an error is thrown during the serialization of the object.
+
+
+
+ Gets or sets the default creator method used to create the object.
+
+ The default creator method used to create the object.
+
+
+
+ Gets or sets a value indicating whether the default creator is non-public.
+
+
+ true
+ if the default object creator is non-public; otherwise, false .
+
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets or sets the dictionary key resolver.
+
+ The dictionary key resolver.
+
+
+
+ Gets the
+
+ of the dictionary keys.
+
+
+ The
+
+ of the dictionary keys.
+
+
+
+
+ Gets the
+
+ of the dictionary values.
+
+
+ The
+
+ of the dictionary values.
+
+
+
+
+ Gets or sets the function used to create the object. When set this function will override
+ .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the dictionary values.
+
+
+ true
+ if the creator has a parameter with the dictionary values; otherwise,
+ false .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets the object's properties.
+
+ The object's properties.
+
+
+
+ Gets or sets the property name resolver.
+
+ The property name resolver.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets or sets the
+
+ object constructor.
+
+
+ The
+
+ object constructor.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Gets or sets the object member serialization.
+
+ The member object serialization.
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Gets or sets how the object's properties with null values are handled during serialization and
+ deserialization.
+
+
+ How the object's properties with null values are handled during serialization and
+ deserialization.
+
+
+
+
+ Gets the object's properties.
+
+ The object's properties.
+
+
+
+ Gets a collection of
+
+ instances that define the parameters used with
+ .
+
+
+
+
+ Gets or sets the function used to create the object. When set this function will override
+ .
+ This function is called with a collection of arguments which are defined by the
+
+ collection.
+
+ The function used to create the object.
+
+
+
+ Gets or sets the extension data setter.
+
+
+
+
+ Gets or sets the extension data getter.
+
+
+
+
+ Gets or sets the extension data value type.
+
+
+
+
+ Gets or sets the extension data name resolver.
+
+ The extension data name resolver.
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Maps a JSON property to a .NET member or constructor parameter.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the type that declared this property.
+
+ The type that declared this property.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets the name of the underlying member or parameter.
+
+ The name of the underlying member or parameter.
+
+
+
+ Gets the
+
+ that will get and set the
+
+ during serialization.
+
+
+ The
+
+ that will get and set the
+
+ during serialization.
+
+
+
+
+ Gets or sets the
+
+ for this property.
+
+
+ The
+
+ for this property.
+
+
+
+
+ Gets or sets the type of the property.
+
+ The type of the property.
+
+
+
+ Gets or sets the
+
+ for the property.
+ If set this converter takes precedence over the contract converter for the property type.
+
+ The converter.
+
+
+
+ Gets or sets the member converter.
+
+ The member converter.
+
+
+
+ Gets or sets a value indicating whether this
+
+ is ignored.
+
+
+ true
+ if ignored; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether this
+
+ is readable.
+
+
+ true
+ if readable; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether this
+
+ is writable.
+
+
+ true
+ if writable; otherwise, false .
+
+
+
+
+ Gets or sets a value indicating whether this
+
+ has a member attribute.
+
+
+ true
+ if has a member attribute; otherwise, false .
+
+
+
+
+ Gets the default value.
+
+ The default value.
+
+
+
+ Gets or sets a value indicating whether this
+
+ is required.
+
+
+ A value indicating whether this
+
+ is required.
+
+
+
+
+ Gets or sets a value indicating whether this property preserves object references.
+
+
+ true
+ if this instance is reference; otherwise, false .
+
+
+
+
+ Gets or sets the property null value handling.
+
+ The null value handling.
+
+
+
+ Gets or sets the property default value handling.
+
+ The default value handling.
+
+
+
+ Gets or sets the property reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the property object creation handling.
+
+ The object creation handling.
+
+
+
+ Gets or sets or sets the type name handling.
+
+ The type name handling.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialized.
+
+ A predicate used to determine whether the property should be serialized.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be deserialized.
+
+ A predicate used to determine whether the property should be deserialized.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialized.
+
+ A predicate used to determine whether the property should be serialized.
+
+
+
+ Gets or sets an action used to set whether the property has been deserialized.
+
+ An action used to set whether the property has been deserialized.
+
+
+
+ Returns a
+
+ that represents this instance.
+
+
+ A
+
+ that represents this instance.
+
+
+
+
+ Gets or sets the converter used when serializing the property's collection items.
+
+ The collection's items converter.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Gets or sets the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ A collection of
+
+ objects.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The type.
+
+
+
+ When implemented in a derived class, extracts the key from the specified element.
+
+ The element from which to extract the key.
+ The key for the specified element.
+
+
+
+ Adds a
+
+ object.
+
+ The property to add to the collection.
+
+
+
+ Gets the closest matching
+
+ object.
+ First attempts to get an exact case match of
+
+ and then
+ a case insensitive match.
+
+ Name of the property.
+ A matching property if found.
+
+
+
+ Gets a property by property name.
+
+ The name of the property to get.
+ Type property name string comparison.
+ A matching property if found.
+
+
+
+ Contract details for a
+
+ used by the
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The underlying type for the contract.
+
+
+
+ Lookup and create an instance of the
+
+ type described by the argument.
+
+
+ The
+
+ type to create.
+
+
+ Optional arguments to pass to an initializing constructor of the JsonConverter.
+ If null , the default constructor is used.
+
+
+
+
+ Represents a trace writer that writes to memory. When the trace message limit is
+ reached then old trace messages will be removed as new messages are added.
+
+
+
+
+ Gets the
+
+ that will be used to filter the trace messages passed to the writer.
+ For example a filter level of
+
+ will exclude
+
+ messages and include
+ ,
+
+ and
+
+ messages.
+
+
+ The
+
+ that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+
+ The
+
+ at which to write this trace.
+
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Returns an enumeration of the most recent trace messages.
+
+ An enumeration of the most recent trace messages.
+
+
+
+ Returns a
+
+ of the most recent trace messages.
+
+
+ A
+
+ of the most recent trace messages.
+
+
+
+
+ A base class for resolving how property names and dictionary keys are serialized.
+
+
+
+
+ A flag indicating whether dictionary keys should be processed.
+ Defaults to false .
+
+
+
+
+ A flag indicating whether extension data names should be processed.
+ Defaults to false .
+
+
+
+
+ A flag indicating whether explicitly specified property names,
+ e.g. a property name customized with a
+
+ , should be processed.
+ Defaults to false .
+
+
+
+
+ Gets the serialized name for a given property name.
+
+ The initial property name.
+
+ A flag indicating whether the property has had a name explicitly
+ specified.
+
+ The serialized property name.
+
+
+
+ Gets the serialized name for a given extension data name.
+
+ The initial extension data name.
+ The serialized extension data name.
+
+
+
+ Gets the serialized key for a given dictionary key.
+
+ The initial dictionary key.
+ The serialized dictionary key.
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Represents a method that constructs an object.
+
+ The object type to create.
+
+
+
+ When applied to a method, specifies that the method is called when an error occurs serializing an
+ object.
+
+
+
+
+ Provides methods to get attributes from a ,
+ ,
+
+ or
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ The instance to get attributes for. This parameter should be a
+ , ,
+
+ or
+ .
+
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+
+ When true , look up the hierarchy chain for the inherited custom attribute.
+
+
+ A collection of s, or an empty collection.
+
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no
+ attributes.
+
+ The type of the attributes.
+
+ When true , look up the hierarchy chain for the inherited custom attribute.
+
+
+ A collection of s, or an empty collection.
+
+
+
+
+ Get and set values for a
+
+ using reflection.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ A snake case naming strategy.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a
+
+ .
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a
+
+ .
+
+
+ A flag indicating whether extension data names should be processed.
+
+
+
+
+ Initializes a new instance of the
+
+ class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Specifies how strings are escaped when writing JSON text.
+
+
+
+
+ Only control characters (e.g. newline) are escaped.
+
+
+
+
+ All non-ASCII and control characters (e.g. newline) are escaped.
+
+
+
+
+ HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped.
+
+
+
+
+ Indicates the method that will be used during deserialization for locating and loading assemblies.
+
+
+
+
+ In simple mode, the assembly used during deserialization need not match exactly the assembly used
+ during serialization. Specifically, the version numbers need not match as the
+ LoadWithPartialName
+ method of the
+
+ class is used to load the assembly.
+
+
+
+
+ In full mode, the assembly used during deserialization must match exactly the assembly used during
+ serialization. The
+ Load
+ method of the
+
+ class is used to load the assembly.
+
+
+
+
+ Specifies type name handling options for the .
+
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+
+ when deserializing with a value other than
+ .
+
+
+
+
+ Do not include the .NET type name when serializing types.
+
+
+
+
+ Include the .NET type name when serializing into a JSON object structure.
+
+
+
+
+ Include the .NET type name when serializing into a JSON array structure.
+
+
+
+
+ Always include the .NET type name when serializing.
+
+
+
+
+ Include the .NET type name when the type of the object being serialized is not the same as its
+ declared type.
+ Note that this doesn't include the root serialized object by default. To include the root object's
+ type name in JSON
+ you must specify a root type object with
+
+ or
+
+ .
+
+
+
+
+ Determines whether the collection is null or empty.
+
+ The collection.
+
+ true
+ if the collection is null or empty; otherwise, false .
+
+
+
+
+ Adds the elements of the specified collection to the specified generic
+ .
+
+ The list to add to.
+ The collection of elements to add.
+
+
+
+ Converts the value to the specified type. If the value is unable to be converted, the
+ value is checked whether it assignable to the specified type.
+
+ The value to convert.
+ The culture to use when converting.
+ The type to convert or cast the value to.
+
+ The converted type. If conversion was unsuccessful, the initial value
+ is returned if assignable to the target type.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic that returns a result
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Returns a Restrictions object which includes our current restrictions merged
+ with a restriction limiting our type
+
+
+
+
+ Helper class for serializing immutable collections.
+ Note that this is used by all builds, even those that don't support immutable collections, in case the
+ DLL is GACed
+ https://github.com/JamesNK/Newtonsoft.Json/issues/652
+
+
+
+
+ Gets the type of the typed collection's items.
+
+ The type.
+ The type of the typed collection's items.
+
+
+
+ Gets the member's underlying type.
+
+ The member.
+ The underlying type of the member.
+
+
+
+ Determines whether the member is an indexed property.
+
+ The member.
+
+ true
+ if the member is an indexed property; otherwise, false .
+
+
+
+
+ Determines whether the property is an indexed property.
+
+ The property.
+
+ true
+ if the property is an indexed property; otherwise, false .
+
+
+
+
+ Gets the member's value on the object.
+
+ The member.
+ The target object.
+ The member's value on the object.
+
+
+
+ Sets the member's value on the target object.
+
+ The member.
+ The target.
+ The value.
+
+
+
+ Determines whether the specified MemberInfo can be read.
+
+ The MemberInfo to determine whether can be read.
+ ///
+
+ if set to true then allow the member to be gotten non-publicly.
+
+
+ true
+ if the specified MemberInfo can be read; otherwise, false .
+
+
+
+
+ Determines whether the specified MemberInfo can be set.
+
+ The MemberInfo to determine whether can be set.
+
+ if set to true then allow the member to be set non-publicly.
+
+
+ if set to true then allow the member to be set if read-only.
+
+
+ true
+ if the specified MemberInfo can be set; otherwise, false .
+
+
+
+
+ Builds a string. Unlike
+
+ this class lets you reuse its internal buffer.
+
+
+
+
+ Determines whether the string is all white space. Empty string will return false .
+
+ The string to test whether it is all white space.
+
+ true
+ if the string is all white space; otherwise, false .
+
+
+
+
+ Specifies the state of the .
+
+
+
+
+ An exception has been thrown, which has left the
+
+ in an invalid state.
+ You may call the
+
+ method to put the
+
+ in the Closed state.
+ Any other
+
+ method calls result in an
+
+ being thrown.
+
+
+
+
+ The
+
+ method has been called.
+
+
+
+
+ An object is being written.
+
+
+
+
+ An array is being written.
+
+
+
+
+ A constructor is being written.
+
+
+
+
+ A property is being written.
+
+
+
+
+ A
+
+ write method has not been called.
+
+
+
+
diff --git a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta
similarity index 75%
rename from Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta
rename to Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta
index 8d29f8c1f..85879fd5e 100644
--- a/Libaries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta
+++ b/Libraries/Newtonsoft.Json.11.0.2/lib/net45/Newtonsoft.Json.xml.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3173e01e9b77742ffae17ad0e407f773
+guid: 67d532f59049c7360b4abdd1b6d24387
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1.meta b/Libraries/OptimizedPriorityQueue.4.1.1.meta
similarity index 77%
rename from Libaries/OptimizedPriorityQueue.4.1.1.meta
rename to Libraries/OptimizedPriorityQueue.4.1.1.meta
index 0aea3ff6e..6a2f1c9a2 100644
--- a/Libaries/OptimizedPriorityQueue.4.1.1.meta
+++ b/Libraries/OptimizedPriorityQueue.4.1.1.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5ecffab88ff04485dad3d01db8658157
+guid: 6f709bd349002eabc9bcada79deec53a
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg b/Libraries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg
similarity index 100%
rename from Libaries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg
rename to Libraries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg
diff --git a/Libraries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta b/Libraries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta
new file mode 100644
index 000000000..6446644f1
--- /dev/null
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/OptimizedPriorityQueue.4.1.1.nupkg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3fbcf265207836cf9b539405fc337241
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/OptimizedPriorityQueue.4.1.1/lib.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib.meta
new file mode 100644
index 000000000..0bd9fdc20
--- /dev/null
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be21f7c31f9d4ccddafdd35ce8539a8e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45.meta
new file mode 100644
index 000000000..2be507e06
--- /dev/null
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a3a858c2a05d476de98bf9df6a7eb3c5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll
similarity index 100%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb
similarity index 84%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb
index 9bf6b731e..8b788aea8 100644
Binary files a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb and b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb differ
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb.meta
similarity index 100%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb.meta
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.mdb.meta
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta
similarity index 93%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta
index 570610efe..5db63b297 100644
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 976088f6e8f2e7245a138253e5215069
+guid: 1426fec5350334c2d842a1c2fb0ff9fa
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb
similarity index 100%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb
diff --git a/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta
new file mode 100644
index 000000000..79b16abfb
--- /dev/null
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.pdb.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7627548849a01bdb3a964704a937e301
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml
similarity index 77%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml
index f76e5c7bb..3e5f9a961 100644
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml
@@ -1,597 +1,656 @@
-
-
-
-
- Priority Queue
-
-
-
-
- A copy of StablePriorityQueue which also has generic priority-type
-
- The values in the queue. Must extend the GenericPriorityQueue class
- The priority-type. Must extend IComparable<TPriority>
-
-
-
- Instantiate a new Priority Queue
-
- The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)
-
-
-
- Instantiate a new Priority Queue
-
- The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)
- The comparer used to compare TPriority values.
-
-
-
- Instantiate a new Priority Queue
-
- The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)
- The comparison function to use to compare TPriority values
-
-
-
- Returns the number of nodes in the queue.
- O(1)
-
-
-
-
- Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
- attempting to enqueue another item will cause undefined behavior. O(1)
-
-
-
-
- Removes every node from the queue.
- O(n) (So, don't do this often!)
-
-
-
-
- Returns (in O(1)!) whether the given node is in the queue. O(1)
-
-
-
-
- Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
- If the queue is full, the result is undefined.
- If the node is already enqueued, the result is undefined.
- O(log n)
-
-
-
-
- Returns true if 'higher' has higher priority than 'lower', false otherwise.
- Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
-
-
-
-
- Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
- If queue is empty, result is undefined
- O(log n)
-
-
-
-
- Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
- Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
- O(n)
-
-
-
-
- Returns the head of the queue, without removing it (use Dequeue() for that).
- If the queue is empty, behavior is undefined.
- O(1)
-
-
-
-
- This method must be called on a node every time its priority changes while it is in the queue.
- Forgetting to call this method will result in a corrupted queue!
- Calling this method on a node not in the queue results in undefined behavior
- O(log n)
-
-
-
-
- Removes a node from the queue. The node does not need to be the head of the queue.
- If the node is not in the queue, the result is undefined. If unsure, check Contains() first
- O(log n)
-
-
-
-
- Should not be called in production code.
- Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
-
-
-
-
- The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
- Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
-
-
-
-
- Represents the current position in the queue
-
-
-
-
- Represents the order the node was inserted in
-
-
-
-
- A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
-
-
-
-
- Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
- Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
-
-
-
-
- Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
- attempting to enqueue another item will cause undefined behavior.
-
-
-
-
- A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
- are always dequeued in the same order.
- See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
-
- The values in the queue. Must extend the StablePriorityQueueNode class
-
-
-
- Instantiate a new Priority Queue
-
- The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)
-
-
-
- Returns the number of nodes in the queue.
- O(1)
-
-
-
-
- Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
- attempting to enqueue another item will cause undefined behavior. O(1)
-
-
-
-
- Removes every node from the queue.
- O(n) (So, don't do this often!)
-
-
-
-
- Returns (in O(1)!) whether the given node is in the queue. O(1)
-
-
-
-
- Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
- If the queue is full, the result is undefined.
- If the node is already enqueued, the result is undefined.
- O(log n)
-
-
-
-
- Returns true if 'higher' has higher priority than 'lower', false otherwise.
- Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
-
-
-
-
- Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
- If queue is empty, result is undefined
- O(log n)
-
-
-
-
- Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
- Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
- O(n)
-
-
-
-
- Returns the head of the queue, without removing it (use Dequeue() for that).
- If the queue is empty, behavior is undefined.
- O(1)
-
-
-
-
- This method must be called on a node every time its priority changes while it is in the queue.
- Forgetting to call this method will result in a corrupted queue!
- Calling this method on a node not in the queue results in undefined behavior
- O(log n)
-
-
-
-
- Removes a node from the queue. The node does not need to be the head of the queue.
- If the node is not in the queue, the result is undefined. If unsure, check Contains() first
- O(log n)
-
-
-
-
- Should not be called in production code.
- Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
-
-
-
-
- An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
- See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
-
- The values in the queue. Must extend the FastPriorityQueueNode class
-
-
-
- Instantiate a new Priority Queue
-
- The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)
-
-
-
- Returns the number of nodes in the queue.
- O(1)
-
-
-
-
- Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
- attempting to enqueue another item will cause undefined behavior. O(1)
-
-
-
-
- Removes every node from the queue.
- O(n) (So, don't do this often!)
-
-
-
-
- Returns (in O(1)!) whether the given node is in the queue. O(1)
-
-
-
-
- Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
- If the queue is full, the result is undefined.
- If the node is already enqueued, the result is undefined.
- O(log n)
-
-
-
-
- Returns true if 'higher' has higher priority than 'lower', false otherwise.
- Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
-
-
-
-
- Removes the head of the queue and returns it.
- If queue is empty, result is undefined
- O(log n)
-
-
-
-
- Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
- Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
- O(n)
-
-
-
-
- Returns the head of the queue, without removing it (use Dequeue() for that).
- If the queue is empty, behavior is undefined.
- O(1)
-
-
-
-
- This method must be called on a node every time its priority changes while it is in the queue.
- Forgetting to call this method will result in a corrupted queue!
- Calling this method on a node not in the queue results in undefined behavior
- O(log n)
-
-
-
-
- Removes a node from the queue. The node does not need to be the head of the queue.
- If the node is not in the queue, the result is undefined. If unsure, check Contains() first
- O(log n)
-
-
-
-
- Should not be called in production code.
- Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
-
-
-
-
- Represents the order the node was inserted in
-
-
-
-
- The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
- For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
- (theoretically?) optimize method calls from concrete-types slightly better.
-
-
-
-
- Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
- See implementation for how duplicates are handled.
-
-
-
-
- Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
-
-
-
-
- Removes every node from the queue.
-
-
-
-
- Returns whether the given node is in the queue.
-
-
-
-
- Removes a node from the queue. The node does not need to be the head of the queue.
-
-
-
-
- Call this method to change the priority of a node.
-
-
-
-
- Returns the head of the queue, without removing it (use Dequeue() for that).
-
-
-
-
- Returns the number of nodes in the queue.
-
-
-
-
- The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
- Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
-
-
-
-
- Represents the current position in the queue
-
-
-
-
- A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
- FastPriorityQueue
- Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
-
- The type to enqueue
- The priority-type to use for nodes. Must extend IComparable<TPriority>
-
-
-
- Instantiate a new Priority Queue
-
-
-
-
- Instantiate a new Priority Queue
-
- The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default
-
-
-
- Instantiate a new Priority Queue
-
- The comparison function to use to compare TPriority values
-
-
-
- Given an item of type T, returns the exist SimpleNode in the queue
-
-
-
-
- Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
-
-
-
-
- Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
-
-
-
-
- Returns the number of nodes in the queue.
- O(1)
-
-
-
-
- Returns the head of the queue, without removing it (use Dequeue() for that).
- Throws an exception when the queue is empty.
- O(1)
-
-
-
-
- Removes every node from the queue.
- O(n)
-
-
-
-
- Returns whether the given item is in the queue.
- O(1)
-
-
-
-
- Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
- If queue is empty, throws an exception
- O(log n)
-
-
-
-
- Enqueue the item with the given priority, without calling lock(_queue)
-
-
-
-
- Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
- This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
- Duplicates and null-values are allowed.
- O(log n)
-
-
-
-
- Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
- This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
- Returns true if the node was successfully enqueued; false if it already exists.
- O(log n)
-
-
-
-
- Removes an item from the queue. The item does not need to be the head of the queue.
- If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
- If multiple copies of the item are enqueued, only the first one is removed.
- O(log n)
-
-
-
-
- Call this method to change the priority of an item.
- Calling this method on a item not in the queue will throw an exception.
- If the item is enqueued multiple times, only the first one will be updated.
- (If your requirements are complex enough that you need to enqueue the same item multiple times
- and be able
- to update all of them, please wrap your items in a wrapper class so they can be distinguished).
- O(log n)
-
-
-
-
- Returns the priority of the given item.
- Calling this method on a item not in the queue will throw an exception.
- If the item is enqueued multiple times, only the priority of the first will be returned.
- (If your requirements are complex enough that you need to enqueue the same item multiple times
- and be able
- to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
- O(1)
-
-
-
- Get the head of the queue, without removing it (use TryDequeue() for that).
- Useful for multi-threading, where the queue may become empty between calls to Contains() and First
- Returns true if successful, false otherwise
- O(1)
-
-
-
- Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
- Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
- Returns true if successful; false if queue was empty
- O(log n)
-
-
-
-
- Attempts to remove an item from the queue. The item does not need to be the head of the queue.
- Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
- Returns true if the item was successfully removed, false if it wasn't in the queue.
- If multiple copies of the item are enqueued, only the first one is removed.
- O(log n)
-
-
-
-
- Call this method to change the priority of an item.
- Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
- If the item is enqueued multiple times, only the first one will be updated.
- (If your requirements are complex enough that you need to enqueue the same item multiple times
- and be able
- to update all of them, please wrap your items in a wrapper class so they can be distinguished).
- Returns true if the item priority was updated, false otherwise.
- O(log n)
-
-
-
-
- Attempt to get the priority of the given item.
- Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
- If the item is enqueued multiple times, only the priority of the first will be returned.
- (If your requirements are complex enough that you need to enqueue the same item multiple times
- and be able
- to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
- Returns true if the item was found in the queue, false otherwise
- O(1)
-
-
-
-
- A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
- FastPriorityQueue
- This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
-
- The type to enqueue
-
-
-
- Instantiate a new Priority Queue
-
-
-
-
- Instantiate a new Priority Queue
-
- The comparer used to compare priority values. Defaults to Comparer<float>.default
-
-
-
- Instantiate a new Priority Queue
-
- The comparison function to use to compare priority values
-
-
-
\ No newline at end of file
+
+
+
+
+ Priority Queue
+
+
+
+
+ A copy of StablePriorityQueue which also has generic priority-type
+
+ The values in the queue. Must extend the GenericPriorityQueue class
+ The priority-type. Must extend IComparable<TPriority>
+
+
+
+ Instantiate a new Priority Queue
+
+
+ The max nodes ever allowed to be enqueued (going over this will cause undefined
+ behavior)
+
+
+
+
+ Instantiate a new Priority Queue
+
+
+ The max nodes ever allowed to be enqueued (going over this will cause undefined
+ behavior)
+
+ The comparer used to compare TPriority values.
+
+
+
+ Instantiate a new Priority Queue
+
+
+ The max nodes ever allowed to be enqueued (going over this will cause undefined
+ behavior)
+
+ The comparison function to use to compare TPriority values
+
+
+
+ Returns the number of nodes in the queue.
+ O(1)
+
+
+
+
+ Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this
+ number (ie. once Count == MaxSize),
+ attempting to enqueue another item will cause undefined behavior. O(1)
+
+
+
+
+ Removes every node from the queue.
+ O(n) (So, don't do this often!)
+
+
+
+
+ Returns (in O(1)!) whether the given node is in the queue. O(1)
+
+
+
+
+ Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by
+ first-in-first-out.
+ If the queue is full, the result is undefined.
+ If the node is already enqueued, the result is undefined.
+ O(log n)
+
+
+
+
+ Returns true if 'higher' has higher priority than 'lower', false otherwise.
+ Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
+
+
+
+
+ Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and
+ returns it.
+ If queue is empty, result is undefined
+ O(log n)
+
+
+
+
+ Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
+ Attempting to decrease the queue size to a size too small to hold the existing nodes results in
+ undefined behavior
+ O(n)
+
+
+
+
+ Returns the head of the queue, without removing it (use Dequeue() for that).
+ If the queue is empty, behavior is undefined.
+ O(1)
+
+
+
+
+ This method must be called on a node every time its priority changes while it is in the queue.
+ Forgetting to call this method will result in a corrupted queue!
+ Calling this method on a node not in the queue results in undefined behavior
+ O(log n)
+
+
+
+
+ Removes a node from the queue. The node does not need to be the head of the queue.
+ If the node is not in the queue, the result is undefined. If unsure, check Contains() first
+ O(log n)
+
+
+
+
+ Should not be called in production code.
+ Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
+
+
+
+
+ The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once,
+ in the node's constructor).
+ Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
+
+
+
+
+ Represents the current position in the queue
+
+
+
+
+ Represents the order the node was inserted in
+
+
+
+
+ A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access
+ modifier)
+
+
+
+
+ Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
+ Attempting to decrease the queue size to a size too small to hold the existing nodes results in
+ undefined behavior
+
+
+
+
+ Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this
+ number (ie. once Count == MaxSize),
+ attempting to enqueue another item will cause undefined behavior.
+
+
+
+
+ A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same
+ priority, they
+ are always dequeued in the same order.
+ See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more
+ information
+
+ The values in the queue. Must extend the StablePriorityQueueNode class
+
+
+
+ Instantiate a new Priority Queue
+
+
+ The max nodes ever allowed to be enqueued (going over this will cause undefined
+ behavior)
+
+
+
+
+ Returns the number of nodes in the queue.
+ O(1)
+
+
+
+
+ Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this
+ number (ie. once Count == MaxSize),
+ attempting to enqueue another item will cause undefined behavior. O(1)
+
+
+
+
+ Removes every node from the queue.
+ O(n) (So, don't do this often!)
+
+
+
+
+ Returns (in O(1)!) whether the given node is in the queue. O(1)
+
+
+
+
+ Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by
+ first-in-first-out.
+ If the queue is full, the result is undefined.
+ If the node is already enqueued, the result is undefined.
+ O(log n)
+
+
+
+
+ Returns true if 'higher' has higher priority than 'lower', false otherwise.
+ Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
+
+
+
+
+ Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and
+ returns it.
+ If queue is empty, result is undefined
+ O(log n)
+
+
+
+
+ Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
+ Attempting to decrease the queue size to a size too small to hold the existing nodes results in
+ undefined behavior
+ O(n)
+
+
+
+
+ Returns the head of the queue, without removing it (use Dequeue() for that).
+ If the queue is empty, behavior is undefined.
+ O(1)
+
+
+
+
+ This method must be called on a node every time its priority changes while it is in the queue.
+ Forgetting to call this method will result in a corrupted queue!
+ Calling this method on a node not in the queue results in undefined behavior
+ O(log n)
+
+
+
+
+ Removes a node from the queue. The node does not need to be the head of the queue.
+ If the node is not in the queue, the result is undefined. If unsure, check Contains() first
+ O(log n)
+
+
+
+
+ Should not be called in production code.
+ Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
+
+
+
+
+ An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
+ See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more
+ information
+
+ The values in the queue. Must extend the FastPriorityQueueNode class
+
+
+
+ Instantiate a new Priority Queue
+
+
+ The max nodes ever allowed to be enqueued (going over this will cause undefined
+ behavior)
+
+
+
+
+ Returns the number of nodes in the queue.
+ O(1)
+
+
+
+
+ Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this
+ number (ie. once Count == MaxSize),
+ attempting to enqueue another item will cause undefined behavior. O(1)
+
+
+
+
+ Removes every node from the queue.
+ O(n) (So, don't do this often!)
+
+
+
+
+ Returns (in O(1)!) whether the given node is in the queue. O(1)
+
+
+
+
+ Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by
+ first-in-first-out.
+ If the queue is full, the result is undefined.
+ If the node is already enqueued, the result is undefined.
+ O(log n)
+
+
+
+
+ Returns true if 'higher' has higher priority than 'lower', false otherwise.
+ Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
+
+
+
+
+ Removes the head of the queue and returns it.
+ If queue is empty, result is undefined
+ O(log n)
+
+
+
+
+ Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
+ Attempting to decrease the queue size to a size too small to hold the existing nodes results in
+ undefined behavior
+ O(n)
+
+
+
+
+ Returns the head of the queue, without removing it (use Dequeue() for that).
+ If the queue is empty, behavior is undefined.
+ O(1)
+
+
+
+
+ This method must be called on a node every time its priority changes while it is in the queue.
+ Forgetting to call this method will result in a corrupted queue!
+ Calling this method on a node not in the queue results in undefined behavior
+ O(log n)
+
+
+
+
+ Removes a node from the queue. The node does not need to be the head of the queue.
+ If the node is not in the queue, the result is undefined. If unsure, check Contains() first
+ O(log n)
+
+
+
+
+ Should not be called in production code.
+ Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
+
+
+
+
+ Represents the order the node was inserted in
+
+
+
+
+ The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more
+ implementations later.
+ For speed purposes, it is actually recommended that you *don't* access the priority queue through this
+ interface, since the JIT can
+ (theoretically?) optimize method calls from concrete-types slightly better.
+
+
+
+
+ Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by
+ first-in-first-out.
+ See implementation for how duplicates are handled.
+
+
+
+
+ Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and
+ returns it.
+
+
+
+
+ Removes every node from the queue.
+
+
+
+
+ Returns whether the given node is in the queue.
+
+
+
+
+ Removes a node from the queue. The node does not need to be the head of the queue.
+
+
+
+
+ Call this method to change the priority of a node.
+
+
+
+
+ Returns the head of the queue, without removing it (use Dequeue() for that).
+
+
+
+
+ Returns the number of nodes in the queue.
+
+
+
+
+ The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once,
+ in the node's constructor).
+ Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
+
+
+
+
+ Represents the current position in the queue
+
+
+
+
+ A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of
+ being slightly slower than
+ FastPriorityQueue
+ Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the
+ algorithmic complexity.
+
+ The type to enqueue
+
+ The priority-type to use for nodes. Must extend
+ IComparable<TPriority>
+
+
+
+
+ Instantiate a new Priority Queue
+
+
+
+
+ Instantiate a new Priority Queue
+
+ The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default
+
+
+
+ Instantiate a new Priority Queue
+
+ The comparison function to use to compare TPriority values
+
+
+
+ Given an item of type T, returns the exist SimpleNode in the queue
+
+
+
+
+ Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
+
+
+
+
+ Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no
+ duplicates)
+
+
+
+
+ Returns the number of nodes in the queue.
+ O(1)
+
+
+
+
+ Returns the head of the queue, without removing it (use Dequeue() for that).
+ Throws an exception when the queue is empty.
+ O(1)
+
+
+
+
+ Removes every node from the queue.
+ O(n)
+
+
+
+
+ Returns whether the given item is in the queue.
+ O(1)
+
+
+
+
+ Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and
+ returns it.
+ If queue is empty, throws an exception
+ O(log n)
+
+
+
+
+ Enqueue the item with the given priority, without calling lock(_queue)
+
+
+
+
+ Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by
+ first-in-first-out.
+ This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
+ Duplicates and null-values are allowed.
+ O(log n)
+
+
+
+
+ Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front.
+ Ties are broken by first-in-first-out.
+ This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null
+ values are allowed.
+ Returns true if the node was successfully enqueued; false if it already exists.
+ O(log n)
+
+
+
+
+ Removes an item from the queue. The item does not need to be the head of the queue.
+ If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
+ If multiple copies of the item are enqueued, only the first one is removed.
+ O(log n)
+
+
+
+
+ Call this method to change the priority of an item.
+ Calling this method on a item not in the queue will throw an exception.
+ If the item is enqueued multiple times, only the first one will be updated.
+ (If your requirements are complex enough that you need to enqueue the same item multiple times
+ and
+ be able
+ to update all of them, please wrap your items in a wrapper class so they can be distinguished).
+ O(log n)
+
+
+
+
+ Returns the priority of the given item.
+ Calling this method on a item not in the queue will throw an exception.
+ If the item is enqueued multiple times, only the priority of the first will be returned.
+ (If your requirements are complex enough that you need to enqueue the same item multiple times
+ and
+ be able
+ to query all their priorities, please wrap your items in a wrapper class so they can be
+ distinguished).
+ O(1)
+
+
+
+ Get the head of the queue, without removing it (use TryDequeue() for that).
+ Useful for multi-threading, where the queue may become empty between calls to Contains() and First
+ Returns true if successful, false otherwise
+ O(1)
+
+
+
+ Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and
+ sets it to first.
+ Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
+ Returns true if successful; false if queue was empty
+ O(log n)
+
+
+
+
+ Attempts to remove an item from the queue. The item does not need to be the head of the queue.
+ Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
+ Returns true if the item was successfully removed, false if it wasn't in the queue.
+ If multiple copies of the item are enqueued, only the first one is removed.
+ O(log n)
+
+
+
+
+ Call this method to change the priority of an item.
+ Useful for multi-threading, where the queue may become empty between calls to Contains() and
+ UpdatePriority()
+ If the item is enqueued multiple times, only the first one will be updated.
+ (If your requirements are complex enough that you need to enqueue the same item multiple times
+ and
+ be able
+ to update all of them, please wrap your items in a wrapper class so they can be distinguished).
+ Returns true if the item priority was updated, false otherwise.
+ O(log n)
+
+
+
+
+ Attempt to get the priority of the given item.
+ Useful for multi-threading, where the queue may become empty between calls to Contains() and
+ GetPriority()
+ If the item is enqueued multiple times, only the priority of the first will be returned.
+ (If your requirements are complex enough that you need to enqueue the same item multiple times
+ and
+ be able
+ to query all their priorities, please wrap your items in a wrapper class so they can be
+ distinguished).
+ Returns true if the item was found in the queue, false otherwise
+ O(1)
+
+
+
+
+ A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of
+ being slightly slower than
+ FastPriorityQueue
+ This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem,
+ TPriority>
+
+ The type to enqueue
+
+
+
+ Instantiate a new Priority Queue
+
+
+
+
+ Instantiate a new Priority Queue
+
+ The comparer used to compare priority values. Defaults to Comparer<float>.default
+
+
+
+ Instantiate a new Priority Queue
+
+ The comparison function to use to compare priority values
+
+
+
diff --git a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta
similarity index 75%
rename from Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta
rename to Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta
index a763245f6..6b1401b99 100644
--- a/Libaries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta
+++ b/Libraries/OptimizedPriorityQueue.4.1.1/lib/net45/Priority Queue.xml.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 7d9fff55274ac464188deece12ab7e4a
+guid: 0bdeb43b7e4bb9686a8e54567f5e4068
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/README.md b/README.md
index 2f3c5b7a8..c79146e68 100644
--- a/README.md
+++ b/README.md
@@ -1,140 +1,173 @@
-
-
-# Droid
-
-Droid is a unity package that enables prototyping reinforcement learning environments within the [Unity](https://unity3d.com/) engine and communication to the [Neo](https://github.com/sintefneodroid/neo) counterpart of the [Neodroid](https://github.com/sintefneodroid) platform.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-This project has similarities with Unity's own project [Unity Machine Learning Agents](https://github.com/Unity-Technologies/ml-agents). Most of the efforts done in this project were made prior to their announcement, [Introducing: Unity Machine Learning Agents](https://blogs.unity3d.com/2017/09/19/introducing-unity-machine-learning-agents/), when the authors was in need of a capable tool. Newcomers wanting a more supported experience may wish to use the [Unity Machine Learning Agents](https://github.com/Unity-Technologies/ml-agents) project instead.
-
-The entire Neodroid platform serves as a tool for academic research specific to the authors interests, hence explaining the existence and future direction of this project.
-
-## Notable Features
-
-- In-editor simulations for ease of debugging
-- Connect multiple external agents (i.e. multiple client computers)
-- Blazing fast serialisation
-- Modular unity style component construction of scenes (enables rapid prototyping of complex
-environments and ease of integration with existing projects)
-- Support reverse curriculum generation inherently
-(Ability to reinitialise any previous seen state or configure new ones)
-
-## Usage
-
-- Download the newest Droid.unitypackage from [releases](https://github.com/sintefneodroid/droid/releases) and import into your Unity project.
-
-***Or***
-
-- Acquire the [Droid (Temporarily down)](http://u3d.as/14cC) package from the built-in asset store of the Unity Editor.
-
-## Demo
-
-
-
-## Repository Structure
----
-
- sintefneodroid/droid # This repository
- │
- ├── docs
- │ ├── source # Documentation files
- │ │
- │ ├── make.bat # Compile docs
- │ └── Makefile # ^
- │
- ├── Examples # Prebuilt Neodroid environments
- │ ├── Assets # Model checkpoints
- │ │ ├── Neodroid # Symlinked folder to top-level Neodroid folder
- │ │ ├── SceneAssets # All scene-specific assets for the prebuilt environments
- │ │ └── Scenes # All prebuilt environment scenes
- │ │
- │ └── Examples.sln # C# project file
- │
- ├── .github # Images and such for this README
- │
- ├── Neodroid # The Neodroid unity package
- │ ├── Prototyping # All classes for quick prototyping of observations and actions
- │ │ ├── Actors
- │ │ ├── Evaluation
- │ │ ├── Observers
- │ │ ├── Displayers
- │ │ ├── Configurables
- │ │ └── Motors
- │ │
- │ ├── Environments # Classes for encapsulating all Neodroid environments
- │ ├── Managers # Classes for managing the simulation of Neodroid environments
- │ └── Utilities # Lots of helper functionalities
- │
- ├── LICENSE # License file (Important but boring)
- └── README.md # The top-level README
----
-
-# Citation
-
-For citation you may use the following bibtex entry:
-````
-@misc{neodroid,
- author = {Heider, Christian},
- title = {Neodroid Platform},
- year = {2018},
- publisher = {GitHub},
- journal = {GitHub repository},
- howpublished = {\url{https://github.com/sintefneodroid}},
-}
-````
-# Other Components Of The Neodroid Platform
-- [agent](https://github.com/sintefneodroid/agent)
-- [neo](https://github.com/sintefneodroid/neo)
+
+
+# Droid
+
+Droid is a unity package that enables prototyping reinforcement learning environments within the [Unity](https://unity3d.com/) engine and communication to the [Neo](https://github.com/sintefneodroid/neo) counterpart of the [Neodroid](https://github.com/sintefneodroid) platform.
+
+---
+
+_[Neodroid](https://github.com/sintefneodroid) is developed with support from Research Council of Norway Grant #262900. ([https://www.forskningsradet.no/prosjektbanken/#/project/NFR/262900](https://www.forskningsradet.no/prosjektbanken/#/project/NFR/262900))_
+
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This project has similarities with Unity's own project [Unity Machine Learning Agents](https://github.com/Unity-Technologies/ml-agents). Most of the efforts done in this project were made prior to their announcement, [Introducing: Unity Machine Learning Agents](https://blogs.unity3d.com/2017/09/19/introducing-unity-machine-learning-agents/), when the authors was in need of a capable tool. Newcomers wanting a more supported experience may wish to use the [Unity Machine Learning Agents](https://github.com/Unity-Technologies/ml-agents) project instead.
+
+The entire Neodroid platform serves as a tool for academic research specific to the authors interests, hence explaining the existence and future direction of this project.
+
+## Notable Features
+
+- In-editor simulations for ease of debugging
+- Connect multiple external agents (i.e. multiple client computers)
+- Blazing fast serialisation
+- Modular unity style component construction of scenes (enables rapid prototyping of complex
+environments and ease of integration with existing projects)
+- Support reverse curriculum generation inherently
+(Ability to reinitialise any previous seen state or configure new ones)
+
+## Usage
+
+- Edit your Unity projects "Packages/manifest.json" to include the string
+ `"com.neodroid.droid": "https://github.com/sintefneodroid/droid.git"}`.
+
+ Example `manifest.json`
+ ````
+ {
+ "dependencies": {
+ "com.unity.package-manager-ui": "0.0.0-builtin",
+ ...
+ "com.neodroid.droid": "https://github.com/sintefneodroid/droid.git",
+ }
+ }
+ ````
+ You can use `"com.neodroid.droid": "https://github.com/sintefneodroid/droid.git#branch"` for a specific branch.
+
+***Or***
+
+- Download the newest Droid.unitypackage from [releases](https://github.com/sintefneodroid/droid/releases) and import into your Unity project.
+
+***Or***
+
+- Acquire the [Droid (Temporarily down)](http://u3d.as/14cC) package from the built-in asset store of the Unity Editor.
+
+## Demo
+
+
+
+### Videoes
+[](https://www.youtube.com/watch?v=niYacuKt8cs)
+[](https://www.youtube.com/watch?v=PVc5T_YIHdk)
+[](https://www.youtube.com/watch?v=c6IDgzMhGNk)
+[](https://www.youtube.com/watch?v=d13xndC4BAk)
+
+## Repository Structure
+---
+
+ sintefneodroid/droid # This repository
+ │
+ ├── Samples # Prebuilt Neodroid environments
+ │ └── MultiArmedBandit # Sample Project
+ │
+ ├── Editor # Editor Implementation
+ │ ├── GameObjects
+ │ ├── ScriptableObjects
+ │ ├── Windows
+ │ ├── Resources
+ │ └── Utilies
+ │
+ ├── Runtime # Runtime Implementation
+ │ ├── Prototyping # All classes for quick prototyping of observations and actions
+ │ │ ├── Actors
+ │ │ ├── Evaluation
+ │ │ ├── Observers
+ │ │ ├── Displayers
+ │ │ ├── Configurables
+ │ │ └── Motors
+ │ │
+ │ ├── Environments # Classes for encapsulating all Neodroid environments
+ │ ├── Managers # Classes for managing the simulation of Neodroid environments
+ │ └── Utilities # Lots of helper functionalities
+ │
+ ├── Documentation # Unity Package Documentation
+ │
+ ├── Gizmos # Icons
+ │
+ ├── Tests # Tests
+ │
+ ├── .github # Images and such for this README
+ │
+ ├── LICENSE.md # License file (Important but boring)
+ ├── README.md # The top-level README
+ └── TUTORIAL.md # Very quick tutorial to get started
+---
+
+# Citation
+
+For citation you may use the following bibtex entry:
+````
+@misc{neodroid,
+ author = {Heider, Christian},
+ title = {Neodroid Platform},
+ year = {2018},
+ publisher = {GitHub},
+ journal = {GitHub repository},
+ howpublished = {\url{https://github.com/sintefneodroid}},
+}
+````
+# Other Components Of The Neodroid Platform
+- [agent](https://github.com/sintefneodroid/agent)
+- [neo](https://github.com/sintefneodroid/neo)
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/codeStyles/Project.xml b/Runtime/.idea/.idea.Neodroid/.idea/codeStyles/Project.xml
index 0211a90fa..6d799a050 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/codeStyles/Project.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/codeStyles/Project.xml
@@ -1,52 +1,52 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/contentModel.xml b/Runtime/.idea/.idea.Neodroid/.idea/contentModel.xml
index 5828e1619..ea7c6031d 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/contentModel.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/contentModel.xml
@@ -1,855 +1,855 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/dbnavigator.xml b/Runtime/.idea/.idea.Neodroid/.idea/dbnavigator.xml
index cc2c7551c..49729ef4a 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/dbnavigator.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/dbnavigator.xml
@@ -1,453 +1,453 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/indexLayout.xml b/Runtime/.idea/.idea.Neodroid/.idea/indexLayout.xml
index 2ea38ec40..f1feadf0e 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/indexLayout.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/indexLayout.xml
@@ -1,7 +1,7 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/inspectionProfiles/Project_Default.xml b/Runtime/.idea/.idea.Neodroid/.idea/inspectionProfiles/Project_Default.xml
index 5b992e805..61c3060b5 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/inspectionProfiles/Project_Default.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/inspectionProfiles/Project_Default.xml
@@ -1,36 +1,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/modules.xml b/Runtime/.idea/.idea.Neodroid/.idea/modules.xml
index 6ed1378e5..5ef4abcc0 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/modules.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/modules.xml
@@ -1,8 +1,8 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/vcs.xml b/Runtime/.idea/.idea.Neodroid/.idea/vcs.xml
index 2e3f6920d..6c0b86358 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/vcs.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/.idea/workspace.xml b/Runtime/.idea/.idea.Neodroid/.idea/workspace.xml
index a3594161c..0ce7659ae 100644
--- a/Runtime/.idea/.idea.Neodroid/.idea/workspace.xml
+++ b/Runtime/.idea/.idea.Neodroid/.idea/workspace.xml
@@ -1,439 +1,439 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- DEFINITION_ORDER
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1522074927137
-
-
- 1522074927137
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1522074927137
+
+
+ 1522074927137
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/.idea/.idea.Neodroid/riderModule.iml b/Runtime/.idea/.idea.Neodroid/riderModule.iml
index cc7f540fb..1a4e0d95f 100644
--- a/Runtime/.idea/.idea.Neodroid/riderModule.iml
+++ b/Runtime/.idea/.idea.Neodroid/riderModule.iml
@@ -1,7 +1,7 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Runtime/EcsPrototyping.meta b/Runtime/EcsPrototyping.meta
new file mode 100644
index 000000000..1338e538a
--- /dev/null
+++ b/Runtime/EcsPrototyping.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a2af1d79dfb04fc6bfa0443edaefd5c0
+timeCreated: 1549534443
\ No newline at end of file
diff --git a/Runtime/EcsPrototyping/Components.meta b/Runtime/EcsPrototyping/Components.meta
new file mode 100644
index 000000000..69808dbd3
--- /dev/null
+++ b/Runtime/EcsPrototyping/Components.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d0cb8f6f5b6dad25fb578d3d2548db79
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/EcsPrototyping/Components/Sensors.meta b/Runtime/EcsPrototyping/Components/Sensors.meta
new file mode 100644
index 000000000..352afd7ac
--- /dev/null
+++ b/Runtime/EcsPrototyping/Components/Sensors.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3881782740715e10386e9301aa00f193
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs b/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs
new file mode 100644
index 000000000..b5845512e
--- /dev/null
+++ b/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs
@@ -0,0 +1,18 @@
+#if ECS_EXISTS
+using System;
+using Unity.Entities;
+
+namespace droid.Runtime.EcsPrototyping.Components.Sensors
+{
+// Serializable attribute is for editor support.
+ [Serializable]
+ public struct HelloRotationSpeed : IComponentData
+ {
+ public float rotationalMultiplier;
+ }
+
+// ComponentDataWrapper is for creating a Monobehaviour representation of this component (for editor support).
+ [UnityEngine.DisallowMultipleComponent]
+ public class HelloRotationSpeedComponent : ComponentDataWrapper { }
+}
+#endif
diff --git a/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs.meta b/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs.meta
new file mode 100644
index 000000000..94e4bb8a2
--- /dev/null
+++ b/Runtime/EcsPrototyping/Components/Sensors/CameraSensorComponent.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 4f1df11bb417483e8b159baf536e8110
+timeCreated: 1549534475
\ No newline at end of file
diff --git a/Runtime/Prototyping/Displayers/Experimental/ECS.meta b/Runtime/EcsPrototyping/ECS.meta
similarity index 100%
rename from Runtime/Prototyping/Displayers/Experimental/ECS.meta
rename to Runtime/EcsPrototyping/ECS.meta
diff --git a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSDisplayer.cs b/Runtime/EcsPrototyping/ECS/ECSDisplayer.cs
similarity index 99%
rename from Runtime/Prototyping/Displayers/Experimental/ECS/ECSDisplayer.cs
rename to Runtime/EcsPrototyping/ECS/ECSDisplayer.cs
index d94ec21b4..6607c8a87 100644
--- a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSDisplayer.cs
+++ b/Runtime/EcsPrototyping/ECS/ECSDisplayer.cs
@@ -39,4 +39,4 @@ protected virtual void RegisterComponent() {
public abstract void Display(string value);
}
}
-#endif
\ No newline at end of file
+#endif
diff --git a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSDisplayer.cs.meta b/Runtime/EcsPrototyping/ECS/ECSDisplayer.cs.meta
similarity index 100%
rename from Runtime/Prototyping/Displayers/Experimental/ECS/ECSDisplayer.cs.meta
rename to Runtime/EcsPrototyping/ECS/ECSDisplayer.cs.meta
diff --git a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSScatterPlotDisplayer.cs b/Runtime/EcsPrototyping/ECS/ECSScatterPlotDisplayer.cs
similarity index 99%
rename from Runtime/Prototyping/Displayers/Experimental/ECS/ECSScatterPlotDisplayer.cs
rename to Runtime/EcsPrototyping/ECS/ECSScatterPlotDisplayer.cs
index 5db3e1e5f..92e35f52d 100644
--- a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSScatterPlotDisplayer.cs
+++ b/Runtime/EcsPrototyping/ECS/ECSScatterPlotDisplayer.cs
@@ -161,4 +161,4 @@ public void ScatterPlot(ValuePoint[] points) {
}
}
}
-#endif
\ No newline at end of file
+#endif
diff --git a/Runtime/Prototyping/Displayers/Experimental/ECS/ECSScatterPlotDisplayer.cs.meta b/Runtime/EcsPrototyping/ECS/ECSScatterPlotDisplayer.cs.meta
similarity index 100%
rename from Runtime/Prototyping/Displayers/Experimental/ECS/ECSScatterPlotDisplayer.cs.meta
rename to Runtime/EcsPrototyping/ECS/ECSScatterPlotDisplayer.cs.meta
diff --git a/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs b/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs
new file mode 100644
index 000000000..1a9cf8dec
--- /dev/null
+++ b/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs
@@ -0,0 +1,19 @@
+#if ECS_EXISTS
+using System;
+using Unity.Entities;
+using UnityEngine.Serialization;
+
+namespace droid.Runtime.EcsPrototyping
+{
+// Serializable attribute is for editor support.
+ [Serializable]
+ public struct HelloRotationSpeed : IComponentData
+ {
+ public float rotationalMultiplier;
+ }
+
+// ComponentDataWrapper is for creating a Monobehaviour representation of this component (for editor support).
+ [UnityEngine.DisallowMultipleComponent]
+ public class HelloRotationSpeedComponent : ComponentDataWrapper { }
+}
+#endif
diff --git a/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs.meta b/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs.meta
new file mode 100644
index 000000000..f7710b8b6
--- /dev/null
+++ b/Runtime/EcsPrototyping/HelloRotationSpeedComponent.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 43d1136dd3b1ecaa4b88b76e9799114c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs b/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs
new file mode 100644
index 000000000..0e7971982
--- /dev/null
+++ b/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs
@@ -0,0 +1,42 @@
+#if ECS_EXISTS
+using Unity.Burst;
+using Unity.Collections;
+using Unity.Entities;
+using Unity.Jobs;
+using Unity.Mathematics;
+using Unity.Transforms;
+using UnityEngine;
+
+// This system updates all entities in the scene with both a HelloRotationSpeed and Rotation component.
+namespace droid.Runtime.EcsPrototyping
+{
+ public class HelloRotationSpeedSystem : JobComponentSystem
+ {
+ // Use the [BurstCompile] attribute to compile a job with Burst. You may see significant speed ups, so try it!
+ [BurstCompile]
+ struct HelloRotationSpeedJob : IJobProcessComponentData
+ {
+ // The [ReadOnly] attribute tells the job scheduler that this job cannot write to dT.
+ [ReadOnly] public float DeltaT;
+
+ // rotation is read/write in this job
+ public void Execute(ref Rotation rotation, [ReadOnly] ref HelloRotationSpeed rotSpeed)
+ {
+ // Rotate something about its up vector at the speed given by HelloRotationSpeed.
+ rotation.Value =
+ math.mul(math.normalize(rotation.Value), quaternion.AxisAngle(math.up(), rotSpeed.rotationalMultiplier * this.DeltaT));
+ }
+ }
+
+ // OnUpdate runs on the main thread.
+ protected override JobHandle OnUpdate(JobHandle inputDependencies)
+ {
+ var job = new HelloRotationSpeedJob(){
+ DeltaT = Time.deltaTime
+ };
+
+ return job.Schedule(this, inputDependencies);
+ }
+ }
+}
+#endif
diff --git a/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs.meta b/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs.meta
new file mode 100644
index 000000000..3a91ec1e9
--- /dev/null
+++ b/Runtime/EcsPrototyping/HelloRotationSpeedSystem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 274e79a9ee31a5049bf0c5a7a5b8ec23
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/EcsPrototyping/Systems.meta b/Runtime/EcsPrototyping/Systems.meta
new file mode 100644
index 000000000..8a4a23170
--- /dev/null
+++ b/Runtime/EcsPrototyping/Systems.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1770d026b5c38ebc79f34694b7c83b59
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs b/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs
new file mode 100644
index 000000000..23fae19b6
--- /dev/null
+++ b/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs
@@ -0,0 +1,43 @@
+#if ECS_EXISTS
+using droid.Runtime.EcsPrototyping.Components.Sensors;
+using Unity.Burst;
+using Unity.Collections;
+using Unity.Entities;
+using Unity.Jobs;
+using Unity.Mathematics;
+using Unity.Transforms;
+using UnityEngine;
+
+// This system updates all entities in the scene with both a HelloRotationSpeed and Rotation component.
+namespace droid.Runtime.EcsPrototyping.Systems
+{
+ public class HelloRotationSpeedSystem : JobComponentSystem
+ {
+ // Use the [BurstCompile] attribute to compile a job with Burst. You may see significant speed ups, so try it!
+ [BurstCompile]
+ struct HelloRotationSpeedJob : IJobProcessComponentData
+ {
+ // The [ReadOnly] attribute tells the job scheduler that this job cannot write to dT.
+ [ReadOnly] public float DeltaT;
+
+ // rotation is read/write in this job
+ public void Execute(ref Rotation rotation, [ReadOnly] ref HelloRotationSpeed rotSpeed)
+ {
+ // Rotate something about its up vector at the speed given by HelloRotationSpeed.
+ rotation.Value =
+ math.mul(math.normalize(rotation.Value), quaternion.AxisAngle(math.up(), rotSpeed.rotationalMultiplier * this.DeltaT));
+ }
+ }
+
+ // OnUpdate runs on the main thread.
+ protected override JobHandle OnUpdate(JobHandle inputDependencies)
+ {
+ var job = new HelloRotationSpeedJob(){
+ DeltaT = Time.deltaTime
+ };
+
+ return job.Schedule(this, inputDependencies);
+ }
+ }
+}
+#endif
diff --git a/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs.meta b/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs.meta
new file mode 100644
index 000000000..d9cbfa9b9
--- /dev/null
+++ b/Runtime/EcsPrototyping/Systems/CamersSensorSystem.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a34a95c58a614b57a5915720999ea1d6
+timeCreated: 1549534476
\ No newline at end of file
diff --git a/Runtime/Utilities/Enums.meta b/Runtime/Enums.meta
similarity index 77%
rename from Runtime/Utilities/Enums.meta
rename to Runtime/Enums.meta
index 3b8b018a3..84a3d88d5 100644
--- a/Runtime/Utilities/Enums.meta
+++ b/Runtime/Enums.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 61c96163e9d164fa4bbfd53b43457489
+guid: f2d984bb34f22a289a492e5c72f07b0c
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Runtime/Utilities/Enums/Axis.cs b/Runtime/Enums/Axis.cs
similarity index 78%
rename from Runtime/Utilities/Enums/Axis.cs
rename to Runtime/Enums/Axis.cs
index 1b555edbf..8a1f52276 100644
--- a/Runtime/Utilities/Enums/Axis.cs
+++ b/Runtime/Enums/Axis.cs
@@ -1,51 +1,41 @@
-namespace Neodroid.Runtime.Utilities.Enums {
+namespace droid.Runtime.Enums {
///
- ///
///
public enum Axis {
///
- ///
///
X_,
///
- ///
///
Y_,
///
- ///
///
Z_,
///
- ///
///
Rot_x_,
///
- ///
///
Rot_y_,
///
- ///
///
Rot_z_,
///
- ///
///
Dir_x_,
///
- ///
///
Dir_y_,
///
- ///
///
Dir_z_
}
-}
\ No newline at end of file
+}
diff --git a/Runtime/Utilities/Enums/Axis.cs.meta b/Runtime/Enums/Axis.cs.meta
similarity index 100%
rename from Runtime/Utilities/Enums/Axis.cs.meta
rename to Runtime/Enums/Axis.cs.meta
diff --git a/Runtime/Enums/BoundingBox.meta b/Runtime/Enums/BoundingBox.meta
new file mode 100644
index 000000000..473b64b8c
--- /dev/null
+++ b/Runtime/Enums/BoundingBox.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b3504b931a113d4b964ba3e6b7bccfc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Enums/BoundingBox/BasedOn.cs b/Runtime/Enums/BoundingBox/BasedOn.cs
new file mode 100644
index 000000000..dce48ef63
--- /dev/null
+++ b/Runtime/Enums/BoundingBox/BasedOn.cs
@@ -0,0 +1,13 @@
+namespace droid.Runtime.Enums.BoundingBox {
+ public enum BasedOn {
+ ///
+ /// Base the bounding box on colliders
+ ///
+ Collider_ = 0,
+
+ ///
+ /// Base the bounding box on geometries
+ ///
+ Geometry_ = 1
+ }
+}
diff --git a/Runtime/Enums/BoundingBox/BasedOn.cs.meta b/Runtime/Enums/BoundingBox/BasedOn.cs.meta
new file mode 100644
index 000000000..c86dbbe70
--- /dev/null
+++ b/Runtime/Enums/BoundingBox/BasedOn.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 499e9cd4a8304b69b414cac5400f9d94
+timeCreated: 1552905710
\ No newline at end of file
diff --git a/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs b/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs
new file mode 100644
index 000000000..a1adb2183
--- /dev/null
+++ b/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs
@@ -0,0 +1,21 @@
+namespace droid.Runtime.Enums.BoundingBox {
+ ///
+ ///
+ ///
+ public enum BoundingBoxOrientation {
+ ///
+ ///
+ ///
+ Axis_aligned_ = 0,
+
+ ///
+ ///
+ ///
+ Object_oriented_ = 1,
+
+ ///
+ ///
+ ///
+ Camera_oriented_ = 2
+ }
+}
diff --git a/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs.meta b/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs.meta
new file mode 100644
index 000000000..b061a68c1
--- /dev/null
+++ b/Runtime/Enums/BoundingBox/BoundingBoxOrientation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a35b486c8aa245719db2d1dc3fcbf52f
+timeCreated: 1552905731
\ No newline at end of file
diff --git a/Runtime/Enums/CoordinateSpace.cs b/Runtime/Enums/CoordinateSpace.cs
new file mode 100644
index 000000000..134558f9b
--- /dev/null
+++ b/Runtime/Enums/CoordinateSpace.cs
@@ -0,0 +1,17 @@
+namespace droid.Runtime.Enums {
+ ///
+ ///
+ public enum CoordinateSpace {
+ ///
+ ///
+ Global_,
+
+ ///
+ ///
+ Local_,
+
+ ///
+ ///
+ Environment_
+ }
+}
diff --git a/Runtime/Utilities/Enums/CoordinateSystem.cs.meta b/Runtime/Enums/CoordinateSpace.cs.meta
similarity index 100%
rename from Runtime/Utilities/Enums/CoordinateSystem.cs.meta
rename to Runtime/Enums/CoordinateSpace.cs.meta
diff --git a/Runtime/Utilities/Enums/DimensionCombination.cs b/Runtime/Enums/DimensionCombination.cs
similarity index 79%
rename from Runtime/Utilities/Enums/DimensionCombination.cs
rename to Runtime/Enums/DimensionCombination.cs
index 7bdb36d01..64f85e92d 100644
--- a/Runtime/Utilities/Enums/DimensionCombination.cs
+++ b/Runtime/Enums/DimensionCombination.cs
@@ -1,46 +1,37 @@
-namespace Neodroid.Runtime.Utilities.Enums {
+namespace droid.Runtime.Enums {
///
- ///
///
public enum Dimension2DCombination {
///
- ///
///
Xy_,
///
- ///
///
Xz_,
///
- ///
///
Yz_
}
///
- ///
///
public enum Dimension3DCombination {
///
- ///
///
Xyz_,
///
- ///
///
Xyw_,
///
- ///
///
Xzw_,
///
- ///
///
Yzw_
}
-}
\ No newline at end of file
+}
diff --git a/Runtime/Utilities/Enums/DimensionCombination.cs.meta b/Runtime/Enums/DimensionCombination.cs.meta
similarity index 100%
rename from Runtime/Utilities/Enums/DimensionCombination.cs.meta
rename to Runtime/Enums/DimensionCombination.cs.meta
diff --git a/Runtime/Enums/FrameFinishes.cs b/Runtime/Enums/FrameFinishes.cs
new file mode 100644
index 000000000..c13696abd
--- /dev/null
+++ b/Runtime/Enums/FrameFinishes.cs
@@ -0,0 +1,27 @@
+namespace droid.Runtime.Enums {
+ ///
+ /// Determines where in the monobehaviour cycle a frame/step is finished
+ ///
+ public enum FrameFinishes {
+ ///
+ /// When ever all scripts has run their respective updates
+ /// NOTE: Not working as expected, does not seem to work with physics engine.
+ ///
+ Late_update_,
+
+ ///
+ /// NOTE: Not working as expected, does not seem to work with physics engine.
+ ///
+ End_of_frame_,
+
+ ///
+ /// When ever the scene has been rendered
+ ///
+ On_render_image_,
+
+ ///
+ /// When ever the scene has been rendered, default
+ ///
+ On_post_render_
+ }
+}
diff --git a/Runtime/Enums/FrameFinishes.cs.meta b/Runtime/Enums/FrameFinishes.cs.meta
new file mode 100644
index 000000000..0bde618d1
--- /dev/null
+++ b/Runtime/Enums/FrameFinishes.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7fe9adc411788b5c4ae11d6cd88d6803
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Enums/Normalisation.cs b/Runtime/Enums/Normalisation.cs
new file mode 100644
index 000000000..fa37d141b
--- /dev/null
+++ b/Runtime/Enums/Normalisation.cs
@@ -0,0 +1,21 @@
+namespace droid.Runtime.Enums {
+ ///
+ /// How should spaces be normalised
+ ///
+ public enum Normalisation {
+ ///
+ /// No normalisation
+ ///
+ None_,
+
+ ///
+ /// Between 0 and 1
+ ///
+ Zero_one_,
+
+ ///
+ /// Between -1 and 1
+ ///
+ Minus_one_one_
+ }
+}
diff --git a/Runtime/Enums/Normalisation.cs.meta b/Runtime/Enums/Normalisation.cs.meta
new file mode 100644
index 000000000..b2da74c32
--- /dev/null
+++ b/Runtime/Enums/Normalisation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 82dc76be468e4b72bcda2c7de95a3d12
+timeCreated: 1568293843
\ No newline at end of file
diff --git a/Runtime/Enums/RandomSamplingMode.cs b/Runtime/Enums/RandomSamplingMode.cs
new file mode 100644
index 000000000..078e68d33
--- /dev/null
+++ b/Runtime/Enums/RandomSamplingMode.cs
@@ -0,0 +1,26 @@
+namespace droid.Runtime.Enums {
+ ///
+ ///
+ ///
+ public enum RandomSamplingMode {
+ ///
+ ///
+ ///
+ On_update_,
+
+ ///
+ ///
+ ///
+ On_tick_,
+
+ ///
+ ///
+ ///
+ On_reset_,
+
+ ///
+ ///
+ ///
+ Disabled_
+ }
+}
diff --git a/Runtime/Enums/RandomSamplingMode.cs.meta b/Runtime/Enums/RandomSamplingMode.cs.meta
new file mode 100644
index 000000000..86b63b265
--- /dev/null
+++ b/Runtime/Enums/RandomSamplingMode.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c637e084deba4ac1b4645b98f499d772
+timeCreated: 1566282089
\ No newline at end of file
diff --git a/Runtime/Enums/SimulationType.cs b/Runtime/Enums/SimulationType.cs
new file mode 100644
index 000000000..cb5839794
--- /dev/null
+++ b/Runtime/Enums/SimulationType.cs
@@ -0,0 +1,27 @@
+namespace droid.Runtime.Enums {
+ ///
+ /// Determines the discrete timesteps of the simulation environment.
+ ///
+ public enum SimulationType {
+ ///
+ /// Waiting for frame instead means stable physics(Multiple fixed updates) and camera has updated their
+ /// rendertextures. Pauses the game after every reaction until next reaction is received.
+ ///
+ Frame_dependent_, // TODO: Sometimes some frame seems to be dropped with the frame dependent configuration at high frame rates.
+
+ ///
+ /// Camera sensors should be manually rendered to ensure validity and freshness with camera.Render()
+ ///
+ Physics_dependent_,
+
+ ///
+ /// Camera sensors should be manually rendered to ensure validity and freshness with camera.Render()
+ ///
+ Event_dependent_,
+
+ ///
+ /// Continue simulation
+ ///
+ Independent_
+ }
+}
diff --git a/Runtime/Enums/SimulationType.cs.meta b/Runtime/Enums/SimulationType.cs.meta
new file mode 100644
index 000000000..128f54bd5
--- /dev/null
+++ b/Runtime/Enums/SimulationType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9cb339cd947fb1070ad4df3a01cd01a0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Enums/WaitOn.cs b/Runtime/Enums/WaitOn.cs
new file mode 100644
index 000000000..5113f46ad
--- /dev/null
+++ b/Runtime/Enums/WaitOn.cs
@@ -0,0 +1,20 @@
+namespace droid.Runtime.Enums {
+ ///
+ ///
+ public enum WaitOn {
+ ///
+ ///
+ Never_,
+
+ ///
+ /// // Do not wait from reactions from agent
+ ///
+ Update_,
+
+ ///
+ /// // Frame
+ /// // Note: unstable physics with the FixedUpdate setting
+ ///
+ Fixed_update_
+ }
+}
diff --git a/Runtime/Utilities/Enums/WaitOn.cs.meta b/Runtime/Enums/WaitOn.cs.meta
similarity index 100%
rename from Runtime/Utilities/Enums/WaitOn.cs.meta
rename to Runtime/Enums/WaitOn.cs.meta
diff --git a/Runtime/Environments/Experimental/ImitationEnvironment.cs b/Runtime/Environments/Experimental/ImitationEnvironment.cs
index 3c81a40ac..0432bd5ec 100644
--- a/Runtime/Environments/Experimental/ImitationEnvironment.cs
+++ b/Runtime/Environments/Experimental/ImitationEnvironment.cs
@@ -1,9 +1,10 @@
-using UnityEngine;
+using droid.Runtime.Environments.Prototyping;
+using UnityEngine;
-namespace Neodroid.Runtime.Environments.Experimental {
+namespace droid.Runtime.Environments.Experimental {
///
///
///
[AddComponentMenu("Neodroid/Environments/NotUsed/Imitation")]
public class ImitationEnvironment : PrototypingEnvironment { }
-}
\ No newline at end of file
+}
diff --git a/Runtime/Environments/NeodroidEnvironment.cs b/Runtime/Environments/NeodroidEnvironment.cs
index 0475f33a4..8e68e0369 100644
--- a/Runtime/Environments/NeodroidEnvironment.cs
+++ b/Runtime/Environments/NeodroidEnvironment.cs
@@ -1,185 +1,87 @@
using System;
-using System.Globalization;
-using Neodroid.Runtime.Interfaces;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.Messaging.Messages;
-using Neodroid.Runtime.Utilities.EventRecipients.droid.Neodroid.Utilities.Unsorted;
-using Neodroid.Runtime.Utilities.GameObjects;
-using Neodroid.Runtime.Utilities.Misc.Drawing;
-using Neodroid.Runtime.Utilities.Misc.Grasping;
+using droid.Runtime.GameObjects;
+using droid.Runtime.GameObjects.StatusDisplayer.EventRecipients;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Managers;
+using droid.Runtime.Messaging.Messages;
+using droid.Runtime.Utilities;
using UnityEditor;
using UnityEngine;
-namespace Neodroid.Runtime.Environments {
+namespace droid.Runtime.Environments {
///
- ///
- ///
+ ///
+ ///
public abstract class NeodroidEnvironment : PrototypingGameObject,
- //IResetable,
IEnvironment {
- ///
- ///
- ///
- public abstract override String PrototypingTypeName { get; }
+ #region Fields
- ///
- ///
- ///
- [Header("Environment", order = 100), SerializeField]
- protected IManager _Simulation_Manager;
+ #endregion
- ///
- ///
- ///
- [SerializeField]
- int _episode_length = 1000;
+ #if UNITY_EDITOR
+ const int _script_execution_order = -20;
+ #endif
+ ///
///
- ///
///
- [SerializeField]
- protected float _Lastest_Reset_Time;
+ public abstract override String PrototypingTypeName { get; }
- ///
- ///
- ///
- public bool Terminated {
- get { return this._Terminated; }
- set { this._Terminated = value; }
- }
///
- ///
///
- [SerializeField]
- protected float _Energy_Spent;
+ public abstract void PostStep();
///
- ///
///
- [SerializeField]
- protected bool _Terminated;
-
- #if UNITY_EDITOR
- const int _script_execution_order = -20;
- #endif
+ ///
+ public abstract Reaction SampleReaction();
///
- ///
///
+ ///
///
- public void IdentifierString(DataPoller recipient) { recipient.PollData(this.Identifier); }
+ public abstract void React(Reaction reaction);
+
///
- ///
///
///
- public void EnergyString(DataPoller recipient) {
- recipient.PollData(this._Energy_Spent.ToString(CultureInfo.InvariantCulture));
- }
+ public abstract EnvironmentSnapshot Snapshot();
///
- ///
///
///
- public void FrameString(DataPoller recipient) {
- recipient.PollData($"{this.CurrentFrameNumber}/{this.EpisodeLength}");
- }
+ public void IdentifierString(DataPoller recipient) { recipient.PollData(this.Identifier); }
///
- ///
///
///
public void TerminatedBoolean(DataPoller recipient) {
- if (this._Terminated) {
+ if (this.Terminated) {
recipient.PollData(true);
}
recipient.PollData(false);
}
- ///
- ///
- ///
- [SerializeField]
- protected bool _Terminable = true;
-
- ///
- ///
- ///
- [SerializeField]
- protected string _LastTermination_Reason = "None";
-
- ///
- ///
- ///
- protected bool _Configure;
-
- ///
- ///
- ///
- protected bool _ReplyWithDescriptionThisStep;
-
- public Reaction LastReaction { get { return this._last_reaction; } set { this._last_reaction = value; } }
-
- ///
- ///
- ///
- public int CurrentFrameNumber {
- get { return this._current_frame_number; }
- set { this._current_frame_number = value; }
- }
-
- ///
- ///
- ///
- public int EpisodeLength {
- get { return this._episode_length; }
- set { this._episode_length = value; }
- }
-
- ///
- ///
- ///
- [SerializeField]
- protected bool _Resetting;
-
- [SerializeField] int _current_frame_number;
- [SerializeField] Reaction _last_reaction;
-
- ///
- ///
- ///
- public bool IsResetting {
- get { return this._Resetting; }
- }
-
- ///
- ///
- ///
- public String LastTerminationReason {
- get { return this._LastTermination_Reason; }
- set { this._LastTermination_Reason = value; }
- }
-
///
///
///
- protected override void Setup() {
+ public override void Setup() {
this.PreSetup();
- if (this._Simulation_Manager == null) {
- this._Simulation_Manager = FindObjectOfType();
+
+ if (this.SimulationManager == null) {
+ this.SimulationManager = FindObjectOfType();
}
#if UNITY_EDITOR
if (!Application.isPlaying) {
var manager_script = MonoScript.FromMonoBehaviour(this);
if (MonoImporter.GetExecutionOrder(manager_script) != _script_execution_order) {
- MonoImporter.SetExecutionOrder(
- manager_script,
- _script_execution_order); // Ensures that PreStep is called first, before all other scripts.
- Debug.LogWarning(
- "Execution Order changed, you will need to press play again to make everything function correctly!");
+ MonoImporter.SetExecutionOrder(manager_script,
+ _script_execution_order); // Ensures that PreStep is called first, before all other scripts.
+ Debug.LogWarning("Execution Order changed, you will need to press play again to make everything function correctly!");
EditorApplication.isPlaying = false;
//TODO: UnityEngine.Experimental.LowLevel.PlayerLoop.SetPlayerLoop(new UnityEngine.Experimental.LowLevel.PlayerLoopSystem());
}
@@ -191,65 +93,85 @@ protected override void Setup() {
///
///
protected override void RegisterComponent() {
- if (this._Simulation_Manager != null) {
- this._Simulation_Manager = (IManager)NeodroidUtilities.MaybeRegisterComponent(
- (PausableManager)this._Simulation_Manager,
- this);
+ if (this.SimulationManager != null) {
+ this.SimulationManager =
+ NeodroidRegistrationUtilities.RegisterComponent((NeodroidManager)this.SimulationManager, this);
}
}
///
///
///
- protected override void UnRegisterComponent() { this._Simulation_Manager?.UnRegister(this); }
+ protected override void UnRegisterComponent() { this.SimulationManager?.UnRegister(this); }
///
- ///
///
- protected virtual void PreSetup() { }
+ ///
+ public abstract void ObservationsString(DataPoller recipient);
+
+ #region Public Methods
///
- ///
///
- public abstract void PostStep();
+ ///
+ public void FrameString(DataPoller recipient) { recipient.PollData($"{this.StepI}"); }
+
+ #endregion
+
+ #region Properties
///
- ///
///
- ///
- public abstract Reaction SampleReaction();
+ [field : SerializeField]
+ public int StepI { get; protected internal set; }
///
- ///
///
- ///
- ///
- public abstract EnvironmentState ReactAndCollectState(Reaction reaction);
+ [field : SerializeField]
+ protected Single LastResetTime { get; set; }
///
- ///
///
- ///
- ///
- public abstract void React(Reaction reaction);
+ [field : SerializeField]
+ protected Boolean Terminable { get; set; } = true;
///
- ///
///
- public abstract void Tick();
+ [field : SerializeField]
+ public bool Terminated { get; set; } = false;
///
///
///
- ///
- public abstract EnvironmentState CollectState();
+ [field : SerializeField]
+ public Reaction LastReaction { get; set; }
///
- ///
///
- ///
- public abstract void ObservationsString(DataPoller recipient);
+ [field : SerializeField]
+ public bool IsResetting { get; set; }
+
+ ///
+ ///
+ [field : SerializeField]
+ public String LastTerminationReason { get; set; } = "None";
+
+ ///
+ ///
+ [field : SerializeField]
+ protected Boolean Configure { get; set; }
+
+ ///
+ ///
+ [field : SerializeField]
+ protected Boolean ReplyWithDescriptionThisStep { get; set; }
+
+ ///
+ ///
+ [field : Header("Environment", order = 100)]
+ [field : SerializeField]
+ protected IManager SimulationManager { get; set; }
- public abstract void EnvironmentReset();
+ #endregion
}
-}
\ No newline at end of file
+}
diff --git a/Runtime/Environments/Prototyping.meta b/Runtime/Environments/Prototyping.meta
new file mode 100644
index 000000000..0335aec87
--- /dev/null
+++ b/Runtime/Environments/Prototyping.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 26e1e787c83e45c086f64c60908d8b8d
+timeCreated: 1567947953
\ No newline at end of file
diff --git a/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs b/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs
new file mode 100644
index 000000000..4d20f9b8f
--- /dev/null
+++ b/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs
@@ -0,0 +1,1140 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using droid.Runtime.Enums;
+using droid.Runtime.GameObjects;
+using droid.Runtime.GameObjects.BoundingBoxes;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Messaging.Messages;
+using droid.Runtime.Prototyping.ObjectiveFunctions;
+using droid.Runtime.Utilities;
+using droid.Runtime.Utilities.Extensions;
+using UnityEngine;
+using Object = System.Object;
+
+namespace droid.Runtime.Environments.Prototyping {
+ ///
+ ///
+ ///
+ [RequireComponent(typeof(Transform))]
+ public abstract class AbstractSpatialPrototypingEnvironment : NeodroidEnvironment,
+ ISpatialPrototypingEnvironment {
+ #region Fields
+
+ #endregion
+
+ #region ProtectedMembers
+
+ ///
+ ///
+ protected Object _Reaction_Lock = new Object();
+
+ ///
+ ///
+ ///
+ protected WaitForFixedUpdate _Wait_For_Fixed_Update = new WaitForFixedUpdate();
+
+ ///
+ ///
+ ///
+ protected List _Observables = new List();
+
+ ///
+ ///
+ protected Rigidbody[] _Tracked_Rigid_Bodies;
+
+ ///
+ ///
+ protected Transform[] _Poses;
+
+ #endregion
+
+ #region PrivateMembers
+
+ ///
+ ///
+ Vector3[] _reset_positions;
+
+ ///
+ ///
+ Quaternion[] _reset_rotations;
+
+ Vector3[] _reset_scales;
+
+ ///
+ ///
+ GameObject[] _tracked_game_objects;
+
+ ///
+ ///
+ Vector3[] _reset_velocities;
+
+ ///
+ ///
+ Vector3[] _reset_angulars;
+
+ ///
+ ///
+ Pose[] _received_poses;
+
+ ///
+ ///
+ Body[] _received_bodies;
+
+ ///
+ ///
+ Configuration[] _last_configuration;
+
+ ///
+ ///
+ Animation[] _animations;
+
+ ///
+ ///
+ float[] _reset_animation_times;
+
+ #endregion
+
+ #region Events
+
+ ///
+ ///
+ public event Action PreStepEvent;
+
+ ///
+ ///
+ ///
+ public event Action StepEvent;
+
+ ///
+ ///
+ ///
+ public event Action PostStepEvent;
+
+ #endregion
+
+ #region Private Methods
+
+ ///
+ /// Termination of an episode, can be supplied with a reason for various purposes debugging or clarification
+ /// for a learner.
+ ///
+ ///
+ public void Terminate(string reason = "None") {
+ lock (this._Reaction_Lock) {
+ if (this.Terminable) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.LogWarning($"Environment {this.Identifier} as terminated because {reason}");
+ }
+ #endif
+
+ this.Terminated = true;
+ this.LastTerminationReason = reason;
+ }
+ }
+ }
+
+ ///
+ ///
+ public override void Tick() {
+ if (this.IsResetting) {
+
+ this.PrototypingReset();
+
+ this.LoopConfigurables();
+ this.LoopSensors();
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Reset");
+ }
+ #endif
+
+ this.IsResetting = false;
+ } else {
+ this.LoopConfigurables(this.UpdateObservationsWithEveryTick);
+ this.LoopSensors(this.UpdateObservationsWithEveryTick);
+ }
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Tick");
+ }
+ #endif
+
+ this.LoopListeners();
+ }
+
+ ///
+ ///
+ protected void LoopSensors(bool update = true) {
+ foreach (var s in this.Sensors.Values) {
+ s?.Tick();
+ if (update) {
+ s?.UpdateObservation();
+ }
+ }
+ }
+
+ protected void LoopListeners() {
+ foreach (var obs in this.Listeners.Values) {
+ obs?.Tick();
+ }
+ }
+
+ ///
+ ///
+ protected void LoopConfigurables(bool update = true) {
+ foreach (var con in this.Configurables.Values) {
+ con?.Tick();
+ if (update) {
+ con?.UpdateCurrentConfiguration();
+ }
+ }
+ }
+
+ ///
+ ///
+ void SaveInitialPoses() {
+ var ignored_layer = LayerMask.NameToLayer($"IgnoredByNeodroid");
+ if (this.TrackOnlyChildren) {
+ this._tracked_game_objects =
+ NeodroidSceneUtilities.RecursiveChildGameObjectsExceptLayer(this.transform, ignored_layer);
+ } else {
+ this._tracked_game_objects = NeodroidSceneUtilities.FindAllGameObjectsExceptLayer(ignored_layer);
+ }
+
+ var length = this._tracked_game_objects.Length;
+
+ this._reset_positions = new Vector3[length];
+ this._reset_rotations = new Quaternion[length];
+ this._reset_scales = new Vector3[length];
+ this._Poses = new Transform[length];
+ for (var i = 0; i < length; i++) {
+ var go = this._tracked_game_objects[i];
+ var trans = go.transform;
+ this._reset_positions[i] = trans.position;
+ this._reset_rotations[i] = trans.rotation;
+ this._reset_scales[i] = trans.localScale;
+ this._Poses[i] = trans;
+ var maybe_joint = go.GetComponent();
+ if (maybe_joint != null) {
+ var maybe_joint_fix = maybe_joint.GetComponent();
+ if (maybe_joint_fix == null) {
+ // ReSharper disable once RedundantAssignment
+ maybe_joint_fix = maybe_joint.gameObject.AddComponent();
+ }
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Added a JointFix component to {maybe_joint_fix.name}");
+ }
+ #endif
+ }
+ }
+ }
+
+ ///
+ ///
+ void SaveInitialBodies() {
+ /*var body_list = new List();
+ foreach (var go in this._tracked_game_objects) {
+ if (go != null) {
+ var body = go.GetComponent();
+ if (body)
+ body_list.Add(body);
+ }
+ }
+ this._bodies = body_list.ToArray();
+ */ //Should be equivalent to the line below, but kept as a reference in case of confusion
+
+ this._Tracked_Rigid_Bodies = this._tracked_game_objects.Where(go => go != null)
+ .Select(go => go.GetComponent()).Where(body => body)
+ .ToArray();
+
+ this._reset_velocities = new Vector3[this._Tracked_Rigid_Bodies.Length];
+ this._reset_angulars = new Vector3[this._Tracked_Rigid_Bodies.Length];
+ for (var i = 0; i < this._Tracked_Rigid_Bodies.Length; i++) {
+ this._reset_velocities[i] = this._Tracked_Rigid_Bodies[i].velocity;
+ this._reset_angulars[i] = this._Tracked_Rigid_Bodies[i].angularVelocity;
+ }
+ }
+
+ ///
+ ///
+ void SaveInitialAnimations() {
+ this._animations = this._tracked_game_objects.Where(go => go != null)
+ .Select(go => go.GetComponent()).Where(anim => anim).ToArray();
+ this._reset_animation_times = new float[this._animations.Length];
+ for (var i = 0; i < this._animations.Length; i++) {
+ if (this._animations[i]) {
+ if (this._animations[i].clip) {
+ this._reset_animation_times[i] =
+ this._animations[i].CrossFadeQueued(this._animations[i].clip.name)
+ .time; //TODO: IS NOT USED AS RIGHT NOW and should use animations clips instead the legacy "clip.name".
+ //TODO: DOES NOT WORK
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public override void PreSetup() {
+ if (this.ObjectiveFunction == null) {
+ this.ObjectiveFunction = this.GetComponent();
+ }
+
+ if (!this.PlayableArea) {
+ this.PlayableArea = this.GetComponent();
+ }
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("PreSetup");
+ }
+ #endif
+
+ if (this._tracked_game_objects == null || this._tracked_game_objects.Length == 0) {
+ this.SaveInitialPoses();
+ this.SaveInitialAnimations();
+ this.StartCoroutine(this.SaveInitialBodiesIe());
+ }
+ }
+
+ ///
+ ///
+ ///
+ IEnumerator SaveInitialBodiesIe() {
+ yield return this._Wait_For_Fixed_Update;
+ this.SaveInitialBodies();
+ this.RemotePostSetup();
+ }
+
+ ///
+ ///
+ ///
+ void Step(Reaction reaction) {
+ lock (this._Reaction_Lock) {
+ this.PreStepEvent?.Invoke();
+
+ if (reaction.Parameters.EpisodeCount) {
+ this.StepI++;
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.LogWarning("Step did count");
+ }
+ #endif
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.LogWarning("Step did not count");
+ }
+ #endif
+ }
+
+ this.SendToActors(reaction);
+
+ this.StepEvent?.Invoke();
+
+ this.LoopSensors();
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ protected abstract void SendToActors(Reaction reaction);
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public override void React(Reaction reaction) {
+ this.LastReaction = reaction;
+ this.Terminable = reaction.Parameters.Terminable;
+
+ this._last_configuration = reaction.Configurations;
+
+ this.ReplyWithDescriptionThisStep = reaction.Parameters.Describe;
+
+ if (reaction.Parameters.Configure && reaction.Unobservables != null) {
+ this._received_poses = reaction.Unobservables.Poses;
+ this._received_bodies = reaction.Unobservables.Bodies;
+ }
+
+ this.SendToDisplayers(reaction);
+
+ if (reaction.Parameters.StepResetObserveEnu == StepResetObserve.Reset_) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Resetting environment({this.Identifier})");
+ }
+ #endif
+ this.Terminate($"Reaction caused a reset");
+ this.IsResetting = true;
+ } else if (reaction.Parameters.StepResetObserveEnu == StepResetObserve.Step_) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Stepping in environment({this.Identifier})");
+ }
+ #endif
+ this.Step(reaction);
+ }
+ }
+
+ ///
+ ///
+ ///
+ public override void PostStep() {
+ this.PostStepEvent?.Invoke();
+ if (this.Configure) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Configuring");
+ }
+ #endif
+ this.Configure = false;
+ this.Reconfigure();
+ }
+
+ this.ReplyWithDescriptionThisStep = false;
+ }
+
+ ///
+ ///
+ public override void PrototypingReset() {
+ this.LastResetTime = Time.realtimeSinceStartup;
+ this.StepI = 0;
+ this.ObjectiveFunction?.PrototypingReset();
+
+ SetEnvironmentTransforms(ref this._tracked_game_objects,
+ ref this._reset_positions,
+ ref this._reset_rotations,
+ ref this._reset_scales);
+
+ this.SetBodies(ref this._Tracked_Rigid_Bodies, ref this._reset_velocities, ref this._reset_angulars);
+
+ this.ResetRegisteredObjects();
+ this.Reconfigure();
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Reset called on environment {this.Identifier}");
+ }
+ #endif
+
+ this.Terminated = false;
+ }
+
+ ///
+ ///
+ protected void ResetRegisteredObjects() {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Resetting registered objects");
+ }
+ #endif
+
+ foreach (var configurable in this.Configurables.Values) {
+ configurable?.PrototypingReset();
+ }
+
+ foreach (var resetable in this.Listeners.Values) {
+ resetable?.PrototypingReset();
+ }
+
+ this.InnerResetRegisteredObjects();
+
+ foreach (var sensor in this.Sensors.Values) {
+ sensor?.PrototypingReset();
+ }
+ }
+
+ ///
+ ///
+ protected void Reconfigure() {
+ if (this._received_poses != null) {
+ var positions = new Vector3[this._received_poses.Length];
+ var rotations = new Quaternion[this._received_poses.Length];
+ var scales = new Vector3[this._received_poses.Length];
+ for (var i = 0; i < this._received_poses.Length; i++) {
+ positions[i] = this._received_poses[i].position;
+ rotations[i] = this._received_poses[i].rotation;
+ scales[i] = this._reset_scales[i]; //TODO: this._received_poses[i].scale;
+ }
+
+ SetEnvironmentTransforms(ref this._tracked_game_objects,
+ ref positions,
+ ref rotations,
+ ref scales);
+ }
+
+ if (this._received_bodies != null) {
+ var velocities = new Vector3[this._received_bodies.Length];
+ var angulars = new Vector3[this._received_bodies.Length];
+ for (var i = 0; i < this._received_bodies.Length; i++) {
+ velocities[i] = this._received_bodies[i].Velocity;
+ angulars[i] = this._received_bodies[i].AngularVelocity;
+ }
+
+ this.SetBodies(ref this._Tracked_Rigid_Bodies, ref velocities, ref angulars);
+ }
+
+ if (this._last_configuration != null) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Configuration length: {this._last_configuration.Length}");
+ }
+ #endif
+ foreach (var configuration in this._last_configuration) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Configuring configurable with the specified name: " + configuration.ConfigurableName);
+ }
+ #endif
+ if (this.Configurables.ContainsKey(configuration.ConfigurableName)) {
+ this.Configurables[configuration.ConfigurableName].ApplyConfiguration(configuration);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Could find not configurable with the specified name: {configuration.ConfigurableName}");
+ }
+ #endif
+ }
+ }
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Has no received_configurations");
+ }
+ #endif
+ }
+
+ this.LoopConfigurables();
+ this.LoopSensors();
+ }
+
+ ///
+ ///
+ ///
+ void SendToDisplayers(Reaction reaction) {
+ if (reaction.Displayables != null && reaction.Displayables.Length > 0) {
+ foreach (var displayable in reaction.Displayables) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Applying " + displayable + " To " + this.name + "'s displayers");
+ }
+ #endif
+ var displayable_name = displayable.DisplayableName;
+ if (this.Displayers.ContainsKey(displayable_name) && this.Displayers[displayable_name] != null) {
+ var v = displayable.DisplayableValue;
+ this.Displayers[displayable_name].Display(v);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Could find not displayer with the specified name: " + displayable_name);
+ }
+ #endif
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ #region EnvironmentStateSetters
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ static void SetEnvironmentTransforms(ref GameObject[] child_game_objects,
+ ref Vector3[] positions,
+ ref Quaternion[] rotations,
+ ref Vector3[] scales) {
+ for (var i = 0; i < child_game_objects.Length; i++) {
+ if (child_game_objects[i] != null && i < positions.Length && i < rotations.Length) {
+ var rigid_body = child_game_objects[i].GetComponent();
+ if (rigid_body) {
+ rigid_body.Sleep();
+ }
+
+ child_game_objects[i].transform.position = positions[i];
+ child_game_objects[i].transform.rotation = rotations[i];
+ child_game_objects[i].transform.localScale = scales[i];
+ if (rigid_body) {
+ rigid_body.WakeUp();
+ }
+
+ var joint_fix = child_game_objects[i].GetComponent();
+ if (joint_fix) {
+ joint_fix.JointReset();
+ }
+
+ var anim = child_game_objects[i].GetComponent();
+ if (anim) {
+ anim.Rewind();
+ anim.Play();
+ anim.Sample();
+ anim.Stop();
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ void SetBodies(ref Rigidbody[] bodies, ref Vector3[] velocities, ref Vector3[] angulars) {
+ if (bodies != null && bodies.Length > 0) {
+ for (var i = 0; i < bodies.Length; i++) {
+ if (i < bodies.Length && bodies[i] != null && i < velocities.Length && i < angulars.Length) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Setting {bodies[i].name}, velocity to {velocities[i]} and angular velocity to {angulars[i]}");
+ }
+
+ #endif
+
+ bodies[i].Sleep();
+ bodies[i].velocity = velocities[i];
+ bodies[i].angularVelocity = angulars[i];
+ bodies[i].WakeUp();
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ #region Transformations
+
+ ///
+ ///
+ ///
+ ///
+ public Vector3 TransformPoint(Vector3 point) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ return this.CoordinateReferencePoint.transform.InverseTransformPoint(point);
+ case CoordinateSpace.Local_:
+ return this.transform.InverseTransformPoint(point);
+ //return point - this.transform.position;
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting TransformPoint");
+ }
+ #endif
+ return point;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void TransformPoint(ref Vector3 point) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ point = this.CoordinateReferencePoint.transform.InverseTransformPoint(point);
+ break;
+ case CoordinateSpace.Local_:
+ //point = point - this.transform.position;
+ point = this.transform.InverseTransformPoint(point);
+ break;
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting TransformPoint");
+ }
+ #endif
+ break;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public Vector3 InverseTransformPoint(Vector3 point) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ return this.CoordinateReferencePoint.transform.TransformPoint(point);
+ case CoordinateSpace.Local_:
+ //return point - this.transform.position;
+ return this.transform.TransformPoint(point);
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting InverseTransformPoint");
+ }
+ #endif
+ return point;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void InverseTransformPoint(ref Vector3 point) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ point = this.CoordinateReferencePoint.transform.TransformPoint(point);
+ break;
+ case CoordinateSpace.Local_:
+ //point = point - this.transform.position;
+ point = this.transform.TransformPoint(point);
+ break;
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting InverseTransformPoint");
+ }
+ #endif
+ break;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public Vector3 TransformDirection(Vector3 direction) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ return this.CoordinateReferencePoint.transform.InverseTransformDirection(direction);
+ case CoordinateSpace.Local_:
+ return this.transform.InverseTransformDirection(direction);
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting TransformDirection");
+ }
+ #endif
+ return direction;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void TransformDirection(ref Vector3 direction) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ direction = this.CoordinateReferencePoint.transform.InverseTransformDirection(direction);
+ break;
+ case CoordinateSpace.Local_:
+ direction = this.transform.InverseTransformDirection(direction);
+ break;
+ case CoordinateSpace.Global_:
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting TransformDirection");
+ }
+ #endif
+ break;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public Vector3 InverseTransformDirection(Vector3 direction) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ return this.CoordinateReferencePoint.transform.TransformDirection(direction);
+ case CoordinateSpace.Local_:
+ return this.transform.TransformDirection(direction);
+
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting InverseTransformDirection");
+ }
+ #endif
+ return direction;
+ }
+ }
+
+ public void InverseTransformDirection(ref Vector3 direction) {
+ switch (this.CoordinateSpace) {
+ case CoordinateSpace.Environment_ when this.CoordinateReferencePoint:
+ direction = this.CoordinateReferencePoint.transform.TransformDirection(direction);
+ break;
+ case CoordinateSpace.Local_:
+ direction = this.transform.TransformDirection(direction);
+ break;
+ default:
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Defaulting InverseTransformDirection");
+ }
+ #endif
+ break;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public Quaternion TransformRotation(Quaternion quaternion) {
+ if (this.CoordinateSpace == CoordinateSpace.Environment_) {
+ if (this.CoordinateReferencePoint) {
+ return Quaternion.Inverse(this.CoordinateReferencePoint.rotation) * quaternion;
+ }
+
+ //Quaternion.Euler(this._coordinate_reference_point.transform.TransformDirection(quaternion.forward));
+ } else if (this.CoordinateSpace == CoordinateSpace.Local_) {
+ if (this.CoordinateReferencePoint) {
+ return Quaternion.Inverse(this.Transform.rotation) * quaternion;
+ }
+ }
+
+ return quaternion;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void TransformRotation(ref Quaternion quaternion) {
+ if (this.CoordinateSpace == CoordinateSpace.Environment_) {
+ if (this.CoordinateReferencePoint) {
+ quaternion = Quaternion.Inverse(this.CoordinateReferencePoint.rotation) * quaternion;
+ }
+
+ //Quaternion.Euler(this._coordinate_reference_point.transform.TransformDirection(quaternion.forward));
+ } else if (this.CoordinateSpace == CoordinateSpace.Local_) {
+ if (this.CoordinateReferencePoint) {
+ quaternion = Quaternion.Inverse(this.Transform.rotation) * quaternion;
+ }
+ }
+ }
+
+ public Quaternion InverseTransformRotation(Quaternion quaternion) {
+ if (this.CoordinateSpace == CoordinateSpace.Environment_) {
+ if (this.CoordinateReferencePoint) {
+ return this.CoordinateReferencePoint.rotation * quaternion;
+ }
+
+ //Quaternion.Euler(this._coordinate_reference_point.transform.TransformDirection(quaternion.forward));
+ } else if (this.CoordinateSpace == CoordinateSpace.Local_) {
+ if (this.CoordinateReferencePoint) {
+ return this.Transform.rotation * quaternion;
+ }
+ }
+
+ return quaternion;
+ }
+
+ public void InverseTransformRotation(ref Quaternion quaternion) {
+ if (this.CoordinateSpace == CoordinateSpace.Environment_) {
+ if (this.CoordinateReferencePoint) {
+ quaternion = this.CoordinateReferencePoint.rotation * quaternion;
+ } else if (this.CoordinateSpace == CoordinateSpace.Local_) {
+ if (this.CoordinateReferencePoint) {
+ quaternion = this.Transform.rotation * quaternion;
+ }
+ }
+
+ //Quaternion.Euler(this._coordinate_reference_point.transform.TransformDirection(quaternion.forward));
+ }
+ }
+
+ #endregion
+
+ #region Getters
+
+ ///
+ ///
+ public SortedDictionary Displayers { get; } =
+ new SortedDictionary();
+
+ ///
+ ///
+ public SortedDictionary Configurables { get; } =
+ new SortedDictionary();
+
+ ///
+ ///
+ public SortedDictionary Sensors { get; } = new SortedDictionary();
+
+ ///
+ ///
+ public SortedDictionary Listeners { get; } =
+ new SortedDictionary();
+
+ ///
+ ///
+ ///
+ public override string PrototypingTypeName { get { return "PrototypingEnvironment"; } }
+
+ ///
+ ///
+ [field : Header("References", order = 20)]
+ [field : SerializeField]
+ public IEpisodicObjectiveFunction ObjectiveFunction { get; set; }
+
+ ///
+ ///
+ public Transform Transform { get { return this.transform; } }
+
+ ///
+ ///
+ [field : Header("(Optional)", order = 80)]
+ [field : SerializeField]
+ public BoundingBox PlayableArea { get; set; }
+
+ ///
+ ///
+ [field : Header("General", order = 30)]
+ [field : SerializeField]
+ public Transform CoordinateReferencePoint { get; set; }
+
+ ///
+ ///
+ [field : SerializeField]
+ public CoordinateSpace CoordinateSpace { get; set; } = CoordinateSpace.Local_;
+
+ ///
+ ///
+ protected Rigidbody[] TrackedRigidBodies { get { return this._Tracked_Rigid_Bodies; } }
+
+ ///
+ ///
+ [field : SerializeField]
+ protected Boolean TrackOnlyChildren { get; set; } = true;
+
+ ///
+ ///
+ ///
+ [field : SerializeField]
+ protected Boolean UpdateObservationsWithEveryTick { get; set; } = true;
+
+ #endregion
+
+ #region Registration
+
+ ///
+ ///
+ ///
+ public void Register(IDisplayer displayer) { this.Register(displayer, displayer.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(IDisplayer obj, string identifier) {
+ if (!this.Displayers.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered displayer {identifier}");
+ }
+ #endif
+ this.Displayers.Add(identifier, obj);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has displayer {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void Register(ISensor sensor) { this.Register(sensor, sensor.Identifier); }
+
+ ///
+ /// ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(ISensor sensor, string identifier) {
+ if (!this.Sensors.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered sensor {identifier}");
+ }
+ #endif
+
+ this.Sensors.Add(identifier, sensor);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has observer {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void Register(IConfigurable configurable) { this.Register(configurable, configurable.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(IConfigurable configurable, string identifier) {
+ if (!this.Configurables.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered configurable {identifier}");
+ }
+ #endif
+
+ this.Configurables.Add(identifier, configurable);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has configurable {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void Register(IUnobservable environment_listener) {
+ this.Register(environment_listener, environment_listener.Identifier);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(IUnobservable environment_listener, string identifier) {
+ if (!this.Listeners.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered resetable {identifier}");
+ }
+ #endif
+ this.Listeners.Add(identifier, environment_listener);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has resetable {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void UnRegister(ISensor sensor) { this.UnRegister(sensor, sensor.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(ISensor t, string identifier) {
+ if (this.Sensors.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered sensor {identifier}");
+ }
+ #endif
+ this.Sensors.Remove(identifier);
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void UnRegister(IConfigurable configurable) {
+ this.UnRegister(configurable, configurable.Identifier);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(IConfigurable t, string identifier) {
+ if (this.Configurables.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered configurable {identifier}");
+ }
+ #endif
+ this.Configurables.Remove(identifier);
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void UnRegister(IDisplayer displayer) { this.UnRegister(displayer, displayer.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(IDisplayer t, string identifier) {
+ if (this.Displayers.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered configurable {identifier}");
+ }
+ #endif
+ this.Displayers.Remove(identifier);
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void UnRegister(IUnobservable environment_listener) {
+ this.UnRegister(environment_listener, environment_listener.Identifier);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(IUnobservable t, string identifier) {
+ if (this.Listeners.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered resetable {identifier}");
+ }
+ #endif
+ this.Listeners.Remove(identifier);
+ }
+ }
+
+ #endregion
+
+ ///
+ ///
+ ///
+ protected abstract void InnerResetRegisteredObjects();
+
+ public override String ToString() {
+ var e = " - ";
+
+ e += this.Identifier;
+ e += ", Sensors: ";
+ e += this.Sensors.Count;
+ e += ", Objective: ";
+ e += this.ObjectiveFunction != null ? this.ObjectiveFunction.Identifier : "None";
+
+ return e;
+ }
+ }
+}
diff --git a/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs.meta b/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs.meta
new file mode 100644
index 000000000..8598753aa
--- /dev/null
+++ b/Runtime/Environments/Prototyping/AbstractSpatialPrototypingEnvironment.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3fa96c4d5b1441b59c4efb9d9912bfaf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 4e08a2d574ba14804a3b42b6a9abc9dd, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Environments/Prototyping/ActorisedPrototypingEnvironment.cs b/Runtime/Environments/Prototyping/ActorisedPrototypingEnvironment.cs
new file mode 100644
index 000000000..244b1b47a
--- /dev/null
+++ b/Runtime/Environments/Prototyping/ActorisedPrototypingEnvironment.cs
@@ -0,0 +1,301 @@
+using System.Collections.Generic;
+using System.Linq;
+using droid.Runtime.GameObjects.StatusDisplayer.EventRecipients;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Messaging.Messages;
+using UnityEngine;
+
+namespace droid.Runtime.Environments.Prototyping {
+ ///
+ ///
+ /// Environment to be used with the prototyping components.
+ ///
+ [AddComponentMenu("Neodroid/Environments/ActorisedPrototypingEnvironment")]
+ public class ActorisedPrototypingEnvironment : AbstractSpatialPrototypingEnvironment,
+ IActorisedPrototypingEnvironment {
+ #region NeodroidCallbacks
+
+ ///
+ ///
+ ///
+ protected override void Clear() {
+ this.Displayers.Clear();
+ this.Configurables.Clear();
+ this.Actors.Clear();
+ this.Sensors.Clear();
+ this.Listeners.Clear();
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public override Reaction SampleReaction() {
+ if (this.Terminated) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("SampleReaction resetting environment");
+ }
+ #endif
+
+ var reset_reaction = new ReactionParameters(StepResetObserve.Reset_, false, true);
+ return new Reaction(reset_reaction, this.Identifier);
+ }
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sampling a reaction for environment {this.Identifier}");
+ }
+ #endif
+
+ var sample_motions = new List();
+
+ foreach (var actor in this.Actors) {
+ var actor_value = actor.Value;
+ if (actor_value?.Actuators != null) {
+ foreach (var actuator in actor_value.Actuators) {
+ var actuator_value = actuator.Value;
+ if (actuator_value != null) {
+ sample_motions.Add(new ActuatorMotion(actor.Key, actuator.Key, actuator_value.Sample()));
+ }
+ }
+ }
+ }
+
+ var rp = new ReactionParameters(StepResetObserve.Step_, true, episode_count : true);
+ return new Reaction(rp,
+ sample_motions.ToArray(),
+ null,
+ null,
+ null,
+ "",
+ this.Identifier);
+ }
+
+ #endregion
+
+ #region PublicMethods
+
+ #region Getters
+
+ ///
+ ///
+ public SortedDictionary Actors { get; } = new SortedDictionary();
+
+ #endregion
+
+ #region Registration
+
+ ///
+ ///
+ ///
+ ///
+ public void Register(IActor actor) { this.Register(actor, actor.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(IActor actor, string identifier) {
+ if (!this.Actors.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered actor {identifier}");
+ }
+ #endif
+
+ this.Actors.Add(identifier, actor);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has actor {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ public void UnRegister(IActor actor) { this.UnRegister(actor, actor.Identifier); }
+
+ public void UnRegister(IActor t, string obj) {
+ if (this.Actors.ContainsKey(obj)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered actor {obj}");
+ }
+ #endif
+ this.Actors.Remove(obj);
+ }
+ }
+
+ #endregion
+
+ #endregion
+
+ #region PrivateMethods
+
+ ///
+ ///
+ ///
+ ///
+ public override EnvironmentSnapshot Snapshot() {
+ lock (this._Reaction_Lock) {
+ var signal = 0f;
+
+ if (this.ObjectiveFunction != null) {
+ signal = this.ObjectiveFunction.Evaluate();
+ }
+
+ EnvironmentDescription description = null;
+ if (this.ReplyWithDescriptionThisStep
+ || this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseIndividualObservables) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Describing Environment");
+ }
+ #endif
+
+ description = new EnvironmentDescription(this.ObjectiveFunction,
+ this.Actors,
+ this.Configurables,
+ this.Sensors,
+ this.Displayers);
+ }
+
+ this._Observables.Clear();
+
+ foreach (var item in this.Sensors) {
+ if (item.Value != null) {
+ if (item.Value.FloatEnumerable != null) {
+ this._Observables.AddRange(item.Value.FloatEnumerable);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sensor with key {item.Key} has a null FloatEnumerable value");
+ }
+ #endif
+ }
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sensor with key {item.Key} has a null value");
+ }
+ #endif
+ }
+ }
+
+ var obs = this._Observables.ToArray();
+
+ var time = Time.realtimeSinceStartup - this.LastResetTime;
+
+ var state = new EnvironmentSnapshot(this.Identifier,
+ this.StepI,
+ time,
+ signal,
+ this.Terminated,
+ ref obs,
+ this.LastTerminationReason,
+ description);
+
+ if (this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseUnobservables
+ || this.ReplyWithDescriptionThisStep) {
+ state.Unobservables = new Unobservables(ref this._Tracked_Rigid_Bodies, ref this._Poses);
+ }
+
+ return state;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public override void ObservationsString(DataPoller recipient) {
+ recipient.PollData(string.Join("\n\n",
+ this.Sensors.Values.Select(e => $"{e.Identifier}:\n{e.ToString()}")));
+ }
+
+ ///
+ ///
+ ///
+ public override void RemotePostSetup() {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("PostSetup");
+ }
+ #endif
+
+ foreach (var configurable in this.Configurables.Values) {
+ configurable?.RemotePostSetup();
+ }
+
+ foreach (var actor in this.Actors.Values) {
+ actor?.RemotePostSetup();
+ }
+
+ foreach (var sensor in this.Sensors.Values) {
+ sensor?.RemotePostSetup();
+ }
+ }
+
+ ///
+ ///
+ ///
+ void SendToDisplayers(Reaction reaction) {
+ if (reaction.Displayables != null && reaction.Displayables.Length > 0) {
+ foreach (var displayable in reaction.Displayables) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Applying " + displayable + " To " + this.name + "'s displayers");
+ }
+ #endif
+ var displayable_name = displayable.DisplayableName;
+ if (this.Displayers.ContainsKey(displayable_name) && this.Displayers[displayable_name] != null) {
+ var v = displayable.DisplayableValue;
+ this.Displayers[displayable_name].Display(v);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Could find not displayer with the specified name: " + displayable_name);
+ }
+ #endif
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ protected override void SendToActors(Reaction reaction) {
+ if (reaction.Motions != null && reaction.Motions.Length > 0) {
+ foreach (var motion in reaction.Motions) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Applying " + motion + " To " + this.name + "'s actors");
+ }
+ #endif
+ var motion_actor_name = motion.ActorName;
+ if (this.Actors.ContainsKey(motion_actor_name) && this.Actors[motion_actor_name] != null) {
+ this.Actors[motion_actor_name].ApplyMotion(motion);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Could find not actor with the specified name: " + motion_actor_name);
+ }
+ #endif
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ protected override void InnerResetRegisteredObjects() {
+ foreach (var actor in this.Actors.Values) {
+ actor?.PrototypingReset();
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/Runtime/Environments/PrototypingEnvironment.cs.meta b/Runtime/Environments/Prototyping/ActorisedPrototypingEnvironment.cs.meta
similarity index 100%
rename from Runtime/Environments/PrototypingEnvironment.cs.meta
rename to Runtime/Environments/Prototyping/ActorisedPrototypingEnvironment.cs.meta
diff --git a/Runtime/Environments/Prototyping/PrototypingEnvironment.cs b/Runtime/Environments/Prototyping/PrototypingEnvironment.cs
new file mode 100644
index 000000000..9189b978c
--- /dev/null
+++ b/Runtime/Environments/Prototyping/PrototypingEnvironment.cs
@@ -0,0 +1,301 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using droid.Runtime.GameObjects.StatusDisplayer.EventRecipients;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Messaging.Messages;
+using droid.Runtime.Prototyping.Actors;
+using UnityEngine;
+
+namespace droid.Runtime.Environments.Prototyping {
+ ///
+ ///
+ /// Environment to be used with the prototyping components.
+ ///
+ [AddComponentMenu("Neodroid/Environments/PrototypingEnvironment")]
+ public class PrototypingEnvironment : AbstractSpatialPrototypingEnvironment,
+ IPrototypingEnvironment {
+ #region NeodroidCallbacks
+
+ ///
+ ///
+ ///
+ protected override void Clear() {
+ this.Displayers.Clear();
+ this.Configurables.Clear();
+ this.Actuators.Clear();
+ this.Sensors.Clear();
+ this.Listeners.Clear();
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public override Reaction SampleReaction() {
+ if (this.Terminated) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("SampleReaction resetting environment");
+ }
+ #endif
+
+ var reset_reaction = new ReactionParameters(StepResetObserve.Reset_, false, true);
+ return new Reaction(reset_reaction, this.Identifier);
+ }
+
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sampling a reaction for environment {this.Identifier}");
+ }
+ #endif
+
+ var sample_motions = new List();
+
+ foreach (var actuator in this.Actuators) {
+ var actuator_value = actuator.Value;
+ if (actuator_value != null) {
+ sample_motions.Add(new ActuatorMotion(actuator.Key, actuator.Key, actuator_value.Sample()));
+ }
+ }
+
+ var rp = new ReactionParameters(StepResetObserve.Step_, true, episode_count : true);
+ return new Reaction(rp,
+ sample_motions.ToArray(),
+ null,
+ null,
+ null,
+ "",
+ this.Identifier);
+ }
+
+ #endregion
+
+ #region PublicMethods
+
+ #region Getters
+
+ ///
+ ///
+ public SortedDictionary Actuators { get; } = new SortedDictionary();
+
+ ///
+ ///
+ ///
+ public override string PrototypingTypeName { get { return "PrototypingEnvironment"; } }
+
+ #endregion
+
+ #region Registration
+
+ ///
+ ///
+ ///
+ ///
+ public void Register(IActuator obj) { this.Register(obj, obj.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Register(IActuator obj, String identifier) {
+ if (!this.Actuators.ContainsKey(identifier)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} has registered actuator {identifier}");
+ }
+ #endif
+
+ this.Actuators.Add(identifier, obj);
+ } else {
+ Debug.LogWarning($"WARNING! Please check for duplicates, Environment {this.name} already has actuator {identifier} registered");
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(IActuator obj) { this.UnRegister(obj, obj.Identifier); }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void UnRegister(IActuator t, String obj) {
+ if (this.Actuators.ContainsKey(obj)) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Environment {this.name} unregistered actuator {obj}");
+ }
+ #endif
+ this.Actuators.Remove(obj);
+ }
+ }
+
+ #endregion
+
+ #endregion
+
+ #region PrivateMethods
+
+ ///
+ ///
+ ///
+ ///
+ public override EnvironmentSnapshot Snapshot() {
+ lock (this._Reaction_Lock) {
+ var signal = 0f;
+
+ if (this.ObjectiveFunction != null) {
+ signal = this.ObjectiveFunction.Evaluate();
+ }
+
+ EnvironmentDescription description = null;
+ if (this.ReplyWithDescriptionThisStep
+ || this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseIndividualObservables) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Describing Environment");
+ }
+ #endif
+
+ var virtual_actors =
+ new SortedDictionary {{"All", new VirtualActor(this.Actuators)}};
+
+ description = new EnvironmentDescription(this.ObjectiveFunction,
+ virtual_actors,
+ this.Configurables,
+ this.Sensors,
+ this.Displayers);
+ }
+
+ this._Observables.Clear();
+ foreach (var item in this.Sensors) {
+ if (item.Value != null) {
+ if (item.Value.FloatEnumerable != null) {
+ this._Observables.AddRange(item.Value.FloatEnumerable);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sensor with key {item.Key} has a null FloatEnumerable value");
+ }
+ #endif
+ }
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log($"Sensor with key {item.Key} has a null value");
+ }
+ #endif
+ }
+ }
+
+ var obs = this._Observables.ToArray();
+
+ var time = Time.realtimeSinceStartup - this.LastResetTime;
+
+ var state = new EnvironmentSnapshot(this.Identifier,
+ this.StepI,
+ time,
+ signal,
+ this.Terminated,
+ ref obs,
+ this.LastTerminationReason,
+ description);
+
+ if (this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseUnobservables
+ || this.ReplyWithDescriptionThisStep) {
+ state.Unobservables = new Unobservables(ref this._Tracked_Rigid_Bodies, ref this._Poses);
+ }
+
+ return state;
+ }
+ }
+
+ ///
+ ///
+ ///
+ public override void RemotePostSetup() {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("PostSetup");
+ }
+ #endif
+
+ foreach (var configurable in this.Configurables.Values) {
+ configurable?.RemotePostSetup();
+ }
+
+ foreach (var actuator in this.Actuators.Values) {
+ actuator?.RemotePostSetup();
+ }
+
+ foreach (var sensor in this.Sensors.Values) {
+ sensor?.RemotePostSetup();
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public override void ObservationsString(DataPoller recipient) {
+ recipient.PollData(string.Join("\n\n",
+ this.Sensors.Values.Select(e => $"{e.Identifier}:\n{e.ToString()}")));
+ }
+
+ protected override void SendToActors(Reaction reaction) {
+ if (reaction.Motions != null && reaction.Motions.Length > 0) {
+ foreach (var motion in reaction.Motions) {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Applying " + motion + " To " + this.name + " actuator");
+ }
+ #endif
+ var motion_actuator_name = motion.ActuatorName;
+ if (this.Actuators.ContainsKey(motion_actuator_name)
+ && this.Actuators[motion_actuator_name] != null) {
+ this.Actuators[motion_actuator_name].ApplyMotion(motion);
+ } else {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("Could find not actuator with the specified name: " + motion_actuator_name);
+ }
+ #endif
+ }
+ }
+ }
+ }
+
+ ///
+ ///
+ protected override void InnerResetRegisteredObjects() {
+ foreach (var actuator in this.Actuators.Values) {
+ actuator?.PrototypingReset();
+ }
+ }
+
+ #endregion
+
+ ///
+ ///
+ ///
+ ///
+ public override String ToString() {
+ var e = " - ";
+
+ e += this.Identifier;
+ e += ", Sensors: ";
+ e += this.Sensors.Count;
+ e += ", Actuators: ";
+ e += this.Actuators.Count;
+ e += ", Objective: ";
+ e += this.ObjectiveFunction != null ? this.ObjectiveFunction.Identifier : "None";
+
+ return e;
+ }
+ }
+}
diff --git a/Runtime/Environments/Prototyping/PrototypingEnvironment.cs.meta b/Runtime/Environments/Prototyping/PrototypingEnvironment.cs.meta
new file mode 100644
index 000000000..dbbcb5149
--- /dev/null
+++ b/Runtime/Environments/Prototyping/PrototypingEnvironment.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a2e55e7cb1b037a08e96ce3b11a9114
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: -20
+ icon: {fileID: 2800000, guid: 4e08a2d574ba14804a3b42b6a9abc9dd, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Environments/PrototypingEnvironment.cs b/Runtime/Environments/PrototypingEnvironment.cs
deleted file mode 100644
index ae07565bd..000000000
--- a/Runtime/Environments/PrototypingEnvironment.cs
+++ /dev/null
@@ -1,1311 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Neodroid.Runtime.Interfaces;
-using Neodroid.Runtime.Messaging.Messages;
-using Neodroid.Runtime.Prototyping.Evaluation;
-using Neodroid.Runtime.Utilities.BoundingBoxes;
-using Neodroid.Runtime.Utilities.Enums;
-using Neodroid.Runtime.Utilities.EventRecipients.droid.Neodroid.Utilities.Unsorted;
-using Neodroid.Runtime.Utilities.Misc.Drawing;
-using Neodroid.Runtime.Utilities.Misc.Extensions;
-using Neodroid.Runtime.Utilities.Misc.Grasping;
-using UnityEngine;
-using Object = System.Object;
-
-namespace Neodroid.Runtime.Environments {
- ///
- ///
- /// Environment to be used with the prototyping components.
- ///
- [AddComponentMenu("Neodroid/Environments/PrototypingEnvironment")]
- public class PrototypingEnvironment : NeodroidEnvironment,
- IPrototypingEnvironment {
- #region NeodroidCallbacks
-
- ///
- ///
- ///
- protected override void PreSetup() {
- if (this._objective_function == null) {
- //this._objective_function = this.GetComponent();
- }
-
- if (!this.PlayableArea) {
- this.PlayableArea = this.GetComponent();
- }
-
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Setting up");
- }
- #endif
-
- if (this._tracked_game_objects == null || this._tracked_game_objects.Length == 0) {
- this.SaveInitialPoses();
- this.SaveInitialAnimations();
- this.StartCoroutine(this.SaveInitialBodiesIe());
- }
- }
-
- ///
- ///
- ///
- protected override void Clear() {
- this.Displayers.Clear();
- this.Configurables.Clear();
- this.Actors.Clear();
- this.Observers.Clear();
- this.Resetables.Clear();
- this.Listeners.Clear();
- }
-
- ///
- ///
- ///
- public override void PostStep() {
- this.PostStepEvent?.Invoke();
- if (this._Configure) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Configuring");
- }
- #endif
- this._Configure = false;
- this.Configure();
- }
-
- if (!this._Simulation_Manager.IsSyncingEnvironments) {
- this._ReplyWithDescriptionThisStep = false;
- }
- }
-
- ///
- ///
- ///
- ///
- public override Reaction SampleReaction() {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Sampling a reaction for environment {this.Identifier}");
- }
- #endif
-
- this._sample_motions.Clear();
-
- foreach (var actor in this.Actors) {
- var actor_value = actor.Value;
- if (actor_value != null && actor_value.Motors != null) {
- foreach (var motor in actor_value.Motors) {
- var motor_value = motor.Value;
- if (motor_value != null)
- this._sample_motions.Add(new MotorMotion(actor.Key, motor.Key, motor_value.Sample()));
- }
- }
- }
-
- if (this._Terminated) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("SampleReaction resetting environment");
- }
- #endif
-
- var reset_reaction =
- new ReactionParameters(false, false, true, episode_count : true) {IsExternal = false};
- return new Reaction(reset_reaction, this.Identifier);
- }
-
- var rp = new ReactionParameters(true, true, episode_count : true) {IsExternal = false};
- return new Reaction(rp, this._sample_motions.ToArray(), null, null, null, "", this.Identifier);
- }
-
- ///
- ///
- ///
- protected void UpdateObserversData() {
- foreach (var obs in this.Observers.Values) {
- obs?.UpdateObservation();
- }
- }
-
- ///
- ///
- ///
- protected void UpdateConfigurableValues() {
- foreach (var con in this.Configurables.Values) {
- con?.UpdateCurrentConfiguration();
- }
- }
-
- #endregion
-
- #region Fields
-
- ///
- ///
- ///
- [Header("References", order = 20), SerializeField]
- ObjectiveFunction _objective_function;
-
- ///
- ///
- ///
- [Header("General", order = 30), SerializeField]
- Transform _coordinate_reference_point;
-
- ///
- ///
- ///
- [SerializeField]
- bool _track_only_children = true;
-
- ///
- ///
- ///
- [SerializeField]
- CoordinateSystem _coordinate_system = CoordinateSystem.Local_coordinates_;
-
- ///
- ///
- ///
- [Header("(Optional)", order = 80), SerializeField]
- BoundingBox _playable_area;
-
- ///
- ///
- ///
- Object _react_lock = new Object();
-
- [SerializeField] int _reset_i;
-
- WaitForFixedUpdate _wait_for_fixed_update = new WaitForFixedUpdate();
- List _observables = new List();
- List _sample_motions = new List();
-
- #endregion
-
- #region PrivateMembers
-
- ///
- ///
- ///
- Vector3[] _reset_positions;
-
- ///
- ///
- ///
- Quaternion[] _reset_rotations;
-
- ///
- ///
- ///
- GameObject[] _tracked_game_objects;
-
- ///
- ///
- ///
- Vector3[] _reset_velocities;
-
- ///
- ///
- ///
- Vector3[] _reset_angulars;
-
- ///
- ///
- ///
- Rigidbody[] _tracked_rigid_bodies;
-
- ///
- ///
- ///
- Transform[] _poses;
-
- ///
- ///
- ///
- Pose[] _received_poses;
-
- ///
- ///
- ///
- Body[] _received_bodies;
-
- ///
- ///
- ///
- Configuration[] _received_configurations;
-
- ///
- ///
- ///
- Animation[] _animations;
-
- ///
- ///
- ///
- float[] _reset_animation_times;
-
- [SerializeField] bool _initials_saved_flag;
- [SerializeField] bool _update_observations_with_every_tick;
-
- #endregion
-
- #region PublicMethods
-
- #region Getters
-
- ///
- ///
- ///
- public Dictionary Displayers { get; } = new Dictionary();
-
- ///
- ///
- ///
- public Dictionary Configurables { get; } = new Dictionary();
-
- ///
- ///
- ///
- public Dictionary Actors { get; } = new Dictionary();
-
- ///
- ///
- ///
- public SortedDictionary Observers { get; } = new SortedDictionary();
-
- ///
- ///
- ///
- public Dictionary Resetables { get; } = new Dictionary();
-
- ///
- ///
- ///
- public Dictionary Listeners { get; } =
- new Dictionary();
-
- ///
- ///
- ///
- public override string PrototypingTypeName {
- get { return "PrototypingEnvironment"; }
- }
-
- ///
- ///
- ///
- public IObjective ObjectiveFunction {
- get { return this._objective_function; }
- set { this._objective_function = (ObjectiveFunction)value; }
- }
-
- ///
- ///
- ///
- public Transform Transform {
- get { return this.transform; }
- }
-
- ///
- ///
- ///
- public BoundingBox PlayableArea {
- get { return this._playable_area; }
- set { this._playable_area = value; }
- }
-
- ///
- ///
- ///
- public Transform CoordinateReferencePoint {
- get { return this._coordinate_reference_point; }
- set { this._coordinate_reference_point = value; }
- }
-
- ///
- ///
- ///
- public CoordinateSystem CoordinateSystem {
- get { return this._coordinate_system; }
- set { this._coordinate_system = value; }
- }
-
- #endregion
-
- ///
- /// Termination of an episode, can be supplied with a reason for various purposes debugging or clarification for a learner.
- ///
- ///
- public void Terminate(string reason = "None") {
- lock (this._react_lock) {
- if (this._Terminable) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.LogWarning($"Environment {this.Identifier} as terminated because {reason}");
- }
- #endif
-
- this._Terminated = true;
- this._LastTermination_Reason = reason;
- }
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- public override EnvironmentState ReactAndCollectState(Reaction reaction) {
- this.React(reaction);
-
- return this.CollectState();
- }
-
- ///
- ///
- ///
- ///
- ///
- public override void React(Reaction reaction) {
- lock (this._react_lock) {
- this.LastReaction = reaction;
- this._Terminable = reaction.Parameters.Terminable;
-
- if (reaction.Parameters.IsExternal) {
- this._received_configurations = reaction.Configurations;
-
- if (!this._ReplyWithDescriptionThisStep) {
- this._ReplyWithDescriptionThisStep = reaction.Parameters.Describe;
- }
-
- this._Configure = reaction.Parameters.Configure;
- if (this._Configure && reaction.Unobservables != null) {
- this._received_poses = reaction.Unobservables.Poses;
- this._received_bodies = reaction.Unobservables.Bodies;
- }
- }
-
- this.SendToDisplayers(reaction);
-
- if (reaction.Parameters.Reset) {
- this.Terminate(
- $"{(reaction.Parameters.IsExternal ? "External" : "Internal")} reaction caused a reset");
- this._Resetting = true;
- } else if (reaction.Parameters.Step) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Stepping in environment({this.Identifier})");
- }
- #endif
- this.Step(reaction);
- }
- }
- }
-
- ///
- ///
- ///
- public override void Tick() {
- if (this._Resetting) {
- if (this._reset_i >= this._Simulation_Manager.SimulatorConfiguration.ResetIterations) {
- this._Resetting = false;
- this._reset_i = 0;
- this.UpdateConfigurableValues();
- this.UpdateObserversData();
- } else {
- this.EnvironmentReset();
- this._reset_i += 1;
- }
-
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log(
- $"Reset {this._reset_i}/{this._Simulation_Manager.SimulatorConfiguration.ResetIterations}");
- }
- #endif
- } else {
- if (_update_observations_with_every_tick) {
- this.UpdateObserversData();
- }
- }
-
-
-
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Tick");
- }
- #endif
- }
-
- #region Registration
-
- ///
- ///
- ///
- public void Register(IDisplayer displayer) { this.Register(displayer, displayer.Identifier); }
-
- ///
- ///
- ///
- ///
- ///
- public void Register(IDisplayer obj, string identifier) {
- if (!this.Displayers.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered displayer {identifier}");
- }
- #endif
- this.Displayers.Add(identifier, obj);
- } else {
- Debug.LogWarning(
- $"WARNING! Please check for duplicates, Environment {this.name} already has displayer {identifier} registered");
- }
- }
-
- ///
- ///
- ///
- ///
- public void Register(IActor actor) { this.Register(actor, actor.Identifier); }
-
- ///
- ///
- ///
- ///
- ///
- public void Register(IActor actor, string identifier) {
- if (!this.Actors.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered actor {identifier}");
- }
- #endif
-
- this.Actors.Add(identifier, actor);
- } else {
- Debug.LogWarning(
- $"WARNING! Please check for duplicates, Environment {this.name} already has actor {identifier} registered");
- }
- }
-
- ///
- ///
- ///
- ///
- public void Register(IObserver observer) { this.Register(observer, observer.Identifier); }
-
- ///
- /// ///
- ///
- ///
- ///
- public void Register(IObserver observer, string identifier) {
- if (!this.Observers.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered observer {identifier}");
- }
- #endif
-
- this.Observers.Add(identifier, observer);
- } else {
- Debug.LogWarning(
- $"WARNING! Please check for duplicates, Environment {this.name} already has observer {identifier} registered");
- }
- }
-
- ///
- ///
- ///
- ///
- public void Register(IConfigurable configurable) { this.Register(configurable, configurable.Identifier); }
-
- ///
- ///
- ///
- ///
- ///
- public void Register(IConfigurable configurable, string identifier) {
- if (!this.Configurables.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered configurable {identifier}");
- }
- #endif
-
- this.Configurables.Add(identifier, configurable);
- } else {
- Debug.LogWarning(
- $"WARNING! Please check for duplicates, Environment {this.name} already has configurable {identifier} registered");
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- public void Register(IResetable resetable, string identifier) {
- if (!this.Resetables.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered resetable {identifier}");
- }
- #endif
- this.Resetables.Add(identifier, resetable);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log(
- $"WARNING! Please check for duplicates, Environment {this.name} already has resetable {identifier} registered");
- }
- #endif
- }
- }
-
- ///
- ///
- ///
- ///
- public void Register(IResetable resetable) { this.Register(resetable, resetable.Identifier); }
-
- public void Register(IEnvironmentListener environment_listener) {
- this.Register(environment_listener, environment_listener.Identifier);
- }
-
- public void Register(IEnvironmentListener environment_listener, string identifier) {
- if (!this.Listeners.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} has registered listener {identifier}");
- }
- #endif
- this.Listeners.Add(identifier, environment_listener);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log(
- $"WARNING! Please check for duplicates, Environment {this.name} already has listener {identifier} registered");
- }
- #endif
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IActor actor) { this.UnRegister(actor, actor.Identifier); }
-
- public void UnRegister(IActor t, string obj) {
- if (this.Actors.ContainsKey(obj)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered actor {obj}");
- }
- #endif
- this.Actors.Remove(obj);
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IObserver observer) { this.UnRegister(observer, observer.Identifier); }
-
- public void UnRegister(IObserver t, string identifier) {
- if (this.Observers.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered observer {identifier}");
- }
- #endif
- this.Observers.Remove(identifier);
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IConfigurable configurable) {
- this.UnRegister(configurable, configurable.Identifier);
- }
-
- public void UnRegister(IConfigurable t, string identifier) {
- if (this.Configurables.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered configurable {identifier}");
- }
- #endif
- this.Configurables.Remove(identifier);
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IDisplayer displayer) { this.UnRegister(displayer, displayer.Identifier); }
-
- public void UnRegister(IDisplayer t, string identifier) {
- if (this.Displayers.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered configurable {identifier}");
- }
- #endif
- this.Displayers.Remove(identifier);
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IResetable resetable) { this.UnRegister(resetable, resetable.Identifier); }
-
- public void UnRegister(IResetable t, string identifier) {
- if (this.Resetables.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered resetable {identifier}");
- }
- #endif
- this.Resetables.Remove(identifier);
- }
- }
-
- ///
- ///
- ///
- ///
- public void UnRegister(IEnvironmentListener environment_listener) {
- this.UnRegister(environment_listener, environment_listener.Identifier);
- }
-
- public void UnRegister(IEnvironmentListener t, string identifier) {
- if (this.Listeners.ContainsKey(identifier)) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Environment {this.name} unregistered listener {identifier}");
- }
- #endif
- this.Listeners.Remove(identifier);
- }
- }
-
- #endregion
-
- #region Transformations
-
- ///
- ///
- ///
- ///
- ///
- public Vector3 TransformPosition(Vector3 position) {
- if (this._coordinate_system == CoordinateSystem.Relative_to_reference_point_) {
- if (this._coordinate_reference_point) {
- return this._coordinate_reference_point.transform.InverseTransformPoint(position);
- }
-
- return position;
- }
-
- if (this._coordinate_system == CoordinateSystem.Local_coordinates_) {
- return position - this.transform.position;
- }
-
- return position;
- }
-
- ///
- ///
- ///
- ///
- ///
- public Vector3 InverseTransformPosition(Vector3 position) {
- if (this._coordinate_system == CoordinateSystem.Relative_to_reference_point_) {
- if (this._coordinate_reference_point) {
- return this._coordinate_reference_point.transform.TransformPoint(position);
- }
-
- return position;
- }
-
- if (this._coordinate_system == CoordinateSystem.Local_coordinates_) {
- return position - this.transform.position;
- }
-
- return position;
- }
-
- ///
- ///
- ///
- ///
- ///
- public Vector3 TransformDirection(Vector3 direction) {
- if (this._coordinate_system == CoordinateSystem.Relative_to_reference_point_) {
- if (this._coordinate_reference_point) {
- return this._coordinate_reference_point.transform.InverseTransformDirection(direction);
- }
-
- return direction;
- }
-
- if (this._coordinate_system == CoordinateSystem.Local_coordinates_) {
- return this.transform.InverseTransformDirection(direction);
- }
-
- return direction;
- }
-
- ///
- ///
- ///
- ///
- ///
- public Vector3 InverseTransformDirection(Vector3 direction) {
- if (this._coordinate_system == CoordinateSystem.Relative_to_reference_point_) {
- if (this._coordinate_reference_point) {
- return this._coordinate_reference_point.transform.TransformDirection(direction);
- }
-
- return direction;
- }
-
- if (this._coordinate_system == CoordinateSystem.Local_coordinates_) {
- return this.transform.InverseTransformDirection(direction);
- }
-
- return direction;
- }
-
- ///
- ///
- ///
- ///
- ///
- public Quaternion TransformRotation(Quaternion quaternion) {
- if (this._coordinate_system == CoordinateSystem.Relative_to_reference_point_) {
- if (this._coordinate_reference_point) {
- return Quaternion.Inverse(this._coordinate_reference_point.rotation) * quaternion;
- }
-
- //Quaternion.Euler(this._coordinate_reference_point.transform.TransformDirection(quaternion.forward));
- }
-
- return quaternion;
- }
-
- #endregion
-
- #endregion
-
- #region PrivateMethods
-
- ///
- ///
- ///
- void SaveInitialPoses() {
- var ignored_layer = LayerMask.NameToLayer("IgnoredByNeodroid");
- if (this._track_only_children) {
- this._tracked_game_objects =
- NeodroidUtilities.RecursiveChildGameObjectsExceptLayer(this.transform, ignored_layer);
- } else {
- this._tracked_game_objects = NeodroidUtilities.FindAllGameObjectsExceptLayer(ignored_layer);
- }
-
- var length = this._tracked_game_objects.Length;
-
- this._reset_positions = new Vector3[length];
- this._reset_rotations = new Quaternion[length];
- this._poses = new Transform[length];
- for (var i = 0; i < length; i++) {
- var go = this._tracked_game_objects[i];
- var trans = go.transform;
- this._reset_positions[i] = trans.position;
- this._reset_rotations[i] = trans.rotation;
- this._poses[i] = trans;
- var maybe_joint = go.GetComponent();
- if (maybe_joint != null) {
- var maybe_joint_fix = maybe_joint.GetComponent();
- if (maybe_joint_fix == null) {
- // ReSharper disable once RedundantAssignment
- maybe_joint_fix = maybe_joint.gameObject.AddComponent();
- }
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Added a JointFix component to {maybe_joint_fix.name}");
- }
- #endif
- }
- }
- }
-
- ///
- ///
- ///
- void SaveInitialBodies() {
- /*var body_list = new List();
- foreach (var go in this._tracked_game_objects) {
- if (go != null) {
- var body = go.GetComponent();
- if (body)
- body_list.Add(body);
- }
- }
- this._bodies = body_list.ToArray();
- */ //Should be equalvalent to the line below, but kept as a reference in case of confusion
-
- this._tracked_rigid_bodies = this._tracked_game_objects.Where(go => go != null)
- .Select(go => go.GetComponent()).Where(body => body).ToArray();
-
- this._reset_velocities = new Vector3[this._tracked_rigid_bodies.Length];
- this._reset_angulars = new Vector3[this._tracked_rigid_bodies.Length];
- for (var i = 0; i < this._tracked_rigid_bodies.Length; i++) {
- this._reset_velocities[i] = this._tracked_rigid_bodies[i].velocity;
- this._reset_angulars[i] = this._tracked_rigid_bodies[i].angularVelocity;
- }
- }
-
- ///
- ///
- ///
- void SaveInitialAnimations() {
- this._animations = this._tracked_game_objects.Where(go => go != null)
- .Select(go => go.GetComponent()).Where(anim => anim).ToArray();
- this._reset_animation_times = new float[this._animations.Length];
- for (var i = 0; i < this._animations.Length; i++) {
- if (this._animations[i]) {
- if (this._animations[i].clip) {
- this._reset_animation_times[i] =
- this._animations[i].CrossFadeQueued(this._animations[i].clip.name)
- .time; //TODO: IS NOT USED AS RIGHT NOW and should use animations clips instead the legacy "clip.name".
- //TODO: DOES NOT WORK
- }
- }
- }
- }
-
- ///
- ///
- ///
- ///
- IEnumerator SaveInitialBodiesIe() {
- yield return this._wait_for_fixed_update;
- this.SaveInitialBodies();
- }
-
- ///
- ///
- ///
- ///
- public override EnvironmentState CollectState() {
- lock (this._react_lock) {
- if (this.Actors != null)
- foreach (var a in this.Actors.Values) {
- if (a.Motors != null)
- foreach (var m in a.Motors.Values) {
- this._Energy_Spent += m.GetEnergySpend();
- }
- }
-
- var signal = 0f;
-
- if (this._objective_function != null) {
- signal = this._objective_function.Evaluate();
- }
-
- EnvironmentDescription description = null;
- if (this._ReplyWithDescriptionThisStep) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Describing Environment");
- }
- #endif
- var threshold = 0f;
- if (this._objective_function != null) {
- threshold = this._objective_function.SolvedThreshold;
- }
-
- description = new EnvironmentDescription(
- this.EpisodeLength,
- this.Actors,
- this.Configurables,
- threshold);
- }
-
- this._observables.Clear();
- foreach (var item in this.Observers) {
- if (item.Value != null) {
- if (item.Value.FloatEnumerable != null) {
- this._observables.AddRange(item.Value.FloatEnumerable);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Observer with key {item.Key} has a null FloatEnumerable value");
- }
- #endif
- }
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Observer with key {item.Key} has a null value");
- }
- #endif
- }
- }
-
- var obs = this._observables.ToArray();
-
- var time = Time.time - this._Lastest_Reset_Time;
-
- var state = new EnvironmentState(
- this.Identifier,
- this._Energy_Spent,
- this.CurrentFrameNumber,
- time,
- signal,
- this._Terminated,
- ref obs,
- this.LastTerminationReason,
- description);
-
- if (this._Simulation_Manager.SimulatorConfiguration.AlwaysSerialiseUnobservables
- || this._ReplyWithDescriptionThisStep) {
- state.Unobservables = new Unobservables(ref this._tracked_rigid_bodies, ref this._poses);
- }
-
- if (this._Simulation_Manager.SimulatorConfiguration.AlwaysSerialiseIndividualObservables
- || this._ReplyWithDescriptionThisStep) {
- state.Observers = this.Observers.Values.ToArray();
- }
-
- return state;
- }
- }
-
- ///
- ///
- ///
- ///
- public override void ObservationsString(DataPoller recipient) {
- recipient.PollData(
- string.Join(
- "\n\n",
- this.Observers.Values.Select(e => $"{e.Identifier}:\n{string.Join(",", e.FloatEnumerable)}")));
- }
-
- ///
- ///
- ///
- public override void EnvironmentReset() {
- this._Lastest_Reset_Time = Time.time;
- this.CurrentFrameNumber = 0;
- this._objective_function?.EnvironmentReset();
-
- this.SetEnvironmentPoses(this._tracked_game_objects, this._reset_positions, this._reset_rotations);
- this.SetEnvironmentBodies(this._tracked_rigid_bodies, this._reset_velocities, this._reset_angulars);
-
- this.ResetRegisteredObjects();
- this.Configure();
-
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Reset called on environment {this.Identifier}");
- }
- #endif
-
- this._Terminated = false;
- }
-
- ///
- ///
- ///
- protected void Configure() {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Configure was called");
- }
- #endif
-
- if (this._received_poses != null) {
- var positions = new Vector3[this._received_poses.Length];
- var rotations = new Quaternion[this._received_poses.Length];
- for (var i = 0; i < this._received_poses.Length; i++) {
- positions[i] = this._received_poses[i].position;
- rotations[i] = this._received_poses[i].rotation;
- }
-
- this.SetEnvironmentPoses(this._tracked_game_objects, positions, rotations);
- }
-
- if (this._received_bodies != null) {
- var vels = new Vector3[this._received_bodies.Length];
- var angs = new Vector3[this._received_bodies.Length];
- for (var i = 0; i < this._received_bodies.Length; i++) {
- vels[i] = this._received_bodies[i].Velocity;
- angs[i] = this._received_bodies[i].AngularVelocity;
- }
-
- this.SetEnvironmentBodies(this._tracked_rigid_bodies, vels, angs);
- }
-
- if (this._received_configurations != null) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Configuration length: {this._received_configurations.Length}");
- }
- #endif
- foreach (var configuration in this._received_configurations) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Configuring configurable with the specified name: " + configuration.ConfigurableName);
- }
- #endif
- if (this.Configurables.ContainsKey(configuration.ConfigurableName)) {
- this.Configurables[configuration.ConfigurableName].ApplyConfiguration(configuration);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log(
- $"Could find not configurable with the specified name: {configuration.ConfigurableName}");
- }
- #endif
- }
- }
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Has no received_configurations");
- }
- #endif
- }
-
- this.UpdateConfigurableValues();
- this.UpdateObserversData();
- }
-
- ///
- ///
- ///
- ///
- void SendToDisplayers(Reaction reaction) {
- if (reaction.Displayables != null && reaction.Displayables.Length > 0) {
- foreach (var displayable in reaction.Displayables) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Applying " + displayable + " To " + this.name + "'s displayers");
- }
- #endif
- var displayable_name = displayable.DisplayableName;
- if (this.Displayers.ContainsKey(displayable_name) && this.Displayers[displayable_name] != null) {
- var v = displayable.DisplayableValue;
- this.Displayers[displayable_name].Display(v);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Could find not displayer with the specified name: " + displayable_name);
- }
- #endif
- }
- }
- }
- }
-
- ///
- ///
- ///
- ///
- void SendToMotors(Reaction reaction) {
- if (reaction.Motions != null && reaction.Motions.Length > 0) {
- foreach (var motion in reaction.Motions) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Applying " + motion + " To " + this.name + "'s actors");
- }
- #endif
- var motion_actor_name = motion.ActorName;
- if (this.Actors.ContainsKey(motion_actor_name) && this.Actors[motion_actor_name] != null) {
- this.Actors[motion_actor_name].ApplyMotion(motion);
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Could find not actor with the specified name: " + motion_actor_name);
- }
- #endif
- }
- }
- }
- }
-
- ///
- ///
- ///
- public event Action PreStepEvent;
-
- ///
- ///
- ///
- public event Action StepEvent;
-
- ///
- ///
- ///
- public event Action PostStepEvent;
-
- ///
- ///
- ///
- ///
- void Step(Reaction reaction) {
- lock (this._react_lock) {
- this.PreStepEvent?.Invoke();
-
- if (reaction.Parameters.EpisodeCount) {
- this.CurrentFrameNumber++;
- } else {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.LogWarning("Step did not count towards CurrentFrameNumber");
- }
- #endif
- }
-
- this.SendToMotors(reaction);
-
- this.StepEvent?.Invoke();
-
- if (this.EpisodeLength > 0 && this.CurrentFrameNumber >= this.EpisodeLength) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log($"Maximum episode length reached, Length {this.CurrentFrameNumber}");
- }
- #endif
-
- this.Terminate("Maximum episode length reached");
- }
-
- this.UpdateObserversData();
- }
- }
-
- ///
- ///
- ///
- protected void ResetRegisteredObjects() {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log("Resetting registered objects");
- }
- #endif
-
- foreach (var configurable in this.Configurables.Values) {
- configurable?.EnvironmentReset();
- }
-
- foreach (var resetable in this.Resetables.Values) {
- resetable?.EnvironmentReset();
- }
-
- foreach (var actor in this.Actors.Values) {
- actor?.EnvironmentReset();
- }
-
- foreach (var observer in this.Observers.Values) {
- observer?.EnvironmentReset();
- }
-
- foreach (var listener in this.Listeners.Values) {
- listener?.EnvironmentReset();
- }
- }
-
- #region EnvironmentStateSetters
-
- ///
- ///
- ///
- ///
- ///
- ///
- void SetEnvironmentPoses(GameObject[] child_game_objects, Vector3[] positions, Quaternion[] rotations) {
- if (this._Simulation_Manager != null) {
- for (var iterations = 1;
- iterations <= this._Simulation_Manager.SimulatorConfiguration.ResetIterations;
- iterations++) {
- for (var i = 0; i < child_game_objects.Length; i++) {
- if (child_game_objects[i] != null && i < positions.Length && i < rotations.Length) {
- var rigid_body = child_game_objects[i].GetComponent();
- if (rigid_body) {
- rigid_body.Sleep();
- }
-
- child_game_objects[i].transform.position = positions[i];
- child_game_objects[i].transform.rotation = rotations[i];
- if (rigid_body) {
- rigid_body.WakeUp();
- }
-
- var joint_fix = child_game_objects[i].GetComponent();
- if (joint_fix) {
- joint_fix.Reset();
- }
-
- var anim = child_game_objects[i].GetComponent();
- if (anim) {
- anim.Rewind();
- anim.Play();
- anim.Sample();
- anim.Stop();
- }
- }
- }
- }
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- void SetEnvironmentBodies(Rigidbody[] bodies, Vector3[] velocities, Vector3[] angulars) {
- if (bodies != null && bodies.Length > 0) {
- for (var i = 0; i < bodies.Length; i++) {
- if (i < bodies.Length && bodies[i] != null && i < velocities.Length && i < angulars.Length) {
- #if NEODROID_DEBUG
- if (this.Debugging) {
- Debug.Log(
- $"Setting {bodies[i].name}, velocity to {velocities[i]} and angular velocity to {angulars[i]}");
- }
-
- #endif
-
- bodies[i].Sleep();
- bodies[i].velocity = velocities[i];
- bodies[i].angularVelocity = angulars[i];
- bodies[i].WakeUp();
- }
- }
- }
- }
-
- #endregion
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/Runtime/Environments/RandomisedEnvironment.cs b/Runtime/Environments/RandomisedEnvironment.cs
index 76d20905e..02fe1bf15 100644
--- a/Runtime/Environments/RandomisedEnvironment.cs
+++ b/Runtime/Environments/RandomisedEnvironment.cs
@@ -1,31 +1,27 @@
-using UnityEngine;
-using Random = System.Random;
+using droid.Runtime.Environments.Prototyping;
+using UnityEngine;
-namespace Neodroid.Runtime.Environments {
+namespace droid.Runtime.Environments {
///
///
///
[AddComponentMenu("Neodroid/Environments/RandomisedEnvironment")]
public class RandomisedEnvironment : PrototypingEnvironment {
///
- ///
- ///
- Random _random_generator = new Random();
-
- ///
- ///
///
void RandomiseEnvironment() {
foreach (var configurable in this.Configurables) {
- var value = configurable.Value.SampleConfiguration(this._random_generator);
- configurable.Value.ApplyConfiguration(value);
+ var value = configurable.Value.SampleConfigurations();
+ foreach (var v in value) {
+ configurable.Value.ApplyConfiguration(v);
+ }
}
}
///
///
///
- protected override void PreSetup() {
+ public override void PreSetup() {
base.PreSetup();
this.RandomiseEnvironment();
}
@@ -34,20 +30,20 @@ protected override void PreSetup() {
///
///
public override void PostStep() {
- if (this._Terminated) {
- this._Terminated = false;
- this.EnvironmentReset();
+ if (this.Terminated) {
+ this.Terminated = false;
+ this.PrototypingReset();
this.RandomiseEnvironment();
}
- if (this._Configure) {
- this._Configure = false;
- this.Configure();
+ if (this.Configure) {
+ this.Configure = false;
+ this.Reconfigure();
}
- this.UpdateConfigurableValues();
- this.UpdateObserversData();
+ this.LoopConfigurables();
+ this.LoopSensors();
}
}
-}
\ No newline at end of file
+}
diff --git a/Runtime/Environments/ScriptedEnviroment.cs b/Runtime/Environments/ScriptedEnviroment.cs
index 29b3d0b4d..9466ed943 100644
--- a/Runtime/Environments/ScriptedEnviroment.cs
+++ b/Runtime/Environments/ScriptedEnviroment.cs
@@ -1,89 +1,85 @@
using System;
using System.Collections.Generic;
-using Neodroid.Runtime.Interfaces;
-using Neodroid.Runtime.Managers;
-using Neodroid.Runtime.Messaging.Messages;
-using Neodroid.Runtime.Utilities.EventRecipients.droid.Neodroid.Utilities.Unsorted;
-using Neodroid.Runtime.Utilities.Misc.Drawing;
-using Neodroid.Runtime.Utilities.Misc.Grasping;
+using droid.Runtime.GameObjects.StatusDisplayer.EventRecipients;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Managers;
+using droid.Runtime.Messaging.Messages;
+using droid.Runtime.Utilities;
using UnityEngine;
using Random = UnityEngine.Random;
-namespace Neodroid.Runtime.Environments {
+namespace droid.Runtime.Environments {
///
///
///
[AddComponentMenu("Neodroid/Environments/ScriptedEnvironment")]
public class ScriptedEnvironment : NeodroidEnvironment {
///
- ///
///
[SerializeField]
- Renderer _actor_renderer;
+ Renderer _actor_renderer = null;
///
- ///
///
[SerializeField]
- int _actor_x;
+ int _actor_x = 0;
///
- ///
///
[SerializeField]
- int _actor_y;
+ int _actor_y = 0;
///
- ///
///
[SerializeField]
- Renderer _goal_renderer;
+ Renderer _goal_renderer = null;
///
- ///
///
[SerializeField]
- int _goal_x;
+ int _goal_x = 0;
///
- ///
///
[SerializeField]
- int _goal_y;
+ int _goal_y = 0;
///
- ///
///
- int[,] _grid;
+ int[,] _grid = null;
///
- ///
///
[SerializeField]
- int _height;
+ int _height = 0;
+
+ List _motions = new List();
///
- ///
///
[SerializeField]
- IManager _time_simulation_manager;
-
- List _motions = new List();
+ IManager _time_simulation_manager = null;
///
- ///
///
[SerializeField]
- int _width;
+ int _width = 0;
+
+ public override void RemotePostSetup() {
+ #if NEODROID_DEBUG
+ if (this.Debugging) {
+ Debug.Log("PostSetup");
+ }
+ #endif
+
+ }
///
///
- ///
///
public override string PrototypingTypeName { get { return "ScriptedEnvironment"; } }
///
- ///
///
public int ActorX {
get { return this._actor_x; }
@@ -91,7 +87,6 @@ public int ActorX {
}
///
- ///
///
public int ActorY {
get { return this._actor_y; }
@@ -99,7 +94,6 @@ public int ActorY {
}
///
- ///
///
public int GoalX {
get { return this._goal_x; }
@@ -107,7 +101,6 @@ public int GoalX {
}
///
- ///
///
public int GoalY {
get { return this._goal_y; }
@@ -116,9 +109,8 @@ public int GoalY {
///
///
- ///
///
- protected override void Setup() {
+ public override void Setup() {
this._grid = new int[this._width, this._height];
var k = 0;
@@ -128,11 +120,13 @@ protected override void Setup() {
}
}
- this._time_simulation_manager = (IManager)NeodroidUtilities.MaybeRegisterComponent(
- (NeodroidManager)this._time_simulation_manager,
- this);
+ this._time_simulation_manager =
+ NeodroidRegistrationUtilities.RegisterComponent((AbstractNeodroidManager)this
+ ._time_simulation_manager,
+ this);
}
+
///
///
///
@@ -148,29 +142,21 @@ public override void PostStep() {
///
///
- ///
///
///
public override Reaction SampleReaction() {
this._motions.Clear();
var strength = Random.Range(0, 4);
- this._motions.Add(new MotorMotion("", "", strength));
-
- var rp = new ReactionParameters(true, true, episode_count : true) {IsExternal = false};
- return new Reaction(rp, this._motions.ToArray(), null, null, null, "");
- }
-
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public override EnvironmentState ReactAndCollectState(Reaction reaction) {
- this.React(reaction);
- return this.CollectState();
+ this._motions.Add(new ActuatorMotion("", "", strength));
+
+ var rp = new ReactionParameters(StepResetObserve.Step_, true, episode_count : true);
+ return new Reaction(rp,
+ this._motions.ToArray(),
+ null,
+ null,
+ null,
+ "");
}
public override void React(Reaction reaction) {
@@ -199,18 +185,23 @@ public override void React(Reaction reaction) {
///
public override void Tick() { }
- public override EnvironmentState CollectState() {
+ public override EnvironmentSnapshot Snapshot() {
var actor_idx = this._grid[this.ActorX, this.ActorY];
var goal_idx = this._grid[this.GoalX, this.GoalY];
var terminated = actor_idx == goal_idx;
var signal = terminated ? 1 : 0;
- var time = Time.time - this._Lastest_Reset_Time;
+ var time = Time.realtimeSinceStartup - this.LastResetTime;
var observables = new float[] {actor_idx};
- return new EnvironmentState(this.Identifier, 0, 0, time, signal, terminated, ref observables);
+ return new EnvironmentSnapshot(this.Identifier,
+ 0,
+ time,
+ signal,
+ terminated,
+ ref observables);
}
///
@@ -218,9 +209,9 @@ public override EnvironmentState CollectState() {
///
///
public override void ObservationsString(DataPoller recipient) {
- recipient.PollData(this.CollectState().ToString());
+ recipient.PollData(this.Snapshot().ToString());
}
- public override void EnvironmentReset() { }
+ public override void PrototypingReset() { }
}
}
diff --git a/Runtime/Utilities/GameObjects.meta b/Runtime/GameObjects.meta
similarity index 77%
rename from Runtime/Utilities/GameObjects.meta
rename to Runtime/GameObjects.meta
index 5a7958a4b..15ed6fc74 100644
--- a/Runtime/Utilities/GameObjects.meta
+++ b/Runtime/GameObjects.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: afda4f922e71747149cb5759a19c8b47
+guid: bf359ef327bb2aca393323d75e5c4850
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Runtime/Utilities/BoundingBoxes.meta b/Runtime/GameObjects/BoundingBoxes.meta
similarity index 100%
rename from Runtime/Utilities/BoundingBoxes.meta
rename to Runtime/GameObjects/BoundingBoxes.meta
diff --git a/Runtime/GameObjects/BoundingBoxes/BoundingBox.cs b/Runtime/GameObjects/BoundingBoxes/BoundingBox.cs
new file mode 100644
index 000000000..ac335d990
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/BoundingBox.cs
@@ -0,0 +1,770 @@
+using System;
+using System.Collections.Generic;
+using droid.Runtime.Enums.BoundingBox;
+using droid.Runtime.Environments.Prototyping;
+using droid.Runtime.GameObjects.BoundingBoxes.Experimental;
+using droid.Runtime.Interfaces;
+using droid.Runtime.Utilities;
+using UnityEditor;
+using UnityEngine;
+
+#if UNITY_EDITOR
+
+#endif
+
+namespace droid.Runtime.GameObjects.BoundingBoxes {
+ ///
+ ///
+ ///
+ [ExecuteInEditMode]
+ public class BoundingBox : MonoBehaviour {
+ ///
+ ///
+ Transform _bb_transform = null;
+
+ ///
+ ///
+ protected Bounds _Bounds = new Bounds();
+
+ ///
+ ///
+ protected Vector3 _Bounds_Offset;
+
+ ///
+ ///
+ Collider[] _children_colliders = null;
+
+ ///
+ ///
+ MeshFilter[] _children_meshes = null;
+
+ GameObject _empty_go = null;
+
+ ///
+ ///
+ Vector3[,] _lines = null;
+
+ List _lines_list = new List();
+
+ Collider _local_collider;
+
+ MeshFilter _local_mesh;
+
+ Vector3 _point_bbl;
+ Vector3 _point_bbr;
+ Vector3 _point_bfl;
+ Vector3 _point_bfr;
+ Vector3 _point_tbl;
+ Vector3 _point_tbr;
+ Vector3 _point_tfl;
+ Vector3 _point_tfr;
+
+ ///
+ ///
+ Vector3[] _points = null;
+
+ #region fields
+
+ ///
+ ///
+ [SerializeField]
+ public bool _use_bb_transform = false;
+
+ [SerializeField] bool _use_shared_mesh = false;
+
+ ///
+ ///
+ [SearchableEnum]
+ public BasedOn basedOn = BasedOn.Geometry_;
+
+ ///
+ ///
+ [SerializeField]
+ float bb_margin = 0;
+
+ ///
+ ///
+ [SerializeField]
+ BoundingBoxOrientation BbAligning = BoundingBoxOrientation.Axis_aligned_;
+
+ ///
+ ///
+ [SerializeField]
+ bool cacheChildren = true;
+
+ ///
+ ///
+ [SerializeField]
+ Color editorPreviewLineColor = new Color(1f,
+ 0.36f,
+ 0.38f,
+ 0.74f);
+
+ ///
+ ///
+ [SerializeField]
+ ISpatialPrototypingEnvironment environment = null;
+
+ ///
+ ///
+ [SerializeField]
+ bool freezeAfterFirstCalculation = true;
+
+ ///
+ ///
+ [SerializeField]
+ bool includeChildren = false;
+
+ ///
+ ///
+ [SerializeField]
+ bool _only_active_children = true;
+
+ ///
+ ///
+ [SerializeField]
+ bool includeSelf = true;
+
+ ///
+ ///
+ [SerializeField]
+ bool OnAwakeSetup = true;
+
+ ///
+ ///
+ [SerializeField]
+ bool RunInEditModeSetup = false;
+
+ #endregion
+
+ #region Properties
+
+ ///
+ ///
+ public Vector3[] BoundingBoxCoordinates {
+ get {
+ return new[] {
+ this._point_tfl,
+ this._point_tfr,
+ this._point_tbl,
+ this._point_tbr,
+ this._point_bfl,
+ this._point_bfr,
+ this._point_bbl,
+ this._point_bbr
+ };
+ }
+ }
+
+ ///
+ ///
+ public Bounds Bounds { get { return this._Bounds; } }
+
+ public Vector3 Max { get { return this._Bounds.max; } }
+
+ public Vector3 Min { get { return this._Bounds.min; } }
+
+ ///
+ ///
+ public string BoundingBoxCoordinatesAsString {
+ get {
+ var str_rep = "";
+ str_rep += $"\"_top_front_left\":{this.BoundingBoxCoordinates[0]}, ";
+ str_rep += $"\"_top_front_right\":{this.BoundingBoxCoordinates[1]}, ";
+ str_rep += $"\"_top_back_left\":{this.BoundingBoxCoordinates[2]}, ";
+ str_rep += $"\"_top_back_right\":{this.BoundingBoxCoordinates[3]}, ";
+ str_rep += $"\"_bottom_front_left\":{this.BoundingBoxCoordinates[4]}, ";
+ str_rep += $"\"_bottom_front_right\":{this.BoundingBoxCoordinates[5]}, ";
+ str_rep += $"\"_bottom_back_left\":{this.BoundingBoxCoordinates[6]}, ";
+ str_rep += $"\"_bottom_back_right\":{this.BoundingBoxCoordinates[7]}";
+ return str_rep;
+ }
+ }
+
+ ///
+ ///
+ public string BoundingBoxCoordinatesWorldSpaceAsJson {
+ get {
+ var str_rep = "{";
+ var transform1 = this.transform;
+ if (this._use_bb_transform) {
+ transform1 = this._bb_transform;
+ }
+
+ var rotation = transform1.rotation;
+ var position = transform1.position;
+ if (this.environment != null) {
+ str_rep +=
+ $"\"top_front_left\":{JsonifyVec3(this.environment.TransformPoint(rotation * this._point_tfl + position))}, ";
+ str_rep +=
+ $"\"bottom_back_right\":{JsonifyVec3(this.environment.TransformPoint(rotation * this._point_bbr + position))}";
+ }
+
+ str_rep += "}";
+ return str_rep;
+ }
+ }
+
+ ///
+ ///
+ public Vector3[,] Lines { get { return this._lines; } }
+
+ ///
+ ///
+ public Vector3[] Points { get { return this._points; } }
+
+ ///
+ ///
+ ///
+ public Color EditorPreviewLineColor {
+ get { return this.editorPreviewLineColor; }
+ set { this.editorPreviewLineColor = value; }
+ }
+
+ #endregion
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public Rect ScreenSpaceBoundingRect(Camera a_camera, float margin = 0f) {
+ if (this.basedOn == BasedOn.Collider_) {
+ var a = this._local_collider as MeshCollider;
+ if (a) {
+ return a.sharedMesh.GetCameraMinMaxRect(this.transform, a_camera, this.bb_margin - margin);
+ }
+ }
+
+ if (this._local_mesh) {
+ if (this._use_shared_mesh || !Application.isPlaying) {
+ var a = this._local_mesh.sharedMesh.GetCameraMinMaxPoints(this.transform, a_camera);
+ if (this.includeChildren) {
+ foreach (var children_mesh in this._children_meshes) {
+ a = children_mesh.sharedMesh.GetCameraMinMaxPoints(children_mesh.transform,
+ a_camera,
+ a[0],
+ a[1]);
+ }
+
+ return BoundingBoxUtilities.GetMinMaxRect(a[0], a[1], this.bb_margin - margin);
+ }
+ } else {
+ var a = this._local_mesh.mesh.GetCameraMinMaxPoints(this.transform, a_camera);
+ if (this.includeChildren) {
+ foreach (var children_mesh in this._children_meshes) {
+ a = children_mesh.mesh.GetCameraMinMaxPoints(children_mesh.transform,
+ a_camera,
+ a[0],
+ a[1]);
+ }
+
+ return BoundingBoxUtilities.GetMinMaxRect(a[0], a[1], this.bb_margin - margin);
+ }
+ }
+ } else {
+ if (this._use_shared_mesh || !Application.isPlaying) {
+ if (this._children_meshes != null && this._children_meshes.Length > 0) {
+ var a = this._children_meshes[0].sharedMesh
+ .GetCameraMinMaxPoints(this._children_meshes[0].transform, a_camera);
+ if (this.includeChildren) {
+ for (var index = 1; index < this._children_meshes.Length; index++) {
+ var children_mesh = this._children_meshes[index];
+ a = children_mesh.sharedMesh.GetCameraMinMaxPoints(children_mesh.transform,
+ a_camera,
+ a[0],
+ a[1]);
+ }
+
+ return BoundingBoxUtilities.GetMinMaxRect(a[0], a[1], this.bb_margin - margin);
+ }
+ }
+ } else {
+ if (this._children_meshes != null && this._children_meshes.Length > 0) {
+ var a = this._children_meshes[0].mesh
+ .GetCameraMinMaxPoints(this._children_meshes[0].transform, a_camera);
+ if (this.includeChildren) {
+ for (var index = 1; index < this._children_meshes.Length; index++) {
+ var children_mesh = this._children_meshes[index];
+ a = children_mesh.mesh.GetCameraMinMaxPoints(children_mesh.transform,
+ a_camera,
+ a[0],
+ a[1]);
+ }
+
+ return BoundingBoxUtilities.GetMinMaxRect(a[0], a[1], this.bb_margin - margin);
+ }
+ }
+ }
+ }
+
+ return new Rect();
+ }
+
+ ///
+ ///
+ ///
+ ///
+ static string JsonifyVec3(Vector3 vec) { return $"[{vec.x},{vec.y},{vec.z}]"; }
+
+ ///
+ ///
+ void BoundingBoxReset() {
+ this.Awake();
+ this.Start();
+ }
+
+ ///
+ ///
+ void Start() {
+ if (!this.OnAwakeSetup) {
+ this.Setup();
+ }
+ }
+
+ ///
+ ///
+ void Awake() {
+ if (!this.enabled) {
+ return;
+ }
+
+ if (this.environment == null) {
+ this.environment = FindObjectOfType();
+ }
+
+ if (!this._bb_transform) {
+ this._empty_go = new GameObject {hideFlags = HideFlags.HideAndDontSave};
+ this._bb_transform = this._empty_go.transform;
+ }
+
+ if (this.OnAwakeSetup) {
+ this.Setup();
+ }
+ }
+
+ ///
+ ///
+ void Setup() {
+ if (!this.RunInEditModeSetup && !Application.isPlaying) {
+ return;
+ }
+
+ if (!this._bb_transform) {
+ this._empty_go = new GameObject {hideFlags = HideFlags.HideAndDontSave};
+ this._bb_transform = this._empty_go.transform;
+ }
+
+ if (this.includeSelf) {
+ this._local_collider = this.GetComponent();
+ this._local_mesh = this.GetComponent();
+ }
+
+ if (this.includeChildren) {
+ this._children_meshes = this.GetComponentsInChildren();
+ this._children_colliders = this.GetComponentsInChildren();
+ }
+
+ this.CalculateBoundingBox();
+ }
+
+ ///
+ ///
+ void LateUpdate() {
+ if (this.freezeAfterFirstCalculation) {
+ return;
+ }
+
+ if (this.includeChildren && !this.cacheChildren) {
+ if (this._children_meshes != this.GetComponentsInChildren()) {
+ this.BoundingBoxReset();
+ }
+
+ if (this._children_colliders != this.GetComponentsInChildren()) {
+ this.BoundingBoxReset();
+ }
+ } else {
+ this.CalculateBoundingBox();
+ }
+ }
+
+ ///
+ ///
+ void FitCollidersAabb() {
+ var transform1 = this.transform;
+ this._bb_transform.rotation = transform1.rotation;
+ this._bb_transform.position = transform1.position;
+
+ var bounds = new Bounds(this._bb_transform.position, Vector3.zero);
+
+ if (this.includeSelf && this._local_collider) {
+ this._bb_transform.position = this._local_collider.bounds.center;
+ bounds = this._local_collider.bounds;
+ }
+
+ if (this.includeChildren && this._children_colliders != null) {
+ foreach (var a_collider in this._children_colliders) {
+ if (a_collider && a_collider != this._local_collider) {
+ if (this._only_active_children) {
+ if (a_collider.gameObject.activeInHierarchy
+ && a_collider.gameObject.activeSelf
+ && a_collider.enabled) {
+ if (bounds.size == Vector3.zero) {
+ this._bb_transform.rotation = a_collider.transform.rotation;
+ this._bb_transform.position = a_collider.bounds.center;
+ bounds = a_collider.bounds;
+ } else {
+ bounds.Encapsulate(a_collider.bounds);
+ }
+ }
+ } else {
+ if (bounds.size == Vector3.zero) {
+ this._bb_transform.rotation = a_collider.transform.rotation;
+ this._bb_transform.position = a_collider.bounds.center;
+ bounds = a_collider.bounds;
+ } else {
+ bounds.Encapsulate(a_collider.bounds);
+ }
+ }
+ }
+ }
+ }
+
+ this._Bounds = bounds;
+ this._Bounds_Offset = this._Bounds.center - this._bb_transform.position;
+ }
+
+ ///
+ ///
+ void FitRenderersAabb() {
+ var transform1 = this.transform;
+ var position = transform1.position;
+ this._bb_transform.position = position;
+ this._bb_transform.rotation = transform1.rotation;
+
+ var bounds = new Bounds(position, Vector3.zero);
+
+ if (this.includeSelf && this._local_mesh) {
+ Mesh a_mesh;
+
+ if (this._use_shared_mesh) {
+ a_mesh = this._local_mesh.sharedMesh;
+ } else {
+ a_mesh = this._local_mesh.mesh;
+ }
+
+ if (a_mesh.isReadable) {
+ var vc = a_mesh.vertexCount;
+ for (var i = 0; i < vc; i++) {
+ bounds.Encapsulate(this._local_mesh.transform.TransformPoint(a_mesh.vertices[i]));
+ }
+ } else {
+ Debug.LogWarning("Make sure mesh is marked as readable when imported!");
+ }
+ }
+
+ if (this.includeChildren && this._children_meshes != null) {
+ foreach (var t in this._children_meshes) {
+ if (t) {
+ if (this._only_active_children) {
+ if (t.gameObject.activeInHierarchy && t.gameObject.activeSelf) {
+ if (bounds.size == Vector3.zero) {
+ var transform2 = t.transform;
+ position = transform2.position;
+ this._bb_transform.position = position;
+ this._bb_transform.rotation = transform2.rotation;
+ bounds = new Bounds(position, Vector3.zero);
+ }
+
+ Mesh a_mesh;
+
+ if (this._use_shared_mesh) {
+ a_mesh = t.sharedMesh;
+ } else {
+ a_mesh = t.mesh;
+ }
+
+ if (a_mesh) {
+ if (a_mesh.isReadable) {
+ var vc = a_mesh.vertexCount;
+ for (var j = 0; j < vc; j++) {
+ bounds.Encapsulate(t.transform.TransformPoint(a_mesh.vertices[j]));
+ }
+ } else {
+ Debug.LogWarning("Make sure mesh is marked as readable when imported!");
+ }
+ }
+ }
+ } else {
+ if (bounds.size == Vector3.zero) {
+ bounds = new Bounds(t.transform.position, Vector3.zero);
+ }
+
+ Mesh a_mesh;
+
+ if (this._use_shared_mesh) {
+ a_mesh = t.sharedMesh;
+ } else {
+ a_mesh = t.mesh;
+ }
+
+ if (a_mesh) {
+ var vc = a_mesh.vertexCount;
+ for (var j = 0; j < vc; j++) {
+ bounds.Encapsulate(t.transform.TransformPoint(a_mesh.vertices[j]));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ this._Bounds = bounds;
+ this._Bounds_Offset = this._Bounds.center - position;
+ }
+
+ ///
+ ///
+ void CalculateBoundingBox() {
+ if (!this.RunInEditModeSetup && !Application.isPlaying || this._bb_transform == null) {
+ return;
+ }
+
+ if (this.basedOn == BasedOn.Collider_) {
+ switch (this.BbAligning) {
+ case BoundingBoxOrientation.Axis_aligned_:
+ this.FitCollidersAabb();
+ this.RecalculatePoints();
+ this.RecalculateLines();
+ break;
+ case BoundingBoxOrientation.Object_oriented_:
+ this.FitCollidersOobb();
+ break;
+ case BoundingBoxOrientation.Camera_oriented_:
+ this.FitRenderersCabb();
+ break;
+ default: throw new ArgumentOutOfRangeException();
+ }
+ } else {
+ switch (this.BbAligning) {
+ case BoundingBoxOrientation.Axis_aligned_:
+ this.FitRenderersAabb();
+ this.RecalculatePoints();
+ this.RecalculateLines();
+ break;
+ case BoundingBoxOrientation.Object_oriented_:
+ this.FitRenderersOobb();
+ break;
+ case BoundingBoxOrientation.Camera_oriented_:
+ this.FitRenderersCabb();
+
+ break;
+ default: throw new ArgumentOutOfRangeException();
+ }
+ }
+ }
+
+ void FitRenderersCabb() {
+ throw new NotImplementedException();
+
+ /*
+ var transform1 = this.transform;
+ var position = transform1.position;
+ this._bb_transform.position = position;
+ this._bb_transform.rotation = transform1.rotation;
+
+ var a = this._local_mesh.sharedMesh.GetCameraMinMaxPoints(this._bb_transform,
+ this._camera,
+ this.use_view_port);
+ var min = a[0];
+ var max = a[1];
+ var extent = a[2];
+
+ if (this.use_view_port) {
+ min = this._camera.ViewportToWorldPoint(min);
+ max = this._camera.ViewportToWorldPoint(max);
+ } else {
+ min = this._camera.ScreenToWorldPoint(min);
+ max = this._camera.ScreenToWorldPoint(max);
+ extent = max - min;
+ }
+
+ var cobb_extent = extent;
+ var cobb_center =
+ new Vector3(min.x + extent.x / 2.0f, min.y + extent.y / 2.0f, min.z + extent.z / 2.0f);
+
+ this._point_tfr = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Top_Front_Right);
+ this._point_tfl = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Top_Front_Left);
+ this._point_tbl = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Top_Back_Left);
+ this._point_tbr = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Top_Back_Right);
+ this._point_bfr = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Bottom_Front_Right);
+ this._point_bfl = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Bottom_Front_Left);
+ this._point_bbl = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Bottom_Back_Left);
+ this._point_bbr = cobb_center + Vector3.Scale(cobb_extent, BoundingBoxUtilities._Bottom_Back_Right);
+
+ this._Bounds.center = cobb_center;
+ this._Bounds.extents = cobb_extent;
+
+ this._points = new[] {
+ this._point_tfr,
+ this._point_tfl,
+ this._point_tbl,
+ this._point_tbr,
+ this._point_bfr,
+ this._point_bfl,
+ this._point_bbl,
+ this._point_bbr
+ };
+
+ var rot = Quaternion.identity;
+ var pos = Vector3.zero;
+
+ //rot = transform1.rotation;
+ //pos = transform1.position;
+
+ this._lines_list.Clear();
+
+ for (var i = 0; i < 4; i++) {
+ //width
+ var line = new[] {rot * this.Points[2 * i] + pos, rot * this.Points[2 * i + 1] + pos};
+ this._lines_list.Add(line);
+
+ //height
+ line = new[] {rot * this.Points[i] + pos, rot * this.Points[i + 4] + pos};
+ this._lines_list.Add(line);
+
+ //depth
+ line = new[] {rot * this.Points[2 * i] + pos, rot * this.Points[2 * i + 3 - 4 * (i % 2)] + pos};
+ this._lines_list.Add(line);
+ }
+
+ this._lines = new Vector3[BoundingBoxUtilities._Num_Lines, BoundingBoxUtilities._Num_Points_Per_Line];
+ for (var j = 0; j < BoundingBoxUtilities._Num_Lines; j++) {
+ this.Lines[j, 0] = this._lines_list[j][0];
+ this.Lines[j, 1] = this._lines_list[j][1];
+ }
+ */
+ }
+
+ void FitRenderersOobb() { throw new NotImplementedException(); }
+
+ void FitCollidersOobb() { throw new NotImplementedException(); }
+
+ ///
+ ///
+ void RecalculatePoints() {
+ this._point_tfr = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Top_Front_Right);
+ this._point_tfl = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Top_Front_Left);
+ this._point_tbl = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Top_Back_Left);
+ this._point_tbr = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Top_Back_Right);
+ this._point_bfr = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Bottom_Front_Right);
+ this._point_bfl = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Bottom_Front_Left);
+ this._point_bbl = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Bottom_Back_Left);
+ this._point_bbr = this._Bounds_Offset
+ + Vector3.Scale(this._Bounds.extents, BoundingBoxUtilities._Bottom_Back_Right);
+
+ this._points = new[] {
+ this._point_tfr,
+ this._point_tfl,
+ this._point_tbl,
+ this._point_tbr,
+ this._point_bfr,
+ this._point_bfl,
+ this._point_bbl,
+ this._point_bbr
+ };
+ }
+
+ ///
+ ///
+ void RecalculateLines() {
+ var transform1 = this.transform;
+ if (this._bb_transform) {
+ transform1 = this._bb_transform;
+ }
+
+ var rot = Quaternion.identity;
+ var pos = Vector3.zero;
+ if (this._use_bb_transform) {
+ rot = transform1.rotation;
+ }
+
+ pos = transform1.position;
+
+ this._lines_list.Clear();
+
+ for (var i = 0; i < 4; i++) {
+ //width
+ var line = new[] {rot * this.Points[2 * i] + pos, rot * this.Points[2 * i + 1] + pos};
+ this._lines_list.Add(line);
+
+ //height
+ line = new[] {rot * this.Points[i] + pos, rot * this.Points[i + 4] + pos};
+ this._lines_list.Add(line);
+
+ //depth
+ line = new[] {rot * this.Points[2 * i] + pos, rot * this.Points[2 * i + 3 - 4 * (i % 2)] + pos};
+ this._lines_list.Add(line);
+ }
+
+ this._lines = new Vector3[BoundingBoxUtilities._Num_Lines, BoundingBoxUtilities._Num_Points_Per_Line];
+ for (var j = 0; j < BoundingBoxUtilities._Num_Lines; j++) {
+ this.Lines[j, 0] = this._lines_list[j][0];
+ this.Lines[j, 1] = this._lines_list[j][1];
+ }
+ }
+
+ ///
+ ///
+ void OnMouseDown() {
+ //if (_permanent)
+ // return;
+ //this.enabled = !this.enabled;
+ }
+
+ #if UNITY_EDITOR
+ ///
+ ///
+ void OnValidate() {
+ if (!this.enabled) {
+ return;
+ }
+
+ if (EditorApplication.isPlaying) {
+ return;
+ }
+
+ this.CalculateBoundingBox();
+ }
+
+ ///
+ ///
+ void OnDrawGizmosSelected() {
+ if (this.enabled) {
+ Gizmos.color = this.editorPreviewLineColor;
+
+ if (this.Lines != null) {
+ for (var i = 0; i < this.Lines.GetLength(0); i++) {
+ Gizmos.DrawLine(this.Lines[i, 0], this.Lines[i, 1]);
+ }
+ } else {
+ Gizmos.DrawWireCube(this.Bounds.center, this.Bounds.size);
+ }
+
+ if (this._bb_transform) {
+ Handles.Label(this._bb_transform.position, this.name);
+ } else {
+ Handles.Label(this.transform.position, this.name);
+ }
+ }
+ }
+ #endif
+ }
+}
diff --git a/Runtime/Utilities/BoundingBoxes/BoundingBox.cs.meta b/Runtime/GameObjects/BoundingBoxes/BoundingBox.cs.meta
similarity index 78%
rename from Runtime/Utilities/BoundingBoxes/BoundingBox.cs.meta
rename to Runtime/GameObjects/BoundingBoxes/BoundingBox.cs.meta
index 53212c840..2352d417b 100644
--- a/Runtime/Utilities/BoundingBoxes/BoundingBox.cs.meta
+++ b/Runtime/GameObjects/BoundingBoxes/BoundingBox.cs.meta
@@ -5,7 +5,7 @@ MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
- icon: {fileID: 2800000, guid: db43f7d76c98f4ba1bb808154c33d6bb, type: 3}
+ icon: {fileID: 2800000, guid: af4792457046746828ff2d22efe682aa, type: 3}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs b/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs
new file mode 100644
index 000000000..53a15eaff
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs
@@ -0,0 +1,156 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes {
+ ///
+ ///
+ ///
+ [RequireComponent(typeof(Camera))]
+ [ExecuteInEditMode]
+ public class Draw3DBoundingBox : MonoBehaviour {
+ List _colors = new List();
+ [SerializeField] Material _line_material;
+ List _names = new List();
+
+ List _outlines = new List();
+
+ //List _triangles = new List();
+ //[SerializeField] GUISkin _gui_skin;
+
+ Camera _camera;
+ [SerializeField] bool _draw_label = true;
+ BoundingBox[] _bounding_boxes;
+ [SerializeField] bool _cacheBoundingBoxes = true;
+
+ void Awake() {
+ if (!this._line_material) {
+ var shader = Shader.Find("Unlit/Color");
+ this._line_material = new Material(shader);
+ }
+
+ //GUI.skin = this._gui_skin;
+
+ this._camera = this.GetComponent();
+ }
+
+ void OnPostRender() {
+ if (this._outlines == null) {
+ return;
+ }
+
+ if (this._line_material) {
+ this._line_material.SetPass(0);
+ }
+
+ GL.Begin(GL.LINES);
+ for (var j = 0; j < this._outlines.Count; j++) {
+ GL.Color(this._colors[j]);
+ for (var i = 0; i < this._outlines[j].GetLength(0); i++) {
+ GL.Vertex(this._outlines[j][i, 0]);
+ GL.Vertex(this._outlines[j][i, 1]);
+ }
+ }
+
+ GL.End();
+/*
+ GL.Begin(GL.TRIANGLES);
+
+ for (var j = 0; j < this._triangles.Count; j++) {
+ GL.Color(this._colors[j]);
+ for (var i = 0; i < this._triangles[j].GetLength(0); i++) {
+ GL.Vertex(this._triangles[j][i, 0]);
+ GL.Vertex(this._triangles[j][i, 1]);
+ GL.Vertex(this._triangles[j][i, 2]);
+ }
+ }
+
+ GL.End();
+ */
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void SetOutlines(Vector3[,] new_outlines, Color new_color, GameObject game_object) {
+ if (new_outlines == null) {
+ return;
+ }
+
+ if (this._outlines == null) {
+ return;
+ }
+
+ if (new_outlines.GetLength(0) > 0) {
+ this._outlines.Add(new_outlines);
+ this._colors.Add(new_color);
+ this._names.Add(game_object);
+ }
+ }
+/*
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void SetTriangles(Vector3[,] new_triangles, Color new_color, GameObject game_object) {
+ if (new_triangles == null) {
+ return;
+ }
+
+ if (this._triangles == null) {
+ return;
+ }
+
+ if (new_triangles.GetLength(0) > 0) {
+ this._colors.Add(new_color);
+ this._triangles.Add(new_triangles);
+ this._names.Add(game_object);
+ }
+ }
+*/
+
+ void OnPreRender() {
+ this._outlines.Clear();
+ this._colors.Clear();
+ this._names.Clear();
+ //this._triangles.Clear();
+ if (!this._cacheBoundingBoxes || this._bounding_boxes == null || this._bounding_boxes.Length == 0) {
+ this._bounding_boxes = FindObjectsOfType();
+ }
+
+ foreach (var bb in this._bounding_boxes) {
+ if (bb) {
+ this.SetOutlines(bb.Lines, bb.EditorPreviewLineColor, bb.gameObject);
+ }
+ }
+ }
+
+ const float _padding = 4;
+
+ void OnGUI() {
+ if (this._draw_label) {
+ var i = 0;
+ foreach (var t in this._outlines) {
+ var point = t[0, 0];
+ var box_position = this._camera.WorldToScreenPoint(point);
+ box_position.y = Screen.height - box_position.y;
+
+ var text = this._names[i].name;
+
+ var content = GUI.skin.box.CalcSize(new GUIContent(text));
+ content.x = content.x + _padding;
+ content.y = content.y + _padding;
+ var rect = new Rect(box_position.x - content.x / 2,
+ box_position.y - content.y / 2,
+ content.x,
+ content.y);
+ GUI.Box(rect, text);
+ //GUI.Label(this._rect, text);
+ i++;
+ }
+ }
+ }
+ }
+}
diff --git a/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs.meta b/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs.meta
new file mode 100644
index 000000000..8002a52bf
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Draw3DBoundingBox.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1b5262a22bdff171d9c6615614469b95
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: af4792457046746828ff2d22efe682aa, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs b/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs
new file mode 100644
index 000000000..f1cba8f2f
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs
@@ -0,0 +1,84 @@
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes {
+ ///
+ ///
+ ///
+ [RequireComponent(typeof(Camera))]
+ [ExecuteInEditMode]
+ public class DrawScreenSpaceBoundingBox : MonoBehaviour {
+ List _names = new List();
+ List _rects = new List();
+ Camera _camera = null;
+
+ [SerializeField] bool _draw_label = true;
+ [SerializeField] BoundingBox[] bounding_boxes = null;
+ [SerializeField] bool _cache_bounding_boxes = false;
+ [SerializeField] GUISkin gui_style = null;
+ [SerializeField] bool _draw_coords = false;
+
+ void Awake() {
+ if (!this._camera) {
+ this._camera = this.GetComponent();
+ }
+
+ if (!this.gui_style) {
+ this.gui_style = Resources.FindObjectsOfTypeAll().First(a => a.name == "BoundingBox");
+ }
+
+ this.bounding_boxes = FindObjectsOfType();
+ }
+
+ void Compute() {
+ this._rects.Clear();
+ this._names.Clear();
+
+ if (!this._cache_bounding_boxes) {
+ this.bounding_boxes = FindObjectsOfType();
+ }
+
+ foreach (var bb in this.bounding_boxes) {
+ if (this._camera.WorldToScreenPoint(bb.Bounds.center).z < 0) {
+ return;
+ }
+
+ var a = bb.ScreenSpaceBoundingRect(this._camera);
+
+ this._rects.Add(a);
+ this._names.Add(bb.name);
+ }
+ }
+
+ void OnGUI() {
+ if (this.gui_style) {
+ GUI.skin = this.gui_style;
+ }
+
+ this.Draw();
+ }
+
+ void Draw() {
+ this.Compute();
+ var i = 0;
+ foreach (var rect in this._rects) {
+ var text = "";
+ if (this._draw_label) {
+ text += $"{this._names[i]}";
+ }
+
+ if (this._draw_coords) {
+ text += $"\n{rect}\n{rect.center}";
+ }
+
+ var a = rect;
+ a.y = Screen.height - (a.y + a.height);
+
+ GUI.Box(a, text);
+
+ i++;
+ }
+ }
+ }
+}
diff --git a/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs.meta b/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs.meta
new file mode 100644
index 000000000..52e5445b1
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/DrawScreenSpaceBoundingBox.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a69c9a240ee53baafadb71c70054e1ee
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: af4792457046746828ff2d22efe682aa, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Utilities/BoundingBoxes/Experimental.meta b/Runtime/GameObjects/BoundingBoxes/Experimental.meta
similarity index 100%
rename from Runtime/Utilities/BoundingBoxes/Experimental.meta
rename to Runtime/GameObjects/BoundingBoxes/Experimental.meta
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs b/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs
new file mode 100644
index 000000000..a64031c2c
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs
@@ -0,0 +1,185 @@
+using System;
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes.Experimental {
+ ///
+ ///
+ ///
+ public static class BoundingBoxUtilities {
+ ///
+ ///
+ ///
+ public const int _Num_Points_Per_Line = 2;
+
+ public const int _Num_Lines = 12;
+ public static Vector3 _Top_Front_Right = new Vector3(1, 1, 1);
+ public static Vector3 _Top_Front_Left = new Vector3(-1, 1, 1);
+ public static Vector3 _Bottom_Back_Right = new Vector3(1, -1, -1);
+ public static Vector3 _Bottom_Back_Left = new Vector3(-1, -1, -1);
+ public static Vector3 _Bottom_Front_Left = new Vector3(-1, -1, 1);
+ public static Vector3 _Bottom_Front_Right = new Vector3(1, -1, 1);
+ public static Vector3 _Top_Back_Right = new Vector3(1, 1, -1);
+ public static Vector3 _Top_Back_Left = new Vector3(-1, 1, -1);
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Vector3[] GetCameraMinMaxPoints(this Mesh mesh,
+ Transform t,
+ Camera cam,
+ Vector3 min,
+ Vector3 max,
+ bool use_view_port = false) {
+ var a = mesh.vertices;
+
+ Vector3 point;
+
+ foreach (var t1 in a) {
+ if (use_view_port) {
+ point = cam.WorldToViewportPoint(t.TransformPoint(t1));
+ } else {
+ point = cam.WorldToScreenPoint(t.TransformPoint(t1));
+ }
+
+ point.GetMinMax(ref min, ref max);
+ }
+
+ var size = max - min;
+
+ return new[] {min, max, size};
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Vector3[] GetCameraMinMaxPoints(this Mesh mesh,
+ Transform t,
+ Camera cam,
+ bool use_view_port = false) {
+ var a = mesh.vertices;
+
+ Vector3 min;
+ if (use_view_port) {
+ min = cam.WorldToViewportPoint(t.TransformPoint(a[0]));
+ } else {
+ min = cam.WorldToScreenPoint(t.TransformPoint(a[0]));
+ }
+
+ var max = min;
+
+ var point = min;
+ point.GetMinMax(ref min, ref max);
+
+ for (var i = 1; i < a.Length; i++) {
+ if (use_view_port) {
+ point = cam.WorldToViewportPoint(t.TransformPoint(a[i]));
+ } else {
+ point = cam.WorldToScreenPoint(t.TransformPoint(a[i]));
+ }
+
+ point.GetMinMax(ref min, ref max);
+ }
+
+ var size = max - min;
+
+ return new[] {min, max, size};
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Rect GetCameraMinMaxRect(this Mesh mesh,
+ Transform t,
+ Camera cam,
+ float margin = 0,
+ bool use_viewport = false) {
+ var cen = mesh.GetCameraMinMaxPoints(t, cam, use_viewport);
+ var min = cen[0];
+ var max = cen[1];
+
+ var r = Rect.MinMaxRect(min.x,
+ min.y,
+ max.x,
+ max.y);
+ r.xMin -= margin;
+ r.xMax += margin;
+ r.yMin -= margin;
+ r.yMax += margin;
+
+ return r;
+ }
+
+ public static Rect GetMinMaxRect(Vector3 min, Vector3 max, float margin = 0) {
+ var r = Rect.MinMaxRect(min.x,
+ min.y,
+ max.x,
+ max.y);
+ r.xMin -= margin;
+ r.xMax += margin;
+ r.yMin -= margin;
+ r.yMax += margin;
+
+ return r;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Rect Normalise(this Rect rect, float width, float height) {
+ if (width < float.Epsilon || Math.Abs(height) < float.Epsilon) {
+ return new Rect();
+ }
+
+ return new Rect {
+ x = rect.x / width,
+ width = rect.width / width,
+ y = rect.y / width,
+ height = rect.height / height
+ };
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Bounds TransformBounds(this Transform transform, Bounds local_bounds) {
+ var center = transform.TransformPoint(local_bounds.center);
+
+ // transform the local extents' axes
+ var extents = local_bounds.extents;
+ var axis_x = transform.TransformVector(extents.x, 0, 0);
+ var axis_y = transform.TransformVector(0, extents.y, 0);
+ var axis_z = transform.TransformVector(0, 0, extents.z);
+
+ // sum their absolute value to get the world extents
+ extents.x = Mathf.Abs(axis_x.x) + Mathf.Abs(axis_y.x) + Mathf.Abs(axis_z.x);
+ extents.y = Mathf.Abs(axis_x.y) + Mathf.Abs(axis_y.y) + Mathf.Abs(axis_z.y);
+ extents.z = Mathf.Abs(axis_x.z) + Mathf.Abs(axis_y.z) + Mathf.Abs(axis_z.z);
+
+ return new Bounds {center = center, extents = extents};
+ }
+ }
+}
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs.meta b/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs.meta
new file mode 100644
index 000000000..e363208f7
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/BoundingBoxUtilities.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a00e52ae110c4ae4a3c5fe6b3588001
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: af4792457046746828ff2d22efe682aa, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/Corners.cs b/Runtime/GameObjects/BoundingBoxes/Experimental/Corners.cs
new file mode 100644
index 000000000..78c13d3ae
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/Corners.cs
@@ -0,0 +1,242 @@
+using System;
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes.Experimental {
+ ///
+ ///
+ public static class Corners {
+ public static Vector3[] ExtractCorners(Vector3 v3_center,
+ Vector3 v3_extents,
+ Transform reference_transform = null) {
+ var v3_front_top_left = new Vector3(v3_center.x - v3_extents.x,
+ v3_center.y + v3_extents.y,
+ v3_center.z - v3_extents.z); // Front top left corner
+ var v3_front_top_right = new Vector3(v3_center.x + v3_extents.x,
+ v3_center.y + v3_extents.y,
+ v3_center.z - v3_extents.z); // Front top right corner
+ var v3_front_bottom_left = new Vector3(v3_center.x - v3_extents.x,
+ v3_center.y - v3_extents.y,
+ v3_center.z - v3_extents.z); // Front bottom left corner
+ var v3_front_bottom_right = new Vector3(v3_center.x + v3_extents.x,
+ v3_center.y - v3_extents.y,
+ v3_center.z - v3_extents.z); // Front bottom right corner
+ var v3_back_top_left = new Vector3(v3_center.x - v3_extents.x,
+ v3_center.y + v3_extents.y,
+ v3_center.z + v3_extents.z); // Back top left corner
+ var v3_back_top_right = new Vector3(v3_center.x + v3_extents.x,
+ v3_center.y + v3_extents.y,
+ v3_center.z + v3_extents.z); // Back top right corner
+ var v3_back_bottom_left = new Vector3(v3_center.x - v3_extents.x,
+ v3_center.y - v3_extents.y,
+ v3_center.z + v3_extents.z); // Back bottom left corner
+ var v3_back_bottom_right = new Vector3(v3_center.x + v3_extents.x,
+ v3_center.y - v3_extents.y,
+ v3_center.z + v3_extents.z); // Back bottom right corner
+ if (reference_transform) {
+ v3_front_top_left = reference_transform.TransformPoint(v3_front_top_left);
+ v3_front_top_right = reference_transform.TransformPoint(v3_front_top_right);
+ v3_front_bottom_left = reference_transform.TransformPoint(v3_front_bottom_left);
+ v3_front_bottom_right = reference_transform.TransformPoint(v3_front_bottom_right);
+ v3_back_top_left = reference_transform.TransformPoint(v3_back_top_left);
+ v3_back_top_right = reference_transform.TransformPoint(v3_back_top_right);
+ v3_back_bottom_left = reference_transform.TransformPoint(v3_back_bottom_left);
+ v3_back_bottom_right = reference_transform.TransformPoint(v3_back_bottom_right);
+ }
+
+ return new[] {
+ v3_front_top_left,
+ v3_front_top_right,
+ v3_front_bottom_left,
+ v3_front_bottom_right,
+ v3_back_top_left,
+ v3_back_top_right,
+ v3_back_bottom_left,
+ v3_back_bottom_right
+ };
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void DrawBox(Vector3 v3_front_top_left,
+ Vector3 v3_front_top_right,
+ Vector3 v3_front_bottom_left,
+ Vector3 v3_front_bottom_right,
+ Vector3 v3_back_top_left,
+ Vector3 v3_back_top_right,
+ Vector3 v3_back_bottom_left,
+ Vector3 v3_back_bottom_right,
+ Color color) {
+ Debug.DrawLine(v3_front_top_left, v3_front_top_right, color);
+ Debug.DrawLine(v3_front_top_right, v3_front_bottom_right, color);
+ Debug.DrawLine(v3_front_bottom_right, v3_front_bottom_left, color);
+ Debug.DrawLine(v3_front_bottom_left, v3_front_top_left, color);
+
+ Debug.DrawLine(v3_back_top_left, v3_back_top_right, color);
+ Debug.DrawLine(v3_back_top_right, v3_back_bottom_right, color);
+ Debug.DrawLine(v3_back_bottom_right, v3_back_bottom_left, color);
+ Debug.DrawLine(v3_back_bottom_left, v3_back_top_left, color);
+
+ Debug.DrawLine(v3_front_top_left, v3_back_top_left, color);
+ Debug.DrawLine(v3_front_top_right, v3_back_top_right, color);
+ Debug.DrawLine(v3_front_bottom_right, v3_back_bottom_right, color);
+ Debug.DrawLine(v3_front_bottom_left, v3_back_bottom_left, color);
+ }
+
+ ///
+ /// Draws a Circle using Debug.Draw functions
+ ///
+ /// Center point.
+ /// Radius of the circle.
+ /// Color for Debug.Draw.
+ /// Number of segments for the circle, used for precision of the draw.
+ /// Duration to show the circle.
+ public static void DrawCircle(Vector2 center,
+ float radius,
+ Color color,
+ float num_segments = 40,
+ float duration = 0.01f) {
+ var rot_quaternion = Quaternion.AngleAxis(360.0f / num_segments, Vector3.forward);
+ var vertex_start = new Vector2(radius, 0.0f);
+ for (var i = 0; i < num_segments; i++) {
+ Vector2 rotated_point = rot_quaternion * vertex_start;
+
+ // Draw the segment, shifted by the center
+ Debug.DrawLine(center + vertex_start,
+ center + rotated_point,
+ color,
+ duration);
+
+ vertex_start = rotated_point;
+ }
+ }
+
+ ///
+ /// Draws a box using Debug.Draw functions
+ ///
+ /// World top left corner.
+ /// World bottom right corner.
+ /// Color for Debug.Draw.
+ /// Duration to show the box.
+ public static void DrawBox(Vector2 world_top_left,
+ Vector2 world_bottom_right,
+ Color color,
+ float duration = 0.01f) {
+ var world_top_right = new Vector2(world_bottom_right.x, world_top_left.y);
+ var world_bottom_left = new Vector2(world_top_left.x, world_bottom_right.y);
+
+ Debug.DrawLine(world_top_left,
+ world_bottom_left,
+ color,
+ duration);
+ Debug.DrawLine(world_bottom_left,
+ world_bottom_right,
+ color,
+ duration);
+ Debug.DrawLine(world_bottom_right,
+ world_top_right,
+ color,
+ duration);
+ Debug.DrawLine(world_top_right,
+ world_top_left,
+ color,
+ duration);
+ }
+
+ ///
+ /// Draws an array of edges, where an edge is defined by two Vector2 points, using Debug.Draw
+ ///
+ /// World points, defining each vertex of an edge in world space.
+ /// Color for Debug.Draw.
+ /// Duration to show the edges.
+ public static void DrawEdges(Vector2[] world_points, Color color, float duration = 0.01f) {
+ // Draw each segment except the last
+ for (var i = 0; i < world_points.Length - 1; i++) {
+ Vector3 next_point = world_points[i + 1];
+ Vector3 current_point = world_points[i];
+ Debug.DrawLine(current_point,
+ next_point,
+ color,
+ duration);
+ }
+ }
+
+ ///
+ /// Draws a polygon, defined by all verteces of the polygon, using Debug.Draw
+ ///
+ /// World points, defining each vertex of the polygon in world space.
+ /// Color for Debug.Draw.
+ /// Duration to show the polygon.
+ public static void DrawPolygon(Vector2[] world_points, Color color, float duration = 0.01f) {
+ DrawEdges(world_points, color, duration);
+
+ // Polygons are just edges with the first and last points connected
+ if (world_points.Length > 1) {
+ Debug.DrawLine(world_points[world_points.Length - 1],
+ world_points[0],
+ color,
+ duration);
+ }
+ }
+
+ ///
+ /// Draws an arrow using Debug.Draw
+ ///
+ /// Origin point in world space.
+ /// Endpoint in world space.
+ /// Color for Debug.Draw.
+ /// Duration to show the arrow.
+ public static void DrawArrow(Vector2 origin, Vector2 endpoint, Color color, float duration = 0.01f) {
+ // Draw the line that makes up the body of the arrow
+ Debug.DrawLine(origin,
+ endpoint,
+ color,
+ 0.01f);
+
+ // Draw arrowhead so we can see direction
+ var arrow_direction = endpoint - origin;
+ DebugDrawArrowhead(endpoint,
+ arrow_direction.normalized,
+ GetArrowSizeForLine(arrow_direction),
+ color,
+ duration);
+ }
+
+ static float GetArrowSizeForLine(Vector2 line) {
+ const Single default_arrow_percentage = 0.05f;
+ return (line * default_arrow_percentage).magnitude;
+ }
+
+ static void DebugDrawArrowhead(Vector2 origin,
+ Vector2 direction,
+ float size,
+ Color color,
+ float duration = 0.01f,
+ float theta = 30.0f) {
+ // Theta angle is the acute angle of the arrow, so flip direction or else arrow will be pointing "backwards"
+ var arrowhead_handle = -direction * size;
+
+ var arrow_rotation_r = Quaternion.AngleAxis(theta, Vector3.forward);
+ Vector2 arrowhead_r = arrow_rotation_r * arrowhead_handle;
+ Debug.DrawLine(origin,
+ origin + arrowhead_r,
+ color,
+ duration);
+
+ var arrow_rotation_l = Quaternion.AngleAxis(-theta, Vector3.forward);
+ Vector2 arrowhead_l = arrow_rotation_l * arrowhead_handle;
+ Debug.DrawLine(origin,
+ origin + arrowhead_l,
+ color,
+ duration);
+ }
+ }
+}
diff --git a/Runtime/Utilities/BoundingBoxes/Corners.cs.meta b/Runtime/GameObjects/BoundingBoxes/Experimental/Corners.cs.meta
similarity index 100%
rename from Runtime/Utilities/BoundingBoxes/Corners.cs.meta
rename to Runtime/GameObjects/BoundingBoxes/Experimental/Corners.cs.meta
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/DrawBoundingBoxes.cs b/Runtime/GameObjects/BoundingBoxes/Experimental/DrawBoundingBoxes.cs
new file mode 100644
index 000000000..e51c2ecde
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/DrawBoundingBoxes.cs
@@ -0,0 +1,73 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes.Experimental {
+ ///
+ ///
+ ///
+ [ExecuteInEditMode]
+ public class ShowBoundingBoxes : MonoBehaviour {
+ public Color _Color = Color.green;
+ public GameObject _Line_Object;
+ Dictionary _lines = new Dictionary();
+
+ MeshFilter[] _mesh_filter_objects;
+
+ void ReallocateLineRenderers() {
+ this._mesh_filter_objects = FindObjectsOfType();
+ this._lines.Clear();
+ }
+
+ // void OnWillRenderObject() { throw new System.NotImplementedException(); }
+
+ void Update() {
+ if (this._lines == null || this._mesh_filter_objects == null) {
+ this.ReallocateLineRenderers();
+ }
+
+ this.CalcPositionsAndDrawBoxes();
+ }
+
+ void CalcPositionsAndDrawBoxes() {
+ foreach (var mesh_filter_object in this._mesh_filter_objects) {
+ if (mesh_filter_object.gameObject.CompareTag("Target")) {
+ GameObject liner;
+ if (!this._lines.ContainsKey(mesh_filter_object.gameObject)) {
+ liner = Instantiate(this._Line_Object, this._Line_Object.transform);
+ this._lines.Add(mesh_filter_object.gameObject, liner);
+ } else {
+ Debug.Log("found Target");
+ liner = this._lines[mesh_filter_object.gameObject];
+ }
+
+ var bounds = mesh_filter_object.mesh.bounds;
+
+ //Bounds bounds;
+ //BoxCollider bc = GetComponent();
+ //if (bc != null)
+ // bounds = bc.bounds;
+ //else
+ //return;
+
+ var v3_center = bounds.center;
+ var v3_extents = bounds.extents;
+
+ var corners = Corners.ExtractCorners(v3_center, v3_extents, mesh_filter_object.transform);
+
+ liner.GetComponent().SetPosition(0, corners[4]);
+ liner.GetComponent().SetPosition(1, corners[5]);
+
+ Corners.DrawBox(corners[0],
+ corners[1],
+ corners[2],
+ corners[3],
+ corners[4],
+ corners[5],
+ corners[6],
+ corners[7],
+ this._Color);
+ }
+ }
+ }
+ }
+}
diff --git a/Runtime/Utilities/BoundingBoxes/DrawBoundingBoxes.cs.meta b/Runtime/GameObjects/BoundingBoxes/Experimental/DrawBoundingBoxes.cs.meta
similarity index 100%
rename from Runtime/Utilities/BoundingBoxes/DrawBoundingBoxes.cs.meta
rename to Runtime/GameObjects/BoundingBoxes/Experimental/DrawBoundingBoxes.cs.meta
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/Unused.meta b/Runtime/GameObjects/BoundingBoxes/Experimental/Unused.meta
new file mode 100644
index 000000000..69db1dc38
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/Unused.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6015fea9bf954faeb2ddfec834fa51c1
+timeCreated: 1552906291
\ No newline at end of file
diff --git a/Runtime/GameObjects/BoundingBoxes/Experimental/Unused/BoundingBoxUtilities.cs b/Runtime/GameObjects/BoundingBoxes/Experimental/Unused/BoundingBoxUtilities.cs
new file mode 100644
index 000000000..6e0005f95
--- /dev/null
+++ b/Runtime/GameObjects/BoundingBoxes/Experimental/Unused/BoundingBoxUtilities.cs
@@ -0,0 +1,420 @@
+using UnityEngine;
+
+namespace droid.Runtime.GameObjects.BoundingBoxes.Experimental.Unused {
+ public static class BoundingBoxUtilities {
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void DrawBoxFromCenter(Vector3 p, float r, Color c) {
+ // p is pos.yition of the center, r is "radius" and c is the color of the box
+ //Bottom lines
+ Debug.DrawLine(new Vector3(-r + p.x, -r + p.y, -r + p.z), new Vector3(r + p.x, -r + p.y, -r + p.z), c);
+ Debug.DrawLine(new Vector3(-r + p.x, -r + p.y, -r + p.z), new Vector3(-r + p.x, -r + p.y, r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, -r + p.y, r + p.z), new Vector3(-r + p.x, -r + p.y, r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, -r + p.y, r + p.z), new Vector3(r + p.x, -r + p.y, -r + p.z), c);
+
+ //Vertical lines
+ Debug.DrawLine(new Vector3(-r + p.x, r + p.y, -r + p.z), new Vector3(r + p.x, r + p.y, -r + p.z), c);
+ Debug.DrawLine(new Vector3(-r + p.x, r + p.y, -r + p.z), new Vector3(-r + p.x, r + p.y, r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, r + p.y, r + p.z), new Vector3(-r + p.x, r + p.y, r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, r + p.y, r + p.z), new Vector3(r + p.x, r + p.y, -r + p.z), c);
+
+ //Top lines
+ Debug.DrawLine(new Vector3(-r + p.x, -r + p.y, -r + p.z), new Vector3(-r + p.x, r + p.y, -r + p.z), c);
+ Debug.DrawLine(new Vector3(-r + p.x, -r + p.y, r + p.z), new Vector3(-r + p.x, r + p.y, r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, -r + p.y, -r + p.z), new Vector3(r + p.x, r + p.y, -r + p.z), c);
+ Debug.DrawLine(new Vector3(r + p.x, -r + p.y, r + p.z), new Vector3(r + p.x, r + p.y, r + p.z), c);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void DrawRect(float x_size, float y_size, float z_size, Vector3 pos, Color color) {
+ var x = x_size / 2;
+ var y = y_size / 2;
+ var z = z_size / 2;
+
+ //Vertical lines
+ Debug.DrawLine(new Vector3(-x + pos.x, -y + pos.y, -z + pos.z),
+ new Vector3(-x + pos.x, y + pos.y, -z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(x + pos.x, -y + pos.y, -z + pos.z),
+ new Vector3(x + pos.x, y + pos.y, -z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(-x + pos.x, -y + pos.y, z + pos.z),
+ new Vector3(-x + pos.x, y + pos.y, z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(x + pos.x, -y + pos.y, z + pos.z),
+ new Vector3(x + pos.x, y + pos.y, z + pos.z),
+ color);
+
+ //Horizontal top
+ Debug.DrawLine(new Vector3(-x + pos.x, y + pos.y, -z + pos.z),
+ new Vector3(x + pos.x, y + pos.y, -z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(-x + pos.x, y + pos.y, z + pos.z),
+ new Vector3(x + pos.x, y + pos.y, z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(-x + pos.x, y + pos.y, -z + pos.z),
+ new Vector3(-x + pos.x, y + pos.y, z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(x + pos.x, y + pos.y, -z + pos.z),
+ new Vector3(x + pos.x, y + pos.y, z + pos.z),
+ color);
+
+ //Horizontal bottom
+ Debug.DrawLine(new Vector3(-x + pos.x, -y + pos.y, -z + pos.z),
+ new Vector3(x + pos.x, -y + pos.y, -z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(-x + pos.x, -y + pos.y, z + pos.z),
+ new Vector3(x + pos.x, -y + pos.y, z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(-x + pos.x, -y + pos.y, -z + pos.z),
+ new Vector3(-x + pos.x, -y + pos.y, z + pos.z),
+ color);
+ Debug.DrawLine(new Vector3(x + pos.x, -y + pos.y, -z + pos.z),
+ new Vector3(x + pos.x, -y + pos.y, z + pos.z),
+ color);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool DidTransformsChange(
+ Transform[] old_transforms,
+ Transform[] newly_acquired_transforms) {
+ if (old_transforms.Length != newly_acquired_transforms.Length) {
+ return true;
+ }
+
+ var i = 0;
+ foreach (var old in old_transforms) {
+ if (old.position != newly_acquired_transforms[i].position
+ || old.rotation != newly_acquired_transforms[i].rotation) {
+ return true;
+ }
+
+ i++;
+ }
+
+ return false;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Bounds GetTotalMeshFilterBounds(Transform object_transform) {
+ var mesh_filter = object_transform.GetComponent();
+
+ var result = mesh_filter != null ? mesh_filter.mesh.bounds : new Bounds();
+
+ foreach (Transform transform in object_transform) {
+ var bounds = GetTotalMeshFilterBounds(transform);
+ result.Encapsulate(bounds.min);
+ result.Encapsulate(bounds.max);
+ }
+
+ /*var bounds1 = GetTotalColliderBounds(objectTransform);
+ result.Encapsulate(bounds1.min);
+ result.Encapsulate(bounds1.max);
+ */
+ /*
+ foreach (Transform transform in objectTransform) {
+ var bounds = GetTotalColliderBounds(transform);
+ result.Encapsulate(bounds.min);
+ result.Encapsulate(bounds.max);
+ }
+ */
+ var scaled_min = result.min;
+ var local_scale = object_transform.localScale;
+ scaled_min.Scale(local_scale);
+ result.min = scaled_min;
+ var scaled_max = result.max;
+ scaled_max.Scale(local_scale);
+ result.max = scaled_max;
+ return result;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ public static Bounds GetTotalColliderBounds(Transform object_transform) {
+ var mesh_filter = object_transform.GetComponent();
+
+ var result = mesh_filter != null ? mesh_filter.bounds : new Bounds();
+
+ foreach (Transform transform in object_transform) {
+ var bounds = GetTotalColliderBounds(transform);
+ result.Encapsulate(bounds.min);
+ result.Encapsulate(bounds.max);
+ }
+
+ var scaled_min = result.min;
+ var local_scale = object_transform.localScale;
+ scaled_min.Scale(local_scale);
+ result.min = scaled_min;
+ var scaled_max = result.max;
+ scaled_max.Scale(local_scale);
+ result.max = scaled_max;
+ return result;
+ }
+
+ ///